Logo Mirth

Mirth Connect

Mirth Connect es un motor de integración libre y de código abierto, específico para interoperabilidad el entorno de la sanidad.

Se distribuye bajo licencia Mozilla Licencia Pública MPL 1.1. Estaba basado en el framework de mensajería Mule ESB en sus orígenes, y desarrollado en Java. Su punto fuerte ha sido siempre, además de ser código abierto y gratuito, la facilidad para el desarrollo con mensajería HL7. Soporta estándares de interoperabilidad en sanidad, como DICOM, EDI, X12,ASTM E1394, FHIR, pero su fuerte ha sido, indudablemente, el tratamiento de mensajes HL7 v2.

Personalmente creo que lo que le ha hecho ser el motor de integración con mas crecimiento en los últimos años es ser open source. Poderse descargar el código de la versión que estás utilizando desde su Subversion y aportar tu desarrollo como contribución.

Historia de Mirth Connect

Mirth Connect comenzó con su primera release en Julio de 2006 como una herramienta pasarela HL7 basada en Mule ESB 1.2 y desarrollado en Java. Utilizó algunas piezas de Mule ESB 1.2, que fueron modificándose a lo largo de las versiones de Mirth. La parte principal de Mule ESB, como motor de enrutamiento interno y algunos de sus conectores. Ya desde su release 1.0 Mirth fue un motor de integración multiplataforma y de código abierto.

Posteriormente, en la versión 2.0, liberada en Octubre de 2010, se aisló del núcleo de Mirth una parte importante del código antiguo de Mule ESB, con la idea de reemplazarlo en el futuro. Se consideró que Mule ESB estaba reteniendo algunas evoluciones que se querían incluir en Mirh.

En septiembre de 2013, Quality Systems, matriz de NextGen adquirió a Mirth Corporation. Desde entonces Mirth Connect ha sido renombrado como Nextgen Connect, o se ha intentado renombrar, pero todo el mundo sigue conociéndolo con su nombre original.

La versión 3.0 de Mirth Connect, liberada en Octubre de 2013 fue un rotundo éxito, y dio pie a la familia de versiones 3.x de esta herramienta. En esta versión el núcleo Mule ESB de Mirth ha sido reemplazado por completo por uno propio escrito desde cero por la compañía. Se ha puesto especial énfasis en el rendimiento, la gestión de colas, la entrega garantizada y las alertas basadas en eventos.

La última versión, en el momento de escribir este artículo es Mirth Connect versión 3.7.

En la Conferencia Anual HIMSS de 2009, se seleccionó Mirth como una de las herramientas de test para las próximas pruebas de interoperabilidad.

Mi experiencia con Mirth Connect

Mirth Connect ha sido mi compañero de viaje profesional durante los últimos 9 años. Comencé a trabajar con la versión 1.8.0 de Mirth allá por 2010, con muchas dificultades y poca documentación. Por aquella época siempre escuchaba los típicos miedos sobre una herramienta desconocida, y las preguntas de referencias de otros hospitales donde lo tuvieran. Y es que, la inexistente documentación era precisamente la estrategia comercial de Mirth Corporation, la compañía origen. Se ofrecía la herramienta gratuita, pero cobraba por los servicios de soporte. Nada que objetar, es una estrategia coherente y ética. Pero en las empresas que trabajé no quisieron obtener esos servicios de pago, por lo que tuve que resolverme los problemas sin soporte. Estoy seguro que no fui el único en esa situación.

Por suerte esto ha cambiado, hoy encuentra bastante información en internet, guías, tutoriales, etc. Es de esperar que una herramienta útil y de código abierto vaya creciendo con aportaciones de usuarios además del trabajo de la compañía. Incluso la actual compañía, Nextgen, ha generado unos manuales de usuario estupendos.

En comparación con otras herramientas similares, como Ensemble, Rhapsody, BizTalk o WebSphere, aporta una ventaja evidente a nivel de costes de licencias. A pesar de que, a nivel de adaptabilidad y rendimiento puede ser inferior a herramientas como Ensemble, es posible implementar motores distribuidos o incluso ESB con un coste mínimo. En mi opinión, no solo ha resistido a Rhapsody o Biztalk, sino que ha terminado imponiéndose a ellos.

Recientemente, NextGen ha incluido módulos, extensiones de pago, y una licencia comercial de Mirth Connect. En la comunidad nos tememos que esto desembocará en un final de la licencia abierta, que ya se empieza a vislumbrar en aspectos como, por ejemplo, la extensión para HTTPS en las últimas versiones. Es una extensión de pago.

Rendimiento

En cuestiones de rendimiento, a no ser que necesitemos un bus ESB regional con varios centros interconectados, raramente se nos quedará corto Mirth Connect. Como dato, he tenido canales Mirth recogiendo 2 millones de mensajes al mes desde un MPI regional (Master Patient Index) sin problemas de rendimiento. Con un servidor Linux dedicado de 4 GB de RAM, una instalación con 70 canales de integración recogiendo mensajería HL7, XML y lecturas en base de datos, de hasta 10 millones de mensajes al mes.

Con un servidor similar, recogiendo cambios en los pacientes de toda la Comunidad de Madrid desde el MPI regional unos 2 millones de mensajes al mes, sin ningún problema en 4 años ininterrumpidos.

Compatibilidad y características

Mirth Connect Server puede correr en cualquier servidor Windows o Linux, e incluso en la nube. La última versión es compatible con:

  • Windows XP, Vista, 7, 10, Server. 32 bit y 64 bit.
  • Linux 2.4 kernel or superior. Se distribuye en RPM o Tar.gz
  • Mac OS X versión 10.X en Tar.gz.

Mirth está desarrollado en Java, por lo que su instalación requiere que en la máquina destino exista instalación de JRE / JDK. En función de la versión de Mirth que estemos instalando deberemos atender a la compatibilidad con las versiones de los JRE. A partir de la versión 3.7, además del oficial y de pago Oracle JRE, también es compatible con OpenJDK, recomendando el uso de la versión oficial Oracle OpenJDK.
Las versiones de Java compatibles para cada versión de Mirth NextGen Connect se relacionan en esta tabla:

 3.0.2 - 3.1.x3.2.x - 3.4.x3.5.x3.6.x3.7.x+
Java 6SiNoNoNoNo
Java 7SiSiNoNoNo
Java 8SiSiSiSiSi
Java 9NoNoNoSiSi
Java 10NoNoNoSiSi
Java 11+NoNoNoNoSi

El servidor necesita una base de datos para crear su esquema relacional y la persistencia de las colas y logs. Por tanto, necesitaremos tener alguno de los SGBD que soporta Mirth. Por suerte, para propósitos de test o desarrollo no necesitaremos un SGBD, ya que Mirth viene con una base de datos embebida (Apache Derby). Sin embargo, el despliegue en producción no es recomendable utilizar dicha base de datos, y los sistemas compatibles de la última versión de Mirth son:

  • Oracle 10R2 o superior.
  • MySQL 5.6 o superior.
  • SQL Server 2005 o superior.
  • PostgreSQL 8.3 o superior.

Mirth Connect se puede descargar desde la página de descargas de NextGen.

Cómo funciona Mirth Connect

Mirth basa su arquitectura en el concepto de Canal de integración. Un canal en Mirth viene a ser como una tubería que conecta una fuente de origen de datos con una o varias fuentes de destino. En el flujo de los datos desde la fuente al destino se realizan transformaciones, mapeos, codificaciones y adaptaciones que producen el resultado esperado.

Canales como tuberías en Mirth
Canales como tuberías en Mirth

Conectores

Un conector de entrada permite recibir datos desde sistemas origen en distintos tipos, de entre los formatos y estándares soportados por Mirth Connect:

  • DICOM
  • HL7 v.2x
  • HL7 v.3x
  • Texto con delimitadores
  • EDI/X12
  • NCPDP
  • XML
  • JSON (y FHIR)
  • O construir un script en Javascript que dé como resultado alguno de los formatos anteriores.
  • ASTM E1394 en la versión comercial de Mirth.

Para recibir estos datos, el conector expone un interfaz, que será el que consuma el sistema origen, o directamente Mirth. En esta plataforma se denominan Listener. Entre los Listener con los que cuenta Mirth tenemos:

  • Web Service Listener
  • DICOM Listener
  • TCP Listener (incluye MLLP)
  • JavaScript Reader
  • JMS Listener
  • HTTP Listener
  • File Reader (incluido SMB o FTP)
  • Database Reader
  • Channel Reader
  • Con una extensión comercial también se incluyen:
    • Email Reader
    • Serial Connector

Los drivers de lectura de base de datos incluidos en la herramienta son:

  • Oracle
  • SQL Server
  • MySQL
  • PostgreSQL

Sin embargo, la ventaja que nos brinda la herramienta al estar desarrollada en Java, es que podemos utilizar cualquier driver jdbc. Si la base de datos que vamos a utilizar no es ninguna de esas, podremos importar y crear un conector nuevo. Una vez hecho, funciona exactamente igual que con los que trae la herramienta.

Por ejemplo, aún hay algunos hospitales en España que siguen utilizando Informix, SGBD para el que no incorpora driver Mirth. Para muchas integraciones me ha resultado factible descargar el driver jdbc de informix correspondiente a la versión del SGBD y crearme un Reader para dicha base de datos.

Transformadores

Los transformadores son las etapas donde se adapta el formato de datos, se realizan conversiones y mapeos de datos origen a otros formatos destino.

La herramienta incorpora una serie de plantillas de código, gestores de mapeos de campos a variables globales o locales, y otras ayudas para realizar las transformaciones de datos. Sin embargo, una de las mas útiles en mi opinión es la posibilidad de escribir scripts en Javascript para realizar estas transformaciones de datos.

Además, si algo queda fuera, es posible utilizar librerías externas en código Java para cualquier otra funcionalidad.

Parte de estas transformaciones y mapeos pueden ser, por ejemplo, convertir un formato de datos en otro distinto. De esta manera, en el flujo de datos podemos tener una entrada en formato XML proveniente de una base de datos, y una salida como mensaje HL7 v2 transportado en Soap hacia un WebService.

Recordemos el flujo de datos en un canal:

Flujo de datos en un canal Mirth
Flujo de datos en un canal Mirth

Tenemos transformadores de los datos fuente, común a cualquier destino, y en otra etapa posterior también tenemos transformadores específicos del destino concreto.

Filtros

Los filtros son reglas que van a discriminar si el conector continuará la ejecución del flujo, o por el contrario el mensaje será filtrado, terminando su ejecución.

Por lo general las comprobaciones van a ser sencillas en los filtrados, por ejemplo existencia de un campo o no, un case del valor del campo entre datos permitidos, etc. Sin embargo es posible incluso codificar un script en Javascript para la lógica del filtro, y combinar varios pasos.

Por ejemplo, una lógica «Aceptar mensaje si Regla1 OR (Regla2 AND Regla3) en Mirth se generarían 3 filtros con las lógicas correspondientes.

Ejemplo de Filtros Mirth
Ejemplo de Filtros Mirth

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Una idea sobre “Mirth Connect”

Follow by Email
Facebook
Twitter
LinkedIn