Sistema Médico Hospital Nacional b. Microservicios
Hospital Nacional · Microservicios
🧩

b. Microservicios

Catálogo de microservicios con su flujo de datos: entidades dueñas, eventos publica/consume, integraciones SIGSA · SICOIN · Guatecompras · RENAP · FHIR. Estado verificado por SSH (jun-2026): 36 microservicios activos en la VM (35 hospital-* + adquisiciones-svc · puertos 8080–8121), con admisión, núcleo clínico y módulos administrativos en producción sobre sistema-medico.com.

Hito productivo · Admisión hospitalaria end-to-end

11-may-2026 · 23:26 UTC

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.

Despliegue productivo

Servicios desplegados · nombre bilingüe

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.

# Nombre público (ES) Artefacto interno (EN) Puerto Ruta pública gateway Estado
1puerta-de-enlace-apiapi-gateway-service8080/api/v1/**✅ Productivo
2identidad-paciente-svcpatient-mpi-service8081/api/v1/pacientes/**✅ Productivo
3admision-recepcion-svcreception-admission-service8082/api/v1/admision/**✅ Productivo
4citas-svcappointments-service8083/api/v1/citas/** (duplicado muerto)⛔ Retirado (13-jun)
5triaje-emergencias-svcemergency-triage-service8084/api/v1/emergencias/**🟢 Maduro
6quirofano-svcsurgery-service8085/api/v1/quirofano/**🟢 Maduro
7identidad-y-acceso-svcidentity-access-service8086/api/v1/auth/** · /.well-known/jwks.json🟢 Maduro
8catalogo-inventario-svcinventory-catalog-service8087/api/v1/inventario/**🟢 Maduro
9existencias-svcstock-ledger-service8088/api/v1/existencias/**🟢 Maduro
10maternidad-neonatal-svcmaternity-neonatal-service8089/api/v1/maternidad/**🟢 Maduro
11formularios-sigsa-svcforms-sigsa-service8090/api/v1/formularios-sigsa/**🟢 Maduro
12farmacia-recetas-svcpharmacy-prescriptions-service8091/api/v1/farmacia/**🟢 Maduro
13hospitalizacion-adt-svcinpatient-adt-service8092/api/v1/hospitalizacion/** · /api/v1/camas/**🟢 Maduro
14laboratorio-clinico-svcclinical-laboratory-service8093/api/v1/laboratorio/**🟢 Maduro
15imagenologia-clinica-svcclinical-imaging-service8094/api/v1/imagenologia/** (duplicado muerto)⛔ Retirado (13-jun)
16enfermeria-emar-svcnursing-emar-service8095/api/v1/enfermeria/**🟢 Maduro
17facturacion-reclamos-svcbilling-claims-service8096/api/v1/facturacion/**🟢 Maduro
18firma-clinica-svcclinical-signature-service8097/api/v1/firmas/**🟢 Maduro
19expediente-encuentros-svcehr-encounter-service8098/api/v1/expediente/**🟢 Maduro
20banco-sangre-svcblood-bank-service8099/api/v1/banco-sangre/**🟢 Maduro
21uci-svcicu-service8100/api/v1/uci/** (stub apagado)⛔ Retirado (13-jun)
22almacen-general-svcalmacen-general-service8101/api/v1/almacen-general/**🟢 Maduro
23citas-clinicas-svccitas-svc8103/api/v1/citas/** (clínicas legacy · agenda)🟢 Maduro
24recursos-humanos-svcrrhh-svc8104/api/v1/rrhh/**🟢 Maduro
25presupuesto-svcpresupuesto-svc8105/api/v1/presupuesto/**🟢 Maduro
26adquisiciones-svcadquisiciones-svc8110/api/v1/compras/** (Compras del Estado · Decreto 57-92)🟢 Maduro
27mantenimiento-svcmantenimiento-svc8111/api/v1/mantenimiento/** → :8123🟣 Consolidado → :8123
28flota-svcflota-svc8112/api/v1/flota/** → :8123🟣 Consolidado → :8123
29gases-medicinales-svcgases-medicinales-svc8113/api/v1/gases/** → :8123🟣 Consolidado → :8123
30lavanderia-svclavanderia-svc8114/api/v1/lavanderia/** → :8123🟣 Consolidado → :8123
31dietas-svcdietas-svc8115/api/v1/dietas/**🟢 Maduro
32nutricion-clinica-svcnutricion-clinica-svc8116/api/v1/nutricion-clinica/**🟢 Maduro
33anatomopatologia-svcanatomopatologia-svc8117/api/v1/anatomopatologia/**🟢 Maduro
34banco-leche-svcbanco-leche-svc8118/api/v1/banco-leche/**🟢 Maduro
35imagenes-svcimagenes-svc8120/api/v1/imagenes/**🟢 Maduro
36datos-referencia-svcreference-data-svc8121catálogos compartidos · interno🟢 Maduro
37servicios-generales-svcservicios-generales-svc8123/api/v1/{mantenimiento,flota,gases,lavanderia}/** (1 JVM · 4 esquemas)✅ Productivo
38terapia-respiratoria-svcterapia-respiratoria-svc/api/v1/terapia-respiratoria/** (planificado)📋 Planificado
39seguimiento-egreso-svcseguimiento-egreso-svc/api/v1/seguimiento-egreso/** (planificado)📋 Planificado
40plantilla-base-svctemplate-svc— (esqueleto base, no se despliega)📋 Planificado

Total: 30 microservicios activos en la VM piloto (verificado por SSH directo el 13-jun-2026 · 0 fallidos) tras racionalizar la topología de 36 a 30: se retiraron 2 duplicados muertos (appointments-service, clinical-imaging-service), se apagó el stub icu-service y los 4 de Servicios Generales se consolidaron en servicios-generales-svc :8123. Las filas afectadas se conservan abajo con su nuevo estado (⛔ Retirado / 🟣 Consolidado) para trazabilidad. Varios servicios Tree B (citas-svc, rrhh-svc, presupuesto-svc, Servicios Generales y clínicos) ya nacieron con nombre en español (carpetas Java en español por decisión del equipo).

Estado verificado (13-jun-2026): 30 servicios activos / 0 fallidos bajo systemd, con gateway :8080 e IAM JWKS :8086 respondiendo 200. El diseño original contemplaba 25 microservicios; tras llegar a 36 se racionalizó a 30 (−2 duplicados, Servicios Generales 4→1, −1 stub icu · RAM −3 GB · conexiones PG 115→17). El detalle vivo por servicio está en la bitácora de ingeniería §11.2.

Construcción del sistema

100 % escrito desde cero

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.

Estado real (verificado jun-2026)

  • Fachada pública ES activa: el gateway expone 23 dominios en español (/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,rrhh,presupuesto,compras}) y reescribe a paths internos en inglés (regla 8 del proyecto). Sobre la VM hay 30 microservicios activos tras la racionalización de 12–13 jun (36→30 · puertos 8080–8123).
  • Admisión hospitalaria productiva verificada el 11-may-2026: registro rápido + búsqueda por CUI con validación módulo 11 + apertura de episodios CE/emergencia.
  • Autenticación: identity-access-service con JWT propio y sesiones autoritativas en PostgreSQL (sin Keycloak en producción, sin Valkey/Redis).
  • CORS: solo sistema-medico.com + www.sistema-medico.com autorizados (más localhost en dev).

Catálogo + flujo de datos · 25 de diseño · 36 desplegados

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.

Plataforma Clínico Vigilancia Administración Interop prod maduro dev plan
#01 autenticacion-svc
Plataforma 🟢 Maduro

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 JWT propio + JWKS (sin Keycloak) · LDAP MSPAS (planificado)

Catálogos Roles MSPAS · Permisos RBAC

#02 auditoria-svc
Plataforma 🚧 Desarrollo

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

#03 bus-integracion-svc
Plataforma 🚧 Desarrollo

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

#04 notificaciones-svc
Plataforma 🚧 Desarrollo

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

#05 identidad-paciente-svc
Clínico ✅ Productivo

Í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

#06 episodios-svc
Clínico ✅ Productivo

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

#07 expediente-clinico-svc
Clínico 🟢 Maduro

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

#08 ordenes-medicas-svc
Clínico 🟢 Maduro

Ó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

#09 laboratorio-svc
Clínico 🟢 Maduro

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

#10 imagenologia-svc
Clínico 🚧 Desarrollo

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

#11 farmacia-svc
Clínico 🟢 Maduro

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)

#12 signos-vitales-svc
Clínico 🟢 Maduro

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

#13 emergencia-svc
Clínico 🟢 Maduro

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

#14 quirofano-svc
Clínico 🚧 Desarrollo

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

#15 encamamiento-svc
Clínico 🚧 Desarrollo

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

#16 obstetricia-svc
Clínico 🚧 Desarrollo

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

#17 vigilancia-epidemiologica-svc
Vigilancia 📋 Planificado

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

#18 nutricion-svc
Vigilancia 🚧 Desarrollo

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

#19 recursos-humanos-svc
Administración 🟢 Maduro

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)

#20 presupuesto-svc
Administración 🟢 Maduro

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

#21 compras-svc
Administración 🟢 Maduro

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

#22 inventario-svc
Administración 🟢 Maduro

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

#23 facturacion-svc
Administración 🚧 Desarrollo

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

#24 pasarela-fhir-svc
Interop 📋 Planificado

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

#25 reportes-sigsa-svc
Interop 🚧 Desarrollo

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

Comunicación

Cómo se hablan los servicios

REST + WebSockets

Síncrono REST/JSON entre microservicios; WebSockets reactivos para tableros y notificaciones en vivo.

Eventos

Spring Events publicados por cada servicio; suscriptores reactivos para auditoría, reportes y notificaciones.

HL7 v2 · FHIR R4

HL7 v2.5 con sistemas legados (ADT, ORM, ORU). FHIR R4 hacia MSPAS, IGSS y otros hospitales.

Database-per-service

Cada servicio dueño de su BD. Prohibido leer la BD de otro servicio: solo API o eventos.

Bus de integración

Hoy: Spring Events + patrón Outbox transaccional (publishers protegidos con @ConditionalOnProperty). Apache Kafka / NATS / Mirth Connect quedan como evolución post-MVP (ADR-07/08), aún no en la VM.

SLAs

99.95 % autenticación · 99.9 % auditoría/bus · ≤ 200 ms p95 en autenticación · ≤ 800 ms p95 en lecturas clínicas.

← Volver a Hospital Nacional 🏥 Inicio del Sistema Médico 🏠 Inicio Toscana