Fix: permisos para crear/editar ingresos en área 'Fuera de área'
- Usuarios pueden crear ingresos en 'Fuera de área' - Usuarios pueden editar ingresos en 'Fuera de área' - canEditInArea permite editar ingresos de 'Fuera de área'
This commit is contained in:
@@ -212,7 +212,9 @@ export function useHospitalStore() {
|
||||
const iniciarInternacion = useCallback((internacion: Omit<Internacion, 'id' | 'activa'>) => {
|
||||
const user = state.currentUser;
|
||||
const areaId = internacion.areaId || null;
|
||||
if (user && user.rol !== 'admin' && areaId && user.areaId !== areaId) {
|
||||
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 iniciar internación en esta área');
|
||||
return null;
|
||||
}
|
||||
@@ -224,14 +226,14 @@ export function useHospitalStore() {
|
||||
setState(prev => ({
|
||||
...prev,
|
||||
internaciones: [...prev.internaciones, nuevaInternacion],
|
||||
camas: prev.camas.map(c =>
|
||||
camaS: prev.camas.map(c =>
|
||||
c.id === internacion.camaId
|
||||
? { ...c, estado: 'Ocupada', pacienteId: internacion.pacienteId, internacionId: nuevaInternacion.id }
|
||||
: c
|
||||
),
|
||||
}));
|
||||
return nuevaInternacion.id;
|
||||
}, [state.currentUser]);
|
||||
}, [state.currentUser, state.areas]);
|
||||
|
||||
const finalizarInternacion = useCallback((internacionId: string, datos: {
|
||||
fechaEgreso: string;
|
||||
@@ -269,7 +271,9 @@ const finalizarInternacion = useCallback((internacionId: string, datos: {
|
||||
if (!internacion) return;
|
||||
const user = state.currentUser;
|
||||
const areaId = internacion.areaId || null;
|
||||
if (user && user.rol !== 'admin' && areaId && user.areaId !== areaId) {
|
||||
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;
|
||||
}
|
||||
@@ -927,8 +931,11 @@ 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.currentUser, state.areas]);
|
||||
|
||||
const canEditCama = useCallback((camaId: string): boolean => {
|
||||
const areaId = getCamaAreaId(camaId);
|
||||
|
||||
Reference in New Issue
Block a user