In dieser Anleitung werden Szenarien erläutert, in denen Sie BigQuery-Streaming verwenden können, um einen FHIR-Speicher nahezu in Echtzeit mit einem BigQuery-Dataset zu synchronisieren.
Ziele
Die Anleitung umfasst folgende Schritte:
- Konfigurieren Sie BigQuery-Berechtigungen.
- Erstellen Sie FHIR-Speicher und fügen Sie Patientenressourcen hinzu.
- Konfigurieren Sie BigQuery-Streaming im FHIR-Speicher.
- Überprüfen Sie die Streamingkonfiguration nach BigQuery.
- Exportieren Sie vorhandene FHIR-Ressourcen nach BigQuery.
- Streamen Sie Ressourcen aus mehreren FHIR-Speichern in dasselbe BigQuery-Dataset.
Hinweis
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Healthcare API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
Schritt 1: BigQuery-Berechtigungen konfigurieren
Um FHIR-Ressourcenänderungen an BigQuery zu streamen, müssen Sie dem Dienstkonto Cloud Healthcare-Dienst-Agent zusätzliche Berechtigungen erteilen. Weitere Informationen finden Sie unter BigQuery-Berechtigungen für FHIR-Speicher.
Schritt 2: BigQuery-Streaming konfigurieren und prüfen
So aktivieren Sie das Streaming in BigQuery
FHIR-Speicher erstellen und Patientenressourcen hinzufügen
So erstellen Sie einen FHIR-Speicher und fügen zwei Patientenressourcen hinzu:
Erstellen Sie den FHIR-Speicher:
REST
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID ist die ID Ihres Google Cloud-Projekts
- LOCATION ist der Standort des Datasets
- DATASET_ID: das übergeordnete Dataset des FHIR-Speichers
- FHIR_STORE_ID:
eine Kennung für den FHIR-Speicher. Die FHIR-Speicher-ID muss Folgendes enthalten:
- Eine im eigenen Dataset eindeutige ID
- Einen Unicode-String mit 1 bis 256 Zeichen, der Folgendes umfasst:
- Nummern
- Buchstaben
- Unterstriche
- Bindestriche
- Punkte
- FHIR_STORE_VERSION ist die FHIR-Version des FHIR-Speichers Verfügbare Optionen sind DSTU2, STU3 oder R4.
JSON-Text der Anfrage:
{ "version": "FHIR_STORE_VERSION" }
Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:
curl
Speichern Sie den Anfragetext in einer Datei mit dem Namen
request.json
. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:cat > request.json << 'EOF' { "version": "FHIR_STORE_VERSION" } EOF
Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores?fhirStoreId=FHIR_STORE_ID"PowerShell
Speichern Sie den Anfragetext in einer Datei mit dem Namen
request.json
. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:@' { "version": "FHIR_STORE_VERSION" } '@ | Out-File -FilePath request.json -Encoding utf8
Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores?fhirStoreId=FHIR_STORE_ID" | Select-Object -Expand ContentAPIs Explorer
Kopieren Sie den Anfragetext und öffnen Sie die Referenzseite für Methoden. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Fügen Sie den Anfragetext in dieses Tool ein, füllen Sie alle Pflichtfelder aus und klicken Sie auf Ausführen.
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
Erstellen Sie die erste Patientenressource im FHIR-Speicher:
REST
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID ist die ID Ihres Google Cloud-Projekts
- LOCATION ist der Standort des Datasets
- DATASET_ID: das übergeordnete Dataset des FHIR-Speichers
- FHIR_STORE_ID: die FHIR-Speicher-ID
JSON-Text der Anfrage:
{ "name": [ { "use": "official", "family": "Smith", "given": [ "Darcy" ] } ], "gender": "female", "birthDate": "1970-01-01", "resourceType": "Patient" }
Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:
curl
Speichern Sie den Anfragetext in einer Datei mit dem Namen
request.json
. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:cat > request.json << 'EOF' { "name": [ { "use": "official", "family": "Smith", "given": [ "Darcy" ] } ], "gender": "female", "birthDate": "1970-01-01", "resourceType": "Patient" } EOF
Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/fhir+json" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient"PowerShell
Speichern Sie den Anfragetext in einer Datei mit dem Namen
request.json
. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:@' { "name": [ { "use": "official", "family": "Smith", "given": [ "Darcy" ] } ], "gender": "female", "birthDate": "1970-01-01", "resourceType": "Patient" } '@ | Out-File -FilePath request.json -Encoding utf8
Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/fhir+json" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient" | Select-Object -Expand ContentSie sollten eine JSON-Antwort ähnlich wie diese erhalten:
Erstellen Sie die zweite Patientenressource im FHIR-Speicher:
REST
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: Ihre Google Cloud-Projekt-ID
- LOCATION: der Speicherort des übergeordneten Datasets
- DATASET_ID: das übergeordnete Dataset des FHIR-Speichers
- FHIR_STORE_ID: die FHIR-Speicher-ID
JSON-Text der Anfrage:
{ "name": [ { "use": "official", "family": "Zhang", "given": [ "Michael" ] } ], "gender": "male", "birthDate": "1980-01-01", "resourceType": "Patient" }
Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:
curl
Speichern Sie den Anfragetext in einer Datei mit dem Namen
request.json
. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:cat > request.json << 'EOF' { "name": [ { "use": "official", "family": "Zhang", "given": [ "Michael" ] } ], "gender": "male", "birthDate": "1980-01-01", "resourceType": "Patient" } EOF
Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/fhir+json" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient"PowerShell
Speichern Sie den Anfragetext in einer Datei mit dem Namen
request.json
. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:@' { "name": [ { "use": "official", "family": "Zhang", "given": [ "Michael" ] } ], "gender": "male", "birthDate": "1980-01-01", "resourceType": "Patient" } '@ | Out-File -FilePath request.json -Encoding utf8
Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/fhir+json" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient" | Select-Object -Expand ContentSie sollten eine JSON-Antwort ähnlich wie diese erhalten:
Suchen Sie im FHIR-Speicher nach Patientenressourcen und prüfen Sie, ob der Speicher die beiden Patientenressourcen enthält:
REST
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: Ihre Google Cloud-Projekt-ID
- LOCATION: der Speicherort des übergeordneten Datasets
- DATASET_ID: das übergeordnete Dataset des FHIR-Speichers
- FHIR_STORE_ID ist die FHIR-Speicher-ID
Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:
curl
Führen Sie folgenden Befehl aus:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient"PowerShell
Führen Sie folgenden Befehl aus:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient" | Select-Object -Expand ContentSie sollten eine JSON-Antwort ähnlich wie diese erhalten:
BigQuery-Streaming im FHIR-Speicher konfigurieren
Aktualisieren Sie den FHIR-Speicher, um das BigQuery-Streaming zu konfigurieren. Nach der Konfiguration des Streamings streamt die Cloud Healthcare API alle Ressourcenänderungen an das BigQuery-Dataset.
Aktualisieren Sie Ihren vorhandenen FHIR-Speicher, um den Speicherort des BigQuery-Datasets hinzuzufügen:
REST
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: Ihre Google Cloud-Projekt-ID
- LOCATION: der Speicherort des übergeordneten Datasets
- DATASET_ID: das übergeordnete Dataset des FHIR-Speichers
- FHIR_STORE_ID: Ihre FHIR-Speicher-ID
- BIGQUERY_PROJECT_ID: Das Google Cloud-Projekt, das das BigQuery-Dataset zum Streamen von FHIR-Ressourcenänderungen enthält.
- BIGQUERY_DATASET_ID ist das BigQuery-Dataset, in das Sie Änderungen an der FHIR-Ressource streamen.
JSON-Text der Anfrage:
{ "streamConfigs": [ { "bigqueryDestination": { "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID", "schemaConfig": { "schemaType": "ANALYTICS_V2" } } } ] }
Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:
curl
Speichern Sie den Anfragetext in einer Datei mit dem Namen
request.json
. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:cat > request.json << 'EOF' { "streamConfigs": [ { "bigqueryDestination": { "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID", "schemaConfig": { "schemaType": "ANALYTICS_V2" } } } ] } EOF
Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:
curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID?updateMask=streamConfigs"PowerShell
Speichern Sie den Anfragetext in einer Datei mit dem Namen
request.json
. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:@' { "streamConfigs": [ { "bigqueryDestination": { "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID", "schemaConfig": { "schemaType": "ANALYTICS_V2" } } } ] } '@ | Out-File -FilePath request.json -Encoding utf8
Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID?updateMask=streamConfigs" | Select-Object -Expand ContentAPIs Explorer
Kopieren Sie den Anfragetext und öffnen Sie die Referenzseite für Methoden. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Fügen Sie den Anfragetext in dieses Tool ein, füllen Sie alle Pflichtfelder aus und klicken Sie auf Ausführen.
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
Streamingkonfiguration nach BigQuery prüfen
Prüfen Sie mit den folgenden Schritten, ob das Streaming korrekt konfiguriert ist:
Erstellen Sie eine dritte Patientenressource im FHIR-Speicher:
REST
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: Ihre Google Cloud-Projekt-ID
- LOCATION: der Speicherort des übergeordneten Datasets
- DATASET_ID: das übergeordnete Dataset des FHIR-Speichers
- FHIR_STORE_ID: die FHIR-Speicher-ID
JSON-Text der Anfrage:
{ "name": [ { "use": "official", "family": "Lee", "given": [ "Alex" ] } ], "gender": "male", "birthDate": "1990-01-01", "resourceType": "Patient" }
Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:
curl
Speichern Sie den Anfragetext in einer Datei mit dem Namen
request.json
. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:cat > request.json << 'EOF' { "name": [ { "use": "official", "family": "Lee", "given": [ "Alex" ] } ], "gender": "male", "birthDate": "1990-01-01", "resourceType": "Patient" } EOF
Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/fhir+json" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient"PowerShell
Speichern Sie den Anfragetext in einer Datei mit dem Namen
request.json
. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:@' { "name": [ { "use": "official", "family": "Lee", "given": [ "Alex" ] } ], "gender": "male", "birthDate": "1990-01-01", "resourceType": "Patient" } '@ | Out-File -FilePath request.json -Encoding utf8
Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/fhir+json" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient" | Select-Object -Expand ContentSie sollten eine JSON-Antwort ähnlich wie diese erhalten:
Fragen Sie die Tabelle
BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient
mit dem Befehlbq query
ab. BigQuery organisiert Tabellen nach dem FHIR-Ressourcentyp. Die von Ihnen erstellte dritte Patientenressource befindet sich in der TabellePatient
.bq query \ --project_id=BIGQUERY_PROJECT_ID \ --use_legacy_sql=false \ 'SELECT COUNT(*) FROM `BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient`'
Die Abfrage gibt das folgende Ergebnis zurück: Das Ergebnis zeigt, dass in der BigQuery-Tabelle ein Patientenressourceneintrag vorhanden ist, da Sie die Patientenressource nach dem Konfigurieren des Streamings im FHIR-Speicher hinzugefügt haben.
+-----+ | f0_ | +-----+ | 1 | +-----+
Schritt 3: Vorhandene FHIR-Ressourcen nach BigQuery exportieren
Wenn Sie bereits einen FHIR-Speicher haben, der Daten enthält, die Sie mit einem BigQuery-Dataset synchronisieren möchten, müssen Sie die folgenden Schritte ausführen, um sicherzustellen, dass sich die vorhandenen Daten in BigQuery befinden:
- Streaming zu BigQuery konfigurieren.
- Exportieren Sie die vorhandenen Daten in das BigQuery-Dataset.
Führen Sie die folgenden Schritte aus, um die beiden Patientenressourcen zu exportieren, die im FHIR-Speicher vorhanden waren, bevor Sie das Streaming in das BigQuery-Dataset konfiguriert haben:
Führen Sie den Befehl
gcloud healthcare fhir-stores export bq
aus, um die Ressourcen im FHIR-Speicher nach BigQuery zu exportieren. In dem Befehl wird das Flag--write-disposition=write-append
verwendet, das Daten an die vorhandene Tabelle BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient
anhängt.gcloud healthcare fhir-stores export bq FHIR_STORE_ID \ --dataset=DATASET_ID \ --location=LOCATION \ --bq-dataset=bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET \ --schema-type=analytics_v2 \ --write-disposition=write-append
Fragen Sie die Tabelle
BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient
ab, um die Anzahl der Patientenressourcen im BigQuery-Dataset zu prüfen:bq query \ --project_id=BIGQUERY_PROJECT_ID \ --use_legacy_sql=false \ 'SELECT COUNT(*) FROM `BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient`'
Die Abfrage gibt das folgende Ergebnis zurück, das zeigt, dass die BigQuery-Tabelle vier Patientenressourceneinträge enthält:
+-----+ | f0_ | +-----+ | 4 | +-----+
Die tatsächliche Anzahl von Patientenressourcen in der BigQuery-Tabelle beträgt 3, aber die Abfrage gibt 4 zurück. Inkonsistenzen können auftreten, wenn eine Ressource Duplikate aus verschiedenen Vorgängen enthält. In diesem Fall wurde die erste Patientenressource zweimal der BigQuery-Tabelle hinzugefügt:
- Zeitpunkt der Erstellung der Patientenressource
- Wann die Ressourcen im FHIR-Speicher nach BigQuery exportiert wurden
Die BigQuery-Tabelle enthält auch einen Mutationsverlauf der ersten Patientenressource. Wenn Sie beispielsweise die Patientenressource mit
fhir.delete
löschen, enthält die BigQuery-Tabelle einemeta.tag.code
-Spalte mit dem WertDELETE
.Fragen Sie die Ansicht ab, um den neuesten Snapshot der Daten im FHIR-Speicher abzurufen. Die Cloud Healthcare API erstellt die Ansicht nur anhand der neuesten Version jeder Ressource. Die Abfrage von Ansichten ist die genaueste Möglichkeit, einen FHIR-Speicher und die entsprechende BigQuery-Tabelle synchron zu halten.
Führen Sie den folgenden Befehl aus, um die Ansicht abzufragen:
bq query \ --project_id=BIGQUERY_PROJECT_ID \ --use_legacy_sql=false \ 'SELECT COUNT(*) FROM `BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.PatientView`'
Die Abfrage gibt das folgende Ergebnis zurück, das richtig zeigt, dass sich in der BigQuery-Tabelle drei Patientenressourcen befinden:
+-----+ | f0_ | +-----+ | 3 | +-----+
Schritt 4: Ressourcen aus mehreren FHIR-Speichern in dasselbe BigQuery-Dataset streamen
In einigen Fällen möchten Sie FHIR-Ressourcen aus mehreren FHIR-Speichern in dasselbe BigQuery-Dataset streamen, um eine Analyse der aggregierten FHIR-Ressourcen aus den FHIR-Speichern durchzuführen.
In den folgenden Schritten erstellen Sie einen zweiten FHIR-Speicher im selben Cloud Healthcare API-Dataset wie der erste FHIR-Speicher. Sie können jedoch FHIR-Speicher aus verschiedenen Datasets verwenden, um FHIR-Ressourcen zu aggregieren.
Erstellen Sie einen zweiten FHIR-Speicher mit aktiviertem BigQuery-Streaming und verwenden Sie dasselbe BigQuery-Dataset, das Sie unter BigQuery-Streaming im FHIR-Speicher konfigurieren verwendet haben.
REST
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: Ihre Google Cloud-Projekt-ID
- LOCATION: der Speicherort des übergeordneten Datasets
- DATASET_ID: das übergeordnete Dataset des FHIR-Speichers
- SECOND_FHIR_STORE_ID: Eine Kennzeichnung für den zweiten FHIR-Speicher. Die FHIR-Speicher-ID muss im Dataset eindeutig sein. Die FHIR-Speicher-ID kann ein beliebiger Unicode-String mit 1 bis 256 Zeichen sein, der aus Zahlen, Buchstaben, Unterstrichen, Bindestrichen und Punkten besteht.
- FHIR_STORE_VERSION: die FHIR-Speicherversion: DSTU2, STU3 oder R4
- BIGQUERY_PROJECT_ID: Das Google Cloud-Projekt, das das BigQuery-Dataset zum Streamen von FHIR-Ressourcenänderungen enthält.
- BIGQUERY_DATASET_ID ist das BigQuery-Dataset, in das Sie Änderungen an der FHIR-Ressource streamen.
JSON-Text der Anfrage:
{ "version": "FHIR_STORE_VERSION" "streamConfigs": [ { "bigqueryDestination": { "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID", "schemaConfig": { "schemaType": "ANALYTICS" } } } ] }
Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:
curl
Speichern Sie den Anfragetext in einer Datei mit dem Namen
request.json
. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:cat > request.json << 'EOF' { "version": "FHIR_STORE_VERSION" "streamConfigs": [ { "bigqueryDestination": { "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID", "schemaConfig": { "schemaType": "ANALYTICS" } } } ] } EOF
Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores?fhirStoreId=SECOND_FHIR_STORE_ID"PowerShell
Speichern Sie den Anfragetext in einer Datei mit dem Namen
request.json
. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:@' { "version": "FHIR_STORE_VERSION" "streamConfigs": [ { "bigqueryDestination": { "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID", "schemaConfig": { "schemaType": "ANALYTICS" } } } ] } '@ | Out-File -FilePath request.json -Encoding utf8
Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores?fhirStoreId=SECOND_FHIR_STORE_ID" | Select-Object -Expand ContentAPIs Explorer
Kopieren Sie den Anfragetext und öffnen Sie die Referenzseite für Methoden. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Fügen Sie den Anfragetext in dieses Tool ein, füllen Sie alle Pflichtfelder aus und klicken Sie auf Ausführen.
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
Erstellen Sie eine Patientenressource im zweiten FHIR-Speicher:
REST
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: Ihre Google Cloud-Projekt-ID
- LOCATION: der Speicherort des übergeordneten Datasets
- DATASET_ID: das übergeordnete Dataset des FHIR-Speichers
- SECOND_FHIR_STORE_ID: die zweite FHIR-Speicher-ID
JSON-Text der Anfrage:
{ "name": [ { "use": "official", "family": "Lee", "given": [ "Alex" ] } ], "gender": "male", "birthDate": "1990-01-01", "resourceType": "Patient" }
Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:
curl
Speichern Sie den Anfragetext in einer Datei mit dem Namen
request.json
. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:cat > request.json << 'EOF' { "name": [ { "use": "official", "family": "Lee", "given": [ "Alex" ] } ], "gender": "male", "birthDate": "1990-01-01", "resourceType": "Patient" } EOF
Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/fhir+json" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/SECOND_FHIR_STORE_ID/fhir/Patient"PowerShell
Speichern Sie den Anfragetext in einer Datei mit dem Namen
request.json
. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:@' { "name": [ { "use": "official", "family": "Lee", "given": [ "Alex" ] } ], "gender": "male", "birthDate": "1990-01-01", "resourceType": "Patient" } '@ | Out-File -FilePath request.json -Encoding utf8
Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/fhir+json" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/SECOND_FHIR_STORE_ID/fhir/Patient" | Select-Object -Expand ContentSie sollten eine JSON-Antwort ähnlich wie diese erhalten:
Fragen Sie die Tabelle
BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient
ab, um die Anzahl der Patientenressourcen in der BigQuery-Tabelle zu prüfen:bq query \ --project_id=BIGQUERY_PROJECT_ID \ --use_legacy_sql=false \ 'SELECT COUNT(*) FROM `BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient`'
Beim Streamen der Daten zur neuen Patientenressource verwendet BigQuery die vorhandene Tabelle
Patient
im BigQuery-Dataset. Die Abfrage gibt das folgende Ergebnis zurück, das zeigt, dass in der BigQuery-Tabelle fünf Patientenressourceneinträge vorhanden sind. Unter Vorhandene FHIR-Ressourcen nach BigQuery exportieren wird erläutert, warum die Tabelle fünf Ressourcen anstelle von vier enthält.+-----+ | f0_ | +-----+ | 5 | +-----+
Führen Sie den folgenden Befehl aus, um die Ansicht abzufragen:
bq query \ --project_id=BIGQUERY_PROJECT_ID \ --use_legacy_sql=false \ 'SELECT COUNT(*) FROM `BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.PatientView`'
Die Abfrage gibt das folgende Ergebnis zurück, das zeigt, dass in den kombinierten ersten und zweiten FHIR-Speichern und in der BigQuery-Tabelle vier Patientenressourcen vorhanden sind:
+-----+ | f0_ | +-----+ | 4 | +-----+
Bereinigen
Wenn Sie ein neues Projekt für diese Anleitung erstellt haben, führen Sie die Schritte unter Projekt löschen aus. Wenn Sie nur die Cloud Healthcare API- und BigQuery-Ressourcen löschen möchten, führen Sie die Schritte unter Cloud Healthcare API-Dataset löschen und BigQuery-Dataset löschen aus.
Projekt löschen
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Dataset der Cloud Healthcare API löschen
Wenn Sie das in dieser Anleitung erstellte Cloud Healthcare API-Dataset nicht mehr benötigen, können Sie es löschen. Durch das Löschen eines Datasets werden das Dataset und alle darin enthaltenen FHIR-Speicher endgültig gelöscht.
Verwenden Sie den Befehl
gcloud healthcare datasets delete
, um einen Spoke zu löschen.gcloud healthcare datasets delete DATASET_ID \ --location=LOCATION \ --project=PROJECT_ID
Dabei gilt:
- DATASET_ID: das Cloud Healthcare API-Dataset
- LOCATION: Speicherort des Datasets
- PROJECT_ID: Ihre Google Cloud-Projekt-ID
Geben Sie zur Bestätigung Y ein.
Die Ausgabe sieht so aus:
Deleted dataset [DATASET_ID].
BigQuery-Dataset löschen
Wenn Sie das in dieser Anleitung erstellte BigQuery-Dataset nicht mehr benötigen, können Sie es löschen. Durch das Löschen eines Datasets werden das Dataset und alle darin enthaltenen Tabellen endgültig gelöscht.
Entfernen Sie BIGQUERY_PROJECT_ID.Dataset BIGQUERY_DATASET_ID mit dem Befehl
bq rm
:bq rm --recursive=true BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID
Das Flag
--recursive
löscht alle Tabellen im Dataset, einschließlich der TabellePatient
.Geben Sie zur Bestätigung Y ein.
Nächste Schritte
- Wenn beim Streaming in BigQuery Fehler auftreten, werden die Fehler in Cloud Logging protokolliert. Weitere Informationen finden Sie unter Fehlerlogs in Cloud Logging ansehen.
- FHIR-Ressourcen nach BigQuery exportieren
- Informationen zum Erstellen, Aufrufen, Auflisten oder Löschen von FHIR-Speichern finden Sie unter FHIR-Speicher erstellen und verwalten.