import { useState } from 'react'; import { ArrowLeft, Save, X, Bed, Calendar, Stethoscope, User, ClipboardList } from 'lucide-react'; import { Card, CardContent } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import { Badge } from '@/components/ui/badge'; import type { Paciente, Cama, Area, Internacion } from '@/types'; interface EditIngresoProps { internacion: Internacion; paciente: Paciente; cama: Cama | undefined; pacientes: Paciente[]; camas: Cama[]; areas: Area[]; onActualizarInternacion: (id: string, datos: Partial) => void; onVolver: () => void; getAreaName: (areaId: string | undefined) => string; } export function EditIngreso({ internacion, paciente: pacienteOriginal, cama: camaOriginal, pacientes, camas, areas, onActualizarInternacion, onVolver, getAreaName }: EditIngresoProps) { const [pacienteSeleccionado, setPacienteSeleccionado] = useState(internacion.pacienteId); const [busqueda, setBusqueda] = useState(''); const [camaSeleccionada, setCamaSeleccionada] = useState(internacion.camaId); const [medico, setMedico] = useState(internacion.medicoIngresante); const [fechaIngresoHospital, setFechaIngresoHospital] = useState(internacion.fechaIngresoHospital || ''); const [fechaIngresoClinica, setFechaIngresoClinica] = useState(internacion.fechaIngresoClinica || ''); const [motivoConsulta, setMotivoConsulta] = useState(internacion.motivoConsulta || ''); const [diagnosticoIngreso, setDiagnosticoIngreso] = useState(internacion.diagnosticoIngreso); const [enfermedadActual, setEnfermedadActual] = useState(internacion.enfermedadActual); const [antecedentesEnfermedadActual, setAntecedentesEnfermedadActual] = useState(internacion.antecedentesEnfermedadActual || ''); const [apache, setApache] = useState(internacion.apache || ''); const [derivacion, setDerivacion] = useState(internacion.derivacion || ''); const calcularEdad = (fechaNacimiento: string) => { const hoy = new Date(); const nacimiento = new Date(fechaNacimiento); let edad = hoy.getFullYear() - nacimiento.getFullYear(); const mes = hoy.getMonth() - nacimiento.getMonth(); if (mes < 0 || (mes === 0 && hoy.getDate() < nacimiento.getDate())) { edad--; } return edad; }; const selectedPaciente = pacientes.find(p => p.id === pacienteSeleccionado); const handleSubmit = () => { if (!pacienteSeleccionado || !camaSeleccionada || !medico || !diagnosticoIngreso || !enfermedadActual) { alert('Por favor complete los campos obligatorios'); return; } onActualizarInternacion(internacion.id, { pacienteId: pacienteSeleccionado, camaId: camaSeleccionada, medicoIngresante: medico, diagnosticoIngreso, motivoConsulta: motivoConsulta || undefined, enfermedadActual, antecedentesEnfermedadActual: antecedentesEnfermedadActual || undefined, fechaIngresoHospital: fechaIngresoHospital || undefined, fechaIngresoClinica: fechaIngresoClinica || undefined, apache: apache || undefined, derivacion: derivacion || undefined, }); onVolver(); }; return (

Editar Ingreso

Modificar datos de internación

{/* Columna 1: Datos del Paciente, Cama y Datos Adicionales */}

Datos del Paciente

{selectedPaciente ? (
{selectedPaciente?.apellido}, {selectedPaciente?.nombre} {selectedPaciente?.fechaNacimiento ? calcularEdad(selectedPaciente.fechaNacimiento) + ' años' : ''} DNI: {selectedPaciente?.dni}
HC: {selectedPaciente?.historiaClinica || 'N/A'} {selectedPaciente?.obraSocial || 'Sin obra social'} {selectedPaciente?.nacionalidad || 'N/A'}
) : ( <> setBusqueda(e.target.value)} />
{(() => { const q = busqueda.trim().toLowerCase(); if (!q) { return
Escriba para buscar
; } const matches = pacientes.filter(p => p.apellido.toLowerCase().includes(q) || p.nombre.toLowerCase().includes(q) || p.dni.includes(q) ); if (matches.length === 0) { return
Sin resultados
; } return matches.map(p => ( )); })()}
)}
{/* Columna 2: Cama */}

Asignación de Cama

Datos de Ingreso

setFechaIngresoHospital(e.target.value)} />
setFechaIngresoClinica(e.target.value)} />
setDerivacion(e.target.value)} />
setApache(e.target.value)} />

Datos Clínicos