Add Indicaciones tab - full implementation
This commit is contained in:
@@ -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')}
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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}
|
||||||
|
|||||||
Reference in New Issue
Block a user