Actualizacion de sistema: mejoras en seleccion de categorias de cultivos, optimizacion responsive de listado de cultivos e historia clinica, y correccion de componentes
This commit is contained in:
@@ -11,6 +11,7 @@ import type {
|
||||
Glucemia,
|
||||
AcidoBase,
|
||||
Cultivo,
|
||||
TipoCultivo,
|
||||
EstudioComplementario,
|
||||
Interconsulta,
|
||||
ATB,
|
||||
@@ -45,6 +46,7 @@ interface HospitalState {
|
||||
glucemias: Glucemia[];
|
||||
acidosBase: AcidoBase[];
|
||||
cultivos: Cultivo[];
|
||||
tiposCultivo: TipoCultivo[];
|
||||
estudiosComplementarios: EstudioComplementario[];
|
||||
interconsultas: Interconsulta[];
|
||||
atb: ATB[];
|
||||
@@ -71,6 +73,7 @@ const defaultState = (): HospitalState => ({
|
||||
glucemias: [],
|
||||
acidosBase: [],
|
||||
cultivos: [],
|
||||
tiposCultivo: [],
|
||||
estudiosComplementarios: [],
|
||||
interconsultas: [],
|
||||
atb: [],
|
||||
@@ -104,6 +107,7 @@ export function useHospitalStore() {
|
||||
const normalized = {
|
||||
...defaults,
|
||||
...body,
|
||||
tiposCultivo: body.tiposCultivo || [],
|
||||
estudiosComplementarios: body.estudiosComplementarios || [],
|
||||
interconsultas: body.interconsultas || [],
|
||||
atb: body.atb || [],
|
||||
@@ -992,6 +996,75 @@ const actualizarInternacion = useCallback(async (internacionId: string, datos: P
|
||||
}
|
||||
}, [state, checkGrupoPermission, apiCall]);
|
||||
|
||||
// Acciones de tipos de cultivo
|
||||
const agregarTipoCultivo = useCallback(async (tipo: Omit<TipoCultivo, 'id'>) => {
|
||||
const nuevoTipo: TipoCultivo = {
|
||||
...tipo,
|
||||
id: generateUUID(),
|
||||
};
|
||||
try {
|
||||
const res = await apiCall('POST', '/tipos-cultivo', nuevoTipo);
|
||||
const saved = res || nuevoTipo;
|
||||
setState(prev => ({
|
||||
...prev,
|
||||
tiposCultivo: [...prev.tiposCultivo.filter(t => t.id !== saved.id), saved],
|
||||
}));
|
||||
toast.success(`Tipo de cultivo "${saved.nombre}" creado exitosamente`);
|
||||
return saved;
|
||||
} catch (err) {
|
||||
console.error('Error al agregar tipo de cultivo:', err);
|
||||
toast.error(err instanceof Error ? err.message : 'Error al agregar tipo de cultivo');
|
||||
throw err;
|
||||
}
|
||||
}, [apiCall]);
|
||||
|
||||
const actualizarTipoCultivo = useCallback(async (id: string, datos: Partial<TipoCultivo>) => {
|
||||
try {
|
||||
await apiCall('PUT', `/tipos-cultivo/${id}`, datos);
|
||||
setState(prev => ({
|
||||
...prev,
|
||||
tiposCultivo: prev.tiposCultivo.map(t => t.id === id ? { ...t, ...datos } : t),
|
||||
}));
|
||||
toast.success('Tipo de cultivo actualizado exitosamente');
|
||||
} catch (err) {
|
||||
console.error('Error al actualizar tipo de cultivo:', err);
|
||||
toast.error(err instanceof Error ? err.message : 'Error al actualizar tipo de cultivo');
|
||||
throw err;
|
||||
}
|
||||
}, [apiCall]);
|
||||
|
||||
const eliminarTipoCultivo = useCallback(async (id: string) => {
|
||||
try {
|
||||
await apiCall('DELETE', `/tipos-cultivo/${id}`);
|
||||
setState(prev => ({
|
||||
...prev,
|
||||
tiposCultivo: prev.tiposCultivo.filter(t => t.id !== id),
|
||||
}));
|
||||
toast.success('Tipo de cultivo eliminado');
|
||||
} catch (err) {
|
||||
console.error('Error al eliminar tipo de cultivo:', err);
|
||||
toast.error(err instanceof Error ? err.message : 'Error al eliminar tipo de cultivo');
|
||||
throw err;
|
||||
}
|
||||
}, [apiCall]);
|
||||
|
||||
const restablecerTiposCultivo = useCallback(async () => {
|
||||
try {
|
||||
const res = await apiCall('POST', '/tipos-cultivo/reset');
|
||||
if (Array.isArray(res)) {
|
||||
setState(prev => ({
|
||||
...prev,
|
||||
tiposCultivo: res,
|
||||
}));
|
||||
}
|
||||
toast.success('Tipos de cultivo restablecidos a valores predeterminados');
|
||||
} catch (err) {
|
||||
console.error('Error al restablecer tipos de cultivo:', err);
|
||||
toast.error('Error al restablecer tipos de cultivo');
|
||||
throw err;
|
||||
}
|
||||
}, [apiCall]);
|
||||
|
||||
// Acciones de estudios complementarios
|
||||
const agregarEstudioComplementario = useCallback(async (estudio: Omit<EstudioComplementario, 'id'>) => {
|
||||
const internacion = state.internaciones.find(i => i.id === estudio.internacionId);
|
||||
@@ -1581,6 +1654,10 @@ const actualizarInternacion = useCallback(async (internacionId: string, datos: P
|
||||
agregarCultivo,
|
||||
actualizarCultivo,
|
||||
eliminarCultivo,
|
||||
agregarTipoCultivo,
|
||||
actualizarTipoCultivo,
|
||||
eliminarTipoCultivo,
|
||||
restablecerTiposCultivo,
|
||||
agregarEstudioComplementario,
|
||||
actualizarEstudioComplementario,
|
||||
eliminarEstudioComplementario,
|
||||
|
||||
Reference in New Issue
Block a user