diff --git a/server/db-mongodb.js b/server/db-mongodb.js index a29ad0f..d2613e2 100644 --- a/server/db-mongodb.js +++ b/server/db-mongodb.js @@ -1,4 +1,4 @@ -import { MongoClient } from 'mongodb'; +import { MongoClient, ObjectId } from 'mongodb'; import bcrypt from 'bcryptjs'; const { compareSync, hashSync } = bcrypt; @@ -102,6 +102,9 @@ export async function initDb() { function cleanDoc(doc) { if (!doc) return null; const { _id, ...rest } = doc; + if (!rest.id && _id) { + rest.id = _id.toString(); + } return rest; } @@ -352,12 +355,21 @@ export async function getAllInternaciones() { } export async function getInternacionById(id) { + if (!id) return null; + const idStr = String(id).trim(); if (db) { - const internacion = await db.collection('internaciones').findOne({ id }); + let internacion = await db.collection('internaciones').findOne({ id: idStr }); + if (!internacion && ObjectId.isValid(idStr)) { + try { + internacion = await db.collection('internaciones').findOne({ _id: new ObjectId(idStr) }); + } catch { + // ignore invalid objectid + } + } if (internacion) internacion.activa = !!internacion.activa; return cleanDoc(internacion); } - const internacion = memStore.internaciones.find(i => i.id === id); + const internacion = memStore.internaciones.find(i => i.id === idStr || String(i.id).trim() === idStr); if (!internacion) return null; return { ...internacion, activa: !!internacion.activa }; } diff --git a/src/App.tsx b/src/App.tsx index 4159223..fffd990 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -131,12 +131,30 @@ function AppContent() { /> ); case 'historiaclinica': { - const internacionId = store.currentInternacionId || ''; + const internacionId = store.currentInternacionId || sessionStorage.getItem('hospital_current_internacion_id') || ''; const internacion = store.getInternacionById(internacionId); - const paciente = internacion ? store.getPacienteById(internacion.pacienteId) : undefined; - if (!internacion || !paciente) { + const paciente = internacion + ? (store.getPacienteById(internacion.pacienteId) || store.pacientes.find(p => p.id === internacion.pacienteId || p.dni === internacion.pacienteId) || { + id: internacion.pacienteId || 'paciente-unknown', + apellido: 'Paciente', + nombre: 'Sin registrar', + dni: internacion.pacienteId || 'N/A', + fechaNacimiento: '1990-01-01', + sexo: 'Otro' as const, + fechaRegistro: new Date().toISOString() + }) + : undefined; + + if (!internacion) { + if (!store.isLoaded) { + return ( +
Cargando información de la internación...
+Internación no encontrada (id: {internacionId})
Cargando información de la internación...
+Internación no encontrada (id: {internacionId})