¿Por Qué Convertir HL7 v2.x a JSON?
HL7 v2.x es un formato de texto delimitado por tuberías y posicional diseñado a finales de los años 80. Su estructura es precisa pero opaca para las herramientas modernas: la mayoría de las APIs REST, almacenes NoSQL, pipelines ETL y plataformas de análisis esperan JSON. Convertir mensajes HL7 a JSON los hace accesibles para consultas SQL, procesamiento en JavaScript, análisis en Python y almacenamiento en bases de datos de documentos como MongoDB o Elasticsearch, sin modificar los sistemas de destino.
Anatomía de un Mensaje HL7 v2.x
Un mensaje HL7 v2.x es una secuencia de segmentos delimitados por retornos de carro. Cada segmento comienza con un nombre de tres caracteres (MSH, PID, OBX). Los campos dentro de un segmento están separados por el carácter separador de campos (normalmente |). Los campos pueden contener componentes separados por ^, subcomponentes separados por & y repeticiones separadas por ~. Los dos primeros campos del segmento MSH establecen estos caracteres de codificación, por lo que un parser conforme los lee dinámicamente.
Modo Simplificado: Rápido, Plano, Legible
En modo simplificado, el convertidor emite un objeto JSON por ocurrencia de segmento, con valores de campo clave como SEG.N (p.ej., PID.5 para el campo de nombre del paciente). Los campos de un solo valor se convierten en cadenas; los campos con componentes se convierten en arrays. Este formato es fácil de indexar en cualquier almacén de documentos y directo de consultar con jq o el módulo json de Python.
Modo Estilo HAPI: Componentes Nominados para Integración de Sistemas
HAPI (HL7 Application Programming Interface) es la librería Java más utilizada para el procesamiento de HL7 v2.x. Cuando HAPI serializa un mensaje a JSON, nombra los componentes con el descriptor del tipo de dato HL7. Los sistemas que emiten o consumen JSON HAPI (Epic Bridges, canales Rhapsody, adaptadores Ensemble) producen o esperan esta forma. Si estás construyendo un sistema que debe coincidir con la salida de HAPI, seleccionar modo estilo HAPI ahorra horas de reimplementación.
Repeticiones de Campos y Seguimiento de Ocurrencias
Los segmentos HL7 pueden repetirse: un mensaje de resultado ORU^R01 puede tener docenas de segmentos OBX, cada uno con una medición de laboratorio diferente. El convertidor asigna un índice de ocurrencia a los segmentos repetidos para que OBX[1], OBX[2], OBX[3] se mantengan distintos en la salida JSON. Las repeticiones de campo (múltiples valores dentro de un campo, separados por ~) se conservan como arrays.
Secuencias de Escape y Unicode
HL7 v2.x utiliza un mecanismo de escape con barra invertida para representar los cinco caracteres de codificación reservados dentro de los valores de campo: \F\ para el separador de campo (|), \S\ para el separador de componente (^), \R\ para el separador de repetición (~), \T\ para el separador de subcomponente (&) y \E\ para el carácter de escape (\). Cuando la opción de descifrado está activada, el convertidor resuelve estos a sus caracteres literales en la salida JSON.
Campos Nulos y Vacíos
En HL7 v2.x, un campo vacío (||) significa "no proporcionado" y un campo de comillas dobles (|""|) significa "eliminar explícitamente el valor anterior". El convertidor mapea campos vacíos a null de JSON para distinguirlos de campos ausentes, diferencia que importa cuando se usa el JSON para realizar actualizaciones de base de datos.
Casos de Uso de Integración
Los patrones de integración comunes que se benefician de la conversión HL7 a JSON incluyen: alimentar datos demográficos HL7 (PID, PV1) a un índice maestro de pacientes basado en REST; poblar Elasticsearch con resultados de laboratorio (OBX) para análisis; probar la lógica de conversión FHIR parseando primero el mensaje HL7 fuente a JSON y luego mapeando rutas JSON a campos de recursos FHIR; y registrar mensajes en forma estructurada en CloudWatch o Datadog donde el texto delimitado por tuberías no es buscable.
Fidelidad de Ida y Vuelta
Para propósitos de integración, JSON es típicamente una forma intermedia que no necesita reconstruir el mensaje HL7 original. Sin embargo, si se requiere fidelidad de ida y vuelta, debes conservar los campos nulos, preservar las repeticiones como arrays ordenados y mantener las secuencias de escape codificadas (desactivar la opción de descifrado). El modo simplificado es menos adecuado para ida y vuelta porque omite nombres de componentes; el modo estilo HAPI preserva suficiente estructura para la reconstrucción.