Agregar boton editar a estudios complementarios
This commit is contained in:
@@ -157,6 +157,7 @@ function AppContent() {
|
|||||||
onActualizarCultivo={store.actualizarCultivo}
|
onActualizarCultivo={store.actualizarCultivo}
|
||||||
onEliminarCultivo={store.eliminarCultivo}
|
onEliminarCultivo={store.eliminarCultivo}
|
||||||
onAgregarEstudioComplementario={(e) => store.agregarEstudioComplementario({ ...e, internacionId: internacion.id })}
|
onAgregarEstudioComplementario={(e) => store.agregarEstudioComplementario({ ...e, internacionId: internacion.id })}
|
||||||
|
onActualizarEstudioComplementario={store.actualizarEstudioComplementario}
|
||||||
onEliminarEstudioComplementario={store.eliminarEstudioComplementario}
|
onEliminarEstudioComplementario={store.eliminarEstudioComplementario}
|
||||||
onActualizarInternacion={store.actualizarInternacion}
|
onActualizarInternacion={store.actualizarInternacion}
|
||||||
onActualizarCama={store.actualizarCama}
|
onActualizarCama={store.actualizarCama}
|
||||||
|
|||||||
@@ -75,6 +75,7 @@ interface HistoriaClinicaProps {
|
|||||||
onActualizarCultivo: (id: string, datos: Partial<Cultivo>) => void;
|
onActualizarCultivo: (id: string, datos: Partial<Cultivo>) => void;
|
||||||
onEliminarCultivo: (id: string) => void;
|
onEliminarCultivo: (id: string) => void;
|
||||||
onAgregarEstudioComplementario: (estudio: Omit<EstudioComplementario, 'id'>) => void;
|
onAgregarEstudioComplementario: (estudio: Omit<EstudioComplementario, 'id'>) => void;
|
||||||
|
onActualizarEstudioComplementario: (id: string, datos: Partial<EstudioComplementario>) => void;
|
||||||
onEliminarEstudioComplementario: (id: string) => void;
|
onEliminarEstudioComplementario: (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;
|
||||||
@@ -305,7 +306,7 @@ export function HistoriaClinica({
|
|||||||
<p className="font-medium">{internacion.diagnosticoIngreso}</p>
|
<p className="font-medium">{internacion.diagnosticoIngreso}</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<Accordion type="single" collapsible defaultValue="item-1">
|
<Accordion type="single" collapsible>
|
||||||
<AccordionItem value="item-1">
|
<AccordionItem value="item-1">
|
||||||
<AccordionTrigger>Detalle Episodio Actual</AccordionTrigger>
|
<AccordionTrigger>Detalle Episodio Actual</AccordionTrigger>
|
||||||
<AccordionContent className="p4">
|
<AccordionContent className="p4">
|
||||||
@@ -473,8 +474,8 @@ export function HistoriaClinica({
|
|||||||
</TabsTrigger>
|
</TabsTrigger>
|
||||||
<TabsTrigger value="acidobase" className="flex-shrink-0 flex items-center gap-1 text-xs sm:text-sm">
|
<TabsTrigger value="acidobase" className="flex-shrink-0 flex items-center gap-1 text-xs sm:text-sm">
|
||||||
<Activity className="h-3 w-3 sm:h-4 sm:w-4" />
|
<Activity className="h-3 w-3 sm:h-4 sm:w-4" />
|
||||||
<span className="hidden sm:inline">Ácido-Base</span>
|
<span className="hidden sm:inline">EAB</span>
|
||||||
<span className="sm:hidden">AB</span>
|
<span className="sm:hidden">EAB</span>
|
||||||
({acidosBase.length})
|
({acidosBase.length})
|
||||||
</TabsTrigger>
|
</TabsTrigger>
|
||||||
<TabsTrigger value="cultivos" className="flex-shrink-0 flex items-center gap-1 text-xs sm:text-sm">
|
<TabsTrigger value="cultivos" className="flex-shrink-0 flex items-center gap-1 text-xs sm:text-sm">
|
||||||
@@ -513,6 +514,8 @@ export function HistoriaClinica({
|
|||||||
internacionId={internacion.id}
|
internacionId={internacion.id}
|
||||||
pacienteId={paciente.id}
|
pacienteId={paciente.id}
|
||||||
add={onAgregarEstudioComplementario}
|
add={onAgregarEstudioComplementario}
|
||||||
|
// @ts-expect-error - type issue with onActualizarEstudioComplementario
|
||||||
|
update={onActualizarEstudioComplementario}
|
||||||
del={onEliminarEstudioComplementario}
|
del={onEliminarEstudioComplementario}
|
||||||
/>
|
/>
|
||||||
</TabsContent>
|
</TabsContent>
|
||||||
@@ -1835,11 +1838,12 @@ function SeccionCultivos({ cults, patient, add, update, del }: {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function SeccionEstudiosComplementarios({ estudios, internacionId, pacienteId, add, del }: {
|
function SeccionEstudiosComplementarios({ estudios, internacionId, pacienteId, add, update, del }: {
|
||||||
estudios: EstudioComplementario[];
|
estudios: EstudioComplementario[];
|
||||||
internacionId: string;
|
internacionId: string;
|
||||||
pacienteId: string;
|
pacienteId: string;
|
||||||
add: (e: Omit<EstudioComplementario, 'id'>) => void;
|
add: (e: Omit<EstudioComplementario, 'id'>) => void;
|
||||||
|
update: (id: string, datos: Partial<EstudioComplementario>) => void;
|
||||||
del: (id: string) => void;
|
del: (id: string) => void;
|
||||||
}) {
|
}) {
|
||||||
const [dialog, setDialog] = useState(false);
|
const [dialog, setDialog] = useState(false);
|
||||||
@@ -1847,6 +1851,7 @@ function SeccionEstudiosComplementarios({ estudios, internacionId, pacienteId, a
|
|||||||
const [fecha, setFecha] = useState(new Date().toISOString().split('T')[0]);
|
const [fecha, setFecha] = useState(new Date().toISOString().split('T')[0]);
|
||||||
const [tipo, setTipo] = useState('');
|
const [tipo, setTipo] = useState('');
|
||||||
const [resultado, setResultado] = useState('');
|
const [resultado, setResultado] = useState('');
|
||||||
|
const [edit, setEdit] = useState<EstudioComplementario | null>(null);
|
||||||
|
|
||||||
const estudiosFiltrados = filtro === 'internacion'
|
const estudiosFiltrados = filtro === 'internacion'
|
||||||
? estudios.filter(e => e.internacionId === internacionId)
|
? estudios.filter(e => e.internacionId === internacionId)
|
||||||
@@ -1856,10 +1861,22 @@ function SeccionEstudiosComplementarios({ estudios, internacionId, pacienteId, a
|
|||||||
setFecha(new Date().toISOString().split('T')[0]);
|
setFecha(new Date().toISOString().split('T')[0]);
|
||||||
setTipo('');
|
setTipo('');
|
||||||
setResultado('');
|
setResultado('');
|
||||||
|
setEdit(null);
|
||||||
|
};
|
||||||
|
|
||||||
|
const loadEdit = (e: EstudioComplementario) => {
|
||||||
|
setEdit(e);
|
||||||
|
setFecha(e.fecha);
|
||||||
|
setTipo(e.tipo);
|
||||||
|
setResultado(e.resultado);
|
||||||
|
setDialog(true);
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleGuardar = () => {
|
const handleGuardar = () => {
|
||||||
if (!tipo || !resultado) return;
|
if (!tipo || !resultado) return;
|
||||||
|
if (edit) {
|
||||||
|
update(edit.id, { fecha, tipo, resultado });
|
||||||
|
} else {
|
||||||
add({
|
add({
|
||||||
pacienteId,
|
pacienteId,
|
||||||
internacionId,
|
internacionId,
|
||||||
@@ -1867,6 +1884,7 @@ function SeccionEstudiosComplementarios({ estudios, internacionId, pacienteId, a
|
|||||||
tipo,
|
tipo,
|
||||||
resultado,
|
resultado,
|
||||||
});
|
});
|
||||||
|
}
|
||||||
setDialog(false);
|
setDialog(false);
|
||||||
reset();
|
reset();
|
||||||
};
|
};
|
||||||
@@ -1894,7 +1912,7 @@ function SeccionEstudiosComplementarios({ estudios, internacionId, pacienteId, a
|
|||||||
<Dialog open={dialog} onOpenChange={setDialog}>
|
<Dialog open={dialog} onOpenChange={setDialog}>
|
||||||
<DialogContent className="sm:max-w-lg">
|
<DialogContent className="sm:max-w-lg">
|
||||||
<DialogHeader>
|
<DialogHeader>
|
||||||
<DialogTitle>Nuevo Estudio Complementario</DialogTitle>
|
<DialogTitle>{edit ? 'Editar' : 'Nuevo'} Estudio Complementario</DialogTitle>
|
||||||
</DialogHeader>
|
</DialogHeader>
|
||||||
<div className="space-y-4">
|
<div className="space-y-4">
|
||||||
<div>
|
<div>
|
||||||
@@ -1948,10 +1966,15 @@ function SeccionEstudiosComplementarios({ estudios, internacionId, pacienteId, a
|
|||||||
<h4 className="font-semibold text-gray-900 dark:text-white">{e.tipo}</h4>
|
<h4 className="font-semibold text-gray-900 dark:text-white">{e.tipo}</h4>
|
||||||
<p className="text-sm text-gray-600 dark:text-gray-300 mt-1 whitespace-pre-wrap">{e.resultado}</p>
|
<p className="text-sm text-gray-600 dark:text-gray-300 mt-1 whitespace-pre-wrap">{e.resultado}</p>
|
||||||
</div>
|
</div>
|
||||||
<Button size="sm" variant="outline" className="text-red-600 self-start" onClick={() => del(e.id)}>
|
<div className="flex gap-1 self-start">
|
||||||
|
<Button size="sm" variant="outline" onClick={() => loadEdit(e)}>
|
||||||
|
<Pencil className="h-4 w-4" />
|
||||||
|
</Button>
|
||||||
|
<Button size="sm" variant="outline" className="text-red-600" onClick={() => del(e.id)}>
|
||||||
<Trash2 className="h-4 w-4" />
|
<Trash2 className="h-4 w-4" />
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
</CardContent>
|
</CardContent>
|
||||||
</Card>
|
</Card>
|
||||||
))}
|
))}
|
||||||
|
|||||||
Reference in New Issue
Block a user