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

b. Microservicios

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.

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/**🚧 Desarrollo
5triaje-emergencias-svcemergency-triage-service8084/api/v1/emergencias/**🟢 Maduro
6quirofano-svcsurgery-service8085/api/v1/quirofano/**🚧 Desarrollo
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/**🚧 Desarrollo
10maternidad-neonatal-svcmaternity-neonatal-service8089/api/v1/maternidad/**🚧 Desarrollo
11formularios-sigsa-svcforms-sigsa-service8090/api/v1/formularios-sigsa/**🚧 Desarrollo
12farmacia-recetas-svcpharmacy-prescriptions-service8091/api/v1/farmacia/**🟢 Maduro
13hospitalizacion-adt-svcinpatient-adt-service8092/api/v1/hospitalizacion/**🚧 Desarrollo
14laboratorio-clinico-svcclinical-laboratory-service8093/api/v1/laboratorio/**🟢 Maduro
15imagenologia-clinica-svcclinical-imaging-service8094/api/v1/imagenologia/**🚧 Desarrollo
16enfermeria-emar-svcnursing-emar-service8095/api/v1/enfermeria/**🚧 Desarrollo
17facturacion-reclamos-svcbilling-claims-service8096/api/v1/facturacion/**🚧 Desarrollo
18firma-clinica-svcclinical-signature-service8097/api/v1/firmas/**🚧 Desarrollo
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/**🚧 Desarrollo
22terapia-respiratoria-svcterapia-respiratoria-svc8102/api/v1/terapia-respiratoria/**📋 Planificado
23seguimiento-egreso-svcseguimiento-egreso-svc8103/api/v1/seguimiento-egreso/**📋 Planificado
24plantilla-base-svctemplate-svc— (esqueleto base, no se despliega)📋 Planificado

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.

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 al 12-may-2026

  • Fachada pública ES activa: el gateway expone 21 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}) y reescribe a paths internos en inglés (regla 8 del proyecto).
  • 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 microservicios

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 LDAP MSPAS · Keycloak

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 📋 Planificado

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 📋 Planificado

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 📋 Planificado

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 integration

Apache Kafka + NATS + Mirth Connect como adaptadores HL7. DLQ y entrega at-least-once.

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