Esporta in blocco le risorse FHIR in BigQuery

Questa pagina descrive come esportare in batch le risorse FHIR in BigQuery ai fini dell'approfondimento e dell'analisi. L'operazione di esportazione crea una tabella BigQuery per ogni tipo di risorsa FHIR nell'archivio FHIR.

Per migliorare le prestazioni delle query e ridurre i costi, valuta la possibilità di esportare le risorse FHIR in tabelle partizionate. Per istruzioni, vedi Esportare le risorse FHIR in tabelle partizionate.

Se esporti le risorse FHIR in base a una pianificazione, valuta la possibilità di esportare i dati in modo incrementale. Per istruzioni, vedi Esportazioni incrementali.

Impostazione delle autorizzazioni BigQuery

Prima di esportare le risorse FHIR in BigQuery, devi concedere autorizzazioni aggiuntive all'account di servizio dell'agente di servizio Cloud Healthcare. Per ulteriori informazioni, consulta Autorizzazioni BigQuery per gli archivi FHIR.

Comprendere il comportamento di esportazione

Il comportamento dell'operazione di esportazione dipende da quanto segue:

  • Indica se la tabella di destinazione esiste.
  • Se hai impostato il campo force.
  • Se specifichi un'enumerazione in WriteDisposition. Se specifichi un'enumerazione, non impostare il campo force.

Il comportamento in ogni caso è il seguente:

  • La tabella di destinazione esiste e force è impostato su true: l'operazione di esportazione sovrascrive la tabella esistente
  • La tabella di destinazione esiste e force è impostato su false: si verifica un errore
  • La tabella di destinazione non esiste: l'operazione di esportazione crea una nuova tabella, indipendentemente dal fatto che tu specifichi il campo force
  • La tabella di destinazione esiste e hai impostato WriteDisposition su WRITE_TRUNCATE o WRITE_APPEND: l'operazione di esportazione viene eseguita correttamente anziché restituire un errore

L'operazione genera una tabella BigQuery per ogni tipo di risorsa nell'archivio FHIR.

Esporta in batch le risorse FHIR

Gli esempi riportati di seguito mostrano come esportare le risorse FHIR in una tabella BigQuery.

Quando specifichi la destinazione BigQuery, utilizza l'URI completo:

bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID

Console

Per esportare le risorse FHIR in BigQuery utilizzando la consoleGoogle Cloud , completa i seguenti passaggi:

  1. Nella console Google Cloud , vai alla pagina Set di dati.

    Vai a Set di dati

  2. Fai clic sul set di dati che contiene l'archivio FHIR con i dati che stai esportando.

  3. Nella stessa riga dell'archivio FHIR, apri l'elenco Azioni e seleziona Esporta.

  4. Nella pagina Esporta risorse FHIR visualizzata, individua la sezione Seleziona una destinazione. Seleziona Tabella BigQuery.

  5. Nella sezione Disposizione di scrittura della tabella di destinazione, seleziona una delle seguenti opzioni per determinare il comportamento dell'operazione di esportazione:

    • Esporta i dati solo se le tabelle di destinazione sono vuote: questa opzione equivale a selezionare l'enumerazione WRITE_EMPTY in WriteDisposition.
    • Aggiungi i dati alle tabelle di destinazione: questa opzione equivale a selezionare l'enum WRITE_APPEND in WriteDisposition.
    • Cancella tutti i dati esistenti nelle tabelle di destinazione prima di scrivere le risorse FHIR: questa opzione equivale a selezionare l'enumerazione WRITE_TRUNCATE in WriteDisposition.
  6. Nella sezione Configurazione dell'esportazione FHIR, fai clic su Sfoglia per selezionare il progetto e il set di dati BigQuery.

  7. Nel menu a discesa Tipo di schema, seleziona lo schema di output per la tabella BigQuery. Sono disponibili i seguenti schemi:

    • Analytics. Uno schema basato sul documento SQL su FHIR. Poiché BigQuery consente solo 10.000 colonne per tabella, gli schemi non vengono generati per i campi Parameters.parameter.resource, Bundle.entry.resource e Bundle.entry.response.outcome.
    • Analytics V2. Uno schema simile a quello di Analytics, con supporto aggiuntivo per quanto segue: Lo schema Analytics V2 utilizza più spazio nella tabella di destinazione rispetto allo schema Analytics.

  8. Seleziona un livello di profondità nel cursore Profondità struttura ricorrente per impostare la profondità di tutte le strutture ricorsive nello schema di output. Per impostazione predefinita, il valore ricorsivo è 2.

    Per ulteriori informazioni, vedi recursiveStructureDepth.

  9. Fai clic su Esporta per esportare le risorse FHIR in BigQuery.

  10. Per monitorare lo stato dell'operazione, fai clic sulla scheda Operazioni. Al termine dell'operazione, vengono visualizzate le seguenti indicazioni:
    • La sezione Stato operazione a lunga esecuzione è contrassegnata da un segno di spunta verde sotto l'intestazione Ok.
    • La sezione Panoramica presenta un segno di spunta verde e un indicatore Ok nella stessa riga dell'ID operazione.
    Se si verificano errori, fai clic su Azioni, quindi su Visualizza dettagli in Cloud Logging.

gcloud

Per esportare le risorse FHIR in BigQuery, esegui il comando gcloud healthcare fhir-stores export bq.

  1. Esporta le risorse FHIR.

    Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • LOCATION: la posizione del set di dati
    • DATASET_ID: il set di dati padre dell'archivio FHIR
    • FHIR_STORE_ID: l'ID datastore FHIR
    • BIGQUERY_DATASET_ID: il nome del set di dati BigQuery esistente in cui esporti le risorse FHIR
    • SCHEMA_TYPE: un valore per SchemaType. Utilizza uno dei seguenti valori:
      • analytics. Uno schema basato sul documento SQL su FHIR. Poiché BigQuery consente solo 10.000 colonne per tabella, gli schemi non vengono generati per i campi Parameters.parameter.resource, Bundle.entry.resource e Bundle.entry.response.outcome.
      • analytics_v2. Uno schema simile a analytics con supporto aggiuntivo per quanto segue:

        analytics-v2 utilizza più spazio nella tabella di destinazione rispetto a analytics.

    • WRITE_DISPOSITION: un valore per WriteDisposition. Utilizza uno dei seguenti valori:
      • write-empty. Esporta i dati solo se le tabelle BigQuery di destinazione sono vuote.
      • write-truncate. Cancella tutti i dati esistenti nelle tabelle BigQuery prima di scrivere le risorse FHIR.
      • write-append. Aggiungi dati alle tabelle BigQuery di destinazione.
    • FHIR_RESOURCE_TYPE: un campo facoltativo. Specifica uno o più tipi di risorse FHIR separati da virgole per esportare solo le risorse FHIR di questi tipi.
    • SINCE_TIMESTAMP: un campo facoltativo. Specifica un valore nel formato YYYY-MM-DDThh:mm:ss.sss+zz:zz per esportare solo le risorse FHIR aggiornate dopo un'ora specifica. Specifica l'ora al secondo e includi un fuso orario. Ad esempio, 2015-02-07T13:28:17.239+02:00 e 2017-01-01T00:00:00Z sono orari validi.

    Esegui questo comando:

    Linux, macOS o Cloud Shell

    gcloud healthcare fhir-stores export bq FHIR_STORE_ID \
      --location=LOCATION \
      --dataset=DATASET_ID \
      --bq-dataset=bq://PROJECT_ID.BIGQUERY_DATASET_ID \
      --schema-type=SCHEMA_TYPE \
      --write-disposition=WRITE_DISPOSITION \
      --resource-type=FHIR_RESOURCE_TYPE \
      --since=SINCE_TIMESTAMP

    Windows (PowerShell)

    gcloud healthcare fhir-stores export bq FHIR_STORE_ID `
      --location=LOCATION `
      --dataset=DATASET_ID `
      --bq-dataset=bq://PROJECT_ID.BIGQUERY_DATASET_ID `
      --schema-type=SCHEMA_TYPE `
      --write-disposition=WRITE_DISPOSITION `
      --resource-type=FHIR_RESOURCE_TYPE `
      --since=SINCE_TIMESTAMP

    Windows (cmd.exe)

    gcloud healthcare fhir-stores export bq FHIR_STORE_ID ^
      --location=LOCATION ^
      --dataset=DATASET_ID ^
      --bq-dataset=bq://PROJECT_ID.BIGQUERY_DATASET_ID ^
      --schema-type=SCHEMA_TYPE ^
      --write-disposition=WRITE_DISPOSITION ^
      --resource-type=FHIR_RESOURCE_TYPE ^
      --since=SINCE_TIMESTAMP
    La risposta è la seguente. La risposta contiene un identificatore per un'operazione a lunga esecuzione. Le operazioni a lunga esecuzione vengono restituite quando le chiamate ai metodi potrebbero richiedere un tempo considerevole per essere completate. Il comando esegue il polling dell'operazione a lunga esecuzione, quindi stampa il nome dell'operazione nel campo name al termine dell'esportazione. Prendi nota del valore di OPERATION_ID. Ti servirà nel passaggio successivo.

    Risposta

    Request issued for: [FHIR_STORE_ID]
    Waiting for operation [projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID] to complete...⠏
    name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID
    

  2. Per visualizzare ulteriori dettagli sull'operazione, esegui gcloud healthcare operations describe e fornisci OPERATION_ID dalla risposta.

    Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • DATASET_ID: l'ID set di dati
    • LOCATION: la posizione del set di dati
    • OPERATION_ID: l'ID restituito dall'operazione a lunga esecuzione

    Esegui questo comando:

    Linux, macOS o Cloud Shell

    gcloud healthcare operations describe OPERATION_ID \
        --project=PROJECT_ID \
        --dataset=DATASET_ID \
        --location=LOCATION

    Windows (PowerShell)

    gcloud healthcare operations describe OPERATION_ID `
        --project=PROJECT_ID `
        --dataset=DATASET_ID `
        --location=LOCATION

    Windows (cmd.exe)

    gcloud healthcare operations describe OPERATION_ID ^
        --project=PROJECT_ID ^
        --dataset=DATASET_ID ^
        --location=LOCATION

    Dovresti ricevere una risposta simile alla seguente:

    Risposta

    done: true
    // If there were any errors, an `error` field displays instead of a `response` field.
    // See Troubleshooting long-running operations for a list of response codes.
    error: ERROR
      code: ERROR_CODE
      message: DESCRIPTION
    metadata:
      '@type': 'type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata'
      apiMethodName: 'google.cloud.healthcare.v1.fhir.FhirStoreService.ExportResources_bq'
      counter:
        success: 'SUCCESS_COUNT'
        // If there were any failures, they display in the `failure` field.
        failure: 'FAILURE_COUNT'
      createTime: 'YYYY-MM-DDTHH:MM:SS+ZZ:ZZ'
      endTime: 'YYYY-MM-DDTHH:MM:SS+ZZ:ZZ'
      logsUrl: https://console.cloud.google.com/CLOUD_LOGGING_URL
    name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID
    // The `response` field only displays if there were no errors.
    response:
      '@type': 'type.googleapis.com/google.cloud.healthcare.v1.fhir.ExportResourcesResponse'
    

REST

Per esportare le risorse FHIR in BigQuery, utilizza il metodo projects.locations.datasets.fhirStores.export.

  1. Esporta le risorse FHIR:

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

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • LOCATION: la posizione del set di dati
    • DATASET_ID: il set di dati padre dell'archivio FHIR
    • FHIR_STORE_ID: l'ID datastore FHIR
    • BIGQUERY_DATASET_ID: il nome del set di dati BigQuery esistente in cui stai esportando le risorse FHIR
    • SCHEMA_TYPE: un valore per SchemaType. Utilizza uno dei seguenti valori:
      • ANALYTICS. Uno schema basato sul documento SQL su FHIR. Poiché BigQuery consente solo 10.000 colonne per tabella, gli schemi non vengono generati per i campi Parameters.parameter.resource, Bundle.entry.resource e Bundle.entry.response.outcome.
      • ANALYTICS_V2. Uno schema simile a ANALYTICS con supporto aggiuntivo per quanto segue:

        ANALYTICS_V2 utilizza più spazio nella tabella di destinazione rispetto a ANALYTICS

        .
    • WRITE_DISPOSITION: un valore per WriteDisposition. Utilizza uno dei seguenti valori:
      • WRITE_EMPTY. Esporta i dati solo se le tabelle BigQuery di destinazione sono vuote.
      • WRITE_TRUNCATE. Cancella tutti i dati esistenti nelle tabelle BigQuery prima di scrivere le risorse FHIR.
      • WRITE_APPEND. Aggiungi dati alle tabelle BigQuery di destinazione.
    • FHIR_RESOURCE_TYPE: un campo facoltativo. Specifica uno o più tipi di risorse FHIR separati da virgole per esportare solo le risorse FHIR di questi tipi.
    • SINCE_TIMESTAMP: un campo facoltativo. Specifica un valore nel formato YYYY-MM-DDThh:mm:ss.sss+zz:zz per esportare solo le risorse FHIR aggiornate dopo un'ora specifica. Specifica l'ora al secondo e includi un fuso orario. Ad esempio, 2015-02-07T13:28:17.239+02:00 e 2017-01-01T00:00:00Z sono orari validi.

    Corpo JSON della richiesta:

    {
      "bigqueryDestination": {
        "datasetUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID",
        "schemaConfig": {
          "schemaType": "SCHEMA_TYPE",
        },
        "writeDisposition": "WRITE_DISPOSITION"
      },
      "_type": "FHIR_RESOURCE_TYPE",
      "_since": "SINCE_TIMESTAMP"
    }
    

    Per inviare la richiesta, scegli una di queste 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'
    {
      "bigqueryDestination": {
        "datasetUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID",
        "schemaConfig": {
          "schemaType": "SCHEMA_TYPE",
        },
        "writeDisposition": "WRITE_DISPOSITION"
      },
      "_type": "FHIR_RESOURCE_TYPE",
      "_since": "SINCE_TIMESTAMP"
    }
    EOF

    Quindi, esegui questo 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/FHIR_STORE_ID:export"

    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:

    @'
    {
      "bigqueryDestination": {
        "datasetUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID",
        "schemaConfig": {
          "schemaType": "SCHEMA_TYPE",
        },
        "writeDisposition": "WRITE_DISPOSITION"
      },
      "_type": "FHIR_RESOURCE_TYPE",
      "_since": "SINCE_TIMESTAMP"
    }
    '@  | 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/FHIR_STORE_ID:export" | 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.

    L'output è il seguente. La risposta contiene un identificatore per un'operazione a lunga esecuzione (LRO). Le operazioni a lunga esecuzione vengono restituite quando le chiamate ai metodi potrebbero richiedere più tempo per essere completate. Prendi nota del valore di OPERATION_ID. Ti servirà nel passaggio successivo.

  2. Utilizza il metodo projects.locations.datasets.operations.get per ottenere lo stato dell'operazione a lunga esecuzione.

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

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • DATASET_ID: l'ID set di dati
    • LOCATION: la posizione del set di dati
    • OPERATION_ID: l'ID restituito dall'operazione a lunga esecuzione

    Per inviare la richiesta, scegli una di queste 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/operations/OPERATION_ID"

    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/operations/OPERATION_ID" | Select-Object -Expand Content

    Explorer API

    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. Completa i campi obbligatori e fai clic su Esegui.

    L'output è il seguente. Quando la risposta contiene "done": true, l'operazione a lunga esecuzione è terminata.

Esportare risorse FHIR in tabelle partizionate

Per esportare le risorse FHIR nelle tabelle partizionate BigQuery, imposta l'enumerazione TimePartitioning nel campo lastUpdatedPartitionConfig del tuo archivio FHIR.

Le tabelle partizionate funzionano come le tabelle partizionate in base all'unità di tempo di BigQuery. Le tabelle partizionate hanno una colonna aggiuntiva denominata lastUpdated, che è un duplicato della colonna meta.lastUpdated generata dal campo meta.lastUpdated in una risorsa FHIR. BigQuery utilizza la colonna lastUpdated per partizionare le tabelle per ora, giorno, mese o anno.

Consulta Selezionare il partizionamento giornaliero, orario, mensile o annuale per suggerimenti su come selezionare una granularità di partizionamento.

Non puoi convertire le tabelle BigQuery esistenti e non partizionate in tabelle partizionate. Se esporti le modifiche alla risorsa Patient in una tabella Patients non partizionata e in un secondo momento crei un nuovo datastore FHIR con il partizionamento della tabella che esegue l'esportazione nello stesso set di dati BigQuery, l'API Cloud Healthcare esporta comunque i dati nella tabella Patients non partizionata. Per iniziare a utilizzare una tabella partizionata, elimina la tabella Patients esistente o utilizza un altro set di dati BigQuery.

Se aggiungi il partizionamento a una configurazione di archivio FHIR esistente, puoi comunque esportare nelle tabelle non partizionate esistenti. Tuttavia, il partizionamento avrà effetto solo sulle nuove tabelle.

Gli esempi riportati di seguito mostrano come esportare le risorse FHIR nelle tabelle partizionate BigQuery.

Console

La console Google Cloud e gcloud CLI non supportano questa azione. Utilizza invece curl, PowerShell o la tua lingua preferita.

gcloud

La console Google Cloud e gcloud CLI non supportano questa azione. Utilizza invece curl, PowerShell o la tua lingua preferita.

REST

Per esportare le risorse FHIR nelle tabelle partizionate BigQuery, utilizza il metodo projects.locations.datasets.fhirStores.export.

  1. Esporta le risorse FHIR:

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

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • LOCATION: la posizione del set di dati
    • DATASET_ID: il set di dati padre dell'archivio FHIR
    • FHIR_STORE_ID: l'ID datastore FHIR
    • BIGQUERY_DATASET_ID: il nome del set di dati BigQuery esistente in cui stai esportando le risorse FHIR
    • SCHEMA_TYPE: un valore per SchemaType. Utilizza uno dei seguenti valori:
      • ANALYTICS. Uno schema basato sul documento SQL on FHIR. Poiché BigQuery consente solo 10.000 colonne per tabella, gli schemi non vengono generati per i campi Parameters.parameter.resource, Bundle.entry.resource e Bundle.entry.response.outcome.
      • ANALYTICS_V2. Uno schema simile a ANALYTICS con supporto aggiuntivo per quanto segue:

        ANALYTICS_V2 utilizza più spazio nella tabella di destinazione rispetto a ANALYTICS

        .
    • TIME_PARTITION_TYPE: la granularità con cui partizionare le risorse FHIR esportate. Utilizza uno dei seguenti valori:
      • HOUR: partiziona i dati per ora
      • DAY: partiziona i dati per giorno
      • MONTH: partiziona i dati per mese
      • YEAR: partiziona i dati per anno
    • WRITE_DISPOSITION: un valore per WriteDisposition. Utilizza uno dei seguenti valori:
      • WRITE_EMPTY: esporta i dati solo se la tabella BigQuery è vuota.
      • WRITE_TRUNCATE: cancella tutti i dati esistenti nella tabella BigQuery prima di scrivere le istanze DICOM.
      • WRITE_APPEND: aggiungi dati alla tabella BigQuery.

    Corpo JSON della richiesta:

    {
      "bigqueryDestination": {
        "datasetUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID",
        "schemaConfig": {
          "schemaType": "SCHEMA_TYPE",
          "lastUpdatedPartitionConfig": {
            "type": "TIME_PARTITION_TYPE"
          }
        },
        "writeDisposition": "WRITE_DISPOSITION"
      }
    }
    

    Per inviare la richiesta, scegli una di queste 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'
    {
      "bigqueryDestination": {
        "datasetUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID",
        "schemaConfig": {
          "schemaType": "SCHEMA_TYPE",
          "lastUpdatedPartitionConfig": {
            "type": "TIME_PARTITION_TYPE"
          }
        },
        "writeDisposition": "WRITE_DISPOSITION"
      }
    }
    EOF

    Quindi, esegui questo 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/FHIR_STORE_ID:export"

    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:

    @'
    {
      "bigqueryDestination": {
        "datasetUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID",
        "schemaConfig": {
          "schemaType": "SCHEMA_TYPE",
          "lastUpdatedPartitionConfig": {
            "type": "TIME_PARTITION_TYPE"
          }
        },
        "writeDisposition": "WRITE_DISPOSITION"
      }
    }
    '@  | 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/FHIR_STORE_ID:export" | 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:

  2. Utilizza il metodo projects.locations.datasets.operations.get per ottenere lo stato dell'operazione a lunga esecuzione.

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

    • PROJECT_ID: l'ID del tuo Google Cloud progetto
    • DATASET_ID: l'ID set di dati
    • LOCATION: la posizione del set di dati
    • OPERATION_ID: l'ID restituito dall'operazione a lunga esecuzione

    Per inviare la richiesta, scegli una di queste 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/operations/OPERATION_ID"

    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/operations/OPERATION_ID" | Select-Object -Expand Content

    Explorer API

    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. Completa i campi obbligatori e fai clic su Esegui.

    L'output è il seguente. Quando la risposta contiene "done": true, l'operazione a lunga esecuzione è terminata.

Eseguire una query su una tabella partizionata

Per ridurre i costi delle query quando esegui query sulle tabelle partizionate, utilizza la clausola WHERE per filtrare in base alle unità di tempo.

Ad esempio, supponiamo di impostare l'enumerazione PartitionType su DAY. Per eseguire una query su una tabella Patients per le risorse Paziente aggiornate in una data specifica, esegui la seguente query:

SELECT * FROM `PROJECT_ID.BIGQUERY_DATASET.Patients`
  WHERE DATE(lastUpdated) = 'YYYY-MM-DD'

Esportazioni incrementali

Puoi specificare un timestamp per esportare solo le risorse FHIR aggiunte al datastore FHIR dopo un'esportazione riuscita precedente. In questo modo, le prestazioni migliorano ed eviti il costo di riesportazione dell'intero archivio FHIR, garantendo al contempo che i dati esportati siano sempre aggiornati.

Quando chiami fhirStores.export, specifica il timestamp nel campo _since.

Eseguire query e analizzare i dati FHIR in BigQuery

Dopo aver esportato le risorse FHIR in BigQuery, consulta la soluzione Analisi dei dati FHIR in BigQuery per informazioni su come eseguire query e analizzare i dati esportati. La soluzione utilizza il set di dati pubblico Synthea™ Generated Synthetic Data in FHIR, che ospita oltre 1 milione di record di pazienti sintetici generati nei formati Synthea™ e FHIR.

Risolvere i problemi relativi alle richieste di esportazione FHIR

Se si verificano errori durante una richiesta di esportazione FHIR, questi vengono registrati in Cloud Logging. Per ulteriori informazioni, consulta Visualizzazione dei log degli errori su Cloud Logging.

Se l'intera operazione restituisce un errore, consulta la sezione Risoluzione dei problemi relativi alle operazioni a lunga esecuzione.

Impossibile convertire la colonna da NULLABLE a REPEATED

Questo errore è causato da un'estensione ripetuta. Per risolvere questo errore, utilizza il tipo di schema ANALYTICS_V2. Se utilizzi ANALYTICS_V2, potresti riscontrare un conflitto tra due estensioni o tra un'estensione e un altro campo.

I nomi delle colonne vengono generati dal testo dopo l'ultimo carattere / negli URL delle estensioni. Se un URL dell'estensione termina con un valore come /resource_field name, può verificarsi un conflitto. \

Per evitare che questo errore si ripeta, non utilizzare le estensioni se i nomi dei campi sono uguali a quelli dei campi delle risorse che stai compilando.

Passaggi successivi