REST API EN MIRTH CONNECT - TALLER VIRTUAL GRATUITO EN ESPAÑOL 25 JUNIO 2021 7 PM (GMT-3)

¿Cómo añadir una API a Mirth Connect?

Taller sobre REST en Mirth Connect by Humberto Mandirola instructor del curso virtual de Mirth Connect de HL7 Argentina.

Como usar el conector 'Source' de tipo 'Web Service Listener para construir una API en Mirth Connect, consultar en una base de datos y devolver los resultados mediante un GET




 El objetivo de este taller es ver como se instala una REST API para que podamos consultar pacientes de una base de datos SQL.

Temario

  • Configuración del Source y HTTP Listener
  • Configuración del Destination con JavaScript
  • Lectura en Base de datos SQL


Video del taller:



HL7LATAM.ORG

Google group de Mirth HL7

Pueden descargar el canal usado en este taller desde github

Si quieren seguir el taller online y hacer los ejercicios al mismo tiempo tienen que tener instalado el Mirth Connect previamente. Como aptitudes previas se requiere:

  1. Conocimiento básico de Mirth Connect sobre canales
  2. Conocimiento básico de REST API
  3. Conocimiento básico de Postman
Tutorial para instalar Postman

REST, REpresentational State Transfer, es un tipo de arquitectura de desarrollo web que se apoya totalmente en el estándar HTTP.

REST nos permite crear servicios y aplicaciones que pueden ser usadas por cualquier dispositivo o cliente que entienda HTTP, por lo que es increíblemente más simple y convencional que otras alternativas que se han usado en los últimos diez años como SOAP y XML-RPC.

REST se definió en el 2000 por Roy Fielding, coautor principal también de la especificación HTTP. Podríamos considerar REST como un framework para construir aplicaciones web respetando HTTP.

Por lo tanto REST es el tipo de arquitectura más natural y estándar para crear APIs para servicios orientados a Internet.

Para configurar una Api REST en Mirth Connect vamos a seguir los siguientes pasos:

En primer paso es crear nuestro Rest API. Para lo cual vamos a canales presionamos botón derecho y creamos New Channel



luego vamos a Source  y configuramos nuestro canal de entrada



Configuramos lo siguiente:


un Connector Type HTTP Listener, en el puerto 7000


La respuesta va a ser en Destination 1


En el puerto de escucha HTTP Listener Settings


ponemos


Base Context Path: /pacientes


Binary Minet types: application/.*(?<!json|xml)$|image/.*|video/.*|audio/.*


http url: http://localhost:7000/pacientes/


El formato de la respuesta en Message Content  es XML


Marcamos qué incluye medata datos (Yes)


En el Response Content type ponemos {responseContentType}  la idea acá es poner dinámicamente el valor en este parámetro para usarlo en destination cuando procesamos los datos.


En Response Status Code ponemos:

${responseCode} 


Luego vamos a Destination

Vamos a obtener los datos desde  la base de datos para lo cual:

tenemos que abrir la conexión a la base de datos ejecutar el procedimientos de búsqueda  y devolverlos  a través de un  objeto JSON M usando  Java Database Connectivity (JDBC) .

JDBC es la especificación JavaSoft de una interfaz de programación de aplicaciones (API) estándar que permite que los programas Java accedan a sistemas de gestión de bases de datos. La API JDBC consiste en un conjunto de interfaces y clases escribas en el lenguaje de programación Java.vCon estas interfaces y clases estándar, los programadores pueden escribir aplicaciones que conecten con bases de datos, envíen consultas escritas en el lenguaje de consulta estructurada (SQL) y procesen los resultados.


Puesto que JDBC es una especificación estándar, un programa Java que utilice la API JDBC puede conectar con cualquier sistema de gestión de bases de datos (DBMS), siempre y cuando haya un controlador para dicho DBMS en concreto.


 Para esto configuramos en el  Connector Type seleccionamos un <Java script Writer>

Lo que tenemos que hacer es la búsqueda en nuestra base de datos y devolver la respuesta.


Para asistirnos en la construcción del Query de SQL  MIRTH tiene un asistente que podemos buscar en Dentro de Destination vamos a Edit transformer donde tenemos template que nos ayudan a generar el código.

Luego de configurar todo grabamos para ver como queda este contenido chequen con lo que está abajo.


    var dbConn;


                    var result;


                    var patientsArray = [];


                    


                    try {


                    dbConn = DatabaseConnectionFactory.createDatabaseConnection("com.mysql.cj.jdbc.Driver", "jdbc:mysql://localhost:3306/mydatabase", 'root', 'root');


                    result = dbConn.executeCachedQuery('select * from pacientes');


                    while (result.next()) {


                    const Nom = result.getString('Nombre');


                    const Ape = result.getString('Apellido’');


                    const Fechnac = result.getString('Fechnacimiento');


                    const patientObject = {firstname: Nom, lastname: Ape, date_of_birth: Fechnac};


                    patientsArray.push(patientObject);


                    }


                    channelMap.put('responseContentType', 'application/json');


                    channelMap.put('responseCode', '300');


                    return JSON.stringify(patientsArray);


                    } catch (e) {


                    logger.info(e);


                    return [];


                    } finally {


                    if (dbConn) {


                    dbConn.close();


                    }


                    }



Grabamos  y hacemos el deploy de nuestro canal para probar la API

Buscamos database query y seleccionamos new step



Referencias

https://hl7latam.blogspot.com/2021/05/setup-de-una-rest-api-en-mirth-connect.html

https://www.infoworld.com/article/3388036/what-is-jdbc-introduction-to-java-database-connectivity.html

https://www.youtube.com/watch?v=BqvCsxf_wWs

Comentarios

  1. Hola Dr. Humberto F. Mandirola,

    Seguí su ejemplo y me funcionó, pero en vez de conectar a una BD me conecte a un API REST con método POST, realice la conexión y funciona a medias, lo que no logro entender o saber es como desde un postman le envio la url http://localhost:7001/Order/ y el objeto json pero al momento de llegar al API REST configurado llega vació.

    En el source - transformer le he agregado los 4 parámetros (y aquí es donde estoy perdido, no sé si debería ser así)

    En el destination en content le envío así :

    {
    "id":"${id}",
    "createdAt" : "${createdAt}",
    "name": "${name}",
    "avatar": "${avatar}"
    }

    o como se deberia enviar o recibir un objeto json?

    PD: llevo casi un día aprendiendo Mirth Connect, disculpe si ando medio perdido

    Muchas gracias

    ResponderBorrar

Publicar un comentario

Entradas más populares de este blog

ESCANEO DEL CODIGO PDF417 DEL DNI (Documento Nacional de Identidad digital)

¿Que tipos de Mensajes de HL7 hay?

Apex SQL una herramienta free útil para interpretar mejor el código SQL