From cce8a0b4c863ce99d09a80728e674f855b4ab19e Mon Sep 17 00:00:00 2001 From: snlavaise Date: Wed, 12 Aug 2026 00:09:56 +0000 Subject: [PATCH] Confirmar egreso como unico evento para cerrar internacion y liberar cama --- src/hooks/useHospitalStore.ts | 10 ++++++++-- src/sections/MapaCamas.tsx | 6 +++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/hooks/useHospitalStore.ts b/src/hooks/useHospitalStore.ts index bfe8abc..9b1fd8f 100644 --- a/src/hooks/useHospitalStore.ts +++ b/src/hooks/useHospitalStore.ts @@ -358,17 +358,23 @@ const agregarCama = useCallback(async (cama: Omit) => { return; } try { + // Si hay una internación activa asociada a esta cama, remover la asociación en el servidor + const activeInternacion = state.internaciones.find(i => i.camaId === id && i.activa); + if (activeInternacion) { + await apiCall('PUT', `/internaciones/${activeInternacion.id}`, { camaId: '' }); + } + await apiCall('DELETE', `/camas/${id}`); setState(prev => ({ ...prev, camas: prev.camas.filter(c => c.id !== id), - internaciones: prev.internaciones.map(i => i.camaId === id ? { ...i, activa: false } : i), + internaciones: prev.internaciones.map(i => i.camaId === id ? { ...i, camaId: undefined } : i), })); } catch (err) { console.error('Error al eliminar cama:', err); throw err; } - }, [state.currentUser, apiCall]); + }, [state.currentUser, state.internaciones, apiCall]); // Acciones de internaciones const iniciarInternacion = useCallback(async (internacion: Omit) => { diff --git a/src/sections/MapaCamas.tsx b/src/sections/MapaCamas.tsx index a433c93..ca13474 100644 --- a/src/sections/MapaCamas.tsx +++ b/src/sections/MapaCamas.tsx @@ -400,7 +400,7 @@ export function MapaCamas({ )} - {cama.estado !== 'Disponible' && canEditCama(cama.id) && ( + {cama.estado !== 'Disponible' && cama.estado !== 'Ocupada' && canEditCama(cama.id) && (