
Creación de un canal en Mirth Connect y transformación de HL7 a JSON
La interoperabilidad en sanidad depende de que los sistemas puedan intercambiar datos de forma fiable y segura.
Uno de los motores de integración más usados en hospitales es Mirth Connect (ahora NextGen Connect).
En este tutorial, veremos cómo crear un canal en Mirth Connect que recibe un mensaje HL7 v2 y lo transforma a JSON, paso a paso y con ejemplos.
¿Por qué es importante?
Los mensajes HL7 contienen datos de pacientes: admisiones, altas, transferencias, resultados de laboratorio, prescripciones.
Transformar estos mensajes a formatos modernos como JSON permite:
- Integrar sistemas heredados con aplicaciones web y móviles.
- Almacenar datos en bases de datos modernas (MongoDB, PostgreSQL).
- Facilitar auditoría y análisis en tiempo real.
- Cumplir con nuevas normativas de interoperabilidad que exigen mayor accesibilidad de los datos clínicos.
En hospitales, controlar los flujos de HL7 significa garantizar que la información del paciente esté sincronizada entre todos los departamentos: admisión, farmacia, laboratorio, radiología, UCI.
El impacto en el futuro es claro: los estándares como HL7 y FHIR serán cada vez más exigidos por las autoridades sanitarias, porque aseguran transparencia y continuidad asistencial.
Eventos típicos en HL7
Algunos de los mensajes HL7 más usados en hospitales son:
ADT (Admit, Discharge, Transfer): información sobre la admisión, alta o traslado de un paciente. Ejemplos:
ADT^A01
: Admisión de paciente.ADT^A03
: Alta de paciente.ADT^A08
: Actualización de datos del paciente.
ORM (Order Message): mensajes relacionados con órdenes médicas (laboratorio, radiología).
ORU (Observation Result): resultados clínicos, como análisis de laboratorio.
DFT (Detailed Financial Transaction): transacciones financieras relacionadas con facturación hospitalaria.
Mirth Connect permite crear canales específicos para cada uno de estos flujos, transformando la información según el destino.
Creación de un canal en Mirth Connect
Abrir Mirth Connect Administrator
Inicia sesión en la consola de Mirth.Crear un nuevo canal
- Clic en Channels > New Channel.
- Dale un nombre:
HL7_to_JSON_ADT
.
Configurar el conector de entrada (Source Connector)
- Tipo:
TCP Listener
. - Puerto:
6661
(ejemplo). - Protocol:
MLLP
(Minimal Lower Layer Protocol, usado en HL7).
Con esto, el canal podrá recibir mensajes HL7 desde otros sistemas.
- Tipo:
Configurar el conector de salida (Destination Connector)
- Tipo:
File Writer
oDatabase Writer
(para guardar). - También puede ser
HTTP Sender
si quieres enviar el JSON a una API.
- Tipo:
Transformador de mensajes (Message Transformer)
Aquí es donde ocurre la magia: transformar HL7 en JSON.
Transformación de HL7 a JSON
Mirth Connect permite usar JavaScript (Rhino) en transformadores.
Ejemplo de script para convertir un mensaje HL7 en JSON:
// Obtener el mensaje HL7 crudo
var msg = messageObject.getEncodedData();
// Parsear HL7 a estructura interna de Mirth
var parsed = SerializerFactory.getHL7Serializer(false).deserialize(msg);
// Crear un objeto JSON manualmente con algunos campos
var json = {};
json.messageType = parsed['MSH']['MSH.9']['MSH.9.1'].toString() + '^' +
parsed['MSH']['MSH.9']['MSH.9.2'].toString();
json.patientId = parsed['PID']['PID.3']['PID.3.1'].toString();
json.patientName = parsed['PID']['PID.5']['PID.5.1'].toString() + " " +
parsed['PID']['PID.5']['PID.5.2'].toString();
json.birthDate = parsed['PID']['PID.7']['PID.7.1'].toString();
json.gender = parsed['PID']['PID.8']['PID.8.1'].toString();
// Convertir a string JSON
var jsonString = JSON.stringify(json);
// Guardar como salida
logger.info("JSON generado: " + jsonString);
responseMap.put('transformed', jsonString);
Ejemplo de salida JSON para un mensaje ADT^A01:
{
"messageType": "ADT^A01",
"patientId": "987654",
"patientName": "Pérez Juan",
"birthDate": "19800101",
"gender": "M"
}
Caso práctico en hospitales
Un hospital típico podría usar este canal para:
- Recibir mensajes ADT desde el sistema HIS.
- Transformarlos en JSON.
- Guardar los datos en MongoDB.
- Exponerlos en un API REST para que los consuman aplicaciones móviles de admisión o seguimiento de pacientes.
Esto reduce la dependencia de mensajes planos y abre la puerta a integraciones modernas con FHIR.
Buenas prácticas
- Valida siempre los mensajes HL7 antes de transformarlos.
- Guarda logs de entrada y salida para trazabilidad.
- Asegura el canal con TLS/VPN, ya que se trata de datos sensibles de pacientes.
- Monitorea el rendimiento para evitar cuellos de botella en momentos de alto tráfico.
Conclusión
Crear un canal en Mirth Connect y transformar mensajes HL7 a JSON es un paso clave hacia la modernización de la interoperabilidad hospitalaria.
Permite conectar sistemas heredados con nuevas aplicaciones y facilita la transición hacia estándares como FHIR.
En un futuro cercano, estos procesos serán imprescindibles porque los datos de pacientes deben estar disponibles de forma rápida, segura y estandarizada, y los motores de integración serán la base de todo este ecosistema.