diff --git a/src/hooks/useHospitalStore.ts b/src/hooks/useHospitalStore.ts index 5f74a6b..d2e8905 100644 --- a/src/hooks/useHospitalStore.ts +++ b/src/hooks/useHospitalStore.ts @@ -210,16 +210,6 @@ export function useHospitalStore() { // Acciones de internaciones const iniciarInternacion = useCallback((internacion: Omit) => { - const user = state.currentUser; - const areaId = internacion.areaId || null; - const area = state.areas.find(a => a.id === areaId); - const esFueraDeArea = area && (area.nombre || '').trim().toLowerCase() === 'fuera de area'; - if (user && user.rol !== 'admin' && !esFueraDeArea) { - if (!user.areaId || user.areaId !== areaId) { - console.warn('No tiene permisos para iniciar internación en esta área'); - return null; - } - } const nuevaInternacion: Internacion = { ...internacion, id: generateUUID(), @@ -230,12 +220,12 @@ export function useHospitalStore() { internaciones: [...prev.internaciones, nuevaInternacion], camaS: prev.camas.map(c => c.id === internacion.camaId - ? { ...c, estado: 'Ocupada', pacienteId: internacion.pacienteId, internacionId: nuevaInternacion.id } + ? { ...c, estado: 'Ocupada' as const, pacienteId: internacion.pacienteId, internacionId: nuevaInternacion.id } : c ), })); return nuevaInternacion.id; - }, [state.currentUser, state.areas]); + }, []); const finalizarInternacion = useCallback((internacionId: string, datos: { fechaEgreso: string; @@ -273,15 +263,16 @@ const finalizarInternacion = useCallback((internacionId: string, datos: { if (!internacion) return; const user = state.currentUser; const areaId = internacion.areaId || null; - const area = state.areas.find(a => a.id === areaId); - const esFueraDeArea = area && (area.nombre || '').trim().toLowerCase() === 'fuera de area'; - if (user && user.rol !== 'admin' && !esFueraDeArea && areaId && user.areaId !== areaId) { - console.warn('No tiene permisos para actualizar internación en esta área'); - return; - } const oldCamaId = internacion.camaId; const newCamaId = datos.camaId; + const cambioDeCama = newCamaId && newCamaId !== oldCamaId; + + if (cambioDeCama && user && user.rol !== 'admin' && areaId && user.areaId !== areaId) { + console.warn('No tiene permisos para cambiar la cama de esta internación'); + return; + } + const pacienteId = datos.pacienteId || internacion.pacienteId; setState(prev => { @@ -933,11 +924,8 @@ const getEstadisticas = useCallback(() => { if (!user) return false; if (user.rol === 'admin') return true; if (!areaId) return false; - const area = state.areas.find(a => a.id === areaId); - const esFueraDeArea = area && (area.nombre || '').trim().toLowerCase() === 'fuera de area'; - if (esFueraDeArea) return true; return user.areaId === areaId; - }, [state.currentUser, state.areas]); + }, [state.currentUser]); const canEditCama = useCallback((camaId: string): boolean => { const areaId = getCamaAreaId(camaId);