Artículo
· 11 oct, 2023 Lectura de 4 min

Usando FHIR Adapter para ofrecer servicios FHIR sobre sistemas legacy - Arquitectura

Volvemos al ataque con nuestro ejemplo de uso de FHIR Adapter, en este artículo vamos a revisar como podemos configurarlo en nuestras instancias de IRIS y cual es el resultado de la instalación.

Los pasos realizados para la configuración del proyecto son los mismos que indica la documentación oficial, podéis revisarlos directamente aquí. Pues bien, ¡manos a la obra!

Instalación

Como podéis ver en el proyecto asociado al artículo, tenemos nuestra instancia de IRIS desplegada en Docker, por lo que la principal parte de la configuración inicial la realizaremos en el Dockerfile. Si no tenéis ganas de poneros a ver código podéis estar tranquilos, no vamos a entrar en los detalles de configuración de Docker.

Para instalar nuestro FHIR Adapter únicamente hemos tenido que:

  1. Creado en nuestra instancia de IRIS un Namespace llamado ADAPTER con la funcionalidad de Interoperabilidad.
  2. Desde el terminal de IRIS acceder a nuestro Namespace y ejecutar el siguiente comando.
    set status = ##class(HS.FHIRServer.Installer).InteropAdapterConfig("/Adapter/r4")

En nuestro caso hemos definido que la URL del endpoint de IRIS que recibirá las peticiones REST será /Adapter/r4.

Resultado de la instalación

Una vez finalizada la instalación de FHIR Adapter podemos revisar qué ha ocurrido en nuestra instancia de IRIS, para ello acudiremos en primer lugar a revisar el menú de aplicaciones web (System Administration -> Security -> Applications -> Web Applications)

Como podemos ver, una nueva aplicación web se ha añadido a la lista, indicando que corresponde a nuestro Namespace ADAPTER. Accedamos a ella para revisar más en detalle su configuración.

Como vemos la aplicación web creada tiene habilitada la recepción de llamadas REST y la clase responsable de gestionar dichas llamadas es HS.FHIRServer.HC.FHIRInteropAdapter. Otro detalle que vemos es que tiene habilitada tanto la autenticación por password como las llamadas sin autenticar. Para nuestro ejemplo no vamos a modificar nada, pero sería interesante que en cualquier entorno de producción se habilitase la autenticación JWT.

Vamos a revisar que ha ocurrido en la producción de nuestro Namespace.

La instalación a creado y desplegado dos nuevos componentes, el Business Service InteropService y el Business Operation InteropOperation. Para nuestro ejemplo vamos a usar únicamente InteropService que será el encargado de reenviar el mensaje FHIR recibido, este será de la clase HS.FHIRServer.Interop.Request y será sobre el que trabajaremos para extraer la información recibida. La respuesta que InteropService deberá recibir para retornar el JSON de respuestá será del tipo HS.FHIRServer.Interop.Response.

Configuración de nuestro "HIS"

Comentábamos en el artículo anterior que íbamos a simular la interoperabilidad con un HIS teórico, para ello hemos desplegado en nuestro Docker una instancia de PostgreSQL con una serie de tablas de prueba. Para poder lanzar consultas sobre esta base de datos externa hemos incluido y configurado el Java Gateway, de tal forma que podamos realizar vía JDBC las conexiones necesarias, también hemos incluido la librería de JAVA que utilizaremos para conectar con PostgreSQL.

Veamos los componentes de la producción encargados de esta conexión.

Tenemos nuestro JavaGateway configurado para apuntar a la máquina virtual de Java que hemos desplegado en nuestro Docker:

El Business Operation FromAdapterToHIS será el encargado de las consultas a nuestro PostgreSQL, veamos su configuración:

Como vemos utiliza como clase Adapter EnsLib.SQL.OutboundAdapter que nos permitirá conectarnos directamente a la base de datos de nuestro "HIS". EL valor del DSN será la cadena de conexión a la instancia de PostgreSQL desplegada en nuestro Docker.

Resumiendo...

Repasemos lo que hemos hecho en este artículo:

  1. Instalación de FHIR Adapter en nuestro Namespace y comprobación de que disponemos de un endpoint al que remitir nuestros mensajes FHIR.
  2. Comprobación de los componentes creados por defectos en la producción de nuestro Namespace (InteropService e InteropOperation).
  3. Creación de los componentes necesarios para comunicarnos con la base de datos de nuestro "HIS".

Con estos pasos lo tenemos todo preparado para empezar a recibir mensajes FHIR en formato JSON. En el próximo artículo crearemos el Business Process encargado de procesar los mensajes recibidos e implementaremos las diferentes funcionalidades que iremos necesitando para consultar y escribir sobre nuestra base de datos en PostgreSQL.

¡Muchas gracias por vuestra atención!

Comentarios (0)1
Inicie sesión o regístrese para continuar