Brio-IO Communication Server
Volver al blog
por Brio-IO-Team

“¿Funcionarán mis scripts de Mirth?” — por fin una respuesta honesta

Todo reemplazo de Mirth promete que los scripts antiguos siguen funcionando. Brio-IO esperó a hacer esa promesa hasta que fue cierta: Rhino real, E4X real, rutas posicionales como en Mirth (msg['PID']['PID.5']['PID.5.1']), createSegment en todos los motores. Y también te contamos los límites.

#mirth #migration #scripting #rhino #hl7

“¿Funcionarán mis scripts de Mirth?” — por fin una respuesta honesta

Es la primera pregunta que hace cualquiera que se plantea dejar Mirth Connect: ¿siguen funcionando mis transformers? Y es la pregunta donde la mayoría de las promesas de migración se quedan calladas — porque “funciona sin cambios” es una frase que el público verifica el primer día. Un profesional de Mirth teclea su ruta de siempre, pulsa deploy y ve en diez segundos si la promesa se sostiene.

Este artículo existe porque una vez no lo escribimos. Una versión anterior del serializador de Brio-IO nombraba los componentes HL7 según su tipo de dato, no según su posición — msg['PID']['PID.5']['PID.5.1'] devolvía una cadena vacía contra un mensaje real. Así que retuvimos el artículo en lugar de imprimir una promesa que se rompe al primer intento. Con la modernización del serializador (ADR-022) la frase ahora es cierta — y aquí está hasta dónde exactamente.

Lo que se traslada 1:1

Rhino real, E4X real

Brio-IO ejecuta los scripts js-legacy en Mozilla Rhino — el motor para el que se escribieron tus scripts de Mirth, no una reimplementación. E4X (la extensión XML de JavaScript que recorre los scripts de Mirth) viene del módulo rhino-xml en el classpath.

msg es ya un objeto E4X XML, no un string. El new XML(msg) que solías poner al principio de un script sobra — accedes directamente:

// Rhino (js-legacy): msg ya es E4X — acceso como en Mirth
var nachname = msg['PID']['PID.5']['PID.5.1'].toString();

Las rutas de componente — sin cambios

Esta es la parte que fue falsa durante mucho tiempo y ahora es cierta. Brio-IO numera los componentes HL7 por posición, igual que Mirth: PID-5.1 es el apellido, PID-5.2 el nombre, PID-3.1 el ID. Tu idioma de Mirth se ejecuta literalmente:

// Se ejecuta sin cambios en Brio-IO js-legacy — mismo mensaje, mismas rutas
var nachname = msg['PID']['PID.5']['PID.5.1'].toString();   // "Schmidt"
var patId    = msg['PID']['PID.3']['PID.3.1'].toString();   // "12345"

El nivel de segmento, de campo y de componente se queda tal como lo conoces. Sin buscar-y-reemplazar, sin reaprender las rutas.

Mutar y devolver

La mecánica de escritura también es familiar de Mirth: fijar un campo, devolver msg al final. El motor serializa el objeto E4X de vuelta a HL7 en su frontera automáticamente — no serializas nada a mano:

// Fijar un campo, devolver msg como última expresión
msg['PID']['PID.5']['PID.5.1'] = 'Mueller';
msg;

Crear segmentos Z — el trabajo diario

Un transformer que crea un segmento Z es trabajo cotidiano en Mirth. En Brio-IO lo haces con createSegment — en los tres motores:

// Rhino (js-legacy): createSegment devuelve una referencia que rellenas
var zbr = createSegment('ZBR', msg);
zbr['ZBR.1'] = 'freigegeben';
msg;

El segmento cae en la posición correcta del HL7 saliente. En la demo pública puedes verlo en vivo: los dos transformers de ejemplo crean un ZBR y lo rellenan.

Lo que debes saber — los límites honestos

Una promesa de migración vale solo lo que sus notas al pie. Aquí están, sin letra pequeña:

  • Rhino está deprecado a propósito. Existe para la compatibilidad con Mirth, no como futuro. En cada deploy de un canal con un script Rhino, Brio-IO avisa — en el log y en la respuesta de la API — y el camino de retirada es fijo (eliminación en Brio-IO 4.0, ~2029). Tienes años de margen para pasar script a script a Groovy o JavaScript moderno — sin big bang.
  • router.routeMessage() aún no está disponible. El encadenamiento canal-a-canal lo modelas hoy con un HTTP sender hacia un HTTP listener; el objeto nativo router llega más adelante.
  • Llamadas Java específicas de Mirth (Packages.com.mirth.* y afines) no se ejecutan — Brio-IO es un servidor distinto, no Mirth con una mano de pintura.

Esto no lo ponemos en la letra pequeña sino en un título, porque justo eso es la diferencia entre “funciona sin cambios” como frase de venta y como afirmación comprobable.

La mejor forma de creerlo: probarlo tú mismo

En la demo pública hay canales con transformers reales, y el message browser te muestra el XML canónico de cada mensaje — justo la estructura contra la que corren tus rutas. Teclea tu idioma de Mirth de siempre en un transformer y ve en diez segundos si se sostiene. Los mismos diez segundos en los que caen la mayoría de las promesas.

Y si quieres que traduzcamos tus canales reales de Mirth — pídenos acceso anticipado. Solo dinos qué interfaces quieres integrar.