¿Cómo montar un servidor FHIR en Google Cloud?

06 de octubre, 2022

Como desarrollador de software en salud, hace tiempo le eché un ojo a Cloud Healthcare API de Google, que según la página te permite almacenar y gestionar datos en formato FHIR.

Al fin me di el tiempo de hacer una pequeña prueba. Aquí está el paso a paso, de manera de que tú también puedas hacerlo.

Requisitos

Este artículo es algo técnico. Si bien la creación de la instancia FHIR es mediante la interfaz de Google, si quieres probar agregando recursos (por ejemplo, un paciente), tendrás que ejecutar ciertos comandos.

Para crear el recurso, necesitarás usar Postman, así que tenlo instalado si aún no lo haces.

Nota: Postman es una aplicación que te permite interactuar con APIs. Es una manera sencilla de hacerlo, ya que no necesitas escribir comandos en la consola. Todo lo haces mediante una interfaz gráfica.

Paso a Paso para tener tu servidor FHIR andando

1) Activar tu cuenta en Google Cloud

Nota: si ya has usado Google Cloud, este paso no es necesario.

Lo primero que tienes que hacer es entrar a https://console.cloud.google.com para activar tu cuenta en Google Cloud.

Aquí tendrás que aceptar las condiciones, y con esto estás OK.

2) Crear un proyecto en Google Cloud

Nota: si ya tienes un proyecto donde quieres montar tu servidor FHIR, no necesitas crear uno nuevo.

Tienes que crear un proyecto, y debes colocarle un nombre que represente tu proyecto.

Yo le coloqué nessy-fhir-test

Una vez creado, te llevará a un panel con mucha información:

Dashboard de un proyecto en GCP

3) Habilitar Cloud Healthcare API

Google Cloud Platform es un producto de Google… Así que la forma más fácil de navegar por la herramienta es usando el buscador.

Arriba, en la barra de search, coloca “healthcare”, debería salirte algo así:

Aparece "Products & Pages", la primera opción es "Healthcare"

Selecciona la primera opción, que dice “Healthcare data storage and processing”, lo cual te llevará a la siguiente pantalla:

Cloud Healthcare API, con un botón de "Enable"

Y ahí le das clic a “ENABLE” (o habilitar).

4) Habilitar Billing

Es probable que te aparezca el siguiente mensaje:

Cloud Healthcare API requires a project with a billing account.

Así que tienes que habilitar el “Billing” en tu proyecto. Lo bueno es que te dan 300 USD en créditos gratuitos que podrás usar en los próximos 90 días.

Lo malo es que igual necesitas colocar una tarjeta de crédito.

Sin embargo, esta prueba no te consumirá recursos para que tengas que pagar de tu bolsillo.

5) Crear tu instancia FHIR

Nota: en adelante, me cambié de cuenta para no activar los créditos gratuitos. Así que ahora el proyecto se llama “apposito-Dev” y no “nessy-fhir-test”

Ahora tenemos todo lo necesario para crear una instancia FHIR. Puedes ver la guía oficial, que está bien explicada para más detalles.

Te voy a explicar con mis palabras lo que vamos a hacer a continuación:

  1. Crear un “Dataset” (conjunto de datos). Un Dataset es un conjunto de datos donde vivirán tus instancias de FHIR. Dependiendo del proyecto, puede que necesites tener más de un servidor FHIR, y esta es una manera de agruparlos.
  2. Crear un “Datastore”. Un Datastore es un almacén de datos, y corresponderá a tu instancia FHIR.

En otras palabras, para crear una instancia de FHIR (almacén de datos, Datastore), necesitas colocarlo dentro de un conjunto de datos (Dataset). Así que…

Lo primero que tienes que hacer es crear un dataset:

Interfaz de crear dataset te solicita un nombre y una región

Tienes que elegir un nombre y una región. Yo le colocaré “test”, y lo crearé en “us-east1”:

Le coloqué "Test" y en "us-east1"

Luego de esperar un momento (1 minuto?), tu “Data Set” estará listo.

Puedes acceder a tu Dataset, donde verás la opción de crear un “Data Store”:

En la vista de tu dataset, puedes crear un Data Store

El formulario es guiado, ahí puedes ir seleccionando las opciones que estimes convenientes. Para este ejemplo, a mi instancia FHIR le coloqué como nombre “test”, de tipo “FHIR”, y en “R4” (la guía de implementación de Core-CL está en FHIR R4):

Formulario con los datos llenados

Nota: Las opciones de BigQuery y de Cloud Pub/Sub por ahora puedes omitirlas.

Le das clic a crear y listo, tendrás tu instancia FHIR creada:

Dataset con la instancia nueva creada

Si le das clic, podrás ver más información de tu almacén FHIR:

Detalles como ID, type y path

Lo más importante de aquí es el “path”, ya que lo usarás para poder hacer operaciones FHIR.

Crear un paciente de prueba (usando Postman)

Tu instancia de FHIR ya está OK. Ahora veremos como realizar una operación FHIR en el almacén que acabamos de crear.

De todo este tutorial, esto fue lo que más me costó. Por alguna razón, no podía autenticarme de manera correcta. Ahora te diré cómo hacerlo de manera fácil.

1) Obtener token de autenticación

Para crear un recurso en tu almacén FHIR (por ejemplo, un paciente), necesitas autenticar la operación que vas a realizar. Esto en términos técnicos, es agregar un token de autenticación en el header de tu solicitud HTTP.

Para obtener el token, lo más fácil es hacer lo siguiente. Hay un ícono al lado derecho del buscador:

Activate Cloud Shell Icon

Es como un “>_”, que dice “Activate Cloud Shell”. Le das clic, y te abrirá un Terminal dentro de tu browser:

Cloud Shell Terminal

Ahora, en la consola, ejecuta el siguiente comando:

gcloud auth application-default print-access-token

Te aparecerá una ventana que dice que la terminal te está solicitando datos, le das aceptar y deberías ver un texto:

Access token en la Terminal

Copia ese texto (que es el token), lo necesitarás en el siguiente paso.

2) Crear un Request

En Postman, crea un nuevo HTTP Request:

Crear un nuevo HTTP Request

Como vamos a crear un recurso, tienes que seleccionar POST.

3) Agregar autenticación

En la sección Headers agrega uno que se llame Authorization y en el valor, coloca Bearer <tu token>:

Authentication: Bearer TOKEN

4) Armar la URL base de tu servidor FHIR

La URL base de tu servidor FHIR es algo así: https://healthcare.googleapis.com/v1/{path}/fhir.

¿Recuerdas que te dije que el path era importante? (cuando creaste tu almacén de datos FHIR), bueno, ahora vamos a usarlo.

En mi caso, el path es: projects/apposito-dev/locations/us-east1/datasets/Test/fhirStores/test

Reemplaza en la URL que coloqué arriba donde dice {path} por el PATH de tu almacén, y tendrás como resultado la URL base de tu servidor FHIR. En mi caso:

https://healthcare.googleapis.com/v1/projects/apposito-dev/locations/us-east1/datasets/Test/fhirStores/test/fhir

Nota: no olvidar colocar al final /fhir.

5) Enviar solicitud

Para interactuar con un recurso en FHIR, tenemos que hacerlo mediante la URL del recurso, la cual es Base + /Recurso.

Base es la URL base del servidor FHIR (paso anterior), y el recurso que usaremos ahora es Patient.

En mi caso, la URL para interactuar con Patient es:

https://healthcare.googleapis.com/v1/projects/apposito-dev/locations/us-east1/datasets/Test/fhirStores/test/fhir/Patient

Y esa URL hay que colocarla en Postman:

La URL incluyendo "Patient" en Postman

Finalmente, en el “body” de la solicitud, debemos colocar los datos de paciente:

{
    "name": [
        {
            "use": "official",
            "family": "Smith",
            "given": [
                "Darcy"
            ]
        }
    ],
    "gender": "female",
    "birthDate": "1970-01-01",
    "resourceType": "Patient"
}

Eso en Postman, va dentro de “body”, seleccionar “raw” y luego “JSON”:

Copiamos y pegamos lo anterior en postman

Y le damos clic a “Send”. Si todo salió bien, deberías ver como Response a tu paciente:

JSON de resultado de la operación, incluye el ID

Visualizar tus recursos con FHIR viewer

Ahora que ya creaste tu recurso Patient, puedes usar la misma interfaz de Google Cloud para ver la información.

En Google Cloud, haces clic en FHIR viewer:

Seleccionar FHIR viewer

Seleccionas tu almacén FHIR, y verás un listado de recursos. Buscas el recurso Patient, le das clic y podrás ver los datos de prueba que ingresaste:

Patient con sus datos

Palabras finales

Montar un servidor FHIR con Google no es tan complejo. De hecho, toda la creación se hace mediante la interfaz de Google, sin necesidad de escribir código.

La interacción con el servidor es un poco más complicado. Por un lado, debes saber como realizar operaciones FHIR, como autenticar tus solicitudes y descubrir cuál es la URL de tu servidor FHIR para poder enviar solicitudes.

Sin embargo, la herramienta FHIR viewer permite ver los recursos que has ingresado, con toda la información e incluso permite hacer búsquedas. Todo esto mediante la misma interfaz, sin código.

Lo bueno de usar Google Cloud es que permite conectarte con otras herramientas de manera “nativa”. De hecho, una siguiente prueba que quiero hacer es insertar datos de FHIR a partir de Firestore.



Hecho por Codeness con ❤️
© 2024 Codeness