Exporter des ressources FHIR de manière groupée vers BigQuery

Cette page explique comment exporter des ressources FHIR de manière groupée vers BigQuery à des fins d'exploration et d'analyse. L'opération d'exportation crée une table BigQuery pour chaque type de ressource FHIR dans votre entrepôt FHIR.

Pour améliorer les performances des requêtes et réduire les coûts, envisagez d'exporter des ressources FHIR vers des tables partitionnées. Pour obtenir des instructions, consultez la section Exporter des ressources FHIR vers des tables partitionnées.

Si vous exportez des ressources FHIR de manière planifiée, envisagez d'exporter vos données de manière incrémentielle. Pour savoir comment procéder, consultez Exporter des données de manière incrémentielle.

Définir des autorisations BigQuery

Avant d'exporter des ressources FHIR vers BigQuery, vous devez accorder des autorisations supplémentaires au compte de service Agent de service Cloud Healthcare. Pour en savoir plus, consultez la section Autorisations BigQuery pour les datastores FHIR.

Comprendre le comportement d'exportation

Le comportement de l'opération d'exportation dépend des éléments suivants:

  • Indique si la table de destination existe.
  • Si vous avez défini le champ force.
  • Indique si vous spécifiez une énumération dans WriteDisposition. Si vous spécifiez une énumération, ne définissez pas le champ force.

Le comportement associé à chacun de ces cas est le suivant:

  • La table de destination existe et force est défini sur true: l'opération d'exportation écrase la table existante
  • La table de destination existe et force est défini sur false: une erreur se produit
  • La table de destination n'existe pas: l'opération d'exportation crée une table, que vous spécifiiez ou non le champ force.
  • La table de destination existe et vous définissez WriteDisposition sur WRITE_TRUNCATE ou WRITE_APPEND: l'opération d'exportation aboutit au lieu de renvoyer une erreur.

L'opération génère une table BigQuery pour chaque type de ressource dans le datastore FHIR.

Exporter des ressources FHIR par lot

Les exemples suivants montrent comment exporter des ressources FHIR vers une table BigQuery.

Lorsque vous spécifiez la destination BigQuery, utilisez l'URI complet:

bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID

Console

Pour exporter des ressources FHIR vers BigQuery à l'aide de la console Google Cloud, procédez comme suit:

  1. Dans la console Google Cloud, accédez à la page Ensembles de données.

    Accéder à la page "Ensembles de données"

  2. Cliquez sur l'ensemble de données contenant le magasin FHIR dont vous exportez les données.

  3. Sur la même ligne que le magasin FHIR, ouvrez la liste Actions et sélectionnez Exporter.

  4. Sur la page Exporter des ressources FHIR qui s'affiche, recherchez la section Sélectionner une destination. Sélectionnez Table BigQuery.

  5. Dans la section Disposition d'écriture de la table de destination, sélectionnez l'une des options suivantes pour déterminer le comportement de l'opération d'exportation:

    • N'exporter les données que si les tables de destination sont vides: cela équivaut à sélectionner l'énumération WRITE_EMPTY dans WriteDisposition.
    • Ajouter des données aux tables de destination: cela équivaut à sélectionner l'énumération WRITE_APPEND dans WriteDisposition.
    • Effacer toutes les données existantes des tables de destination avant d'écrire les ressources FHIR: cela équivaut à sélectionner l'énumération WRITE_TRUNCATE dans WriteDisposition.
  6. Dans la section Configuration d'exportation FHIR, cliquez sur Parcourir pour sélectionner le projet et l'ensemble de données BigQuery.

  7. Dans le menu déroulant Type de schéma, sélectionnez le schéma de sortie pour la table BigQuery. Les schémas suivants sont disponibles:

    • Analytics. Un schéma basé sur le document SQL sur FHIR. BigQuery n'autorisant que 10 000 colonnes par table, les schémas ne sont pas générés pour les champs Parameters.parameter.resource, Bundle.entry.resource et Bundle.entry.response.outcome.
    • Analytics V2 Un schéma semblable au schéma Analytics, avec les éléments suivants: Le schéma Analytics V2 utilise plus d'espace dans la table de destination que le schéma Analytics.

  8. Sélectionnez un niveau de profondeur dans le curseur Profondeur de la structure récursive pour définir la profondeur de toutes les structures récursives dans le schéma de sortie. Par défaut, la valeur récursive est 2.

    Pour en savoir plus, consultez la page recursiveStructureDepth.

  9. Cliquez sur Exporter pour exporter les ressources FHIR vers BigQuery.

  10. Pour suivre l'état de l'opération, cliquez sur l'onglet Opérations. Une fois l'opération terminée, les indications suivantes s'affichent :
    • La section État de l'opération de longue durée est représentée par une coche verte sous l'en-tête OK.
    • La section Présentation comporte une coche verte et un indicateur OK sur la même ligne que l'ID de l'opération.
    Si vous rencontrez des erreurs, cliquez sur Actions, puis sur Afficher les détails dans Cloud Logging.

gcloud

Pour exporter des ressources FHIR vers BigQuery, exécutez la commande gcloud healthcare fhir-stores export bq.

  1. Exportez les ressources FHIR.

    Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

    • PROJECT_ID : ID de votre projet Google Cloud
    • LOCATION : emplacement de l'ensemble de données
    • DATASET_ID : ensemble de données parent du magasin FHIR.
    • FHIR_STORE_ID : ID du magasin FHIR.
    • BIGQUERY_DATASET_ID: nom de l'ensemble de données BigQuery existant vers lequel vous exportez les ressources FHIR
    • SCHEMA_TYPE: valeur pour SchemaType. Utilisez l'une des valeurs suivantes :
      • analytics : schéma basé sur le document SQL sur FHIR. BigQuery n'autorisant que 10 000 colonnes par table, les schémas ne sont pas générés pour les champs Parameters.parameter.resource, Bundle.entry.resource et Bundle.entry.response.outcome.
      • analytics_v2 : schéma semblable à analytics, avec prise en charge des éléments suivants :

        analytics-v2 occupe plus d'espace dans la table de destination que analytics.

    • WRITE_DISPOSITION: valeur pour WriteDisposition. Utilisez l'une des valeurs suivantes :
      • write-empty : n'exporter les données que si les tables BigQuery de destination sont vides
      • write-truncate : effacer toutes les données existantes des tables BigQuery avant d'écrire les ressources FHIR.
      • write-append : ajoutez les données aux tables BigQuery de destination.
    • FHIR_RESOURCE_TYPE: champ facultatif. Spécifiez un ou plusieurs types de ressources FHIR délimités par une virgule pour n'exporter que les ressources FHIR de ces types.
    • SINCE_TIMESTAMP: champ facultatif. Spécifiez une valeur au format YYYY-MM-DDThh:mm:ss.sss+zz:zz pour n'exporter que les ressources FHIR mises à jour après une heure spécifique. Spécifiez l'heure à la seconde près et incluez un fuseau horaire. Par exemple, 2015-02-07T13:28:17.239+02:00 et 2017-01-01T00:00:00Z sont des heures valides.

    Exécutez la commande suivante :

    Linux, macOS ou 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 réponse est la suivante. La réponse contient un identifiant pour une opération de longue durée. Les opérations de longue durée sont renvoyées lorsque les appels de méthode peuvent prendre un temps considérable. La commande interroge l'opération de longue durée, puis imprime le nom de l'opération dans le champ name une fois l'exportation terminée. Notez la valeur de OPERATION_ID. Vous en aurez besoin à l'étape suivante.

    Réponse

    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. Pour afficher plus de détails sur l'opération, exécutez la commande gcloud healthcare operations describe et fournissez la valeur OPERATION_ID de la réponse.

    Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

    • PROJECT_ID : ID de votre projet Google Cloud
    • DATASET_ID : ID de l'ensemble de données
    • LOCATION : emplacement de l'ensemble de données
    • OPERATION_ID : ID renvoyé par l'opération de longue durée

    Exécutez la commande suivante :

    Linux, macOS ou 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

    Vous devriez obtenir un résultat semblable à celui-ci :

    Réponse

    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

Pour exporter des ressources FHIR vers BigQuery, utilisez la méthode projects.locations.datasets.fhirStores.export.

  1. Exportez les ressources FHIR:

    Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

    • PROJECT_ID : ID de votre projet Google Cloud
    • LOCATION : emplacement de l'ensemble de données
    • DATASET_ID : ensemble de données parent du magasin FHIR.
    • FHIR_STORE_ID : ID du magasin FHIR.
    • BIGQUERY_DATASET_ID: nom de l'ensemble de données BigQuery existant vers lequel vous exportez les ressources FHIR
    • SCHEMA_TYPE: valeur pour SchemaType. Utilisez l'une des valeurs suivantes :
      • ANALYTICS : schéma basé sur le document SQL sur FHIR. BigQuery n'autorisant que 10 000 colonnes par table, les schémas ne sont pas générés pour les champs Parameters.parameter.resource, Bundle.entry.resource et Bundle.entry.response.outcome.
      • ANALYTICS_V2 : schéma semblable à ANALYTICS, avec prise en charge des éléments suivants :

        ANALYTICS_V2 occupe plus d'espace dans la table de destination que ANALYTICS

        .
    • WRITE_DISPOSITION: valeur pour WriteDisposition. Utilisez l'une des valeurs suivantes :
      • WRITE_EMPTY : n'exporter les données que si les tables BigQuery de destination sont vides
      • WRITE_TRUNCATE : effacez toutes les données existantes des tables BigQuery avant d'écrire les ressources FHIR.
      • WRITE_APPEND : ajoutez les données aux tables BigQuery de destination.
    • FHIR_RESOURCE_TYPE: champ facultatif. Spécifiez un ou plusieurs types de ressources FHIR séparés par une virgule pour n'exporter que les ressources FHIR de ces types.
    • SINCE_TIMESTAMP: champ facultatif. Spécifiez une valeur au format YYYY-MM-DDThh:mm:ss.sss+zz:zz pour n'exporter que les ressources FHIR mises à jour après une heure spécifique. Spécifiez l'heure à la seconde près et incluez un fuseau horaire. Par exemple, 2015-02-07T13:28:17.239+02:00 et 2017-01-01T00:00:00Z sont des heures valides.

    Corps JSON de la requête :

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

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json. Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

    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

    Exécutez ensuite la commande suivante pour envoyer votre requête 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

    Enregistrez le corps de la requête dans un fichier nommé request.json. Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

    @'
    {
      "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

    Exécutez ensuite la commande suivante pour envoyer votre requête 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

    API Explorer

    Copiez le corps de la requête et ouvrez la page de référence de la méthode. Le panneau APIs Explorer s'ouvre dans la partie droite de la page. Vous pouvez interagir avec cet outil pour envoyer des requêtes. Collez le corps de la requête dans cet outil, renseignez tous les champs obligatoires, puis cliquez sur Execute (Exécuter).

    Le résultat est le suivant. La réponse contient un identifiant pour une opération de longue durée (LRO). Les opérations de longue durée sont renvoyées lorsque les appels de méthode peuvent prendre davantage de temps. Notez la valeur de OPERATION_ID. Vous en aurez besoin à l'étape suivante.

  2. Utilisez la méthode projects.locations.datasets.operations.get pour obtenir l'état de l'opération de longue durée.

    Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

    • PROJECT_ID : ID de votre projet Google Cloud
    • DATASET_ID : ID de l'ensemble de données
    • LOCATION : emplacement de l'ensemble de données
    • OPERATION_ID : ID renvoyé par l'opération de longue durée

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Exécutez la commande suivante :

    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

    Exécutez la commande suivante :

    $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

    API Explorer

    Ouvrez la page de référence de la méthode. Le panneau APIs Explorer s'ouvre dans la partie droite de la page. Vous pouvez interagir avec cet outil pour envoyer des requêtes. Renseignez tous les champs obligatoires, puis cliquez sur Execute (Exécuter).

    Le résultat est le suivant. Lorsque la réponse contient "done": true, l'opération de longue durée est terminée.

Exporter des ressources FHIR vers des tables partitionnées

Pour exporter des ressources FHIR vers des tables partitionnées BigQuery, définissez l'énumération TimePartitioning dans le champ lastUpdatedPartitionConfig de votre entrepôt FHIR.

Les tables partitionnées fonctionnent comme les tables partitionnées par unité de temps de BigQuery. Les tables partitionnées comportent une colonne nommée lastUpdated, qui est un double de la colonne meta.lastUpdated générée à partir du champ meta.lastUpdated dans une ressource FHIR. BigQuery utilise la colonne lastUpdated pour partitionner les tables par heure, jour, mois ou année.

Consultez la section Sélectionner le partitionnement quotidien, horaire, mensuel ou annuel pour obtenir des recommandations sur la sélection d'une précision de partitionnement.

Vous ne pouvez pas convertir des tables BigQuery existantes non partitionnées en tables partitionnées. Si vous exportez les modifications des ressources patient vers une table Patients non partitionnée, puis créez ultérieurement un magasin FHIR avec un partitionnement de table qui exporte vers le même ensemble de données BigQuery, l'API Cloud Healthcare exporte toujours les données vers la table Patients non partitionnée. Pour commencer à utiliser une table partitionnée, supprimez la table Patients existante ou utilisez un autre ensemble de données BigQuery.

Si vous ajoutez un partitionnement à une configuration de magasin FHIR existante, vous pouvez toujours exporter vers des tables non partitionnées existantes. Toutefois, le partitionnement ne s'applique qu'aux nouvelles tables.

Les exemples suivants montrent comment exporter des ressources FHIR vers des tables partitionnées BigQuery.

Console

La console Google Cloud et gcloud CLI ne permettent pas d'effectuer cette opération. Utilisez plutôt curl, PowerShell ou le langage de votre choix.

gcloud

La console Google Cloud et gcloud CLI ne permettent pas d'effectuer cette opération. Utilisez plutôt curl, PowerShell ou le langage de votre choix.

REST

Pour exporter des ressources FHIR vers des tables partitionnées BigQuery, utilisez la méthode projects.locations.datasets.fhirStores.export.

  1. Exportez les ressources FHIR:

    Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

    • PROJECT_ID : ID de votre projet Google Cloud
    • LOCATION : emplacement de l'ensemble de données
    • DATASET_ID : ensemble de données parent du magasin FHIR.
    • FHIR_STORE_ID : ID du magasin FHIR.
    • BIGQUERY_DATASET_ID: nom de l'ensemble de données BigQuery existant vers lequel vous exportez les ressources FHIR
    • SCHEMA_TYPE: valeur pour SchemaType. Utilisez l'une des valeurs suivantes :
      • ANALYTICS : schéma basé sur le document SQL sur FHIR. BigQuery n'autorisant que 10 000 colonnes par table, les schémas ne sont pas générés pour les champs Parameters.parameter.resource, Bundle.entry.resource et Bundle.entry.response.outcome.
      • ANALYTICS_V2 : schéma semblable à ANALYTICS, avec prise en charge des éléments suivants :

        ANALYTICS_V2 utilise plus d'espace dans la table de destination que ANALYTICS

        .
    • TIME_PARTITION_TYPE: niveau de précision à utiliser pour partitionner les ressources FHIR exportées. Utilisez l'une des valeurs suivantes :
      • HOUR: partitionner les données par heure
      • DAY: partitionner les données par jour
      • MONTH: partitionner les données par mois
      • YEAR: partitionne les données par année.
    • WRITE_DISPOSITION: valeur pour WriteDisposition. Utilisez l'une des valeurs suivantes :
      • WRITE_EMPTY: n'exporter les données que si la table BigQuery est vide
      • WRITE_TRUNCATE: effacer toutes les données existantes de la table BigQuery avant d'écrire les instances DICOM.
      • WRITE_APPEND: ajouter les données à la table BigQuery.

    Corps JSON de la requête :

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

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json. Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

    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

    Exécutez ensuite la commande suivante pour envoyer votre requête 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

    Enregistrez le corps de la requête dans un fichier nommé request.json. Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

    @'
    {
      "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

    Exécutez ensuite la commande suivante pour envoyer votre requête 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

    API Explorer

    Copiez le corps de la requête et ouvrez la page de référence de la méthode. Le panneau APIs Explorer s'ouvre dans la partie droite de la page. Vous pouvez interagir avec cet outil pour envoyer des requêtes. Collez le corps de la requête dans cet outil, renseignez tous les champs obligatoires, puis cliquez sur Execute (Exécuter).

    Vous devriez recevoir une réponse JSON de ce type :

  2. Utilisez la méthode projects.locations.datasets.operations.get pour obtenir l'état de l'opération de longue durée.

    Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

    • PROJECT_ID : ID de votre projet Google Cloud
    • DATASET_ID : ID de l'ensemble de données
    • LOCATION : emplacement de l'ensemble de données
    • OPERATION_ID : ID renvoyé par l'opération de longue durée

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Exécutez la commande suivante :

    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

    Exécutez la commande suivante :

    $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

    API Explorer

    Ouvrez la page de référence de la méthode. Le panneau APIs Explorer s'ouvre dans la partie droite de la page. Vous pouvez interagir avec cet outil pour envoyer des requêtes. Renseignez tous les champs obligatoires, puis cliquez sur Execute (Exécuter).

    Le résultat est le suivant. Lorsque la réponse contient "done": true, l'opération de longue durée est terminée.

Interroger une table partitionnée

Pour réduire les coûts des requêtes lorsque vous interrogez des tables partitionnées, utilisez la clause WHERE pour filtrer par unités de temps.

Par exemple, supposons que vous définissiez l'énumération PartitionType sur DAY. Pour interroger une table Patients sur les ressources Patient mises à jour à une date spécifique, exécutez la requête suivante:

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

Exportations incrémentielles

Vous pouvez spécifier un code temporel pour n'exporter que les ressources FHIR ajoutées à votre magasin FHIR depuis une exportation précédente réussie. Cela améliore les performances et évite le coût de réexportation de l'ensemble du magasin FHIR, tout en vous assurant que vos données exportées sont toujours à jour.

Lorsque vous appelez fhirStores.export, spécifiez le code temporel dans le champ _since.

Interroger et analyser des données FHIR dans BigQuery

Après avoir exporté les ressources FHIR vers BigQuery, consultez la solution Analyser des données FHIR dans BigQuery pour en savoir plus sur l'interrogation et l'analyse des données exportées. La solution utilise l'ensemble de données public de données synthétiques générées Synthea™ dans FHIR, qui héberge plus d'un million d'enregistrements patient synthétiques générés aux formats Synthea™ et FHIR.

Résoudre les problèmes liés aux requêtes d'exportation FHIR

Si des erreurs se produisent lors d'une requête d'exportation FHIR, elles sont consignées dans Cloud Logging. Pour en savoir plus, consultez la section Afficher les journaux d'erreurs dans Cloud Logging.

Si l'ensemble de l'opération renvoie une erreur, consultez la section Résoudre les problèmes d'opérations de longue durée.

Impossible de convertir une colonne du mode NULLABLE au mode REPEATED

Cette erreur est due à une extension répétée. Pour résoudre cette erreur, utilisez le type de schéma ANALYTICS_V2. Si vous utilisez ANALYTICS_V2, vous risquez de rencontrer un conflit entre deux extensions ou entre une extension et un autre champ.

Les noms de colonnes sont générés à partir du texte qui suit le dernier caractère / dans les URL d'extension. Si une URL d'extension se termine par une valeur telle que /resource_field name, un conflit peut se produire. \

Pour éviter que cette erreur ne se reproduise, n'utilisez pas d'extensions si leurs noms de champ sont identiques à ceux des champs de ressources que vous renseignez.

Étape suivante