Artículo
· 14 feb, 2024 Lectura de 4 min

Desarrollando aplicaciones SMART On FHIR con Auth0 e InterSystems IRIS FHIR Server - Introducción

Introducción

Recientemente participé en un hands-on fantásticamente organizado por @Patrick Jamieson en el que se configuraba una aplicación de Angular junto con un servidor FHIR de IRIS siguiendo los protocolos definidos por SMART On FHIR y me resultó fráncamente interesante, por lo que me puse por mi cuenta a desarrollar mi propia aplicación de Angular y así aprovechar lo aprendido para publicarlo en la comunidad.

SMART On FHIR

Veamos que nos dice Google de SMART On FHIR:

SMART en FHIR es un estándar de datos que permite a las aplicaciones acceder a la información en sistemas de registro de salud electrónico (EHR). Un desarrollador de aplicaciones puede escribir una sola aplicación que se conecte a cualquier sistema de HCE que haya adoptado el estándar.

Los principales conceptos que vamos a manejar con en SMART On FHIR son:

  • Autenticación y autorización delegada vía OAuth2 u OpenID.
  • Manejo de recursos FHIR en el contexto definido.
  • Comunicaciones HTTPS.

Arquitectura de nuestra aplicación.

Para este ejercicio hemos configurado tanto en Docker como en el servicio Auth0 los siguientes elementos:

  • Aplicación desarrollada en Angular que actuará como nuestro front-end, esta aplicación se ha desarrollado siguiendo los principios de SMART On FHIR.
  • Servidor web y proxy inverso NGINX que proveerá a los usuarios nuestra aplicación desplegada en Angular.
  • Auth0 nos proporcionará el servicio de autenticación y autorización mediante OAuth2.
  • InterSystems IRIS en el que desplegaremos nuestro servidor FHIR y al que nos conectaremos mediante el Web Gateway el cual incluye en su imagen del Docker un Apache Server ya disponible.

Auth0

Aunque podríamos delegar la autenticación y autorización de los usuarios en otro servidor IRIS desplegado al efecto en esta ocasión vamos a utlizar el servicio ofrecido por Auth0.

¿Qué es Auth0?

Auth0 es un servicio que nos provee todo el mecanismo para administrar la autorización y la autenticación de nuestras plataformas.

Auth0 dispone a su vez de librerías específicas en diferentes lenguajes para poder integrarse fácilmente con cualquier proyecto, por lo que es siempre una opción para tener en cuenta para desarrollos basados en SMART On FHIR.

Incluyendo Auth0 en nuestra aplicación.

Dado que el uso de OAuth2 es condición requerida para el uso de SMART On FHIR esto implica la inclusión de un servidor de OAuth2 al proceso habitual de autenticación, autorización y acceso a la aplicación. En el siguiente diagrama podremos ver cual es el recorrido que realiza la información enviada al sistema con el servicio de Auth0:

Analicemos el proceso:

  • Solicitud de login:
    1. Login request: El usuario accede a la aplicación en su explorador de Internet y solicita loguearse en la misma.
    2. Login request: La aplicación Angular remite la solicitud al servicio de Auth0.
    3. Login page: Auth0 envía una redirección a una página propia al explorador de Internet del usuario.
  • Autenticación en Auth0:
    1. User credentials: El usuario introduce su email y la contraseña con la que se encuentra registrado en Auth0.
    2. Authentication & Authorization: Auth0 valida los datos y genera un Access_token incluyendo el contexto asignado al usuario.
    3. Access_token response & redirection: Auth0 redirige la respuesta a la URL indicado en la configuración del proyecto incluyendo el token generado.
    4. Patient screen: La aplicación de Angular muestra al usuario la página para poder registrar sus datos personales. 
  • Registro de recurso FHIR:
    1. Save patient: el usuario rellena el formulario con sus datos y la aplicación Angular transforma el formulario en un objeto JSON con el formato del recurso Patient de FHIR.
    2. POST request: la aplicación Angular remite una llamada HTTP POST al servidor FHIR desplegado en IRIS incluyendo en la cabecera de la petición el access_token como token de autenticación.
    3. POST response: tras recibir la petición POST vía Web Gateway IRIS comprueba la validez del token y el contexto de la petición, si todo es correcto validará el recurso recibido y lo registrará en el servidor FHIR, retornando un HTTP 201 indicando la creación del nuevo recurso y adjuntando en una cabecera el identificador asignado al nuevo recurso.
    4. Operation success: la aplicación Angular redirigirá al usuario a la pantalla que muestra las funcionalidades principales.

Una vez logueado, la librería de Auth0 incluida en el proyecto se encargará de interceptar todas las peticiones que hagamos a nuestro servidor FHIR para incluir el access token recibido desde Auth0.

Proximamente...

En los próximos artículos vamos a ver como tenemos que configurar cada uno de los sistemas implicados y finalmente como conectarlo con nuestra aplicación Angular. Para los que no podáis esperar podéis consultar el README.md presente en el GitHub asociado al proyecto de OpenExchange vinculado a este artículo en el que se explica detalladamente como configurar tanto Auth0 como InterSystems IRIS.

Awfully Good: Stay Tuned (1992) with John Ritter

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