Gestisci i dati FHIR dall'app per Android con OHS e Google Cloud

1. Introduzione

In questo codelab, imparerai a utilizzare OHS (Open Health Stack) e l'API Google Cloud Healthcare per creare soluzioni sanitarie innovative che siano sicure, scalabili e conformi. La combinazione di questi potenti strumenti offre agli operatori sanitari e agli sviluppatori la possibilità di creare soluzioni basate sui dati in grado di migliorare significativamente l'assistenza e i risultati ai pazienti.

Il nostro obiettivo è sfruttare la potenza di Open Health Stack e dell'API Google Cloud Healthcare in un'app mobile che utilizza l'SDK Android-FHIR per consentire agli utenti di gestire le registrazioni dei pazienti FHIR in Google Cloud.

Analizziamo i passaggi di implementazione.

Cosa creerai

In questa implementazione,

  • Utilizzeremo la libreria di acquisizione dei dati strutturati per il rendering di un questionario e la libreria FHIR Engine per archiviare i contenuti FHIR della risposta.
  • I dati verranno quindi caricati nel Cloud FHIR Store utilizzando l'API Cloud Healthcare
  • Prima del caricamento ci autenticheremo utilizzando Firebase

8514f90f016ecfc0.png

Il diagramma sopra rappresenta il flusso. Leggi il blog per una spiegazione dettagliata di ogni componente.

2. Requisiti

  • Un browser, ad esempio Chrome o Firefox
  • Un progetto Google Cloud con fatturazione abilitata
  • Una versione recente di Android Studio
  • Un emulatore Android configurato (puoi usare anche il tuo dispositivo Android fisico)

Creare il progetto

  1. Nella pagina del selettore dei progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.
  2. Verifica che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come controllare se la fatturazione è abilitata per un progetto.
  3. Abilita le API necessarie (BigQuery, API Healthcare)

Attiva Cloud Shell

  1. Utilizzerai Cloud Shell, un ambiente a riga di comando in esecuzione su Google Cloud in cui è precaricato bq:

Dalla console Cloud, fai clic su Attiva Cloud Shell nell'angolo in alto a destra:

51622c00acec2fa.png

  1. Dopo aver eseguito la connessione a Cloud Shell, dovresti vedere che hai già eseguito l'autenticazione e che il progetto è già impostato sul tuo ID progetto. Se il progetto non è impostato, utilizza il comando seguente per impostarlo:
gcloud config set project <YOUR_PROJECT_ID>

Consulta la documentazione per i comandi e l'utilizzo di gcloud.

3. Configurazione API Healthcare

  1. Assicurati che l'API Healthcare sia abilitata: vai alla libreria API di Google Cloud Console, cerca l'API Healthcare, fai clic su ABILITA e verrà utilizzata l'API e aggiungerai l'account di servizio Healthcare al progetto.
  2. Concessione delle autorizzazioni di amministrazione BigQuery all'account di servizio. Esegui il comando gcloud riportato di seguito nel terminale Cloud Shell per concedere l'autorizzazione:
gcloud projects add-iam-policy-binding <<YOUR_PROJECT_ID>> \
--member=serviceAccount:service-<<PROJECT_NUMBER>>@gcp-sa-healthcare.iam.gserviceaccount.com  --role=roles/bigquery.admin

Nota: puoi trovare il tuo PROJECT_ID e PROJECT_NUMBER nella console. Fai riferimento al documento per l'identificazione.

Crea set di dati Healthcare

In Cloud Shell, esegui questo comando per creare il set di dati Healthcare:

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

Imposta la località su una regione.

Crea un datastore FHIR

In Cloud Shell, esegui questo comando per creare il datastore FHIR:

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

Imposta la località su una regione.

4. Configurazione e flussi di dati di BigQuery

Questo riguarda il salvataggio dei dati degli archivi FHIR in un set di dati BigQuery in modo che possano essere interrogati, programmati e analizzati sfruttando la potenza di BigQuery e BQML.

Crea un set di dati BigQuery

Un set di dati BigQuery è una raccolta di tabelle. Tutte le tabelle di un set di dati sono archiviate nella stessa località dei dati. Puoi anche collegare controlli di accesso personalizzati per limitare l'accesso a un set di dati e alle relative tabelle.

In Cloud Shell, esegui questo comando:

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

Imposta la località su una regione.

Crea flussi di dati BigQuery

È necessario un flusso di dati al fine di esportare le modifiche alle risorse in BigQuery ogni volta che una risorsa FHIR viene creata, aggiornata, applicata con patch o eliminata in un datastore FHIR. Ogni archivio può avere fino a 10 configurazioni dei flussi di dati.

  1. Vai alla console di Google Cloud Healthcare, pagina del browser
  2. Fai clic sul SET DI DATI appena creato
  3. Fai clic sul DATA STORE 7acaa364337086aa.png appena creato
  4. Fai clic su AGGIUNGI NUOVA CONFIGURAZIONE DI STREAMING

caa2cc881d3406aa.png

  1. Seleziona il set di dati BigQuery appena creato dall'elenco, con Tipo di schema "Analytics V2" e tipo di risorsa "Paziente" dall'elenco (puoi scegliere tutti i tipi di risorse) e fai clic su Fine

1e038c694fcca1ef.png

È tutto. È tutto pronto per salvare i dati del datastore FHIR e trasmetterli in modalità flusso a BigQuery.

5. Cloud Functions (scrivi dati R4 in Datastore FHIR utilizzando l'API Healthcare)

Cloud Functions ti consente di scrivere comodamente il codice ed eseguire il deployment nel cloud con modalità serverless. È scalabile, con pagamento a consumo, basato su eventi e aperto in termini di tecnologia e supporto linguistico. Per ulteriori funzionalità, consulta la documentazione.

La funzione che scriveremo intende autenticare e scrivere i dati in arrivo nel formato FHIR R4 nel datastore FHIR utilizzando l'API Cloud Healthcare. Per creare la funzione Cloud Functions:

  1. Vai a Funzioni Cloud e fai clic su CREA FUNZIONE
  2. Imposta il nome su fhir-datastore-proxy, la regione su us-central1 e l'opzione di autenticazione su "Richiedi autenticazione"
  3. Espandi le impostazioni di runtime, build, connessioni e sicurezza. Dovrai aggiungere cinque variabili di ambiente di runtime:

Nome: CLOUD_FUNCTIONS_ENDPOINT | Valore: l'endpoint URL della funzione. Lo vedrai nel blocco Authentication riportato sopra e avrà il formato: https://us-central1-PROJECT_ID.cloudfunctions.net/fhir-datastore-proxy

Nome: PROJECT_ID | Valore: il tuo ID progetto

Nome: DATASET_LOCATION | Valore: la posizione del datastore FHIR

Nome: DATASET_ID | Valore: l'ID Datastore Healthcare

Nome: FHIR_STORE_ID | Valore: l'ID datastore FHIR

  1. Premi Avanti per passare alla pagina successiva, dove aggiungeremo il codice
  2. A questo punto dovrebbe essere visualizzato un editor in linea, selezionare Java 17 come linguaggio e passare alla classe HelloHttpFunction.java. Rinominalo in FhirDatastoreProxy.java. Non dimenticare di rinominare il punto di ingresso in gcfv2.FhirDatastoreProxy
  3. Copia il codice dal repository e incollalo nell'editor in linea
  4. Vai al file pom.xml e copia il file pom del repository nell'editor in linea
  5. Fai clic su ESEGUI IL DEPLOYMENT. La funzione verrà creata ed eseguita a breve

Nota:

  1. L'API Cloud Healthcare utilizzata in questa funzione usa la credenziale predefinita dell'applicazione per autenticare le richieste provenienti dall'API Healthcare
  2. Salva l'URL della funzione di cui hai eseguito il deployment per poterla richiamare dall'applicazione Android. Finora abbiamo creato tutte le parti necessarie all'app per Android per scrivere dati FHIR in BigQuery utilizzando l'API Healthcare in modo indipendente. Ora assicuriamoci che tutte le parti siano connesse e che l'API venga richiamata quando invii un questionario.

6. Progetto Android e configurazione di Firebase

Utilizzeremo una versione più recente di Android Studio e un emulatore Android configurato (puoi usare anche il tuo dispositivo Android fisico). Una volta pronto, procedi nel seguente modo:

  1. Clona il repository di esempi di app FHIR: https://github.com/google/fhir-app-examples
  2. Apri Android Studio, seleziona Importa progetto (Gradle, Eclipse ADT e così via) e scegli la cartella cloudfunction/ dal codice sorgente che hai scaricato in precedenza.Apri app/google-services.json. È vuoto e deve essere compilato.

Genera una chiave SHA-1 utilizzando ./gradlewSignReport e prendi nota del campo SHA1 nella variante di debug.

Aggiungi l'app a Firebase utilizzando la Console Firebase (segui i passaggi 1 e 2) utilizzando la console Firebase. Nella sezione "Certificato di firma di debug SHA-1 " inserisci il valore del passaggio precedente

Scarica google-services.json e sostituisci i contenuti di Firebase nel file vuoto nella cartella dell'app.

L'SDK Firebase è già stato aggiunto nei file di build Gradle

  1. Apri FhirApplication.kt e imposta il campo baseUrl sull'URL della funzione Cloud Functions
  2. Seleziona "Sincronizza il tuo progetto con i file Gradle" dalla barra degli strumenti di Android Studio

Abbiamo completato la parte dell'implementazione dedicata alla configurazione e all'inclusione delle dipendenze.

7. Configurazione e risposta del questionario

La configurazione del questionario è già stata completata nel repository. Esaminiamo il codice:

  1. Assicurati che il FragmentContainerView sia presente all'interno di ConstraintLayout nel file app/src/main/res/layout/activity_main.xml
  2. Assicurati che in QuestionnaireFragment sia presente un questionario FHIR con codifica JSON per eseguire il rendering del frammento

In questo caso utilizzeremo il codice json - " new-patient-registration-paginated.json&quot; per eseguire il rendering del frammento. Controlla i file MainActivity.kt, AddPatientFragment.kt e AddPatientViewModel.kt

Ora che abbiamo verificato il frammento, il file JSON e il modello, esegui l'app e prova a inserire le risposte per i campi del questionario.

Noterai la convalida di campi di tipo stringa, data, numerici e altre condizioni

Puoi eseguire l'app e controllare il log per vedere come è stato creato il record

9e1bb440074f1a88.png

Puoi scoprire di più sull'utilizzo dei frammenti qui. È tutto per il frammento del questionario e la configurazione della risposta.

8. Visualizzazione dei risultati del set di dati FHIRStore e BigQuery

Ora che la configurazione e gli aggiornamenti sono pronti, fai clic su "Sincronizza il progetto con i file Gradle". Al termine,

  1. Esegui l'app sull'emulatore Android e osserva il caricamento del questionario
  2. Rispondi alle domande e fai clic su Invia in alto.
  3. Dovresti visualizzare il messaggio "Paziente salvato" sull'app

Visualizza risultato datastore FHIR

Accedi alla console FHIRViewer di Google Cloud Healthcare

1064f03b4e1e45f5.png

Seleziona il datastore FHIR, esegui una query e premi ESEGUI RICERCA. Dovresti vedere i risultati di ricerca proprio sotto. 37a070480a06362c.png

Visualizza il risultato del set di dati BigQuery

Passa alla console BigQuery di Google Cloud e, nel riquadro Explorer, vai al set di dati che hai creato per questo progetto.

7c483ec6d578b8cd.png

Fai clic su Anteprima. Dovresti vedere lo stesso numero e i dati risultanti che hai trovato nell'archivio FHIR di Healthcare nel set di dati BigQuery.

faafeae4a837a41c.png

Ora puoi eseguire BigQuery SQL, Analytics e ML sui dati FHIR appena salvati nel set di dati cloud.

9. Funzionalità di ricerca e offline

Per garantire la funzionalità offline nell'app SDK FHIR per Android basata sulla verifica della conformità, assicurati di seguire le linee guida sulla progettazione che devono essere abilitate nell'implementazione di cui parliamo qui.

Per la ricerca di risorse FHIR, sono disponibili due modi:

  1. Visualizzatore FHIR nella console Google Cloud
  2. Metodo di ricerca FHIR che utilizza richieste GET o POST

10. Demo app

Ora che l'app è stata sviluppata, vediamola insieme e vediamo il risultato nel cloud.

11. Esegui la pulizia

Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo post, segui questi passaggi:

  1. Nella console Google Cloud, vai alla pagina Gestisci risorse
  2. Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
  3. Nella finestra di dialogo, digita l'ID progetto, quindi fai clic su Arresta per eliminare il progetto

12. Complimenti

Complimenti! In questo progetto, abbiamo creato correttamente un'applicazione Android per archiviare ed eseguire query sui dati FHIR dei pazienti sull'archivio FHIR per il settore sanitario e sul set di dati BigQuery utilizzando l'API Cloud Healthcare in soli sette passaggi:

  1. Configura l'app per Android
  2. Configura l'API Google Cloud Healthcare
  3. Set di dati Healthcare e datastore FHIR creato
  4. Set di dati BigQuery creato
  5. Configurato un flusso BigQuery per scrivere dati Datastore FHIR nel set di dati BigQuery
  6. Deployment di una funzione Cloud Functions per scrivere dati R4 in Datastore FHIR
  7. Attivazione di Cloud Functions dall'app Android all'invio della risposta al questionario

Ora che i passaggi sono chiari, puoi provare gli stessi passaggi per la sincronizzazione delle modifiche FHIR del paziente al cloud.