FHIR-Daten aus Android-Apps mit OHS und Google Cloud verwalten

1. Einführung

In diesem Codelab erfahren Sie, wie Sie mit dem Open Health Stack (OHS) und der Google Cloud Healthcare API innovative Gesundheitslösungen entwickeln, die sicher, skalierbar und konform sind. Die Kombination dieser leistungsstarken Tools bietet Beschäftigten im Gesundheitswesen und Entwicklern die Möglichkeit, datengestützte Lösungen zu entwickeln, mit denen die Patientenversorgung und -ergebnisse erheblich verbessert werden können.

Wir beabsichtigen, die Leistungsfähigkeit von Open Health Stack und der Google Cloud Healthcare API in einer mobilen App zu nutzen, die das Android-FHIR SDK verwendet, um es Nutzern zu ermöglichen, FHIR-Patientendatensätze in Google Cloud zu verwalten.

Sehen wir uns die Schritte für die Implementierung an.

Aufgaben

Bei dieser Implementierung

  • Wir verwenden die Structured Data Capture Library, um einen Fragebogen zu rendern, und die FHIR Engine-Bibliothek, um den FHIR-Inhalt der Antwort zu speichern.
  • Die Daten werden dann mit der Cloud Healthcare API in den Cloud FHIR-Speicher hochgeladen.
  • Vor dem Hochladen müssen wir uns bei Firebase authentifizieren.

8514f90f016ecfc0.png

Das Diagramm oben stellt den Ablauf dar. Eine ausführliche Erläuterung der einzelnen Komponenten finden Sie im Blog.

2. Voraussetzungen

  • Ein Browser wie Chrome oder Firefox
  • Ein Google Cloud-Projekt mit aktivierter Abrechnung
  • Aktuelle Version von Android Studio
  • Einrichtung eines Android-Emulators (Sie können auch Ihr physisches Android-Gerät verwenden)

Projekt erstellen

  1. Wählen Sie in der Google Cloud Console auf der Seite für die Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.
  2. Die Abrechnung für das Cloud-Projekt muss aktiviert sein. Hier erfahren Sie, wie Sie prüfen, ob die Abrechnung für ein Projekt aktiviert ist.
  3. Erforderliche APIs aktivieren (BigQuery, Healthcare API)

Cloud Shell aktivieren

  1. Sie verwenden Cloud Shell, eine Befehlszeilenumgebung, die in Google Cloud ausgeführt wird und mit vorinstalliertem bq ausgestattet ist:

Klicken Sie in der Cloud Console oben rechts auf „Cloud Shell aktivieren“:

51622c00acec2fa.png

  1. Sobald Sie eine Verbindung zu Cloud Shell hergestellt haben, sollten Sie sehen, dass Sie bereits authentifiziert sind und dass das Projekt bereits auf Ihre Projekt-ID eingestellt ist. Wenn Ihr Projekt nicht eingerichtet ist, verwenden Sie den folgenden Befehl, um es festzulegen:
gcloud config set project <YOUR_PROJECT_ID>

Informationen zu gcloud-Befehlen und deren Verwendung finden Sie in der Dokumentation.

3. Einrichtung der Healthcare API

  1. Prüfen Sie, ob die Healthcare API aktiviert ist: Rufen Sie die Google Cloud Console API-Bibliothek auf, suchen Sie nach der Healthcare API und klicken Sie auf AKTIVIEREN. Die API wird geöffnet und das Healthcare-Dienstkonto zum Projekt hinzugefügt.
  2. Dem Dienstkonto Administratorberechtigungen gewähren. Führen Sie den folgenden gcloud-Befehl im Cloud Shell-Terminal aus, um die Berechtigung zu erteilen:
gcloud projects add-iam-policy-binding <<YOUR_PROJECT_ID>> \
--member=serviceAccount:service-<<PROJECT_NUMBER>>@gcp-sa-healthcare.iam.gserviceaccount.com  --role=roles/bigquery.admin

Hinweis: Sie finden Ihre PROJECT_ID und Ihre PROJECT_NUMBER in der Konsole. Weitere Informationen zur Identifizierung finden Sie in diesem Dokument.

Healthcare-Dataset erstellen

Führen Sie in Cloud Shell den folgenden Befehl aus, um das Healthcare-Dataset zu erstellen:

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

Legen Sie als Standort eine Region fest.

FHIR-Datenspeicher erstellen

Führen Sie in Cloud Shell den folgenden Befehl aus, um den FHIR-Datenspeicher zu erstellen:

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

Legen Sie als Standort eine Region fest.

4. BigQuery-Einrichtung und -Streaming

Dies beinhaltet das Speichern von FHIR-Speicherdaten im BigQuery-Dataset, damit sie mithilfe der Leistung von BigQuery und BQML abgefragt, programmiert und analysiert werden können.

BigQuery-Dataset erstellen

Ein BigQuery-Dataset ist eine Sammlung von Tabellen. Alle Tabellen in einem Dataset werden am selben Datenspeicherort gespeichert. Sie können auch benutzerdefinierte Zugriffssteuerungen hinzufügen, um den Zugriff auf ein Dataset und dessen Tabellen einzuschränken.

Führen Sie in Cloud Shell den folgenden Befehl aus:

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

Legen Sie als Standort eine Region fest.

BigQuery-Streaming erstellen

Streaming ist erforderlich, um Ressourcenänderungen nach BigQuery zu exportieren, sobald eine FHIR-Ressource in einem FHIR-Speicher erstellt, aktualisiert, gepatcht oder gelöscht wird. Für jeden Speicher sind bis zu zehn Streaming-Konfigurationen erlaubt.

  1. Zur Google Cloud Healthcare-Konsole, Browserseite
  2. Klicken Sie auf das neu erstellte DATASET
  3. Klicken Sie auf den neu erstellten DATA STORE 7acaa364337086aa.png
  4. Klicken Sie auf NEUE STREAMING-KONFIGURATION HINZUFÜGEN

caa2cc881d3406aa.png

  1. Wählen Sie das neu erstellte BigQuery-Dataset aus der Liste aus und geben Sie als Schematyp „Analytics V2“ an. und Ressourcentyp „Patient“ aus der Liste (Sie können beliebig viele Ressourcentypen auswählen) und klicken Sie auf Fertig

1e038c694fcca1ef.png

Das war's. Sie können nun die FHIR-Speicherdaten speichern und in BigQuery streamen.

5. Cloud Functions (R4-Daten mit der Healthcare API in FHIR-Datenspeicher schreiben)

Mit Cloud Functions können Sie bequem Code schreiben und serverlos in der Cloud bereitstellen. Es ist skalierbar, Pay as you go, ereignisgesteuert und offen in Bezug auf Technologie und Sprachunterstützung. Weitere Funktionen finden Sie in der Dokumentation.

Die Funktion, die wir schreiben, zielt darauf ab, Daten im FHIR R4-Format mithilfe der Cloud Healthcare API in den FHIR-Datenspeicher zu authentifizieren und zu schreiben. So erstellen Sie die Cloud Functions-Funktion:

  1. Rufen Sie Cloud Functions auf und klicken Sie auf FUNKTION ERSTELLEN.
  2. Legen Sie als Namen „fhir-datastore-proxy“, die Region auf us-central1 und die Authentifizierungsoption auf „Authentifizierung erforderlich“ fest.
  3. Maximieren Sie die Einstellungen für Laufzeit, Build, Verbindungen und Sicherheitseinstellungen. Sie fügen fünf Laufzeit-Umgebungsvariablen hinzu:

Name: CLOUD_FUNCTIONS_ENDPOINT | Wert: der URL-Endpunkt der Funktion. Diesen finden Sie im Authentifizierungsblock oben. Er hat das folgende Format: https://us-central1-PROJECT_ID.cloudfunctions.net/fhir-datastore-proxy

Name: PROJECT_ID | Wert: Ihre Projekt-ID

Name: DATASET_LOCATION | Wert: der Speicherort Ihres FHIR-Datenspeichers

Name: DATASET_ID | Wert: die Healthcare-Datenspeicher-ID

Name: FHIR_STORE_ID | Wert: die FHIR-Speicher-ID

  1. Klicken Sie auf „Weiter“, um zur nächsten Seite zu gelangen, auf der Ihr Code hinzugefügt wird.
  2. Nun sollte ein Inline-Editor angezeigt werden. Wählen Sie Java 17 als Sprache aus und gehen Sie zur Klasse HelloHttpFunction.java. Benennen Sie sie in FhirDatastoreProxy.java um. Vergessen Sie nicht, auch den Einstiegspunkt in gcfv2.FhirDatastoreProxy umzubenennen
  3. Kopieren Sie den Code aus dem Repository und fügen Sie ihn in den Inline-Editor ein.
  4. Rufen Sie die Datei pom.xml auf und kopieren Sie die pom-Datei aus dem Repository in den Inline-Editor.
  5. Klicken Sie auf BEREITSTELLEN. Ihre Funktion wird erstellt und bald ausgeführt.

Hinweis:

  1. Die in dieser Funktion verwendete Cloud Healthcare API verwendet die Standardanmeldedaten für Anwendungen zur Authentifizierung der an die Healthcare API eingehenden Anfragen
  2. Speichern Sie die bereitgestellte Funktions-URL, damit sie aus der Android-App aufgerufen werden kann. Bisher haben wir alle Elemente erstellt, die für die Android-App erforderlich sind, um FHIR-Daten mit der Healthcare API in BigQuery zu schreiben. Stellen wir nun sicher, dass alle Teile verbunden sind und die API beim Senden eines Fragebogens aufgerufen wird.

6. Einrichtung von Android-Projekten und Firebase

Wir verwenden eine neuere Version von Android Studio und die Einrichtung eines Android-Emulators. Sie können auch Ihr physisches Android-Gerät verwenden. Gehen Sie anschließend so vor:

  1. Klonen Sie das FHIR-App-Beispiel-Repository: https://github.com/google/fhir-app-examples
  2. Öffnen Sie Android Studio, wählen Sie „Projekt importieren“ (Gradle, Eclipse ADT usw.) und dann den Ordner „cloudfunction/“ aus dem Quellcode aus, den Sie zuvor heruntergeladen haben.Öffnen Sie app/google-services.json. Das Feld ist leer und muss ausgefüllt werden.

Generieren Sie mit ./gradlew signatureReport einen SHA-1-Schlüssel und notieren Sie sich das SHA1-Feld unter der Debug-Variante

Fügen Sie die App mithilfe der Firebase Console (Schritt 1 und 2) mithilfe der Firebase Console zu Firebase hinzu. Geben Sie im Feld „SHA1-Wert des Signaturzertifikats für die Fehlerbehebung“ den Wert aus dem vorherigen Schritt

Laden Sie die Datei google-services.json herunter und ersetzen Sie die Inhalte aus Firebase in der leeren Datei im App-Ordner.

Das Firebase SDK wurde bereits in den Build-Gradle-Dateien hinzugefügt

  1. Öffnen Sie FhirApplication.kt und legen Sie das Feld „baseUrl“ auf die URL Ihrer Cloud Functions-Funktion fest.
  2. Wählen Sie „Sync your project with Gradle files“ (Projekt mit Gradle-Dateien synchronisieren) aus. über die Symbolleiste von Android Studio

Wir haben die Implementierung und die Einbeziehung der Abhängigkeit abgeschlossen.

7. Fragebogen einrichten und beantworten

Der Fragebogen im Repository ist bereits eingerichtet. Sehen wir uns den Code einmal genauer an:

  1. FragmentContainerView muss im ConstraintLayout in der Datei app/src/main/res/layout/activity_main.xml vorhanden sein
  2. Der Fragebogen muss einen JSON-codierten FHIR-Fragebogen enthalten, damit das Fragment gerendert werden kann

In diesem Fall verwenden wir die JSON-Datei „ new-patient-registration-paginated.json&quot; um das Fragment zu rendern. Überprüfen Sie die Dateien MainActivity.kt, AddPatientFragment.kt und AddPatientViewModel.kt

Nachdem wir nun das Fragment, die JSON-Datei und das Modell verifiziert haben, führen Sie die App aus und geben die Antworten für die Felder im Fragebogen ein.

Sie sehen nun die Validierung von Zeichenfolgen, Datum, numerischen Feldern und anderen Bedingungen

Sie können die Anwendung ausführen und das Log prüfen, um den erstellten Eintrag zu sehen

9e1bb440074f1a88.png

Weitere Informationen zur Verwendung von Fragmenten So gut wie schon mit dem Fragebogenfragment und den Antworten.

8. Anzeige der Ergebnisse von FHIRStore- und BigQuery-Datasets

Nachdem Sie die Einrichtung und die Updates abgeschlossen haben, klicken Sie auf „Sync Project with Gradle Files“. Wenn Sie fertig sind,

  1. App im Android-Emulator ausführen und den Fragebogen laden
  2. Beantworten Sie die Fragen und klicken Sie oben auf „Senden“.
  3. Nun sollte die Meldung „Patient wurde gespeichert“ angezeigt werden. in der App

FHIR-Speicherergebnis ansehen

FHIRViewer-Konsole von Google Cloud Healthcare aufrufen

1064f03b4e1e45f5.png

Wählen Sie Ihren FHIR-Speicher aus, fragen Sie ihn ab und klicken Sie auf SUCHE AUSFÜHREN. Die Suchergebnisse sollten Ihnen direkt unten angezeigt werden. 28a070480a06362c.png

BigQuery-Dataset-Ergebnis ansehen

Öffnen Sie die Google Cloud BigQuery Console und gehen Sie im Explorer-Bereich zu dem Dataset, das Sie für dieses Projekt erstellt haben.

7c483ec6d578b8cd.png

Klicken Sie auf „Preview“ (Vorschau). Sie sollten dieselbe Anzahl und dieselben Ergebnisdaten sehen, die Sie im Healthcare-FHIR-Speicher im BigQuery-Dataset gefunden haben.

faafeae4a837a41c.png

Sie können jetzt BigQuery SQL, Analytics und ML mit den FHIR-Daten ausführen, die Sie gerade im Cloud-Dataset gespeichert haben.

9. Such- und Offlinefunktionen

Damit die Offline-Funktionen in der Android FHIR SDK-App auf Basis von OHS-Unterstützung verfügbar sind, müssen Sie die Designrichtlinien einhalten, die bei der hier besprochenen Implementierung aktiviert werden müssen.

Zum Suchen von FHIR-Ressourcen gibt es zwei Möglichkeiten:

  1. FHIR-Betrachter in der Google Cloud Console
  2. FHIR-Suchmethode mit GET- oder POST-Anfragen

10. App-Demo

Nachdem unsere App nun entwickelt ist, können wir damit experimentieren und das Ergebnis in der Cloud sehen.

11. Bereinigen

So vermeiden Sie, dass Ihrem Google Cloud-Konto die in diesem Beitrag verwendeten Ressourcen in Rechnung gestellt werden:

  1. Rufen Sie in der Google Cloud Console die Seite Ressourcen verwalten auf.
  2. Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie auf „Löschen“.
  3. Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie dann auf „Beenden“, um das Projekt zu löschen.

12. Glückwunsch

Glückwunsch! In diesem Projekt haben wir erfolgreich eine Android-Anwendung zum Speichern und Abfragen von FHIR-Daten von Patienten im Cloud Healthcare FHIR-Speicher und BigQuery-Dataset mit der Cloud Healthcare API in nur 7 Schritten erstellt:

  1. Android-App einrichten
  2. Google Cloud Healthcare API einrichten
  3. Healthcare-Dataset und FHIR-Datenspeicher erstellt
  4. BigQuery-Dataset erstellt
  5. Einen BigQuery-Stream zum Schreiben von FHIR-Datenspeicherdaten in ein BigQuery-Dataset konfiguriert
  6. Bereitstellung einer Cloud Functions-Funktion zum Schreiben von R4-Daten in den FHIR-Datenspeicher
  7. Cloud Functions-Funktionen beim Senden eines Fragebogens über die Android-App ausgelöst

Nachdem die Schritte jetzt klar sind, können Sie dieselben Schritte für die FHIR-Bearbeitungssynchronisierung des Patienten mit der Cloud ausprobieren.