Gérer des données FHIR à partir d'une application Android avec OHS et Google Cloud

1. Introduction

Dans cet atelier de programmation, nous allons apprendre à utiliser OHS (Open Health Stack) et l'API Google Cloud Healthcare pour créer des solutions de santé innovantes sécurisées, évolutives et conformes. La combinaison de ces puissants outils permet aux professionnels de santé et aux développeurs de créer des solutions basées sur les données qui peuvent améliorer considérablement les soins et les résultats des patients.

Nous avons l'intention d'exploiter la puissance d'Open Health Stack et de l'API Google Cloud Healthcare dans une application mobile utilisant le SDK Android-FHIR pour permettre aux utilisateurs de gérer les dossiers de patients FHIR dans Google Cloud.

Explorons les étapes d'implémentation.

Ce que vous allez faire

Dans cette implémentation,

  • Nous utiliserons la bibliothèque de capture de données structurées pour générer un questionnaire, et la bibliothèque FHIR Engine pour stocker le contenu FHIR de la réponse
  • Les données seront ensuite importées dans le Cloud FHIR Store à l'aide de l'API Cloud Healthcare.
  • Avant l'importation, nous devons nous authentifier à l'aide de Firebase

8514f90f016ecfc0.png

Le schéma ci-dessus représente le flux. Lisez le blog pour obtenir une explication détaillée de chaque composant.

2. Conditions requises

  • Un navigateur tel que Chrome ou Firefox
  • Un projet Google Cloud avec facturation activée
  • Une version récente d'Android Studio
  • Configuration d'Android Emulator (vous pouvez également utiliser votre appareil Android physique)

Créer votre projet

  1. Dans la console Google Cloud, sur la page du sélecteur de projet, sélectionnez ou créez un projet Google Cloud.
  2. Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier si la facturation est activée sur un projet.
  3. Activez les API nécessaires (BigQuery, API Healthcare).

Activer Cloud Shell

  1. Vous allez utiliser Cloud Shell, un environnement de ligne de commande exécuté dans Google Cloud et doté de la commande bq:

Dans la console Cloud, cliquez sur "Activer Cloud Shell" en haut à droite :

51622c00acec2fa.png

  1. Une fois connecté à Cloud Shell, vous êtes en principe authentifié et le projet est déjà défini sur votre ID de projet. S'il n'est pas défini, utilisez la commande suivante pour le définir:
gcloud config set project <YOUR_PROJECT_ID>

Consultez la documentation pour connaître les commandes gcloud ainsi que leur utilisation.

3. Configuration de l'API Healthcare

  1. Assurez-vous que l'API Healthcare est activée: accédez à la bibliothèque d'API de la console Google Cloud, recherchez l'API Healthcare, puis cliquez sur "ACTIVER" pour activer l'API et ajouter le compte de service Healthcare au projet.
  2. Accorder des autorisations d'administrateur BigQuery au compte de service Exécutez la commande gcloud ci-dessous dans le terminal Cloud Shell pour accorder l'autorisation:
gcloud projects add-iam-policy-binding <<YOUR_PROJECT_ID>> \
--member=serviceAccount:service-<<PROJECT_NUMBER>>@gcp-sa-healthcare.iam.gserviceaccount.com  --role=roles/bigquery.admin

Remarque: Les champs PROJECT_ID et PROJECT_NUMBER sont indiqués dans la console. Pour plus d'informations, consultez la documentation.

Créer un ensemble de données Healthcare

Dans Cloud Shell, exécutez la commande suivante pour créer l'ensemble de données Healthcare:

gcloud beta healthcare datasets create <<DATASET_ID>> --location=us-central1

Définissez l'emplacement sur une région.

Créer un datastore FHIR

Dans Cloud Shell, exécutez la commande suivante pour créer le datastore FHIR:

gcloud beta healthcare fhir-stores create <<FHIR_STORE>> \
  --dataset=<<DATASET_ID>> --location=us-central1 --version=r4

Définissez l'emplacement sur une région.

4. Configuration et flux de données BigQuery

Cela concerne l'enregistrement des données du store FHIR dans l'ensemble de données BigQuery afin de pouvoir les interroger, les programmer et les analyser en exploitant la puissance de BigQuery et de BQML.

Créer un ensemble de données BigQuery

Un ensemble de données BigQuery est un ensemble de tables. Toutes les tables d'un ensemble de données sont stockées dans le même emplacement de données. Vous pouvez également associer des contrôles d'accès personnalisés pour limiter l'accès à un ensemble de données et à ses tables.

Dans Cloud Shell, exécutez la commande suivante:

bq mk --location=us-central1 --dataset <<PROJECT_ID>>:<<BQ_DATASET>>

Définissez l'emplacement sur une région.

Créer un flux BigQuery

Un flux est requis pour exporter les modifications apportées aux ressources vers BigQuery chaque fois qu'une ressource FHIR est créée, mise à jour, corrigée ou supprimée dans un store FHIR. Chaque datastore est autorisé à disposer d'un maximum de 10 configurations de streaming.

  1. Accéder à la console Google Cloud Healthcare, page du navigateur
  2. Cliquez sur l'ensemble de données que vous venez de créer.
  3. Cliquez sur le DATA STORE 7acaa364337086aa.png qui vient d'être créé.
  4. Cliquez sur AJOUTER UNE CONFIGURATION DE STREAMING

caa2cc881d3406aa.png

  1. Dans la liste, sélectionnez l'ensemble de données BigQuery que vous venez de créer, et le type de schéma est "Analytics V2". et le type de ressource "Patient" dans la liste (vous pouvez choisir autant de types de ressources), puis cliquez sur "OK".

1e038c694fcca1ef.png

Et voilà ! Vous êtes prêt à enregistrer les données du store FHIR et à les diffuser vers BigQuery.

5. Cloud Functions (écrire des données R4 dans un datastore FHIR à l'aide de l'API Healthcare)

Cloud Functions vous permet d'écrire votre code et de le déployer dans le cloud en toute simplicité, sans serveur. Évolutif, basé sur des événements, il est facturé à l'usage et ouvert en termes de technologies et de langues. Reportez-vous à la documentation pour découvrir d'autres fonctionnalités.

La fonction que nous allons écrire vise à authentifier et écrire les données arrivant au format FHIR R4 dans le data store FHIR à l'aide de l'API Cloud Healthcare. Pour créer la fonction Cloud:

  1. Accédez à Cloud Functions, puis cliquez sur CRÉER UNE FONCTION.
  2. Définissez le nom sur fhir-datastore-proxy, la région sur us-central1 et l'option "Authentification" sur "Exiger l'authentification".
  3. Développez les paramètres d'exécution, de compilation, de connexion et de sécurité. Vous allez ajouter cinq variables d'environnement d'exécution:

Nom: CLOUD_FUNCTIONS_ENDPOINT | Valeur : le point de terminaison de l'URL de la fonction. Vous le verrez dans le bloc "Authentification" ci-dessus et se présentera sous la forme https://us-central1-PROJECT_ID.cloudfunctions.net/fhir-datastore-proxy.

Nom: PROJECT_ID | Valeur: ID de votre projet

Nom: DATASET_LOCATION | Valeur: l'emplacement de votre datastore FHIR

Nom: DATASET_ID | Valeur: ID du datastore Healthcare

Nom: FHIR_STORE_ID | Valeur: ID du store FHIR

  1. Appuyez sur "Suivant" pour passer à la page suivante, où nous ajouterons notre code
  2. Un éditeur intégré devrait maintenant s'afficher. Sélectionnez Java 17 comme langage, puis accédez à la classe HelloHttpFunction.java. Renommez-le en FhirDatastoreProxy.java. N'oubliez pas de renommer le point d'entrée gcfv2.FhirDatastoreProxy.
  3. Copiez le code du dépôt et collez-le dans l'éditeur intégré.
  4. Accédez au fichier pom.xml et copiez le fichier pom du dépôt dans l'éditeur intégré.
  5. Cliquez sur DÉPLOYER. Votre fonction sera bientôt créée et exécutée.

Remarque :

  1. L'API Cloud Healthcare utilisée dans cette fonction utilise l'identifiant par défaut de l'application pour authentifier les requêtes arrivant à l'API Healthcare.
  2. Enregistrez l'URL de la fonction déployée pour pouvoir l'appeler depuis l'application Android. Jusqu'à présent, nous avons créé tous les éléments nécessaires à l'application Android pour écrire des données FHIR dans BigQuery à l'aide de l'API Healthcare de manière indépendante. Vérifions maintenant que tous les éléments sont connectés et que l'API est appelée lors de l'envoi d'un questionnaire.

6. Configuration du projet Android et de Firebase

Nous allons utiliser une version récente d'Android Studio et un émulateur Android configuré (vous pouvez également utiliser votre appareil Android physique). Une fois qu'il est prêt, procédez comme suit:

  1. Clonez le dépôt d'exemples d'applications FHIR: https://github.com/google/fhir-app-examples
  2. Ouvrez Android Studio, sélectionnez "Import Project" (Gradle, Eclipse ADT, etc.), puis choisissez le dossier "cloudfunction/" dans le code source que vous avez téléchargé précédemment.Ouvrez app/google-services.json. Il est vide et doit être rempli.

Générez une clé SHA-1 à l'aide de ./gradlew signingReport et notez le champ SHA1 sous la variante de débogage

Ajoutez l'application à Firebase depuis la console Firebase (suivez les étapes 1 et 2). Dans la boîte de dialogue "Debug signing certificate SHA-1" , indiquez la valeur obtenue à l'étape précédente

Téléchargez le fichier google-services.json et remplacez le contenu de Firebase dans le fichier vide du dossier de l'application.

Le SDK Firebase a déjà été ajouté aux fichiers de compilation Gradle

  1. Ouvrez le fichier FhirApplication.kt et définissez le champ baseUrl sur l'URL de votre fonction Cloud.
  2. Sélectionnez "Sync your project with Gradle files" (Synchroniser votre projet avec les fichiers Gradle). depuis la barre d'outils Android Studio

Nous avons à présent terminé la partie de l'implémentation concernant la configuration et l'inclusion des dépendances.

7. Configuration du questionnaire et réponse

La configuration du questionnaire est déjà configurée dans le dépôt. Mais examinons le code:

  1. Assurez-vous que FragmentContainerView est présent dans ConstraintLayout dans le fichier app/src/main/res/layout/activity_main.xml
  2. Assurez-vous que QuestionnaireFragment dispose d'un questionnaire FHIR encodé au format JSON pour afficher le fragment

Dans le cas présent, nous utiliserons le format JSON - " new-patient-registration-paginated.json&quot; pour afficher le fragment. Vérifiez les fichiers MainActivity.kt, AddPatientFragment.kt et AddPatientViewModel.kt.

Maintenant que nous avons vérifié le fragment, JSON et le modèle, exécutez l'application et essayez de saisir des réponses pour les champs du questionnaire.

Vous remarquerez la validation de la chaîne, de la date, des champs numériques et d'autres conditions.

Vous pouvez exécuter l'application et consulter le journal pour voir l'enregistrement créé.

9e1bb440074f1a88.png

Pour en savoir plus sur l'utilisation des fragments, cliquez ici. C'est à peu près tout pour le fragment de questionnaire et la configuration des réponses.

8. Affichage des résultats des ensembles de données FHIRStore et BigQuery

Maintenant que la configuration et les mises à jour sont terminées, cliquez sur "Synchroniser le projet avec les fichiers Gradle". Une fois l'opération terminée,

  1. Exécutez l'application sur Android Emulator et regardez le chargement de votre questionnaire
  2. Répondez aux questions, puis cliquez sur "Envoyer" en haut.
  3. Le message "Patient is saved" (Le patient est enregistré) doit s'afficher. sur l'application

Afficher le résultat du store FHIR

Accédez à la console FHIRViewer de Google Cloud Healthcare.

1064f03b4e1e45f5.png

Sélectionnez votre store FHIR, interrogez et cliquez sur EXÉCUTER LA RECHERCHE. Les résultats de recherche devraient s'afficher juste en dessous. 37a070480a06362c.png

Afficher les résultats de l'ensemble de données BigQuery

Accédez à la console Google Cloud BigQuery, puis, dans le volet "Explorateur", accédez à l'ensemble de données que vous avez créé pour ce projet.

7c483ec6d578b8cd.png

Cliquez sur "Aperçu". Vous devriez voir le même nombre et les mêmes résultats que ceux obtenus dans le magasin FHIR Healthcare de l'ensemble de données BigQuery.

faafeae4a837a41c.png

Vous pouvez maintenant exécuter BigQuery SQL, Analytics et ML sur les données FHIR que vous venez d'enregistrer dans le jeu de données cloud.

9. Recherche et fonctionnalités hors connexion

Pour garantir la capacité hors connexion de l'application SDK FHIR Android avec OHS, veillez à suivre les consignes de conception qui doivent être activées dans l'implémentation dont nous discutons ici.

Pour la recherche de ressources FHIR, il existe deux façons de procéder:

  1. Lecteur FHIR dans la console Google Cloud
  2. Méthode de recherche FHIR utilisant des requêtes GET ou POST

10. Démonstration de l'application

Maintenant que notre application est développée, jouons à son fonctionnement et voyons le résultat dans le cloud.

11. Effectuer un nettoyage

Pour éviter que les ressources utilisées dans cet article soient facturées sur votre compte Google Cloud, procédez comme suit:

  1. Dans la console Google Cloud, accédez à la page Gérer les ressources.
  2. Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur "Supprimer".
  3. Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur "Arrêter" pour supprimer le projet.

12. Félicitations

Félicitations ! Dans ce projet, nous avons créé avec succès une application Android permettant de stocker et d'interroger les données FHIR des patients sur le magasin FHIR Cloud Healthcare et l'ensemble de données BigQuery à l'aide de l'API Cloud Healthcare en seulement 7 étapes:

  1. Configurer l'application Android
  2. Configurer l'API Google Cloud Healthcare
  3. Création d'un ensemble de données Healthcare et d'un datastore FHIR
  4. Ensemble de données BigQuery créé
  5. Configurer un flux BigQuery pour écrire les données du datastore FHIR dans l'ensemble de données BigQuery
  6. Déployer une fonction Cloud pour écrire des données R4 dans un datastore FHIR
  7. Fonctions Cloud déclenchées depuis l'application Android lors de l'envoi de la réponse au questionnaire

Maintenant que les étapes sont claires, n'hésitez pas à essayer les mêmes étapes pour la synchronisation des modifications FHIR du patient avec le cloud.