Exporter des ressources FHIR vers BigQuery

Cette page explique comment exporter des ressources FHIR vers BigQuery à des fins d'exploration et d'analyse. L'opération d'exportation génère une table BigQuery pour chaque type de ressource FHIR dans le store FHIR.

Pour améliorer les performances des requêtes et réduire les coûts, vous pouvez configurer des flux BigQuery dans des tables partitionnées. Pour obtenir des instructions, consultez la page Exporter des ressources FHIR vers des tables partitionnées.

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.

Exporter des ressources FHIR

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

Lorsque vous définissez la destination BigQuery, utilisez l'URI complet, comme suit :

bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID

Le comportement de l'opération d'exportation peut varier en fonction des éléments suivants :

  • Indique si la table de destination existe déjà.
  • Si vous définissez le champ force.
  • 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 :

  • Si la table de destination existe déjà et que le champ force est défini sur true, l'opération d'exportation écrase la table existante.
  • Si la table de destination existe déjà et que le champ force est défini sur false, une erreur se produit.
  • Si la table de destination n'existe pas déjà, l'opération d'exportation crée une table, que vous définissiez ou non le champ force.
  • Lorsque vous utilisez WriteDisposition, si la table de destination existe déjà et qu'elle est vide, l'opération d'exportation se termine avec succès au lieu de renvoyer une erreur.

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

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 store FHIR contenant les données que vous exportez.

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

  4. Sur la page Export FHIR resources (Exporter les ressources FHIR) qui s'affiche, recherchez la section Select a destination (Sélectionner une destination). Sélectionnez Table BigQuery.

  5. Dans la section Disposition en é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'exportez 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.
    • Effacez toutes les données existantes dans les 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 de l'exportation FHIR, cliquez sur Parcourir pour sélectionner le projet et l'ensemble de données BigQuery.

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

    • Données analytiques : Schéma basé sur le document SQL sur FHIR. Étant donné que BigQuery n'accepte 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 une prise en charge supplémentaire des éléments suivants: Le schéma Analytics V2 occupe 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 structure récursive pour définir la profondeur de toutes les structures récursives du 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 dans lequel vous exportez des ressources FHIR
    • SCHEMA_TYPE: valeur de SchemaType. Utilisez l'une des valeurs suivantes :
      • analytics : schéma basé sur le document SQL on FHIR (SQL sur FHIR). Étant donné que BigQuery n'accepte 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 une prise en charge supplémentaire des éléments suivants :

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

    • WRITE_DISPOSITION: valeur de WriteDisposition. Utilisez l'une des valeurs suivantes :
      • write-empty. N'exportez 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 : ajouter des 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 exporter uniquement 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 un délai spécifique. Spécifiez la seconde heure 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 affiche 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 gcloud healthcare operations describe et indiquez le 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, 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 dans lequel vous exportez des ressources FHIR
    • SCHEMA_TYPE: valeur de SchemaType. Utilisez l'une des valeurs suivantes :
      • ANALYTICS : schéma basé sur le document SQL on FHIR (SQL sur FHIR). Étant donné que BigQuery n'accepte 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 une prise en charge supplémentaire des éléments suivants :

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

        .
    • WRITE_DISPOSITION: valeur de WriteDisposition. Utilisez l'une des valeurs suivantes :
      • WRITE_EMPTY. N'exportez 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 : ajouter des 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 exporter uniquement 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 un délai spécifique. Spécifiez la seconde heure 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

    APIs 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, 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

    APIs 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 store FHIR.

Les tables partitionnées fonctionnent comme les tables partitionnées par unité de temps 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 partitionne les tables par heure, par jour, par mois ou par année à l'aide de la colonne lastUpdated.

Pour obtenir des recommandations sur le choix de la précision des partitions, consultez la section Sélectionner un partitionnement quotidien, horaire, mensuel ou annuel.

Vous ne pouvez pas convertir des tables BigQuery existantes non partitionnées en tables partitionnées. Si vous exportez les modifications apportées aux ressources patient vers une table Patients non partitionnée, puis créez un magasin FHIR avec partitionnement de table qui exporte les données 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 store FHIR existante, vous pouvez toujours l'exporter vers des tables non partitionnées existantes. Toutefois, le partitionnement ne prendra effet que sur les 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, 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 dans lequel vous exportez des ressources FHIR
    • SCHEMA_TYPE: valeur de SchemaType. Utilisez l'une des valeurs suivantes :
      • ANALYTICS : schéma basé sur le document SQL on FHIR (SQL sur FHIR). Étant donné que BigQuery n'accepte 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 une prise en charge supplémentaire des éléments suivants :

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

        .
    • TIME_PARTITION_TYPE: précision avec laquelle 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: partitionner les données par année
    • WRITE_DISPOSITION: valeur de WriteDisposition. Utilisez l'une des valeurs suivantes :
      • WRITE_EMPTY: n'exporte les données que si la table BigQuery est vide.
      • WRITE_TRUNCATE: efface toutes les données existantes de la table BigQuery avant d'écrire les instances DICOM.
      • WRITE_APPEND: permet d'ajouter des 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

    APIs 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, 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

    APIs 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 lors de l'interrogation de tables partitionnées, filtrez par unité de temps à l'aide de la clause WHERE.

Par exemple, supposons que vous définissiez l'énumération PartitionType sur DAY. Pour interroger une table Patients afin de connaître 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'

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 la colonne NULLABLE en 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 déjà ANALYTICS_V2, il se peut qu'il y ait 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 situé après le dernier caractère / des URL d'extension. Si une URL d'extension se termine par une valeur telle que /resource_field name, un conflit peut survenir.

Pour éviter que cette erreur ne se reproduise, n'utilisez pas d'extensions si leur nom de champ est identique à celui des champs de ressources que vous remplissez.

Étapes suivantes