Fix: actualiza estado de cama en tabla camas al cambiar internacion
- Agrega endpoint PUT /api/camas/:id en servidor - Corrige nombre de tabla SQL de cama a camas - Actualiza estado de camas en memoria al cambiar internacion - Agrega retry logic para evitar SQLITE_BUSY - Mejora delay entre actualizaciones de cama
This commit is contained in:
@@ -275,26 +275,46 @@ const finalizarInternacion = useCallback((internacionId: string, datos: {
|
||||
}
|
||||
|
||||
const oldCamaId = internacion.camaId;
|
||||
const newCamaId = datos.camaId;
|
||||
const newCamaId = datos.camaId;
|
||||
const pacienteId = datos.pacienteId || internacion.pacienteId;
|
||||
|
||||
setState(prev => ({
|
||||
...prev,
|
||||
internaciones: prev.internaciones.map(i =>
|
||||
i.id === internacionId
|
||||
? { ...i, ...datos }
|
||||
: i
|
||||
),
|
||||
cams: prev.camas.map(c => {
|
||||
if (c.id === newCamaId && newCamaId !== oldCamaId) {
|
||||
return { ...c, estado: 'Ocupada', pacienteId, internacionId };
|
||||
}
|
||||
if (c.id === oldCamaId && oldCamaId !== newCamaId) {
|
||||
return { ...c, estado: 'Disponible', pacienteId: undefined, internacionId: undefined };
|
||||
}
|
||||
return c;
|
||||
}),
|
||||
}));
|
||||
setState(prev => {
|
||||
const result = {
|
||||
...prev,
|
||||
internaciones: prev.internaciones.map(i =>
|
||||
i.id === internacionId
|
||||
? { ...i, ...datos }
|
||||
: i
|
||||
),
|
||||
camas: prev.camas.map(c => {
|
||||
if (c.id === newCamaId && newCamaId !== oldCamaId) {
|
||||
return { ...c, estado: 'Ocupada' as const, pacienteId, internacionId };
|
||||
}
|
||||
if (c.id === oldCamaId && oldCamaId !== newCamaId) {
|
||||
return { ...c, estado: 'Disponible' as const, pacienteId: undefined, internacionId: undefined };
|
||||
}
|
||||
return c;
|
||||
}),
|
||||
};
|
||||
return result;
|
||||
});
|
||||
|
||||
if (oldCamaId !== newCamaId && newCamaId && oldCamaId) {
|
||||
setTimeout(() => {
|
||||
fetch(`${API_BASE}/camas/${newCamaId}`, {
|
||||
method: 'PUT',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ estado: 'Ocupada' }),
|
||||
}).catch(() => {});
|
||||
}, 500);
|
||||
setTimeout(() => {
|
||||
fetch(`${API_BASE}/camas/${oldCamaId}`, {
|
||||
method: 'PUT',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ estado: 'Disponible' }),
|
||||
}).catch(() => {});
|
||||
}, 1000);
|
||||
}
|
||||
}, [state.internaciones, state.currentUser]);
|
||||
|
||||
// Acciones de evoluciones
|
||||
|
||||
Reference in New Issue
Block a user