Agregar tabla interconsultas: DB, store, UI con CRUD completo

This commit is contained in:
2026-04-17 10:00:10 -03:00
parent 59471d65bc
commit 4510938991
6 changed files with 983 additions and 5 deletions
+30
View File
@@ -9,6 +9,7 @@ import type {
AcidoBase,
Cultivo,
EstudioComplementario,
Interconsulta,
Vista
} from '@/types';
@@ -35,6 +36,7 @@ interface HospitalState {
acidosBase: AcidoBase[];
cultivos: Cultivo[];
estudiosComplementarios: EstudioComplementario[];
interconsultas: Interconsulta[];
vistaActual: Vista;
currentInternacionId?: string | null;
}
@@ -51,6 +53,7 @@ const defaultState = (): HospitalState => ({
acidosBase: [],
cultivos: [],
estudiosComplementarios: [],
interconsultas: [],
vistaActual: 'dashboard',
camas: []
});
@@ -349,6 +352,30 @@ const finalizarInternacion = useCallback((internacionId: string, datos: {
}));
}, []);
// Acciones de interconsultas
const agregarInterconsulta = useCallback((interconsulta: Omit<Interconsulta, 'id'>) => {
const nuevaInterconsulta: Interconsulta = { ...interconsulta, id: generateUUID() };
setState(prev => ({
...prev,
interconsultas: [...prev.interconsultas, nuevaInterconsulta],
}));
return nuevaInterconsulta.id;
}, []);
const actualizarInterconsulta = useCallback((id: string, datos: Partial<Interconsulta>) => {
setState(prev => ({
...prev,
interconsultas: prev.interconsultas.map(ic => ic.id === id ? { ...ic, ...datos } : ic),
}));
}, []);
const eliminarInterconsulta = useCallback((id: string) => {
setState(prev => ({
...prev,
interconsultas: prev.interconsultas.filter(ic => ic.id !== id),
}));
}, []);
// Acciones de areas
const agregarArea = useCallback((area: Omit<Area, 'id'>) => {
const nuevaArea: Area = { ...area, id: generateUUID() };
@@ -472,6 +499,9 @@ const getEstadisticas = useCallback(() => {
agregarEstudioComplementario,
actualizarEstudioComplementario,
eliminarEstudioComplementario,
agregarInterconsulta,
actualizarInterconsulta,
eliminarInterconsulta,
agregarArea,
actualizarArea,
eliminarArea,