From 95665aa1a28865937a3c85d3a57e561d5e58b9f3 Mon Sep 17 00:00:00 2001 From: Sergio Nicolas Lavaise Date: Tue, 21 Apr 2026 13:08:08 -0300 Subject: [PATCH] Add Indicaciones tab - full implementation --- src/App.tsx | 4 ++++ src/hooks/useHospitalStore.ts | 26 ++++++++++++++++++++++++++ src/sections/HistoriaClinica.tsx | 21 ++++++++++++++++++++- 3 files changed, 50 insertions(+), 1 deletion(-) diff --git a/src/App.tsx b/src/App.tsx index 4387ac7..9322263 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -167,6 +167,10 @@ function AppContent() { onAgregarATB={(atb) => store.agregarATB({ ...atb, internacionId: internacion.id })} onActualizarATB={store.actualizarATB} 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} onActualizarCama={store.actualizarCama} onVolver={() => store.setVista('internaciones')} diff --git a/src/hooks/useHospitalStore.ts b/src/hooks/useHospitalStore.ts index d10af0c..f09b0a4 100644 --- a/src/hooks/useHospitalStore.ts +++ b/src/hooks/useHospitalStore.ts @@ -405,6 +405,29 @@ const finalizarInternacion = useCallback((internacionId: string, datos: { })); }, []); + const agregarIndicacion = useCallback((indicacion: Omit) => { + const nuevaIndicacion: Indicacion = { ...indicacion, id: generateUUID() }; + setState(prev => ({ + ...prev, + indicadores: [...prev.indicadores, nuevaIndicacion], + })); + return nuevaIndicacion.id; + }, []); + + const actualizarIndicacion = useCallback((id: string, datos: Partial) => { + 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 const agregarArea = useCallback((area: Omit) => { const nuevaArea: Area = { ...area, id: generateUUID() }; @@ -534,6 +557,9 @@ const getEstadisticas = useCallback(() => { agregarATB, actualizarATB, eliminarATB, + agregarIndicacion, + actualizarIndicacion, + eliminarIndicacion, agregarArea, actualizarArea, eliminarArea, diff --git a/src/sections/HistoriaClinica.tsx b/src/sections/HistoriaClinica.tsx index d708525..3401884 100644 --- a/src/sections/HistoriaClinica.tsx +++ b/src/sections/HistoriaClinica.tsx @@ -51,8 +51,9 @@ import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@ import { ScrollArea, ScrollBar } from "@/components/ui/scroll-area" import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from '@/components/ui/dropdown-menu'; 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 { SeccionIndicaciones } from './SeccionIndicaciones'; interface HistoriaClinicaProps { internacion: Internacion; @@ -66,6 +67,7 @@ interface HistoriaClinicaProps { estudiosComplementarios: EstudioComplementario[]; interconsultas: Interconsulta[]; atb: ATB[]; + indicadores: Indicacion[]; onAgregarEvolucion: (evolucion: Omit) => void; onActualizarEvolucion: (id: string, datos: Partial) => void; onEliminarEvolucion: (id: string) => void; @@ -88,6 +90,9 @@ interface HistoriaClinicaProps { onAgregarATB: (atb: Omit) => void; onActualizarATB: (id: string, datos: Partial) => void; onEliminarATB: (id: string) => void; + onAgregarIndicacion: (indicacion: Omit) => void; + onActualizarIndicacion: (id: string, datos: Partial) => void; + onEliminarIndicacion: (id: string) => void; onActualizarInternacion: (id: string, datos: Partial) => void; onActualizarCama: (id: string, datos: Partial) => void; onVolver: () => void; @@ -197,9 +202,13 @@ export function HistoriaClinica({ onActualizarInterconsulta, onEliminarInterconsulta, atb, + indicadores, onAgregarATB, onActualizarATB, onEliminarATB, + onAgregarIndicacion, + onActualizarIndicacion, + onEliminarIndicacion, onActualizarInternacion, onActualizarCama, onVolver, @@ -543,6 +552,16 @@ export function HistoriaClinica({ /> + + + +