Add Indicaciones tab - full implementation

This commit is contained in:
2026-04-21 13:08:08 -03:00
parent 1833cf41eb
commit 95665aa1a2
3 changed files with 50 additions and 1 deletions
+4
View File
@@ -167,6 +167,10 @@ function AppContent() {
onAgregarATB={(atb) => store.agregarATB({ ...atb, internacionId: internacion.id })} onAgregarATB={(atb) => store.agregarATB({ ...atb, internacionId: internacion.id })}
onActualizarATB={store.actualizarATB} onActualizarATB={store.actualizarATB}
onEliminarATB={store.eliminarATB} onEliminarATB={store.eliminarATB}
indicadores={(store.indicadores || []).filter(i => i.internacionId === internacion.id)}
onAgregarIndicacion={(i) => store.agregarIndicacion({ ...i, internacionId: internacion.id })}
onActualizarIndicacion={store.actualizarIndicacion}
onEliminarIndicacion={store.eliminarIndicacion}
onActualizarInternacion={store.actualizarInternacion} onActualizarInternacion={store.actualizarInternacion}
onActualizarCama={store.actualizarCama} onActualizarCama={store.actualizarCama}
onVolver={() => store.setVista('internaciones')} onVolver={() => store.setVista('internaciones')}
+26
View File
@@ -405,6 +405,29 @@ const finalizarInternacion = useCallback((internacionId: string, datos: {
})); }));
}, []); }, []);
const agregarIndicacion = useCallback((indicacion: Omit<Indicacion, 'id'>) => {
const nuevaIndicacion: Indicacion = { ...indicacion, id: generateUUID() };
setState(prev => ({
...prev,
indicadores: [...prev.indicadores, nuevaIndicacion],
}));
return nuevaIndicacion.id;
}, []);
const actualizarIndicacion = useCallback((id: string, datos: Partial<Indicacion>) => {
setState(prev => ({
...prev,
indicadores: prev.indicadores.map(i => i.id === id ? { ...i, ...datos } : i),
}));
}, []);
const eliminarIndicacion = useCallback((id: string) => {
setState(prev => ({
...prev,
indicadores: prev.indicadores.filter(i => i.id !== id),
}));
}, []);
// Acciones de areas // Acciones de areas
const agregarArea = useCallback((area: Omit<Area, 'id'>) => { const agregarArea = useCallback((area: Omit<Area, 'id'>) => {
const nuevaArea: Area = { ...area, id: generateUUID() }; const nuevaArea: Area = { ...area, id: generateUUID() };
@@ -534,6 +557,9 @@ const getEstadisticas = useCallback(() => {
agregarATB, agregarATB,
actualizarATB, actualizarATB,
eliminarATB, eliminarATB,
agregarIndicacion,
actualizarIndicacion,
eliminarIndicacion,
agregarArea, agregarArea,
actualizarArea, actualizarArea,
eliminarArea, eliminarArea,
+20 -1
View File
@@ -51,8 +51,9 @@ import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@
import { ScrollArea, ScrollBar } from "@/components/ui/scroll-area" import { ScrollArea, ScrollBar } from "@/components/ui/scroll-area"
import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from '@/components/ui/dropdown-menu'; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from '@/components/ui/dropdown-menu';
import { LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer } from 'recharts'; import { LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer } from 'recharts';
import type { Laboratorio, AcidoBase, Cultivo, Paciente, ResultadoLaboratorio, Internacion, Evolucion, Cama, EstudioComplementario, Interconsulta, ATB } from '@/types'; import type { Laboratorio, AcidoBase, Cultivo, Paciente, ResultadoLaboratorio, Internacion, Evolucion, Cama, EstudioComplementario, Interconsulta, ATB, Indicacion } from '@/types';
import { formatDateDDMMYYYY } from '@/lib/utils'; import { formatDateDDMMYYYY } from '@/lib/utils';
import { SeccionIndicaciones } from './SeccionIndicaciones';
interface HistoriaClinicaProps { interface HistoriaClinicaProps {
internacion: Internacion; internacion: Internacion;
@@ -66,6 +67,7 @@ interface HistoriaClinicaProps {
estudiosComplementarios: EstudioComplementario[]; estudiosComplementarios: EstudioComplementario[];
interconsultas: Interconsulta[]; interconsultas: Interconsulta[];
atb: ATB[]; atb: ATB[];
indicadores: Indicacion[];
onAgregarEvolucion: (evolucion: Omit<Evolucion, 'id'>) => void; onAgregarEvolucion: (evolucion: Omit<Evolucion, 'id'>) => void;
onActualizarEvolucion: (id: string, datos: Partial<Evolucion>) => void; onActualizarEvolucion: (id: string, datos: Partial<Evolucion>) => void;
onEliminarEvolucion: (id: string) => void; onEliminarEvolucion: (id: string) => void;
@@ -88,6 +90,9 @@ interface HistoriaClinicaProps {
onAgregarATB: (atb: Omit<ATB, 'id'>) => void; onAgregarATB: (atb: Omit<ATB, 'id'>) => void;
onActualizarATB: (id: string, datos: Partial<ATB>) => void; onActualizarATB: (id: string, datos: Partial<ATB>) => void;
onEliminarATB: (id: string) => void; onEliminarATB: (id: string) => void;
onAgregarIndicacion: (indicacion: Omit<Indicacion, 'id'>) => void;
onActualizarIndicacion: (id: string, datos: Partial<Indicacion>) => void;
onEliminarIndicacion: (id: string) => void;
onActualizarInternacion: (id: string, datos: Partial<Internacion>) => void; onActualizarInternacion: (id: string, datos: Partial<Internacion>) => void;
onActualizarCama: (id: string, datos: Partial<Cama>) => void; onActualizarCama: (id: string, datos: Partial<Cama>) => void;
onVolver: () => void; onVolver: () => void;
@@ -197,9 +202,13 @@ export function HistoriaClinica({
onActualizarInterconsulta, onActualizarInterconsulta,
onEliminarInterconsulta, onEliminarInterconsulta,
atb, atb,
indicadores,
onAgregarATB, onAgregarATB,
onActualizarATB, onActualizarATB,
onEliminarATB, onEliminarATB,
onAgregarIndicacion,
onActualizarIndicacion,
onEliminarIndicacion,
onActualizarInternacion, onActualizarInternacion,
onActualizarCama, onActualizarCama,
onVolver, onVolver,
@@ -543,6 +552,16 @@ export function HistoriaClinica({
/> />
</TabsContent> </TabsContent>
<TabsContent value="indicaciones" className="mt-4">
<SeccionIndicaciones
recomendaciones={indicadores}
internacionId={internacion.id}
add={onAgregarIndicacion}
update={onActualizarIndicacion}
del={onEliminarIndicacion}
/>
</TabsContent>
<TabsContent value="estudios" className="mt-4"> <TabsContent value="estudios" className="mt-4">
<SeccionEstudiosComplementarios <SeccionEstudiosComplementarios
estudios={estudiosComplementarios} estudios={estudiosComplementarios}