FHIR-Ressourcen mit BigQuery streamen und synchronisieren


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.

Lernziele

Die Anleitung umfasst folgende Schritte:

  1. Konfigurieren Sie BigQuery-Berechtigungen.
  2. Erstellen Sie FHIR-Speicher und fügen Sie Patientenressourcen hinzu.
  3. Konfigurieren Sie BigQuery-Streaming im FHIR-Speicher.
  4. Überprüfen Sie die Streamingkonfiguration nach BigQuery.
  5. Exportieren Sie vorhandene FHIR-Ressourcen nach BigQuery.
  6. Streamen Sie Ressourcen aus mehreren FHIR-Speichern in dasselbe BigQuery-Dataset.

Hinweise

  1. Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  4. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  5. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  6. Cloud Healthcare API aktivieren.

    Aktivieren Sie die API

  7. Installieren Sie die Google Cloud CLI.
  8. Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    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:

  1. Erstellen Sie den FHIR-Speicher:

    REST

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • 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 anfordern:

    {
      "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 Content

    APIs 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 in etwa folgende JSON-Antwort erhalten:

  2. Erstellen Sie die erste Patientenressource im FHIR-Speicher:

    REST

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • 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 anfordern:

    {
      "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 Content

    Sie sollten in etwa folgende JSON-Antwort erhalten:

  3. Erstellen Sie die zweite Patientenressource im FHIR-Speicher:

    REST

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • 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 anfordern:

    {
      "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 Content

    Sie sollten in etwa folgende JSON-Antwort erhalten:

  4. Suchen Sie im FHIR-Speicher nach Patientenressourcen und prüfen Sie, ob der Speicher die beiden Patientenressourcen enthält:

    REST

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • 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 Content

    Sie 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.

  1. Aktualisieren Sie Ihren vorhandenen FHIR-Speicher, um den Speicherort des BigQuery-Datasets hinzuzufügen:

    REST

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • 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 anfordern:

    {
      "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 Content

    APIs 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 in etwa folgende JSON-Antwort erhalten:

Streamingkonfiguration nach BigQuery prüfen

Prüfen Sie mit den folgenden Schritten, ob das Streaming korrekt konfiguriert ist:

  1. Erstellen Sie eine dritte Patientenressource im FHIR-Speicher:

    REST

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • 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 anfordern:

    {
      "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 Content

    Sie sollten in etwa folgende JSON-Antwort erhalten:

  2. Fragen Sie die Tabelle BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient mit dem Befehl bq query ab. BigQuery organisiert Tabellen nach dem FHIR-Ressourcentyp. Die von Ihnen erstellte dritte Patientenressource befindet sich in der Tabelle Patient.

    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:

  1. Streaming zu BigQuery konfigurieren.
  2. 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:

  1. 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
    
  2. 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 eine meta.tag.code-Spalte mit dem Wert DELETE.

  3. 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.

  1. 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

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • 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 anfordern:

    {
      "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 Content

    APIs 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 in etwa folgende JSON-Antwort erhalten:

  2. Erstellen Sie eine Patientenressource im zweiten FHIR-Speicher:

    REST

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • 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 anfordern:

    {
      "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 Content

    Sie sollten in etwa folgende JSON-Antwort erhalten:

  3. 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 |
    +-----+
    
  4. 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

  1. Wechseln Sie in der Google Cloud Console zur Seite Ressourcen verwalten.

    Zur Seite „Ressourcen verwalten“

  2. Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
  3. Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.

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.

  1. 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
    

    Ersetzen Sie Folgendes:

    • DATASET_ID: das Cloud Healthcare API-Dataset
    • LOCATION: Speicherort des Datasets
    • PROJECT_ID: Ihre Google Cloud-Projekt-ID
  2. 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.

  1. 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 Tabelle Patient.

  2. Geben Sie zur Bestätigung Y ein.

Nächste Schritte