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.
Una vez creado, te llevará a un panel con mucha información:
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í:
Selecciona la primera opción, que dice “Healthcare data storage and processing”, lo cual te llevará a la siguiente pantalla:
Y ahí le das clic a “ENABLE” (o habilitar).
4) Habilitar Billing
Es probable que te aparezca el siguiente mensaje:
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:
- 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.
- 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:
Tienes que elegir un nombre y una región. Yo le colocaré “test”, y lo crearé 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”:
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):
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:
Si le das clic, podrás ver más información de tu almacén FHIR:
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:
Es como un “>_”, que dice “Activate Cloud Shell”. Le das clic, y te abrirá un Terminal dentro de tu browser:
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:
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:
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>
:
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:
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”:
Y le damos clic a “Send”. Si todo salió bien, deberías ver como Response a tu paciente:
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:
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:
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.