25 microservicios independientes con su flujo de datos: entidades dueñas, eventos publica/consume, integraciones SIGSA · SICOIN · Guatecompras · RENAP · FHIR. Estado al 12-may-2026: admisión hospitalaria end-to-end verificada en producción sobre sistema-medico.com.
Tres microservicios validados contra https://sistema-medico.com:
api-gateway-service (8080) reescribe la fachada pública en español a rutas internas en inglés;
patient-mpi-service (8081) registra pacientes con validación CUI módulo 11;
reception-admission-service (8082) abre episodios de consulta externa y emergencia.
Smoke verificado: CUI inválido → 400 · paciente no encontrado → 404 · registro rápido → 200 con patientId+expediente · admisión CE y emergencia → 200 con episodeId.
Regla 8 del proyecto: el nombre interno del artefacto técnico se conserva en inglés (paquete Java, repo Git, unidad systemd, JAR). El nombre público que ve el usuario del hospital es en español. El gateway reescribe la ruta pública en español a la ruta interna en inglés.
Total: 23 servicios desplegados en la VM piloto + plantilla base no desplegable.
Los servicios terapia-respiratoria-svc y seguimiento-egreso-svc ya nacieron con nombre en español
(carpetas Java en español por decisión del equipo).
Estado al 12-may-2026:
3 servicios en producción validados end-to-end sobre sistema-medico.com (admisión hospitalaria),
7 servicios maduros según auditoría del 11-may-2026 (banco-sangre, identity-access, emergency-triage, ehr-encounter, pharmacy-prescriptions, clinical-laboratory, inventory-catalog),
11 en desarrollo activo y
3 planificados.
El SIH-HNSM es código original de Toscana Systems, S.A. desarrollado específicamente para el Hospital Nacional de San Marcos y las reglas del MSPAS / SIGSA / SICOIN / RENAP. Ningún microservicio reutiliza código de otros clientes o productos: arquitectura, esquemas, eventos, validaciones y catálogos se construyeron expresamente para este proyecto.
/api/v1/{pacientes,admision,citas,emergencias,quirofano,inventario,existencias,maternidad,formularios-sigsa,farmacia,hospitalizacion,camas,laboratorio,imagenologia,anatomopatologia,enfermeria,facturacion,firmas,expediente,banco-sangre,uci}) y reescribe a paths internos en inglés (regla 8 del proyecto).identity-access-service con JWT propio y sesiones autoritativas en PostgreSQL (sin Keycloak en producción, sin Valkey/Redis).sistema-medico.com + www.sistema-medico.com autorizados (más localhost en dev).Cada tarjeta muestra propósito, stack y el flujo de datos del servicio: entidades dueñas, eventos que publica, eventos que consume, integraciones externas y catálogos consumidos.
Autenticación SSO, gestión de identidades, RBAC, 2FA.
Stack: Spring Boot 4 · JWT propio · PostgreSQL
Datos Usuario · Sesión · Rol · Permiso
Publica usuario.creado · sesion.iniciada · sesion.cerrada
Consume rrhh.plaza.alta · rrhh.plaza.baja
Integra LDAP MSPAS · Keycloak
Catálogos Roles MSPAS · Permisos RBAC
Bitácora inmutable de toda acción del sistema (estilo HIPAA).
Stack: Kafka · PostgreSQL · almacenamiento WORM
Datos Bitácora WORM (hash encadenado)
Consume TODOS los eventos del sistema
Bus interno HL7 v2 / FHIR / REST entre microservicios y sistemas legados.
Stack: Apache Kafka · HL7 v2.5 · FHIR R4
Datos Mensaje HL7 · Evento Kafka · Adaptador
Publica integracion.recibido · integracion.enviado
Consume Suscribe a topics de todos los servicios
Integra HL7 v2.5 · FHIR R4 · Mirth Connect
Envío de SMS, correo y push (turnos, resultados, alertas).
Stack: Spring Boot · SMTP · plantillas
Datos Plantilla · Notificación · Canal
Publica notificacion.enviada · notificacion.fallida
Consume orden.resultado · cita.confirmada · alerta.epi
Integra SMS · correo · push · WhatsApp Business
Catálogos Plantillas Liquid
Índice maestro de pacientes (MPI): identidad única validada con RENAP-CUI.
Stack: PostgreSQL · validación CUI mód. 11
Datos Paciente · Identificador · Dirección
Publica paciente.creado · paciente.actualizado · paciente.fusionado
Consume parto.rn.creado
Integra RENAP-CUI (algoritmo + WS)
Catálogos Etnias · Idiomas · Municipios INE
Episodios asistenciales: consulta externa, emergencia, hospitalización, telemedicina.
Stack: PostgreSQL · Spring Boot 4
Datos Episodio · Servicio · Diagnóstico CIE-10
Publica episodio.abierto · episodio.cerrado
Consume paciente.creado · triaje.asignado
Catálogos CIE-10 · Servicios MSPAS
Expediente clínico electrónico: notas, anamnesis, exploración, evolución.
Stack: PostgreSQL · Spring Boot 4
Datos Nota clínica · Anamnesis · Evolución · Alta
Publica nota.firmada · alta.emitida
Consume episodio.abierto
Catálogos CIE-10 · SNOMED CT subset
Órdenes médicas: laboratorio, imagen, procedimientos, dieta.
Stack: PostgreSQL · FHIR ServiceRequest
Datos Orden (lab/imagen/proc/dieta)
Publica orden.creada · orden.cancelada
Consume episodio.abierto
Integra FHIR ServiceRequest
Catálogos Catálogo de exámenes MSPAS · LOINC
Integrador con LIS: recibe órdenes (ORM) y libera resultados (ORU).
Stack: HL7 v2.5 · FHIR DiagnosticReport
Datos Resultado de laboratorio
Publica lab.resultado.liberado · lab.critico
Consume orden.creada (tipo lab)
Integra HL7 v2.5 ORM/ORU contra LIS HNSM
Catálogos LOINC · valores de referencia
Integrador PACS/RIS: Modality Worklist e informes radiológicos.
Stack: DICOM · HL7 ORM · PostgreSQL
Datos Estudio · Modalidad · Informe DICOM
Publica imagen.estudio.completado · informe.firmado
Consume orden.creada (tipo imagen)
Integra DICOM Modality Worklist · PACS HNSM
Catálogos Modalidades DICOM
Prescripción electrónica, dispensación y conciliación con LBM.
Stack: PostgreSQL · ATC · LBM
Datos Prescripción · Dispensación · Lote
Publica rx.prescrita · rx.dispensada · rx.alergia
Consume orden.creada · alta.emitida
Integra LBM-MSPAS · ATC
Catálogos ATC · LBM (Listado Básico Medicamentos)
Captura y series de tiempo de signos vitales (PA, FC, FR, T°, SatO2, EVA, Glasgow).
Stack: PostgreSQL · Spring Boot 4
Datos Signo vital (serie temporal)
Publica vital.fuera_rango
Consume episodio.abierto
Integra Monitores cabecera (HL7)
Catálogos Glasgow · EVA pediátrica
Emergencia: triaje Manchester, sala de choque, observación 24 h.
Stack: PostgreSQL · Triaje Manchester · WS
Datos Triaje Manchester · Sala de choque · Observación
Publica triaje.asignado · er.alta
Consume paciente.creado
Catálogos Manchester · CIE-10 ER
Quirófano: programación, hoja operatoria, lista de seguridad OMS, recursos.
Stack: PostgreSQL · checklist OMS
Datos Cirugía · Hoja operatoria · Checklist OMS
Publica cirugia.programada · cirugia.cerrada
Consume orden.creada (tipo proc)
Catálogos CIE-9-CM · Checklist OMS
Encamamiento: censo de camas, asignación, traslados, altas.
Stack: PostgreSQL · WebSockets
Datos Cama · Asignación · Traslado
Publica cama.ocupada · cama.libre · traslado
Consume episodio.abierto · alta.emitida
Integra WebSockets en vivo
Catálogos Salas y servicios HNSM
Eventos obstétricos: parto, cesárea, recién nacido. SIGSA-4 / 5.
Stack: PostgreSQL · partograma
Datos Parto · Recién nacido · Partograma
Publica parto.cerrado · rn.creado
Consume episodio.abierto (obstétrico)
Integra SIGSA-4/5 vía reportes-sigsa
Catálogos CIE-10 obstétrico · APGAR
Vigilancia epidemiológica: notificación obligatoria, IRAS / ETAS / vectores.
Stack: PostgreSQL · FHIR · MSPAS
Datos Notificación EPI · Caso obligatorio
Publica epi.notificado
Consume lab.resultado.liberado · alta.emitida
Integra MSPAS Vigilancia (FHIR + CSV)
Catálogos Listado obligatorio MSPAS · IRAS · ETAS · vectores
Suplementación de menores de 5 años, salud reproductiva, planificación familiar.
Stack: PostgreSQL · catálogos MSPAS
Datos Suplementación · Plan familiar · Salud reproductiva
Publica sup.entregada
Consume episodio.abierto (CE pediátrica/SR)
Integra SIGSA-11/13/18 vía reportes-sigsa
Catálogos Catálogos suplementación menor 5 años
Recursos humanos: plantilla, turnos, asistencia, biométrico, evaluación.
Stack: PostgreSQL · biométrico · SIRH MSPAS
Datos Plaza · Asistencia · Turno · Evaluación
Publica rrhh.plaza.alta · rrhh.asistencia
Consume auth.usuario.creado
Integra Biométrico · SIRH MSPAS
Catálogos Renglones MINFIN (011/021/022/029/182/211)
Presupuesto: ejecución por programa y renglón, sincroniza con SICOIN.
Stack: PostgreSQL · SICOIN SOAP
Datos Ejecución presupuestaria · Programa · Renglón
Publica pres.devengado · pres.alerta_subejec
Consume compra.adjudicada · rrhh.nomina
Integra SICOIN SOAP (UE 248)
Catálogos UE 248 · Programas 11/13/14/15/16
Compras y contratos: NPG/NOG, integración Guatecompras, evaluación de proveedores.
Stack: PostgreSQL · Guatecompras
Datos Compra · NPG · NOG · Proveedor · Contrato
Publica compra.publicada · compra.adjudicada
Consume inv.minimo
Integra Guatecompras (scraping autorizado)
Catálogos NPG/NOG · Modalidades de compra
Inventario médico y farmacéutico: existencias, lotes, vencimientos, picking FEFO.
Stack: PostgreSQL · códigos de barras
Datos Existencia · Lote · Vencimiento · Movimiento
Publica inv.minimo · inv.vencimiento
Consume rx.dispensada · compra.adjudicada
Integra Códigos de barras · MSPAS
Catálogos Códigos MSPAS · ATC
Facturación: gratuidad MSPAS, IGSS, cooperación, privados.
Stack: PostgreSQL · SAT · IGSS
Datos Factura · Fuente (Gratuidad/IGSS/Cooperación/Privado)
Publica factura.emitida
Consume alta.emitida · rx.dispensada · cirugia.cerrada
Integra SAT (FEL) · IGSS
Catálogos Tipos de fuente MSPAS
Endpoint FHIR R4 público (mTLS) hacia MSPAS, IGSS y otros hospitales.
Stack: Spring Cloud Gateway · FHIR R4 · mTLS
Datos Recurso FHIR (Patient · Encounter · Observation · DiagnosticReport · MedicationRequest)
Publica fhir.export.solicitado
Consume paciente.actualizado · alta.emitida · lab.resultado.liberado
Integra FHIR R4 mTLS hacia MSPAS · IGSS · otros hospitales
Catálogos FHIR R4 · ValueSets MSPAS
Generador de reportes oficiales SIGSA en formato CSV/XML del MSPAS.
Stack: Spring Boot · CSV/XML SIGSA
Datos Reporte SIGSA generado (CSV/XML)
Publica sigsa.enviado · sigsa.fallido
Consume episodio.cerrado · alta.emitida · parto.cerrado · rn.creado · cirugia.cerrada · sup.entregada · epi.notificado
Integra MSPAS SIGSA (14 formularios)
Catálogos SIGSA 3 H/A · 3 C.E. · 4 · 5 · 5 A · 6 · 7 · 7 A · 8 · 8 A · 11 · 13 · 18 · 33
Síncrono REST/JSON entre microservicios; WebSockets reactivos para tableros y notificaciones en vivo.
Spring Events publicados por cada servicio; suscriptores reactivos para auditoría, reportes y notificaciones.
HL7 v2.5 con sistemas legados (ADT, ORM, ORU). FHIR R4 hacia MSPAS, IGSS y otros hospitales.
Cada servicio dueño de su BD. Prohibido leer la BD de otro servicio: solo API o eventos.
Apache Kafka + NATS + Mirth Connect como adaptadores HL7. DLQ y entrega at-least-once.
99.95 % autenticación · 99.9 % auditoría/bus · ≤ 200 ms p95 en autenticación · ≤ 800 ms p95 en lecturas clínicas.