Trasmissione e sincronizzazione di risorse FHIR con BigQuery


Questo tutorial spiega gli scenari in cui puoi utilizzare Flusso di dati BigQuery per mantenere sincronizzato un datastore FHIR set di dati BigQuery quasi in tempo reale.

Obiettivi

Il tutorial illustra i seguenti passaggi:

  1. Configura le autorizzazioni BigQuery.
  2. Crea un archivio FHIR e aggiungi risorse Patient.
  3. Configura il flusso di dati BigQuery sul datastore FHIR.
  4. Verificare la configurazione dei flussi di dati in BigQuery.
  5. Esporta le risorse FHIR esistenti in BigQuery.
  6. Trasmetti le risorse da più archivi FHIR allo stesso set di dati BigQuery.

Prima di iniziare

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Enable the Cloud Healthcare API.

    Enable the API

  7. Install the Google Cloud CLI.
  8. To initialize the gcloud CLI, run the following command:

    gcloud init

Passaggio 1: configura le autorizzazioni BigQuery

Per trasmettere in BigQuery le modifiche alle risorse FHIR, devi concedi autorizzazioni aggiuntive all'agente di servizio Cloud Healthcare. account di servizio. Per ulteriori informazioni, vedi Autorizzazioni BigQuery per gli archivi FHIR.

Passaggio 2: configura e verifica il flusso di dati di BigQuery

Per attivare i flussi di dati in BigQuery, segui queste istruzioni:

Crea un datastore FHIR e aggiungi risorse Patient

Per creare un datastore FHIR e aggiungere due risorse Patient, segui questi passaggi:

  1. Crea l'archivio FHIR:

    REST

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo progetto Google Cloud
    • LOCATION: la posizione del set di dati
    • DATASET_ID: il set di dati padre del datastore FHIR
    • FHIR_STORE_ID: un identificatore per l'archivio FHIR. L'ID del datastore FHIR deve avere quanto segue:
      • Un ID univoco nel set di dati
      • Una stringa Unicode di 1-256 caratteri costituita da quanto segue:
        • Numeri
        • Lettere
        • Trattini bassi
        • Trattini
        • Punti
    • FHIR_STORE_VERSION: la versione FHIR dell'archivio FHIR. Le opzioni disponibili sono DSTU2, STU3 o R4.

    Corpo JSON della richiesta:

    {
      "version": "FHIR_STORE_VERSION"
    }
    

    Per inviare la richiesta, scegli una delle seguenti opzioni:

    curl

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    cat > request.json << 'EOF'
    {
      "version": "FHIR_STORE_VERSION"
    }
    EOF

    Quindi, esegui il seguente comando per inviare la richiesta REST:

    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

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    @'
    {
      "version": "FHIR_STORE_VERSION"
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Quindi, esegui questo comando per inviare la richiesta REST:

    $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

    Explorer API

    Copia il corpo della richiesta e apri la pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Esplora API. Puoi interagire con questo strumento per inviare richieste. Incolla il corpo della richiesta in questo strumento, compila gli altri campi obbligatori e fai clic su Esegui.

    Dovresti ricevere una risposta JSON simile alla seguente:

  2. Crea la prima risorsa Patient nell'archivio FHIR:

    REST

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo progetto Google Cloud
    • LOCATION: la posizione del set di dati
    • DATASET_ID: il set di dati principale dell'archivio FHIR
    • FHIR_STORE_ID: l'ID del datastore FHIR

    Corpo JSON della richiesta:

    {
      "name": [
        {
          "use": "official",
          "family": "Smith",
          "given": [
            "Darcy"
          ]
        }
      ],
      "gender": "female",
      "birthDate": "1970-01-01",
      "resourceType": "Patient"
    }
    

    Per inviare la richiesta, scegli una delle seguenti opzioni:

    curl

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    cat > request.json << 'EOF'
    {
      "name": [
        {
          "use": "official",
          "family": "Smith",
          "given": [
            "Darcy"
          ]
        }
      ],
      "gender": "female",
      "birthDate": "1970-01-01",
      "resourceType": "Patient"
    }
    EOF

    Quindi, esegui il seguente comando per inviare la richiesta REST:

    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

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    @'
    {
      "name": [
        {
          "use": "official",
          "family": "Smith",
          "given": [
            "Darcy"
          ]
        }
      ],
      "gender": "female",
      "birthDate": "1970-01-01",
      "resourceType": "Patient"
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Quindi, esegui il seguente comando per inviare la richiesta REST:

    $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

    Dovresti ricevere una risposta JSON simile alla seguente:

  3. Crea la seconda risorsa Patient nel datastore FHIR:

    REST

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo progetto Google Cloud
    • LOCATION: la posizione del set di dati principale
    • DATASET_ID: il set di dati principale dell'archivio FHIR
    • FHIR_STORE_ID: l'ID del datastore FHIR

    Corpo JSON della richiesta:

    {
      "name": [
        {
          "use": "official",
          "family": "Zhang",
          "given": [
            "Michael"
          ]
        }
      ],
      "gender": "male",
      "birthDate": "1980-01-01",
      "resourceType": "Patient"
    }
    

    Per inviare la richiesta, scegli una delle seguenti opzioni:

    curl

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    cat > request.json << 'EOF'
    {
      "name": [
        {
          "use": "official",
          "family": "Zhang",
          "given": [
            "Michael"
          ]
        }
      ],
      "gender": "male",
      "birthDate": "1980-01-01",
      "resourceType": "Patient"
    }
    EOF

    Quindi, esegui il seguente comando per inviare la richiesta REST:

    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

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    @'
    {
      "name": [
        {
          "use": "official",
          "family": "Zhang",
          "given": [
            "Michael"
          ]
        }
      ],
      "gender": "male",
      "birthDate": "1980-01-01",
      "resourceType": "Patient"
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Quindi, esegui il seguente comando per inviare la richiesta REST:

    $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

    Dovresti ricevere una risposta JSON simile alla seguente:

  4. Cerca le risorse Patient nel datastore FHIR e verifica che il datastore contenga le due risorse Patient:

    REST

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo progetto Google Cloud
    • LOCATION: la posizione del set di dati principale
    • DATASET_ID: il set di dati principale dell'archivio FHIR
    • FHIR_STORE_ID: l'ID del datastore FHIR

    Per inviare la richiesta, scegli una delle seguenti opzioni:

    curl

    Esegui questo comando:

    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

    Esegui questo comando:

    $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

    Dovresti ricevere una risposta JSON simile alla seguente:

Configura il flusso di dati BigQuery sul datastore FHIR

Aggiorna il datastore FHIR per configurare lo streaming di BigQuery. Dopo aver configurato lo streaming, l'API Cloud Healthcare trasmette eventuali modifiche delle risorse al set di dati BigQuery.

  1. Aggiorna il datastore FHIR esistente per aggiungere la posizione del set di dati BigQuery:

    REST

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo progetto Google Cloud
    • LOCATION: la posizione del set di dati principale
    • DATASET_ID: il set di dati padre del datastore FHIR
    • FHIR_STORE_ID: il tuo ID datastore FHIR
    • BIGQUERY_PROJECT_ID: il progetto Google Cloud contenente il set di dati BigQuery per le modifiche delle risorse FHIR in streaming
    • BIGQUERY_DATASET_ID: il set di dati BigQuery in cui stai inviando in modalità flusso le modifiche alle risorse FHIR

    Corpo JSON della richiesta:

    {
      "streamConfigs": [
        {
          "bigqueryDestination": {
            "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID",
            "schemaConfig": {
              "schemaType": "ANALYTICS_V2"
            }
          }
        }
      ]
    }
    

    Per inviare la richiesta, scegli una delle seguenti opzioni:

    curl

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    cat > request.json << 'EOF'
    {
      "streamConfigs": [
        {
          "bigqueryDestination": {
            "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID",
            "schemaConfig": {
              "schemaType": "ANALYTICS_V2"
            }
          }
        }
      ]
    }
    EOF

    Quindi, esegui il seguente comando per inviare la richiesta REST:

    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

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    @'
    {
      "streamConfigs": [
        {
          "bigqueryDestination": {
            "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID",
            "schemaConfig": {
              "schemaType": "ANALYTICS_V2"
            }
          }
        }
      ]
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Quindi, esegui questo comando per inviare la richiesta REST:

    $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

    Explorer API

    Copia il corpo della richiesta e apri la pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Explorer API. Puoi interagire con questo strumento per inviare richieste. Incolla il corpo della richiesta in questo strumento, compila gli altri campi obbligatori e fai clic su Esegui.

    Dovresti ricevere una risposta JSON simile alla seguente:

Verifica la configurazione dei flussi di dati in BigQuery

Verifica che lo streaming sia configurato correttamente completando i seguenti passaggi:

  1. Crea una terza risorsa Patient nel datastore FHIR:

    REST

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo progetto Google Cloud
    • LOCATION: la posizione del set di dati principale
    • DATASET_ID: il set di dati principale dell'archivio FHIR
    • FHIR_STORE_ID: l'ID del datastore FHIR

    Corpo JSON della richiesta:

    {
      "name": [
        {
          "use": "official",
          "family": "Lee",
          "given": [
            "Alex"
          ]
        }
      ],
      "gender": "male",
      "birthDate": "1990-01-01",
      "resourceType": "Patient"
    }
    

    Per inviare la richiesta, scegli una delle seguenti opzioni:

    curl

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    cat > request.json << 'EOF'
    {
      "name": [
        {
          "use": "official",
          "family": "Lee",
          "given": [
            "Alex"
          ]
        }
      ],
      "gender": "male",
      "birthDate": "1990-01-01",
      "resourceType": "Patient"
    }
    EOF

    Quindi, esegui il seguente comando per inviare la richiesta REST:

    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

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    @'
    {
      "name": [
        {
          "use": "official",
          "family": "Lee",
          "given": [
            "Alex"
          ]
        }
      ],
      "gender": "male",
      "birthDate": "1990-01-01",
      "resourceType": "Patient"
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Quindi, esegui il seguente comando per inviare la richiesta REST:

    $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

    Dovresti ricevere una risposta JSON simile alla seguente:

  2. Esegui una query sulla tabella BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient eseguendo bq query. BigQuery organizza le tabelle in base al tipo di risorsa FHIR. La terza risorsa Patient che hai creato si trova nella tabella Patient.

    bq query \
       --project_id=BIGQUERY_PROJECT_ID \
       --use_legacy_sql=false \
       'SELECT COUNT(*) FROM `BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient`'

    La query restituisce il seguente risultato. Il risultato mostra che è disponibile una risorsa Patient nella tabella BigQuery, perché hai aggiunto la risorsa dopo aver configurato il flusso di dati sul datastore FHIR.

    +-----+
    | f0_ |
    +-----+
    |   1 |
    +-----+
    

Passaggio 3: esporta le risorse FHIR esistenti in BigQuery

Se disponi già di un datastore FHIR contenente dati che vuoi sincronizzare con un BigQuery devi completare i seguenti passaggi per assicurarti che i dati esistenti siano in BigQuery:

  1. Configurare i flussi di dati in BigQuery.
  2. Esporta i dati esistenti nel set di dati BigQuery.

Per esportare due risorse paziente esistenti nel datastore FHIR prima di configurare il flusso di dati nel set di dati BigQuery, completa i seguenti passaggi:

  1. Per esportare le risorse nell'archivio FHIR in BigQuery, esegui il comando gcloud healthcare fhir-stores export bq. Il comando utilizza il flag --write-disposition=write-append, che aggiunge i dati alla tabella BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient esistente.

    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. Esegui una query sulla tabella BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient per verificare il numero di risorse Patient nel set di dati BigQuery:

    bq query \
       --project_id=BIGQUERY_PROJECT_ID \
       --use_legacy_sql=false \
       'SELECT COUNT(*) FROM `BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient`'

    La query restituisce il seguente risultato, che mostra che nella tabella BigQuery sono presenti 4 record di risorse per i pazienti:

    +-----+
    | f0_ |
    +-----+
    |   4 |
    +-----+
    

    Il numero effettivo di risorse paziente nella tabella BigQuery è tre, ma la query restituisce 4. Se una risorsa contiene duplicati potrebbero verificarsi incoerenze da operazioni diverse. In questo caso, la prima risorsa Patient è stata aggiunta alla tabella BigQuery in queste due occasioni:

    • Quando è stata eseguita la creazione delle risorse paziente in streaming
    • Quando le risorse nell'archivio FHIR sono state esportate in BigQuery

    La tabella BigQuery contiene anche una cronologia delle mutazioni del primo Risorsa per i pazienti. Ad esempio, se elimini la risorsa Paziente utilizzando fhir.delete, la tabella BigQuery ha una colonna meta.tag.code con valore DELETE.

  3. Per ottenere l'ultimo snapshot dei dati nell'archivio FHIR, esegui una query sulla visualizzazione. L'API Cloud Healthcare genera la visualizzazione prendendo in considerazione solo la versione più recente di ogni risorsa. Eseguire query sulle visualizzazioni è il modo più preciso per mantenere sincronizzati un archivi FHIR e la relativa tabella BigQuery.

    Per eseguire una query sulla visualizzazione, esegui il seguente comando:

    bq query \
       --project_id=BIGQUERY_PROJECT_ID \
       --use_legacy_sql=false \
       'SELECT COUNT(*) FROM `BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.PatientView`'

    La query restituisce il seguente risultato, che mostra correttamente che sono presenti 3 risorse per i pazienti nella tabella BigQuery:

    +-----+
    | f0_ |
    +-----+
    |   3 |
    +-----+
    

Passaggio 4: trasmetti i flussi di risorse da più datastore FHIR allo stesso set di dati BigQuery

In alcuni casi, potresti voler eseguire lo streaming delle risorse FHIR da più archivi FHIR allo stesso set di dati BigQuery per eseguire analisi sulle risorse FHIR aggregate dagli archivi FHIR.

Nei passaggi seguenti, crei un secondo archivio FHIR nello stesso set di dati dell'API Cloud Healthcare del primo, ma puoi utilizzare archivi FHIR di set di dati diversi quando aggreghi le risorse FHIR.

  1. Crea un secondo magazzino FHIR con lo streaming di BigQuery abilitato e utilizza lo stesso set di dati BigQuery utilizzato in Configurare lo streaming di BigQuery nel magazzino FHIR.

    REST

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo progetto Google Cloud
    • LOCATION: la posizione del set di dati principale
    • DATASET_ID: il set di dati padre del datastore FHIR
    • SECOND_FHIR_STORE_ID: un identificatore per il secondo datastore FHIR. L'ID datastore FHIR deve essere univoco nel set di dati. L'ID del datastore FHIR può essere qualsiasi stringa Unicode da 1 a 256 caratteri composta da numeri, lettere, trattini bassi, trattini e punti.
    • FHIR_STORE_VERSION: la versione dell'archivio FHIR: DSTU2, STU3 o R4
    • BIGQUERY_PROJECT_ID: il progetto Google Cloud contenente il set di dati BigQuery per le modifiche alle risorse FHIR in modalità flusso
    • BIGQUERY_DATASET_ID: il set di dati BigQuery in cui stai inviando in modalità flusso le modifiche alle risorse FHIR

    Corpo JSON della richiesta:

    {
      "version": "FHIR_STORE_VERSION"
      "streamConfigs": [
        {
          "bigqueryDestination": {
            "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID",
            "schemaConfig": {
              "schemaType": "ANALYTICS"
            }
          }
        }
      ]
    }
    

    Per inviare la richiesta, scegli una delle seguenti opzioni:

    curl

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    cat > request.json << 'EOF'
    {
      "version": "FHIR_STORE_VERSION"
      "streamConfigs": [
        {
          "bigqueryDestination": {
            "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID",
            "schemaConfig": {
              "schemaType": "ANALYTICS"
            }
          }
        }
      ]
    }
    EOF

    Quindi, esegui il seguente comando per inviare la richiesta REST:

    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

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    @'
    {
      "version": "FHIR_STORE_VERSION"
      "streamConfigs": [
        {
          "bigqueryDestination": {
            "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID",
            "schemaConfig": {
              "schemaType": "ANALYTICS"
            }
          }
        }
      ]
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Quindi, esegui questo comando per inviare la richiesta REST:

    $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

    Explorer API

    Copia il corpo della richiesta e apri la pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Esplora API. Puoi interagire con questo strumento per inviare richieste. Incolla il corpo della richiesta in questo strumento, compila tutti gli altri campi obbligatori e fai clic su Esegui.

    Dovresti ricevere una risposta JSON simile alla seguente:

  2. Crea una risorsa Patient nel secondo datastore FHIR:

    REST

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo progetto Google Cloud
    • LOCATION: la posizione del set di dati principale
    • DATASET_ID: il set di dati principale dell'archivio FHIR
    • SECOND_FHIR_STORE_ID: il secondo ID datastore FHIR

    Corpo JSON della richiesta:

    {
      "name": [
        {
          "use": "official",
          "family": "Lee",
          "given": [
            "Alex"
          ]
        }
      ],
      "gender": "male",
      "birthDate": "1990-01-01",
      "resourceType": "Patient"
    }
    

    Per inviare la richiesta, scegli una delle seguenti opzioni:

    curl

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    cat > request.json << 'EOF'
    {
      "name": [
        {
          "use": "official",
          "family": "Lee",
          "given": [
            "Alex"
          ]
        }
      ],
      "gender": "male",
      "birthDate": "1990-01-01",
      "resourceType": "Patient"
    }
    EOF

    Quindi, esegui il seguente comando per inviare la richiesta REST:

    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

    Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

    @'
    {
      "name": [
        {
          "use": "official",
          "family": "Lee",
          "given": [
            "Alex"
          ]
        }
      ],
      "gender": "male",
      "birthDate": "1990-01-01",
      "resourceType": "Patient"
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Quindi, esegui il seguente comando per inviare la richiesta REST:

    $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

    Dovresti ricevere una risposta JSON simile alla seguente:

  3. Esegui una query sulla tabella BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient per verificare il numero di risorse Patient nella tabella BigQuery:

    bq query \
       --project_id=BIGQUERY_PROJECT_ID \
       --use_legacy_sql=false \
       'SELECT COUNT(*) FROM `BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient`'

    Durante il flusso di dati sulla nuova risorsa Paziente, BigQuery ha utilizzato tabella Patient esistente nel set di dati BigQuery. La query restituisce il seguente risultato, che mostra che nella tabella BigQuery sono presenti 5 record di risorse per i pazienti. Consulta Esportare le risorse FHIR esistenti in BigQuery per una spiegazione del motivo per cui la tabella contiene 5 risorse anziché 4.

    +-----+
    | f0_ |
    +-----+
    |   5 |
    +-----+
    
  4. Esegui questo comando per eseguire una query sulla vista:

    bq query \
       --project_id=BIGQUERY_PROJECT_ID \
       --use_legacy_sql=false \
       'SELECT COUNT(*) FROM `BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.PatientView`'

    La query restituisce il seguente risultato, che mostra che sono presenti 4 risorse pazienti nel primo e secondo datastore FHIR combinati e nella tabella BigQuery:

    +-----+
    | f0_ |
    +-----+
    |   4 |
    +-----+
    

Esegui la pulizia

Se hai creato un nuovo progetto per questo tutorial, segui i passaggi descritti in Eliminare il progetto. Per eliminare solo le risorse dell'API Cloud Healthcare e di BigQuery, completa i passaggi descritti in Eliminare il set di dati dell'API Cloud Healthcare e Eliminare il set di dati BigQuery.

Elimina il progetto

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Elimina il set di dati dell'API Cloud Healthcare

Se non hai più bisogno del set di dati dell'API Cloud Healthcare creato in questo tutorial, puoi eliminarlo. L'eliminazione di un set di dati è definitiva ed elimina permanentemente tutti gli archivi FHIR al suo interno.

  1. Per eliminare un set di dati, utilizza il comando gcloud healthcare datasets delete:

    gcloud healthcare datasets delete DATASET_ID \
    --location=LOCATION \
    --project=PROJECT_ID

    Sostituisci quanto segue:

    • DATASET_ID: il set di dati dell'API Cloud Healthcare
    • LOCATION: la posizione del set di dati
    • PROJECT_ID: l'ID del tuo progetto Google Cloud
  2. Per confermare, digita Y.

L'output è il seguente:

Deleted dataset [DATASET_ID].

Elimina il set di dati BigQuery

Se non hai più bisogno del set di dati BigQuery creato in questo tutorial, puoi eliminare li annotino. L'eliminazione di un set di dati è definitiva ed elimina permanentemente il set di dati e tutte le tabelle al suo interno.

  1. Rimuovi BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID set di dati eseguendo il comando bq rm:

    bq rm --recursive=true BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID

    Il flag --recursive elimina tutte le tabelle nel set di dati, inclusa la tabella Patient.

  2. Per confermare, digita Y.

Passaggi successivi