import { useHospitalStore } from '@/hooks/useHospitalStore'; import { Layout } from '@/sections/Layout'; import { Dashboard } from '@/sections/Dashboard'; import { MapaCamas } from '@/sections/MapaCamas'; import { Pacientes } from '@/sections/Pacientes'; import { Internaciones } from '@/sections/Internaciones'; import { Evoluciones } from '@/sections/Evoluciones'; import { AcidoBaseSection } from '@/sections/AcidoBase'; import { Cultivos } from '@/sections/Cultivos'; import { HistoriaClinica } from '@/sections/HistoriaClinica'; import { NuevoIngreso } from '@/sections/NuevoIngreso'; import { EditIngreso } from '@/sections/EditIngreso'; import { Login } from '@/sections/Login'; import { GestionUsuarios } from '@/sections/GestionUsuarios'; import { Spinner } from '@/components/ui/spinner'; import { Button } from '@/components/ui/button'; import { ThemeProvider } from "@/components/theme-provider"; import { Toaster } from '@/components/ui/sonner'; function AppContent() { const store = useHospitalStore(); if (!store.isLoaded) { return (
); } if (!store.isAuthenticated) { return ; } const renderVista = () => { switch (store.vistaActual) { case 'dashboard': return ( ); case 'camas': return ( ); case 'pacientes': return ( ); case 'internaciones': return ( { store.setCurrentInternacion(id); store.setVista('historiaclinica'); }} onNuevoIngreso={() => store.setVista('nuevoingreso')} /> ); case 'evoluciones': return ( ); case 'acidobase': return ( ); case 'cultivos': { const internacionId = store.currentInternacionId || ''; console.log('Cultivos - currentInternacionId:', internacionId); const internacion = store.getInternacionById(internacionId); console.log('Cultivos - internacion:', internacion); const paciente = internacion ? store.getPacienteById(internacion.pacienteId) : undefined; console.log('Cultivos - paciente:', paciente); if (!internacion) { return (

Internación no encontrada (id: {internacionId})

); } if (!paciente) { return (

Paciente no encontrado para internación

); } return ( c.pacienteId === paciente.id)} patient={paciente} internacionId={internacion.id} onAgregarCultivo={store.agregarCultivo} onActualizarCultivo={store.actualizarCultivo} onEliminarCultivo={store.eliminarCultivo} canEdit={store.canEditInternacion(internacion.id)} /> ); } case 'historiaclinica': { const internacionId = store.currentInternacionId || ''; const internacion = store.getInternacionById(internacionId); const { datosVitales, evoluciones, laboratorios, acidosBase, cultivos, estudios, interconsultas, atb, indicaciones } = store; const paciente = internacion ? store.getPacienteById(internacion.pacienteId) : undefined; if (!internacion || !paciente) { return (

Internación no encontrada (id: {internacionId})

); } return ( e.pacienteId === paciente.id)} interconsultas={(store.interconsultas || []).filter(ic => ic.internacionId === internacion.id)} atb={(store.atb || []).filter(a => a.internacionId === internacion.id)} onAgregarEvolucion={store.agregarEvolucion} onActualizarEvolucion={store.actualizarEvolucion} onEliminarEvolucion={store.eliminarEvolucion} onAgregarLaboratorio={(l) => store.agregarLaboratorio({ ...l, internacionId: internacion.id })} onActualizarLaboratorio={store.actualizarLaboratorio} onEliminarLaboratorio={store.eliminarLaboratorio} onAgregarAcidoBase={(a) => store.agregarAcidoBase({ ...a, internacionId: internacion.id })} onActualizarAcidoBase={store.actualizarAcidoBase} onEliminarAcidoBase={store.eliminarAcidoBase} onAgregarCultivo={(c) => store.agregarCultivo({ ...c, internacionId: internacion.id })} onActualizarCultivo={store.actualizarCultivo} onEliminarCultivo={store.eliminarCultivo} onAgregarEstudioComplementario={(e) => store.agregarEstudioComplementario({ ...e, internacionId: internacion.id })} onActualizarEstudioComplementario={store.actualizarEstudioComplementario} onEliminarEstudioComplementario={store.eliminarEstudioComplementario} onAgregarInterconsulta={(ic) => store.agregarInterconsulta({ ...ic, internacionId: internacion.id })} onActualizarInterconsulta={store.actualizarInterconsulta} onEliminarInterconsulta={store.eliminarInterconsulta} onAgregarATB={(atb) => store.agregarATB({ ...atb, internacionId: internacion.id })} onActualizarATB={store.actualizarATB} onEliminarATB={store.eliminarATB} indicadores={(Array.isArray(store.indicaciones) ? store.indicaciones : []).filter((i: any) => i.internacionId === internacion.id)} movimientos={store.getMovimientosByInternacion ? store.getMovimientosByInternacion(internacion.id) : []} onAgregarIndicacion={(i) => store.agregarIndicacion({ ...i, internacionId: internacion.id })} onActualizarIndicacion={store.actualizarIndicacion} onEliminarIndicacion={store.eliminarIndicacion} onAgregarMovimiento={(m: any) => store.agregarMovimientoIndicacion ? store.agregarMovimientoIndicacion({ ...m, internacionId: internacion.id }) : null} onActualizarInternacion={store.actualizarInternacion} onActualizarCama={store.actualizarCama} onVolver={() => store.setVista('internaciones')} onEditarIngreso={() => { store.setVista('editaringreso'); }} canEdit={store.canEditInternacion(internacion.id)} /> ); } case 'nuevoingreso': return ( store.setVista('internaciones')} getAreaName={(areaId) => store.areas.find(a => a.id === areaId)?.nombre || ''} /> ); case 'editaringreso': { const internacionId = store.currentInternacionId || ''; const internacion = store.getInternacionById(internacionId); const paciente = internacion ? store.getPacienteById(internacion.pacienteId) : undefined; if (!internacion || !paciente) { return (

Internación no encontrada (id: {internacionId})

); } return ( store.setVista('historiaclinica')} getAreaName={(areaId) => store.areas.find(a => a.id === areaId)?.nombre || ''} /> ); } case 'usuarios': return ( ); default: return null; } }; return ( {renderVista()} ); } function App() { return ( ); } export default App;