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) && (