1. Einführung
In diesem Codelab erfahren Sie, wie Sie OHS (Open Health Stack) und die Google Cloud Healthcare API verwenden, um innovative, sichere, skalierbare und konforme Gesundheitslösungen zu entwickeln. Die Kombination dieser leistungsstarken Tools ermöglicht es Mitarbeitern im Gesundheitswesen und Entwicklern, datengestützte Lösungen zu entwickeln, die die Patientenversorgung und -ergebnisse erheblich verbessern können.
Wir möchten die Leistungsfähigkeit von Open Health Stack und der Google Cloud Healthcare API in einer mobilen App nutzen, die das Android-FHIR SDK verwendet, damit Nutzer FHIR-Patientenakten in Google Cloud verwalten können.
Sehen wir uns die Implementierungsschritte an.
Aufgaben
In dieser Implementierung
- Wir verwenden die Structured Data Capture Library, um einen Fragebogen zu rendern, und die FHIR Engine Library, um den FHIR-Inhalt der Antwort zu speichern.
- Die Daten werden dann mit der Cloud Healthcare API in den Cloud FHIR Store hochgeladen.
- Vor dem Hochladen authentifizieren wir uns zuerst mit Firebase.

Das Diagramm oben veranschaulicht den Ablauf. Eine detaillierte Beschreibung der einzelnen Komponenten finden Sie in unserem Blog.
2. Voraussetzungen
- Ein Browser, z. B. Chrome oder Firefox
- Ein Google Cloud-Projekt mit aktivierter Abrechnung
- Eine aktuelle Version von Android Studio
- Ein eingerichteter Android-Emulator (Sie können auch Ihr physisches Android-Gerät verwenden)
Projekt erstellen
- Wählen Sie in der Google Cloud Console auf der Seite zur Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.
- Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für ein Projekt aktiviert ist.
- Aktivieren Sie die erforderlichen APIs (BigQuery, Healthcare API).
Cloud Shell aktivieren
- Sie verwenden Cloud Shell, eine Befehlszeilenumgebung, die in Google Cloud ausgeführt wird und in der bq vorinstalliert ist:
Klicken Sie in der Cloud Console rechts oben auf „Cloud Shell aktivieren“:

- Sobald die Verbindung mit der Cloud Shell hergestellt ist, sehen Sie, dass Sie bereits authentifiziert sind und für das Projekt schon Ihre Projekt-ID eingestellt ist. Wenn Ihr Projekt nicht festgelegt 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. Healthcare API einrichten
- Prüfen Sie, ob die Healthcare API aktiviert ist: Rufen Sie die API-Bibliothek der Google Cloud Console auf, suchen Sie nach der Healthcare API, klicken Sie auf „AKTIVIEREN“. Dadurch wird die API aktiviert und das Healthcare-Dienstkonto wird dem Projekt hinzugefügt.
- BigQuery-Administratorberechtigungen für das Dienstkonto 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 PROJECT_NUMBER in der Console. Weitere Informationen finden Sie in der Dokumentation.
Gesundheitswesen-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 den Standort auf 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 den Standort auf eine Region fest.
4. BigQuery-Einrichtung und -Streaming
Dazu gehört das Speichern von FHIR-Speicherdaten in einem BigQuery-Dataset, damit sie mit 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 anhängen, um den Zugriff auf ein Dataset und seine 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 den Standort auf 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.
- Rufen Sie die Google Cloud Healthcare Console auf und wechseln Sie zur Seite Browser.
- Klicken Sie auf das neu erstellte DATASET.
- Klicken Sie auf den neu erstellten DATENSPEICHER
. - Klicken Sie auf „NEUE STREAMINGKONFIGURATION HINZUFÜGEN“.

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

Das war's. Sie können jetzt FHIR-Speicherdaten speichern und an BigQuery streamen.
5. Cloud Functions (R4-Daten mit der Healthcare API in den FHIR-Datenspeicher schreiben)
Mit Cloud Functions können Sie Ihren Code bequem schreiben und serverlos in der Cloud bereitstellen. Es ist skalierbar, nutzungsbasiert, ereignisgesteuert und offen in Bezug auf Technologie und Sprachunterstützung. Weitere Funktionen finden Sie in der Dokumentation.
Die Funktion, die wir schreiben, soll Daten, die im FHIR R4-Format eingehen, mithilfe der Cloud Healthcare API authentifizieren und in den FHIR-Datenspeicher schreiben. So erstellen Sie die Cloud Functions-Funktion:
- Rufen Sie Cloud Functions auf und klicken Sie auf FUNKTION ERSTELLEN.
- Legen Sie den Namen auf „fhir-datastore-proxy“, die Region auf „us-central1“ und die Authentifizierungsoption auf „Require Authentication“ (Authentifizierung erforderlich) fest.
- Maximieren Sie die Laufzeit-, Build-, Verbindungs- und Sicherheitseinstellungen. Sie fügen fünf Umgebungsvariablen für die Laufzeit hinzu:
Name: CLOUD_FUNCTIONS_ENDPOINT | Wert: Der URL-Endpunkt der Funktion. Sie sehen ihn oben im Authentifizierungsblock. Er hat das Format https://us-central1-PROJECT_ID.cloudfunctions.net/fhir-datastore-proxy.
Name: PROJECT_ID | Value: Ihre Projekt-ID
Name: DATASET_LOCATION | Wert: der Speicherort Ihres FHIR-Datenspeichers
Name: DATASET_ID | Wert: die Healthcare Datastore-ID
Name: FHIR_STORE_ID | Wert: die FHIR-Speicher-ID
- Klicken Sie auf „Weiter“, um zur nächsten Seite zu gelangen, auf der wir unseren Code hinzufügen.
- Es sollte jetzt ein Inline-Editor angezeigt werden. Wählen Sie Java 17 als Sprache aus und rufen Sie die Klasse „HelloHttpFunction.java“ auf. Benennen Sie sie in FhirDatastoreProxy.java um. Vergessen Sie nicht, auch den Einstiegspunkt in gcfv2.FhirDatastoreProxy umzubenennen.
- Kopieren Sie den Code aus dem Repository und fügen Sie ihn in den Inline-Editor ein.
- Rufen Sie die Datei „pom.xml“ auf und kopieren Sie die POM-Datei im Repository in den Inline-Editor.
- Klicken Sie auf BEREITSTELLEN. Ihre Funktion wird erstellt und bald ausgeführt.
Hinweis:
- Die in dieser Funktion verwendete Cloud Healthcare API verwendet die Standardanmeldedaten für Anwendungen, um die Anfragen an die Healthcare API zu authentifizieren.
- Speichern Sie die URL der bereitgestellten Funktion, damit Sie sie aus der Android-Anwendung aufrufen können. Bisher haben wir alle Komponenten erstellt, die für die Android-App erforderlich sind, um FHIR-Daten unabhängig über die Healthcare API in BigQuery zu schreiben. Nun müssen wir dafür sorgen, dass alle Teile verbunden sind und die API bei der Einreichung eines Fragebogens aufgerufen wird.
6. Android-Projekt und Firebase-Einrichtung
Wir verwenden eine aktuelle Version von Android Studio und einen eingerichteten Android-Emulator (Sie können auch Ihr physisches Android-Gerät verwenden). Wenn die Funktion verfügbar ist, folgen Sie der Anleitung unten:
- Klonen Sie das FHIR App Examples-Repository: https://github.com/google/fhir-app-examples
- Öffnen Sie Android Studio, wählen Sie „Import Project (Gradle, Eclipse ADT, etc.)“ (Projekt importieren (Gradle, Eclipse ADT usw.)) aus und wählen Sie den Ordner „cloudfunction/“ aus dem Quellcode aus, den Sie zuvor heruntergeladen haben. Öffnen Sie „app/google-services.json“. Sie ist leer und muss ausgefüllt werden.
Generieren Sie einen SHA‑1-Schlüssel mit ./gradlew signingReport und notieren Sie sich das SHA1-Feld unter der Debug-Variante.
Fügen Sie die App mit der Firebase Console in Firebase hinzu (folgen Sie Schritt 1 und 2). Geben Sie im Feld „SHA1-Wert des Signaturzertifikats für die Fehlerbehebung“ den Wert aus dem vorherigen Schritt ein.
Laden Sie „google-services.json“ herunter und ersetzen Sie den Inhalt aus Firebase durch den Inhalt der leeren Datei im App-Ordner.
Das Firebase SDK wurde bereits in den Gradle-Dateien des Builds hinzugefügt.
- Öffnen Sie FhirApplication.kt und legen Sie das Feld „baseUrl“ auf die URL Ihrer Cloud-Funktion fest.
- Wählen Sie in der Android Studio-Symbolleiste „Projekt mit Gradle-Dateien synchronisieren“ aus.
Wir haben nun die Einrichtung und das Einbinden von Abhängigkeiten abgeschlossen.
7. Einrichtung und Beantwortung von Fragebögen
Die Einrichtung des Fragebogens ist im Repository bereits erfolgt. Sehen wir uns den Code an:
- Achten Sie darauf, dass sich der FragmentContainerView in der Datei „app/src/main/res/layout/activity_main.xml“ innerhalb des ConstraintLayout befindet.
- Achten Sie darauf, dass das QuestionnaireFragment ein JSON-codiertes FHIR-Questionnaire enthält, um das Fragment zu rendern.
In diesem Fall verwenden wir die JSON-Datei new-patient-registration-paginated.json, um das Fragment zu rendern. Prüfen Sie die Dateien MainActivity.kt, AddPatientFragment.kt und AddPatientViewModel.kt.
Nachdem wir das Fragment, die JSON-Datei und das Modell überprüft haben, können Sie die App ausführen und versuchen, Antworten für die Felder im Fragebogen einzugeben.
Sie werden die Validierung von String-, Datums- und numerischen Feldern sowie anderen Bedingungen bemerken.
Sie können die App ausführen und im Log nachsehen, ob der Datensatz erstellt wurde.

Weitere Informationen zur Verwendung von Fragmenten Das war es auch schon mit der Einrichtung des Fragebogenfragments und der Antworten.
8. FHIRStore- und BigQuery-Dataset-Ergebnisdarstellung
Nachdem wir die Einrichtung und Aktualisierungen abgeschlossen haben, klicken Sie auf „Projekt mit Gradle-Dateien synchronisieren“. Wenn das abgeschlossen ist,
- App im Android Emulator ausführen und Fragebogen laden
- Beantworten Sie die Fragen und klicken Sie oben auf „Senden“.
- In der App sollte die Meldung „Patient saved“ (Patient gespeichert) angezeigt werden.
FHIR-Speicherergebnis ansehen
Öffnen Sie die Google Cloud Healthcare-Konsole FHIRViewer.

Wählen Sie Ihren FHIR-Speicher und Ihre Abfrage aus und klicken Sie auf „SUCHE AUSFÜHREN“. Die Suchergebnisse werden direkt darunter angezeigt. 
Ergebnis des BigQuery-Datasets ansehen
Rufen Sie die Google Cloud BigQuery-Konsole auf und wählen Sie im Explorer-Bereich das Dataset aus, das Sie für dieses Projekt erstellt haben.

Klicken Sie auf „Vorschau“. Sie sollten dieselbe Anzahl und dieselben resultierenden Daten wie im Healthcare FHIR Store im BigQuery-Dataset sehen.

Sie können jetzt BigQuery-SQL-, Analytics- und ML-Vorgänge für die FHIR-Daten ausführen, die Sie gerade im Cloud-Dataset gespeichert haben.
9. Suche und Offlinefunktionen
Damit die OHS-basierte Android FHIR SDK-App auch offline funktioniert, müssen Sie die Designrichtlinie befolgen, die in der hier beschriebenen Implementierung aktiviert werden muss.
Für die Suche nach FHIR-Ressourcen gibt es zwei Möglichkeiten:
- FHIR-Betrachter in der Google Cloud Console
- FHIR-Suchmethode mit GET- oder POST-Anfragen
10. App-Demo
Nachdem wir unsere App entwickelt haben, probieren wir sie aus und sehen uns das Ergebnis in der Cloud an.
11. Bereinigen
So vermeiden Sie, dass Ihrem Google Cloud-Konto die in diesem Beitrag verwendeten Ressourcen in Rechnung gestellt werden:
- Wechseln Sie in der Google Cloud Console zur Seite Ressourcen verwalten.
- Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf „Löschen“.
- Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf „Beenden“, um das Projekt zu löschen.
12. Glückwunsch
Glückwunsch! In diesem Projekt haben wir in nur sieben Schritten erfolgreich eine Android-Anwendung erstellt, mit der Patientendaten im FHIR-Format in einem Cloud Healthcare FHIR-Speicher und einem BigQuery-Dataset gespeichert und abgefragt werden können:
- Android-App einrichten
- Google Cloud Healthcare API einrichten
- Healthcare-Dataset und FHIR-Datenspeicher erstellt
- BigQuery-Dataset erstellt
- Sie haben einen BigQuery-Stream konfiguriert, um FHIR Datastore-Daten in ein BigQuery-Dataset zu schreiben.
- Cloud Functions-Funktion zum Schreiben von R4-Daten in den FHIR-Datenspeicher bereitgestellt
- Ausgelöste Cloud Functions-Funktionen aus der Android-App bei der Übermittlung von Fragebogenantworten
Nachdem die Schritte klar sind, können Sie sie auch für die FHIR-Bearbeitungssynchronisierung von Patienten in die Cloud ausprobieren.