// Tipos para el Sistema de Gestión Hospitalaria export interface Paciente { id: string; nombre: string; apellido: string; dni: string; fechaNacimiento: string; sexo: 'M' | 'F' | 'Otro'; telefono: string; email?: string; direccion?: string; grupoSanguineo?: string; alergias?: string; antecedentes?: string; fechaRegistro?: string; obraSocial?: string; nacionalidad?: string; medicacionHabitual?: string; historiaClinica?: string; notas?: string; } export interface Grupo { id: string; nombre: string; } export type Area = Grupo; export interface Cama { id: string; numero: string; grupoId?: string; areaId?: string; tipo: 'General' | 'Aislamiento KPC' | 'Aislamiento COVID' | 'Aislamiento Clostridium' | 'Aislamiento Neutropenico' | 'Aislamiento TBC' | 'Aislamiento Escabiosis'; estado: 'Disponible' | 'Ocupada' | 'Reparacion' | 'Reservada'; pacienteId?: string; internacionId?: string; sector?: "En Área" | "Fuera de Área"; } export interface Internacion { id: string; pacienteId: string; camaId: string; grupoId?: string; areaId?: string; fechaIngresoHospital?: string; fechaIngresoClinica?: string; fechaEgreso?: string; diagnosticoIngreso: string; motivoConsulta?: string; enfermedadActual: string; antecedentesEnfermedadActual?: string; diagnosticoEgreso?: string; medicoIngresante: string; motivoEgreso?: 'Alta médica' | 'Egreso Voluntario' | 'Derivación' | 'Obito' | 'Pase servicio' | 'Otro'; servicioAlQuePasa?: string; activa: boolean; apache?: string; derivacion?: string; } export interface ExamenFisico { SNC?: string; Cardiovascular?: string; Respiratorio?: string; Abdominal?: string; Genitourinario?: string; PielAnexos?: string; SOMA?: string; } export interface Evolucion { id: string; internacionId: string; fecha: string; hora: string; medico: string; signosVitales?: SignosVitales; examenFisico?: ExamenFisico; novedades?: string; comentario?: string; pendientes?: string; } export interface SignosVitales { temperatura?: number; presionSistolica?: number; presionDiastolica?: number; frecuenciaCardiaca?: number; frecuenciaRespiratoria?: number; saturacionO2?: number; glucosa?: number; peso?: number; talla?: number; imc?: number; } export interface Laboratorio { id: string; pacienteId: string; internacionId?: string; sector?: "En Área" | "Fuera de Área"; fecha: string; hora: string; tipo?: 'Hemograma' | 'Química sanguínea' | 'Urianálisis' | 'Coagulación' | 'Microbiología' | 'Inmunología' | 'Otros'; resultados: ResultadoLaboratorio[]; observaciones?: string; medicoSolicitante?: string; } export interface ResultadoLaboratorio { parametro: string; valor: number | string; unidad: string; valorReferencia?: string; estado: 'Normal' | 'Alto' | 'Bajo' | 'Crítico'; } export interface OtroLaboratorio { id: string; pacienteId: string; internacionId?: string; fecha: string; hora?: string; observaciones: string; categoria?: 'Perfil Lipídico' | 'Perfil Tiroideo' | 'Autoinmunidad' | 'Toracocentesis' | 'Líquido Ascitico' | 'LCR' | 'Otros' | string; } export interface Glucemia { id: string; pacienteId: string; internacionId?: string; sector?: "En Área" | "Fuera de Área"; fecha: string; hora: string; valor: number; // in mg% correccion: number; // in UI insulin } export interface AcidoBase { id: string; pacienteId: string; internacionId?: string; sector?: "En Área" | "Fuera de Área"; fecha: string; hora: string; ph: number; pco2: number; po2: number; hco3: number; be: number; sato2: number; lactato?: number; fio2?: number; interpretacion?: string; } export interface TipoCultivo { id: string; nombre: string; categoria?: string; descripcion?: string; } export interface Cultivo { id: string; pacienteId: string; internacionId?: string; sector?: "En Área" | "Fuera de Área"; fechaToma: string; protocolo?: string; fechaResultado?: string; tipoMuestra: string; germen?: string; sensible?: string; resistente?: string; estado: 'NAF/Pendiente' | 'Parcial' | 'Positivo' | 'Negativo'; observaciones?: string; } export interface EstudioComplementario { id: string; pacienteId: string; internacionId?: string; sector?: "En Área" | "Fuera de Área"; fecha: string; tipo: string; resultado: string; } export interface Interconsulta { id: string; pacienteId: string; internacionId: string; fecha: string; servicioInterconsultado: string; motivo?: string; respuestaInterconsulta?: string; respuestaFecha?: string; } export interface ATB { id: string; pacienteId: string; internacionId: string; antibiotico: string; fechaInicio: string; fechaFinalizacion?: string; } export type IndicacionTipo = 'Farmacologica' | 'Farmacologica Profilactica' | 'Farmacologica Antibiótico' | 'Farmacologica Insulina' | 'No Farmacologica' | 'PHP' | 'PHP Paralelo' | 'PHP Alterno'; export type TipoInsulina = 'NPH' | 'Glargina'; export type ViaAdministracion = 'Via Oral' | 'EV' | 'IM' | 'SC' | 'Por GGT' | 'Por SNG'; export type TipoPlanHidratacion = 'SF 0.9%' | 'Dextrosa 5%' | 'Dextrosa 10%' | 'Dextrosa 25%' | 'Ringer Lactato'; export interface Indicacion { id: string; internacionId: string; tipo: IndicacionTipo; droga?: string; dosis?: string; frecuenciaHoras?: number; via?: ViaAdministracion; indicacionNoFco?: string; tipoPlan?: TipoPlanHidratacion; tipoPlan2?: TipoPlanHidratacion; cantidadMl?: number; cantidadMl2?: number; tiempoHoras?: number; tipoInsulina?: TipoInsulina; unidadesDesayuno?: number; unidadesAlmuerzo?: number; unidadesNoche?: number; estado: 'Activa' | 'Suspendida'; medicoCrea: string; fechaCrea: string; medicoModifica?: string; fechaModificacion?: string; medicoSuspende?: string; fechaSuspension?: string; } export interface MovimientoIndicacion { id: string; internacionId: string; indicacionId?: string; tipo: string; fecha: string; hora: string; medico: string; observaciones?: string; } export type Vista = 'dashboard' | 'camas' | 'pacientes' | 'internaciones' | 'evoluciones' | 'laboratorios' | 'acidobase' | 'cultivos' | 'historiaclinica' | 'nuevoingreso' | 'editaringreso' | 'usuarios' | 'pendientessala' | 'sistema'; export type RolUsuario = 'admin' | 'medico' | 'enfermero'; export interface Usuario { id: string; apellido: string; nombre: string; dni: string; fechaNacimiento: string; email: string; rol: RolUsuario; matriculaProfesional?: string; passwordHash: string; grupoId?: string; areaId?: string; fechaCreacion: string; } export interface Pendiente { id: string; pacienteId: string; internacionId?: string; descripcion: string; prioridad: 'alta' | 'media' | 'baja'; estado: 'pendiente' | 'realizado' | 'cancelado'; fechaCreacion: string; horaCreacion?: string; fechaRealizado?: string; categoria?: 'General' | 'Estudio' | 'Procedimiento' | 'Laboratorio' | 'Interconsulta' | 'Tratamiento' | 'Administrativo' | string; fechaProgramada?: string; horaProgramada?: string; usuarioId?: string; usuarioNombre?: string; observaciones?: string; }