tosch

Tosch HL7: Simplificando HL7 en Node.js

11/08/2025

Tosch HL7: Simplificando HL7 en Node.js - tosch.

Cualquier desarrollador que haya trabajado en la integración de sistemas de salud conoce el desafío que representa el estándar HL7v2. Por un lado, es el pilar que permite la comunicación entre sistemas clínicos; por otro, su formato basado en texto y delimitadores convierte la manipulación de datos en una tarea manual, repetitiva y muy propensa a errores.

Escribir código lleno de split('|'), split('^') y acceder a datos mediante frágiles índices numéricos es una receta para el desastre. El código resultante es difícil de leer y aún más difícil de mantener. ¿Y si necesitamos crear un mensaje desde cero? Nos vemos forzados a concatenar strings, un proceso tan tedioso como peligroso.

Cansado de esta situación, decidí crear una solución. Hoy, quiero presentar un nuevo proyecto de código abierto en el que he estado trabajando: una librería para Node.js y TypeScript diseñada para hacer que la interacción con HL7 sea simple, moderna y segura.


Presentando tosch-hl7

El objetivo de tosch-hl7 es sencillo: abstraer la complejidad del formato HL7 y permitir a los desarrolladores tratar los mensajes como objetos estructurados. En lugar de manipular texto, trabajas con una API semántica y potente.

Desde su primera versión, la librería te permite manejar el ciclo de vida completo de un mensaje:


Tutorial Rápido: Primeros Pasos

Veamos qué tan fácil es empezar a usarla.

1. Instalación

Primero, instala la librería en tu proyecto usando npm:

npm install tosch-hl7

2. Ejemplo: Leer y Modificar un Mensaje

Imagina que recibes un mensaje de admisión y necesitas corregir el apellido del paciente.

import { HL7Message } from 'tosch-hl7';

const hl7String = 'MSH|^~\\&|||||202508112015||ADT^A01|MSG001|P|2.3\nPID|1||1001||DOE^JOHN';

// Parsea el mensaje con una sola línea
const message = new HL7Message(hl7String);

// Lee el apellido original
console.log(`Apellido original: ${message.get('PID-5.1').toString()}`); // Salida: DOE

// Modifica el apellido usando el método set()
message.set('PID-5.1', 'DOE-SMITH');

// Obtén el string HL7 actualizado
const updatedHl7 = message.toString();
console.log('Mensaje actualizado:');
console.log(updatedHl7);
// Salida: MSH|^~\\&||...
//         PID|1||1001||DOE-SMITH^JOHN

3. Ejemplo: Crear un Mensaje desde Cero

Ahora, creemos un mensaje de confirmación (ACK) para responder al sistema de origen.

import { HL7Builder } from 'tosch-hl7';

// Usa el builder para construir el mensaje paso a paso
const ackBuilder = new HL7Builder();

ackBuilder
  .addSegment('MSH', {
    9: 'ACK',
    10: 'ACKMSG001',
    12: '2.3'
  })
  .addSegment('MSA', {
    1: 'AA',
    2: 'MSG001'
  });

// Obtén el mensaje final
const ackMessage = ackBuilder.build();
console.log(ackMessage.toString());

El resultado es un código limpio que define claramente la estructura del mensaje, sin concatenaciones manuales:

MSH|^~\&|||||||ACK^A01|ACKMSG00001|P|2.3
MSA|AA|MSG00001

Un Proyecto Abierto

tosch-hl7 nace como una solución de código abierto con la esperanza de que pueda ser útil para otros desarrolladores que enfrentan los mismos desafíos. El proyecto está en sus primeras etapas y hay mucho espacio para crecer.

Te invito a probar la librería y a participar. Todo feedback es bienvenido, y las contribuciones son la mejor forma de hacer que el proyecto evolucione.

Espero que esta herramienta te ayude a simplificar tus proyectos de interoperabilidad y a escribir un código más limpio y robusto.