
Guía práctica: Integraciones HL7 con Node.js y Mirth Connect
En el mundo sanitario, la interoperabilidad no es un “extra”, es una obligación. Cada hospital maneja múltiples sistemas —HIS, LIS, RIS, farmacias, UCI— y todos necesitan hablar entre sí. El idioma común, desde hace décadas, es HL7 (Health Level Seven). Aunque muchos lo consideren un estándar arcaico, sigue siendo el pegamento que permite que los datos fluyan entre aplicaciones críticas.
En este artículo explico qué es HL7, cómo funciona Mirth Connect como motor de integración, y cómo podemos apoyarnos en Node.js para extender, optimizar y analizar esos flujos de datos. Todo con ejemplos prácticos.
¿Qué es HL7?
HL7 (Health Level Seven International) es una organización que define estándares para el intercambio electrónico de información clínica. El nombre “Level Seven” hace referencia a la capa de aplicación del modelo OSI.
Los tres sabores principales de HL7 son:
- HL7 v2: el más usado en hospitales. Es texto plano con segmentos delimitados por pipes (
|
). - HL7 v3: basado en XML, menos popular, más complejo.
- FHIR (Fast Healthcare Interoperability Resources): la versión moderna, basada en REST/JSON, muy orientada a APIs.
Ejemplo de mensaje ADT^A01 (admisión de paciente) en HL7 v2:
MSH|^~\&|HIS|HospitalX|ADT|Central|202509281000||ADT^A01|123456|P|2.5
PID|1||987654||Pérez^Juan||19800101|M|||Calle Falsa 123^^Madrid^^28000||+34-600000000
PV1|1|I|UCI^101^1^HospitalX||||1234^Médico^Carlos
Cada línea es un segmento (MSH, PID, PV1), y cada campo se separa con |
.
¿Qué es Mirth Connect?
Mirth Connect (ahora llamado NextGen Connect) es un motor de integración diseñado para la salud.
Características principales:
- Permite crear canales que reciben, transforman y envían mensajes HL7, XML, JSON o lo que haga falta.
- Incluye transformadores de mensajes con JavaScript (Rhino).
- Puede conectarse a BBDD, APIs REST, colas JMS, ficheros, etc.
- Es gratuito y open-source (aunque tiene versión enterprise con extras).
En un hospital típico, Mirth actúa como middleware:
- Recibe un ADT de admisión desde el HIS.
- Lo transforma y reenvía al sistema de farmacia, laboratorio y UCI.
- Loguea y monitoriza en su interfaz web.
HL7 y Node.js: un buen complemento
Aunque Mirth es potente, muchas veces queremos procesar datos en un entorno más moderno y flexible. Ahí entra Node.js:
- Crear microservicios para procesar HL7.
- Guardar información en una base de datos SQL o NoSQL.
- Exponer APIs REST que consumen o devuelven datos normalizados.
- Generar dashboards en tiempo real (por ejemplo, descuadres de farmacia).
Librerías útiles en Node.js
simple-hl7
: servidor y cliente HL7 sobre TCP.hl7
: parser de mensajes HL7 v2.net
: módulo nativo de Node.js para sockets TCP.
Ejemplo práctico: servidor HL7 en Node.js
Vamos a crear un pequeño servidor que reciba mensajes HL7 y los procese.
const hl7 = require('hl7');
const net = require('net');
const server = net.createServer((socket) => {
console.log('Cliente conectado');
socket.on('data', (data) => {
const raw = data.toString();
console.log("Mensaje recibido:
", raw);
// Parsear mensaje HL7
try {
const msg = hl7.parser.parse(raw);
console.log("MSH Segment:", msg[0]);
console.log("PID Segment:", msg[1]);
// Ejemplo: extraer nombre del paciente
const patientName = msg[1][5][0][0] + " " + msg[1][5][0][1];
console.log("Paciente:", patientName);
} catch (err) {
console.error("Error parseando HL7:", err);
}
// ACK básico
const ack = "MSH|^~\&|NodeServer|Hospital|HL7App|Central|202509281100||ACK^A01|1|P|2.5\rMSA|AA|123456";
socket.write(ack);
});
});
server.listen(7777, () => {
console.log('Servidor HL7 escuchando en puerto 7777');
});
Este servidor:
- Escucha conexiones en el puerto 7777.
- Recibe un mensaje HL7, lo parsea y muestra información del paciente.
- Devuelve un ACK básico.
Integración con Mirth Connect
Un escenario típico sería:
- Mirth recibe mensajes desde el HIS.
- Los reenvía (por TCP o HTTP) al servidor Node.js.
- Node.js procesa y guarda los datos en una base de datos.
- Mirth recibe la respuesta y la distribuye al resto de sistemas.
De esta forma:
- Mirth hace de hub de integración.
- Node.js aporta flexibilidad y capacidad de extender la lógica con librerías modernas.
Buenas prácticas en integraciones HL7
- Logs detallados: guarda mensajes recibidos y enviados, con IDs únicos.
- Valida la versión HL7: no todos los hospitales usan lo mismo (2.3, 2.5, 2.6).
- ACKs consistentes: un ACK mal formado genera caos en las colas.
- Seguridad: si viaja por red, encapsula en VPN o TLS.
- Monitorización: usa dashboards para saber si hay cuellos de botella.
Conclusión
HL7 no es bonito, pero es el estándar que mantiene unidos los sistemas clínicos. Con Mirth Connect puedes orquestar flujos de integración complejos, y con Node.js ganas flexibilidad para extender funcionalidades, crear APIs y almacenar datos en tiempo real.
Si trabajas en sanidad o te interesa la interoperabilidad, aprender HL7 y Mirth Connect es casi obligatorio. Y si lo combinas con Node.js, tendrás un entorno moderno para resolver problemas que otros aún tratan con scripts de hace 20 años.