Fix: asegurar que los cambios en el estado se guarden en la base de datos
- Agregar markChanged en funciones que actualizan estado: * finalizarInternacion, actualizarInternacion, iniciarInternacion * agregarEvolucion, eliminarEvolucion, actualizarEvolucion - Modificar saveChanges para guardar todo el estado cuando no hay claves marcadas - Soluciona el problema de Registrar Egreso que no se guardaba en la BD
This commit is contained in:
@@ -129,10 +129,11 @@ export function useHospitalStore() {
|
|||||||
|
|
||||||
// Save only changed parts
|
// Save only changed parts
|
||||||
const saveChanges = useCallback(async () => {
|
const saveChanges = useCallback(async () => {
|
||||||
if (isSaving || changedKeys.size === 0) return;
|
if (isSaving) return;
|
||||||
setIsSaving(true);
|
setIsSaving(true);
|
||||||
try {
|
try {
|
||||||
const keysToSave = Array.from(changedKeys);
|
// If there are marked changed keys, save only those; otherwise save all state
|
||||||
|
const keysToSave = changedKeys.size > 0 ? Array.from(changedKeys) : Object.keys(state).filter(k => !['currentUser', 'isAuthenticated', 'vistaActual', 'currentInternacionId'].includes(k));
|
||||||
const partialState: any = {};
|
const partialState: any = {};
|
||||||
keysToSave.forEach(key => {
|
keysToSave.forEach(key => {
|
||||||
if (key in state) {
|
if (key in state) {
|
||||||
@@ -318,8 +319,13 @@ export function useHospitalStore() {
|
|||||||
: c
|
: c
|
||||||
),
|
),
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
// Marcar como cambiadas para el guardado
|
||||||
|
markChanged('internaciones');
|
||||||
|
markChanged('camas');
|
||||||
|
|
||||||
return nuevaInternacion.id;
|
return nuevaInternacion.id;
|
||||||
}, []);
|
}, [markChanged]);
|
||||||
|
|
||||||
const finalizarInternacion = useCallback((internacionId: string, datos: {
|
const finalizarInternacion = useCallback((internacionId: string, datos: {
|
||||||
fechaEgreso: string;
|
fechaEgreso: string;
|
||||||
@@ -350,7 +356,11 @@ export function useHospitalStore() {
|
|||||||
),
|
),
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
}, [state.areas]);
|
|
||||||
|
// Marcar como cambiadas para el guardado
|
||||||
|
markChanged('internaciones');
|
||||||
|
markChanged('camas');
|
||||||
|
}, [state.areas, markChanged]);
|
||||||
|
|
||||||
const actualizarInternacion = useCallback((internacionId: string, datos: Partial<Internacion>) => {
|
const actualizarInternacion = useCallback((internacionId: string, datos: Partial<Internacion>) => {
|
||||||
const internacion = state.internaciones.find(i => i.id === internacionId);
|
const internacion = state.internaciones.find(i => i.id === internacionId);
|
||||||
@@ -393,6 +403,12 @@ export function useHospitalStore() {
|
|||||||
return result;
|
return result;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Marcar como cambiadas para el guardado
|
||||||
|
markChanged('internaciones');
|
||||||
|
if (cambioDeCama) {
|
||||||
|
markChanged('camas');
|
||||||
|
}
|
||||||
|
|
||||||
if (oldCamaId !== newCamaId && newCamaId && oldCamaId) {
|
if (oldCamaId !== newCamaId && newCamaId && oldCamaId) {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
fetch(`${API_BASE}/camas/${newCamaId}`, {
|
fetch(`${API_BASE}/camas/${newCamaId}`, {
|
||||||
@@ -427,8 +443,10 @@ export function useHospitalStore() {
|
|||||||
...prev,
|
...prev,
|
||||||
evoluciones: [...prev.evoluciones, nuevaEvolucion],
|
evoluciones: [...prev.evoluciones, nuevaEvolucion],
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
markChanged('evoluciones');
|
||||||
return nuevaEvolucion.id;
|
return nuevaEvolucion.id;
|
||||||
}, [state.internaciones, state.currentUser]);
|
}, [state.internaciones, state.currentUser, markChanged]);
|
||||||
|
|
||||||
const eliminarEvolucion = useCallback((id: string) => {
|
const eliminarEvolucion = useCallback((id: string) => {
|
||||||
const evolucion = state.evoluciones.find(e => e.id === id);
|
const evolucion = state.evoluciones.find(e => e.id === id);
|
||||||
@@ -443,7 +461,8 @@ export function useHospitalStore() {
|
|||||||
...prev,
|
...prev,
|
||||||
evoluciones: prev.evoluciones.filter(e => e.id !== id),
|
evoluciones: prev.evoluciones.filter(e => e.id !== id),
|
||||||
}));
|
}));
|
||||||
}, []);
|
markChanged('evoluciones');
|
||||||
|
}, [markChanged]);
|
||||||
|
|
||||||
const actualizarEvolucion = useCallback((id: string, datos: Partial<Evolucion>) => {
|
const actualizarEvolucion = useCallback((id: string, datos: Partial<Evolucion>) => {
|
||||||
const evolucion = state.evoluciones.find(e => e.id === id);
|
const evolucion = state.evoluciones.find(e => e.id === id);
|
||||||
@@ -458,7 +477,8 @@ export function useHospitalStore() {
|
|||||||
...prev,
|
...prev,
|
||||||
evoluciones: prev.evoluciones.map(e => e.id === id ? { ...e, ...datos } : e),
|
evoluciones: prev.evoluciones.map(e => e.id === id ? { ...e, ...datos } : e),
|
||||||
}));
|
}));
|
||||||
}, [state.internaciones, state.currentUser]);
|
markChanged('evoluciones');
|
||||||
|
}, [state.internaciones, state.currentUser, markChanged]);
|
||||||
|
|
||||||
// Acciones de laboratorios
|
// Acciones de laboratorios
|
||||||
const agregarLaboratorio = useCallback((laboratorio: Omit<Laboratorio, 'id'>) => {
|
const agregarLaboratorio = useCallback((laboratorio: Omit<Laboratorio, 'id'>) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user