Agregar hora a laboratorios: modal importar, save con hora seleccionada
This commit is contained in:
+50
-50
@@ -26,12 +26,12 @@ interface MapaCamasProps {
|
||||
getInternacionById: (id: string) => Internacion | undefined;
|
||||
}
|
||||
|
||||
export function MapaCamas({
|
||||
export function MapaCamas({
|
||||
camas,
|
||||
areas,
|
||||
pacientes,
|
||||
pacientes,
|
||||
internaciones,
|
||||
onActualizarCama,
|
||||
onActualizarCama,
|
||||
onAgregarCama,
|
||||
onEliminarCama,
|
||||
onIniciarInternacion,
|
||||
@@ -117,7 +117,7 @@ export function MapaCamas({
|
||||
const getOrden = (sala: number) => {
|
||||
const grupo = Math.floor(sala / 100);
|
||||
const esPar = sala % 2 === 0;
|
||||
|
||||
|
||||
if (grupo === 2) {
|
||||
if (esPar) return { grupo: 2, suborden: 0, sala }; // 2XX pares, menor a mayor
|
||||
return { grupo: 1, suborden: 1, sala }; // 2XX impares, mayor a menor
|
||||
@@ -173,7 +173,7 @@ export function MapaCamas({
|
||||
return !internacionActiva;
|
||||
});
|
||||
|
||||
return (
|
||||
return (
|
||||
<div className="space-y-6 dark:text-white">
|
||||
<div className="flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4">
|
||||
<div>
|
||||
@@ -187,25 +187,25 @@ return (
|
||||
<Badge variant="outline" className="bg-red-50 text-red-700">
|
||||
{camas.filter(c => c.estado === 'Ocupada').length} Ocupadas
|
||||
</Badge>
|
||||
<div className="ml-4 flex items-center gap-2 flex-wrap sm:flex-nowrap">
|
||||
<Button variant="outline" onClick={() => {
|
||||
setEditingAreaId(null);
|
||||
setAreaNombre('');
|
||||
setAreaDialogOpen(true);
|
||||
}} className="text-xs px-2 py-1 sm:text-sm sm:px-4 sm:py-2">
|
||||
Administrar Áreas
|
||||
</Button>
|
||||
<Button variant="outline" onClick={() => {
|
||||
setEditingBed(null);
|
||||
setBedNumero('');
|
||||
setBedTipo('General');
|
||||
setBedAreaId(areas?.[0]?.id);
|
||||
setBedDialogOpen(true);
|
||||
}} className="text-xs px-2 py-1 sm:text-sm sm:px-4 sm:py-2">
|
||||
<Plus className="h-3 w-3 sm:h-4 sm:w-4 sm:mr-1" />
|
||||
<span className="hidden sm:inline">Agregar Cama</span>
|
||||
</Button>
|
||||
</div>
|
||||
<div className="ml-4 flex items-center gap-2 flex-wrap sm:flex-nowrap">
|
||||
<Button variant="outline" onClick={() => {
|
||||
setEditingAreaId(null);
|
||||
setAreaNombre('');
|
||||
setAreaDialogOpen(true);
|
||||
}} className="text-xs px-2 py-1 sm:text-sm sm:px-4 sm:py-2">
|
||||
Administrar Áreas
|
||||
</Button>
|
||||
<Button variant="outline" onClick={() => {
|
||||
setEditingBed(null);
|
||||
setBedNumero('');
|
||||
setBedTipo('General');
|
||||
setBedAreaId(areas?.[0]?.id);
|
||||
setBedDialogOpen(true);
|
||||
}} className="text-xs px-2 py-1 sm:text-sm sm:px-4 sm:py-2">
|
||||
<Plus className="h-3 w-3 sm:h-4 sm:w-4 sm:mr-1" />
|
||||
<span className="hidden sm:inline">Agregar Cama</span>
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -265,11 +265,11 @@ return (
|
||||
{sortedCamas.map((cama) => {
|
||||
const paciente = cama.pacienteId ? getPacienteById(cama.pacienteId) : null;
|
||||
const internacion = cama.internacionId ? getInternacionById(cama.internacionId) : null;
|
||||
|
||||
|
||||
return (
|
||||
<Dialog key={cama.id}>
|
||||
<DialogTrigger asChild>
|
||||
<Card
|
||||
<Card
|
||||
className={`cursor-pointer hover:shadow-md transition-shadow border-2 w-full ${getEstadoColor(cama)}`}
|
||||
onClick={() => setCamaSeleccionada(cama)}
|
||||
>
|
||||
@@ -291,12 +291,12 @@ return (
|
||||
</div>
|
||||
)}
|
||||
|
||||
|
||||
|
||||
</CardContent>
|
||||
</Card>
|
||||
</DialogTrigger>
|
||||
<DialogContent className="sm:max-w-md">
|
||||
<DialogHeader>
|
||||
<DialogHeader>
|
||||
<DialogTitle className="flex items-center gap-2">
|
||||
<Bed className="h-5 w-5" />
|
||||
Cama {cama.numero} - {cama.areaId ? areaById[cama.areaId] ?? 'Área desconocida' : 'Sin área'}
|
||||
@@ -309,7 +309,7 @@ return (
|
||||
</Badge>
|
||||
<Badge variant="outline">{cama.tipo}</Badge>
|
||||
</div>
|
||||
|
||||
|
||||
{cama.estado === 'Ocupada' && paciente && internacion && (
|
||||
<div className="bg-gray-50 p-4 rounded-lg space-y-2">
|
||||
<p className="font-medium">Paciente:</p>
|
||||
@@ -328,7 +328,7 @@ return (
|
||||
<Dialog open={dialogoAbierto} onOpenChange={setDialogoAbierto}>
|
||||
<DialogTrigger asChild>
|
||||
<Button variant="outline"
|
||||
className="w-full"
|
||||
className="w-full"
|
||||
onClick={() => {
|
||||
setCamaSeleccionada(cama);
|
||||
setDialogoAbierto(true);
|
||||
@@ -398,22 +398,22 @@ return (
|
||||
placeholder="Nombre del médico..."
|
||||
/>
|
||||
</div>
|
||||
<Button variant="outline"
|
||||
className="w-full"
|
||||
onClick={handleOcuparCama}
|
||||
disabled={!pacienteSeleccionado || !diagnostico || !enfermedadActual || !medico}
|
||||
>
|
||||
<Plus className="h-4 w-4 mr-1" />
|
||||
Iniciar Internación
|
||||
</Button>
|
||||
<Button variant="outline"
|
||||
className="w-full"
|
||||
onClick={handleOcuparCama}
|
||||
disabled={!pacienteSeleccionado || !diagnostico || !enfermedadActual || !medico}
|
||||
>
|
||||
<Plus className="h-4 w-4 mr-1" />
|
||||
Iniciar Internación
|
||||
</Button>
|
||||
</div>
|
||||
</DialogContent>
|
||||
</Dialog>
|
||||
)}
|
||||
|
||||
|
||||
{cama.estado !== 'Disponible' && (
|
||||
<Button
|
||||
variant="outline"
|
||||
<Button
|
||||
variant="outline"
|
||||
className="w-full"
|
||||
onClick={() => handleCambiarEstado(cama, 'Disponible')}
|
||||
>
|
||||
@@ -421,10 +421,10 @@ return (
|
||||
Disponible
|
||||
</Button>
|
||||
)}
|
||||
|
||||
|
||||
{cama.estado !== 'Reparacion' && (
|
||||
<Button
|
||||
variant="outline"
|
||||
<Button
|
||||
variant="outline"
|
||||
className="w-full"
|
||||
onClick={() => handleCambiarEstado(cama, 'Reparacion')}
|
||||
>
|
||||
@@ -432,10 +432,10 @@ return (
|
||||
Reparacion
|
||||
</Button>
|
||||
)}
|
||||
|
||||
|
||||
{cama.estado !== 'Reservada' && (
|
||||
<Button
|
||||
variant="outline"
|
||||
<Button
|
||||
variant="outline"
|
||||
className="w-full"
|
||||
onClick={() => handleCambiarEstado(cama, 'Reservada')}
|
||||
>
|
||||
@@ -444,7 +444,7 @@ return (
|
||||
</Button>
|
||||
)}
|
||||
|
||||
|
||||
|
||||
<Button variant="outline" onClick={() => {
|
||||
setEditingBed(cama);
|
||||
setBedNumero(cama.numero);
|
||||
@@ -462,9 +462,9 @@ return (
|
||||
<Trash className="h-4 w-4 mr-1" />Eliminar
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</DialogContent>
|
||||
</Dialog>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user