DocumentaciónSoporteCosta Rica · Contacto
Objetivo del servicio

Reemplazar el sistema no siempre es la respuesta. Dejarlo mudo, tampoco.

Los sistemas que sostienen la operación clínica rara vez se pueden apagar: tienen años de datos, procesos amarrados, contratos vigentes y usuarios que dependen de que funcionen mañana a las siete. Pero cada vez más se les pide participar en un intercambio para el que nunca fueron diseñados: exponer un resultado, notificar a una autoridad, alimentar una vista consolidada, conectarse a una red. Una capa FHIR resuelve esa tensión traduciendo entre lo que el sistema guarda y lo que el ecosistema exige, sin tocar su base de datos ni su operación. Bien diseñada, compra años de margen. Mal diseñada, se convierte en el sistema heredado siguiente: otra caja que nadie se anima a tocar.

Punto de partida

De qué se parte, en concreto

«Sistemas heredados» no dice nada. Lo que define el trabajo es la forma real del origen y lo que uno encuentra al abrirlo.

Base de datos del expediente

Acceso directo al esquema relacional del sistema clínico, casi siempre en solo lectura y contra una réplica, para no competir con la operación.

Con qué se topa uno

Tablas sin documentar, campos reutilizados para dos cosas distintas, banderas de estado que solo entiende quien las escribió y reglas de negocio que viven en la aplicación y no en el modelo.

HL7 v2 sobre MLLP

Mensajería de admisión, órdenes y resultados que ya circula entre sistemas y que puede aprovecharse como fuente en lugar de construir una extracción nueva.

Con qué se topa uno

Segmentos Z propios de cada instalación, campos opcionales usados de forma creativa, y el hecho de que un mensaje describe un evento, no el estado actual del paciente.

Archivos planos y lotes

CSV, posicionales o XML que el sistema ya genera para reportes o para otros consumidores, procesados por lote.

Con qué se topa uno

Ventanas de generación fijas, entregas parciales o repetidas, codificaciones de caracteres heredadas y ningún mecanismo para saber qué cambió desde el archivo anterior.

Servicios SOAP y APIs propietarias

Interfaces que el proveedor ya expone, pensadas para un consumidor específico y con un modelo de datos propio.

Con qué se topa uno

Granularidad que no coincide con la del recurso FHIR, límites de paginación y concurrencia no documentados, y cambios de contrato que llegan sin aviso.

PACS y DICOM

Estudios e informes de imagen, donde el metadato vive en el equipamiento y en el PACS antes que en el registro clínico.

Con qué se topa uno

Identificadores de paciente distintos a los del expediente, informes en texto libre dentro del estudio y volúmenes que hacen inviable materializar sin un criterio claro.

Hojas de cálculo y catálogos manuales

Los catálogos que sostienen procesos reales aunque no vivan en ningún sistema: servicios, profesionales, equivalencias de códigos.

Con qué se topa uno

Sin control de versiones, sin dueño formal y con la verdad repartida entre varias copias que no coinciden entre sí.

Modos de entrega

Traducir al vuelo o materializar: la decisión que define todo lo demás

Es la primera decisión de arquitectura y la que determina el costo, la latencia y a quién le duele una caída. Casi nunca es una elección pura.

Al vuelo

La capa traduce cada consulta contra el sistema origen, en el momento.

Materializado

Los datos se transforman y se cargan en un repositorio FHIR que atiende las consultas.

Frescura del dato
Al vueloSiempre el estado actual del origen. No hay ventana de desactualización que explicar ni que defender clínicamente.
MaterializadoTan fresco como el último ciclo de carga. Hay que definir esa ventana, comunicarla y confirmar que es aceptable para el uso clínico.
Carga sobre el origen
Al vueloCada consulta externa golpea al sistema que sostiene la operación. Un consumidor mal comportado se convierte en un incidente clínico.
MaterializadoLa extracción se programa en ventanas de baja demanda y las consultas externas no tocan el origen.
Acoplamiento a la disponibilidad
Al vueloSi el origen se cae o entra en mantenimiento, la API FHIR se cae con él: su ventana de mantenimiento pasa a ser la suya.
MaterializadoLa capa sigue respondiendo aunque el origen esté detenido. Su indisponibilidad se traduce en datos más viejos, no en un servicio caído.
Consulta y rendimiento
Al vueloCada búsqueda FHIR hay que traducirla a una consulta que el origen resuelva rápido. Lo que su esquema no indexa, no se puede ofrecer.
MaterializadoSe indexa según los parámetros de búsqueda que la guía exige, no según cómo quedó el esquema del origen hace quince años.
Histórico y reproceso
Al vueloSe ve lo que el origen conserva. Si sobrescribe en lugar de versionar, el histórico no existe y no hay forma de reconstruirlo.
MaterializadoSe puede conservar versión por versión y reprocesar el histórico completo cuando el mapeo cambia o aparece un error.
Escritura de vuelta
Al vueloEscribir hacia el origen exige respetar sus reglas de negocio y sus validaciones, que casi nunca están documentadas.
MaterializadoLa escritura se acepta en la capa y se propaga de forma diferida, lo que obliga a resolver conflictos y a declarar qué versión gana.
Gobierno de la copia
Al vueloNo hay copia: no hay que decidir quién es dueño del duplicado, cuánto se retiene ni cómo se suprime.
MaterializadoHay una copia de datos clínicos, con todo lo que implica: dueño, retención, control de acceso, auditoría y derecho de supresión.
Costo de operar
Al vueloPoca infraestructura, pero el rendimiento depende de un sistema que no se controla y cada consumidor nuevo cambia el perfil de carga.
MaterializadoInfraestructura y operación propias —almacenamiento, monitoreo, reproceso— a cambio de un comportamiento predecible.

Lo que se usa en la práctica

Los extremos puros son poco frecuentes. La mayoría de las capas que operan bien son combinaciones deliberadas de ambos.

  • Caché con vigencia declarada: se traduce al vuelo, pero la respuesta se conserva por un tiempo definido y documentado para el consumidor.
  • Captura de cambios por eventos: el origen avisa qué cambió —por mensajería, por disparadores o por CDC— y solo eso se transforma.
  • Lectura al vuelo con escritura diferida: las consultas van contra el origen y las escrituras se encolan y concilian, que es donde están los conflictos.
  • Materialización parcial: se materializa solo el dominio que lo necesita —resultados, notificaciones— y el resto se traduce al vuelo.
  • Índice aparte para lo que el origen no resuelve: las búsquedas que su esquema no soporta se sirven desde una estructura propia.
Metodología

Cómo construimos la capa

Seis etapas. La primera decide qué se puede sacar del origen sin arriesgar la operación clínica.

  1. 01

    Análisis del origen

    Antes de mapear nada, entendemos qué guarda el sistema realmente y qué se puede extraer sin poner en riesgo lo que ya funciona.

    • Esquema, interfaces y mecanismos de acceso disponibles
    • Perfilado de los datos y de su calidad
    • Ventanas operativas y límites de carga
    • Reglas de negocio que viven en la aplicación
  2. 02

    Modelo y mapeo

    Se decide qué recurso representa cada dato, qué perfil aplica y de dónde sale cada elemento — incluido el que el origen no tiene.

    • Mapeo elemento a elemento
    • Terminologías y ConceptMap para los códigos locales
    • Estrategia de identificadores y referencias
    • Qué se hace con el dato faltante
  3. 03

    Diseño de la capa

    Modo de entrega, alcance por dominio, seguridad y contrato con los consumidores. Aquí se fija lo que después resulta caro cambiar.

    • Al vuelo, materializado o híbrido
    • Autenticación, autorización y auditoría
    • CapabilityStatement objetivo
    • Política de versiones y compatibilidad
  4. 04

    Construcción y transformación

    Se implementan las transformaciones, la exposición y el manejo de errores, con los casos límite tratados como parte del alcance y no como sorpresas.

    • Pipelines de extracción y transformación
    • Endpoints y parámetros de búsqueda
    • Idempotencia y reintentos
    • Registro de lo que no se pudo transformar
  5. 05

    Validación de conformidad

    La capa se prueba contra los perfiles que debe cumplir, con ejemplos válidos y con ejemplos que deben ser rechazados.

    • Validación contra la guía aplicable
    • Pruebas de búsqueda y paginación
    • Comparación contra el origen
    • Pruebas de carga en ventana real
  6. 06

    Operación y observabilidad

    Una capa sin monitoreo falla en silencio y se descubre cuando alguien reclama un dato que nunca llegó.

    • Métricas de latencia, error y frescura
    • Alertas sobre datos no transformados
    • Trazabilidad de origen a recurso
    • Procedimiento ante un cambio del origen
Conformidad

Que sea FHIR de verdad, no JSON con nombres de FHIR

La diferencia entre una capa que pasa una demostración y una que aguanta un ecosistema está en detalles que solo aparecen cuando un tercero intenta consumirla.

Validación contra perfiles

El atajo habitual

Se arma el JSON a mano hasta que «se ve bien» y se prueba únicamente contra el cliente propio.

Lo que sostiene

Cada recurso se valida contra el perfil de la guía aplicable, en integración continua, con ejemplos que deben pasar y ejemplos que deben fallar.

Un CapabilityStatement honesto

El atajo habitual

Se publica un CapabilityStatement copiado que declara operaciones y búsquedas que nadie implementó.

Lo que sostiene

Se declara exactamente lo que la capa soporta. Un consumidor debe poder planear su integración leyéndolo, sin descubrir a golpes qué funciona.

Búsquedas que funcionan

El atajo habitual

Se implementan dos o tres parámetros y el resto se ignora en silencio, devolviendo todo como si el filtro no existiera.

Lo que sostiene

Los parámetros declarados se implementan o no se declaran. Y la paginación se prueba con los volúmenes reales del origen, no con datos de prueba.

Identificadores, referencias y códigos

El atajo habitual

Se usan claves internas como si fueran ids FHIR, se referencian recursos que la capa nunca expone y se mandan códigos locales sin decir de dónde vienen.

Lo que sostiene

Toda referencia se resuelve o se declara como lógica, los identificadores de negocio viajan en identifier con su system, y todo código lleva declarado el suyo.

Errores que se pueden depurar

El atajo habitual

Ante un problema se devuelve un 500 genérico o, peor, un 200 con el recurso incompleto.

Lo que sostiene

Los errores se devuelven como OperationOutcome, con severidad, código y una ubicación que le diga al consumidor qué corregir.

El dato que no existe

El atajo habitual

Se rellena con un valor por defecto, una fecha inventada o un código genérico para que el recurso valide.

Lo que sostiene

Lo ausente se representa como ausente. Cuando la guía exige el elemento, se usan los mecanismos previstos para datos desconocidos y se documenta la brecha, en vez de fabricar el dato.

Resultados

Qué recibe su organización

La capa en operación y todo lo necesario para consumirla, auditarla y hacerla evolucionar sin nosotros.

Capa FHIR en operación

El servicio desplegado, con sus endpoints, su seguridad y su configuración documentada.

Mapeos documentados

Correspondencia elemento a elemento entre el origen y los recursos, con las decisiones registradas.

ConceptMaps y catálogos

Equivalencias declaradas entre los códigos locales y las terminologías estándar.

CapabilityStatement

Lo que la capa soporta realmente: recursos, operaciones y parámetros de búsqueda.

Suite de validación

Ejemplos válidos, ejemplos que deben fallar y las pruebas que corren en cada cambio.

Monitoreo y alertas

Métricas de latencia, error y frescura, con alertas sobre lo que no se pudo transformar.

Guía para consumidores

Cómo autenticarse, qué buscar, qué esperar y qué límites tiene la capa.

Ruta de evolución

Qué se materializa después, qué dominios siguen y cuándo conviene revisar el modo de entrega.

Experiencia

Capas FHIR en operación

Infraestructura FHIR construida sobre sistemas y plataformas que ya existían y siguieron funcionando.

Qué resolvió la capaRecepción y validación de notificaciones

Primer servidor FHIR nacional — EDUS/CCSS

Meddyg implementó y desplegó a producción el primer servidor FHIR que recibiría las notificaciones de enfermedades de notificación obligatoria, vacunas y resultados de laboratorio del EDUS/CCSS, y posteriormente de otros establecimientos de salud.

Qué resolvió la capaPunto de entrada para notificación regional

Infraestructura receptora de ESAVI

Parte del equipo de Meddyg participó como consultor en el diseño e implementación de la infraestructura que recibiría las notificaciones regionales de ESAVI, junto con la guía que define su formato.

Qué resolvió la capaEl estándar sobre transporte nacional

Transacciones FHIR sobre X-Road

Pruebas de concepto junto a la Agencia Nacional de Gobierno Digital para validar transacciones de recursos FHIR sobre la plataforma nacional X-Road, dentro de la demostración funcional de interoperabilidad de Costa Rica.

Qué resolvió la capaNo repudio en la capa de intercambio

Firma digital de recursos FHIR — BCCR

Asistencia técnica para que los equipos del Banco Central de Costa Rica habilitaran el firmado de recursos FHIR con el formato JAdES dentro de GAUDI, su plataforma de firma digital y sellado.

Los casos anteriores son infraestructura FHIR construida sobre sistemas y plataformas que ya operaban. El mismo método —análisis del origen, mapeo, elección del modo de entrega y validación de conformidad— es el que aplicamos a una fachada sobre un expediente o un sistema departamental heredado.

Perfil

¿Para quién es este servicio?

Todos comparten la misma restricción: el sistema de origen no se puede detener ni reemplazar en el plazo en que hay que interoperar.

Hospitales con expediente heredado

Un sistema clínico que no se va a reemplazar y al que ahora le piden exponer datos, notificar o conectarse a una red.

Proveedores de software de salud

Productos que deben demostrar capacidad FHIR ante clientes y licitaciones sin rehacer su base de datos.

Laboratorios y centros de imágenes

Resultados e informes que deben salir hacia múltiples receptores externos con la misma estructura y los mismos códigos.

Instituciones públicas

Sistemas de misión crítica que deben participar en un ecosistema nacional sin abrir su base de datos ni detener su operación.

Redes de intercambio (HIE)

Ecosistemas que incorporan participantes cuyos sistemas no hablan el estándar y necesitan un patrón de conexión repetible.

Aseguradoras

Intercambio con prestadores cuyos sistemas exponen formatos propios y evolucionan a su propio ritmo.

Autodiagnóstico

¿Reconoce alguno de estos problemas?

Nos piden una API FHIR y nuestro sistema no tiene ninguna API.
Reemplazar el expediente no está sobre la mesa, pero interoperar sí.
Cada integración nueva termina siendo una exportación hecha a medida.
Exponemos JSON que llamamos FHIR y ningún validador lo acepta.
No sabemos si conviene traducir al vuelo o cargar a un repositorio.
La consulta externa golpea la misma base de datos que usa la operación clínica.
Cuando el sistema origen se cae, se cae también todo lo que expusimos.
Nuestro proveedor no expone lo que necesitamos y no está en su hoja de ruta.
Un consumidor nos avisó de un dato mal mapeado y no supimos desde cuándo lo estaba.
Publicamos un CapabilityStatement que no coincide con lo que la API hace.
No tenemos forma de saber qué registros no se lograron transformar.
Necesitamos conectarnos a una red nacional y nuestros datos no salen del sistema.

Si alguna de estas situaciones describe su organización, una capa FHIR puede resolver el intercambio sin poner en riesgo lo que ya funciona.

¿Le piden FHIR a un sistema que no lo habla?

Una capa bien diseñada deja a los sistemas actuales participando del ecosistema, sin tocar su operación ni hipotecar la ruta de modernización.