Sistema Médico Hospital Nacional d. Ingenieros y Programadores 2. Diseño del sistema
HN Ingenieros · Sección 2 de 10
🏛️

2. Diseño del sistema

Arquitectura, bounded contexts, capas y decisiones. Cómo encaja todo.

2.1 Vista de capas (alto nivel)

                  ┌──────────────────────────────────────────────────────┐
   Usuarios HNSM →│  FRONTEND React 19 · TanStack Query · Tailwind v4    │
                  └────────────────────┬─────────────────────────────────┘
                                       │ HTTPS · JWT
                  ┌────────────────────▼─────────────────────────────────┐
                  │  API GATEWAY  Spring Cloud Gateway · WAF · mTLS      │
                  └─────────────┬──────────────┬─────────────────────────┘
                                │              │
        ┌───────────────────────▼──┐   ┌───────▼───────────────────┐
        │  CAPA PLATAFORMA (4)     │   │  CAPA CLÍNICA (12)         │
        │  auth · audit · bus · not│   │  identidad · episodios · …  │
        └───────────────────────┬──┘   └───────┬─────────────────────┘
                                │              │
        ┌───────────────────────▼──┐   ┌───────▼───────────────────┐
        │  CAPA VIGILANCIA (2)     │   │  CAPA ADMINISTRACIÓN (5)   │
        │  vigilancia-epi · nutric.│   │  rrhh · pres · compras · … │
        └───────────────────────┬──┘   └───────┬─────────────────────┘
                                └──────┬───────┘
                  ┌────────────────────▼─────────────────────────────────┐
                  │  CAPA INTEROP (2)  pasarela-fhir · reportes-sigsa     │
                  └────────────────────┬─────────────────────────────────┘
                                       │
            ┌──────────────┬───────────┼──────────────┬─────────────┐
            ▼              ▼           ▼              ▼             ▼
         RENAP         SICOIN    Guatecompras   MSPAS-SIGSA      IGSS
       (CUI WS)        (SOAP)    (scraping)     (FHIR + CSV)    (FHIR)
    

2.2 Bounded contexts

ContextoServiciosLenguaje ubicuo
Plataformaautenticación · auditoría · bus · notificacionesUsuario · Sesión · Mensaje · Plantilla
Identidadidentidad-pacientePaciente · Identificador · Etnia · Idioma
Atenciónepisodios · expediente-clínico · órdenes-médicas · signos-vitalesEpisodio · Nota · Orden · Signo vital
Apoyo diagnósticolaboratorio · imagenologiaResultado · Estudio · Modalidad
Medicaciónfarmacia · inventarioPrescripción · Dispensación · Lote · Existencia
Hospitalarioencamamiento · quirofano · obstetricia · emergenciaCama · Cirugía · Parto · Triaje
Vigilanciavigilancia-epidemiologica · nutricionNotificación · Caso · Suplementación
Administraciónrecursos-humanos · presupuesto · compras · facturacionPlaza · Ejecución · Compra · Factura
Interoppasarela-fhir · reportes-sigsaRecurso FHIR · Formulario SIGSA

2.3 Decisiones de arquitectura (ADRs)

ADRDecisiónRazón
ADR-01Microservicios con database-per-serviceCada subsistema cambia a velocidad distinta · evita acoplamiento de esquema · facilita reuso de servicios maduros
ADR-02Java 25 LTS + Spring Boot 4 + LoomEstabilidad de plataforma · ecosistema sólido · concurrencia barata para WebSockets clínicos
ADR-03React 19 + TanStack Query + Tailwind v4Curva conocida · ecosistema maduro · tipografía y accesibilidad listas
ADR-04PostgreSQL como BD primariaSQL fuerte · JSONB para campos flexibles · particionado nativo · operacional con DBAs locales
ADR-05MongoDB para notas clínicas y JSON imágenesEsquemas heterogéneos por especialidad · búsqueda por texto · fácil append
ADR-06TimescaleDB para signos vitalesSeries de tiempo · compresión nativa · downsampling
ADR-07Apache Kafka como bus de eventosEventos at-least-once · particionado por paciente · retención configurable
ADR-08Mirth Connect para HL7 v2Adaptadores listos · transformaciones gráficas · estándar de facto en hospitales
ADR-09FHIR R4 para interoperabilidad externaEstándar internacional · adoptado por MSPAS e IGSS · permite futura integración multinacional
ADR-10Keycloak para autenticaciónOIDC + SAML · LDAP MSPAS · MFA listo · realm por hospital
ADR-11K3s on-prem (Kubernetes ligero)Funciona en hardware modesto · menos memoria que K8s clásico · misma API · puede migrarse a cloud sin rewrite
ADR-12Auditoría WORM con hash encadenadoCumplimiento HIPAA-style · imposibilidad de reescritura · trazabilidad reconstruible
ADR-13Observabilidad con Prometheus + Grafana + Loki + TempoStack open source · curva conocida · alertas a WhatsApp
ADR-14CI/CD con GitHub Actions + ArgoCDGitOps · pull-based deploy · rollback declarativo

2.4 Patrones de comunicación

2.5 Reglas transversales

Idempotencia — todo POST con efecto colateral acepta Idempotency-Key.
Trazabilidad — cada request lleva X-Request-Id y X-User-Id; auditoría escribe el hash de la fila modificada.
Inmutabilidad clínica — nota firmada → solo addendum, nunca edición. Borrado → soft delete con motivo.
Database-per-service — está prohibido leer la BD de otro servicio. Sólo API o eventos.
Cifrado de campo — CUI, diagnósticos, alergias y medicamentos controlados se cifran con clave de servicio.
← Volver a d. Ingenieros y Programadores 🏥 Inicio del Sistema Médico 🏠 Inicio Toscana