Exporter des métadonnées DICOM vers BigQuery

Cette page explique comment exporter des métadonnées DICOM vers BigQuery à des fins d'exploration et d'analyse. Pour en savoir plus sur le schéma BigQuery créé lors de l'exportation de métadonnées DICOM, consultez la page Comprendre le schéma DICOM BigQuery.

Définir des autorisations BigQuery

Avant d'exporter des métadonnées DICOM 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 magasins DICOM.

Exporter des métadonnées DICOM

Les exemples suivants montrent comment exporter des métadonnées DICOM vers une table BigQuery. Dans ces exemples, le magasin DICOM et la table BigQuery se trouvent dans le même projet. Pour exporter des métadonnées DICOM vers un autre projet, consultez Exporter des métadonnées DICOM vers un autre projet.

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 conditions suivantes :

  • Si la table de destination existe déjà
  • Si vous avez défini le champ force (à l'aide de l'API) ou l'option --overwrite-table (à l'aide de l'outil de ligne de commande gcloud)

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 ou si l'option --overwrite-table est spécifiée, 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 ou si l'option --overwrite-table n'est pas spécifiée, une erreur se produit.
  • Si la table de destination n'existe pas, une table est créée, que vous définissiez ou non le champ force ou l'option --overwrite-table.

Console

Pour exporter des métadonnées DICOM vers BigQuery, procédez comme suit :

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

    Accéder à la page Ensembles de données

  2. Cliquez sur l'ensemble de données pour lequel vous exportez des métadonnées DICOM.

  3. Dans la liste des magasins DICOM, choisissez Exporter dans la liste Actions.

    La page Exporter un magasin DICOM s'affiche.

  4. Sélectionnez Table BigQuery.

  5. Dans la liste Projet, sélectionnez le projet BigQuery.

  6. Dans la liste ID de l'ensemble de données, sélectionnez l'ensemble de données.

  7. Dans le champ Nom de la table, saisissez un nouveau nom de table.

    BigQuery vérifie chaque sélection pour s'assurer que la table de destination est valide.

  8. Cliquez sur Exporter pour exporter les métadonnées DICOM vers la destination définie dans BigQuery.

gcloud

L'exemple suivant fonctionne avec la version v1beta1 de l'API Cloud Healthcare.

Pour exporter des métadonnées DICOM vers BigQuery, exécutez la commande gcloud beta healthcare dicom-stores export bq. Spécifiez les informations suivantes :

  • Nom de l'ensemble de données parent
  • Le nom du magasin DICOM
  • Le nom d'un ensemble de données BigQuery existant
  • Le nom de la table BigQuery Le nom de la table ne peut contenir que des lettres (majuscules ou minuscules), des chiffres et des traits de soulignement.

L'exemple suivant montre la commande gcloud beta dicom-stores export bq.

gcloud beta healthcare dicom-stores export bq DICOM_STORE_ID \
  --dataset=DATASET_ID \
  --location=LOCATION \
  --bq-table=bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID \
  [--overwrite-table]

Une fois la commande exécutée, elle renvoie le nom de l'opération :

name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID

Pour afficher plus de détails sur l'opération, exécutez la commande gcloud beta healthcare operations describe en fournissant l'identifiant OPERATION_ID spécifié dans la réponse :

gcloud beta healthcare operations describe OPERATION_ID \
  --dataset=DATASET_ID 

Une fois l'opération terminée, la réponse inclut done: true.

done: true
metadata:
  '@type': type.googleapis.com/google.cloud.healthcare.v1beta1.OperationMetadata
  apiMethodName: google.cloud.healthcare.v1beta1.dicom.DicomService.ExportDicomData
  createTime: 'CREATE_TIME'
  endTime: 'END_TIME'
name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID
response:
  '@type': '...'

API

Pour exporter des métadonnées DICOM vers BigQuery, utilisez la méthode projects.locations.datasets.dicomStores.export.

Commande curl

Pour exporter des métadonnées DICOM, envoyez une requête POST et spécifiez les informations suivantes:

  • Nom de l'ensemble de données parent
  • Le nom du magasin DICOM
  • Le nom d'un ensemble de données BigQuery existant
  • Le nom de la table d'exportation BigQuery. Le nom ne peut contenir que des lettres (majuscules ou minuscules), des chiffres et des traits de soulignement. L'ensemble de données BigQuery doit exister, mais l'API Cloud Healthcare peut mettre à jour une table existante ou en créer une.
  • Un jeton d'accès

L'exemple suivant montre une requête POST utilisant curl.

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    --data "{
      'bigqueryDestination': {
        'tableUri': 'bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID'
      }
    }" "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:export"

Si la requête aboutit, le serveur renvoie la réponse au format JSON :

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
}

La réponse contient un nom d'opération. Pour suivre l'état de l'opération, vous pouvez utiliser la méthode get :

curl -X GET \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"

Si la requête aboutit, le serveur renvoie une réponse avec l'état de l'opération au format JSON :

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
    "apiMethodName": "google.cloud.healthcare.v1.dicom.DicomService.ExportDicomData",
    "createTime": "CREATE_TIME",
    "endTime": "END_TIME",
    "logsUrl": "https://console.cloud.google.com/logs/viewer/CLOUD_LOGGING_URL"
  },
  "done": true,
  "response": {
    "@type": "..."
  }
}

PowerShell

Pour exporter des métadonnées DICOM, envoyez une requête POST et spécifiez les informations suivantes:

  • Nom de l'ensemble de données parent
  • Le nom du magasin DICOM
  • Le nom d'un ensemble de données BigQuery existant
  • La table BigQuery
  • Un jeton d'accès

L'exemple suivant montre une requête POST utilisant Windows PowerShell.

$cred = gcloud auth application-default print-access-token
$headers = @{ Authorization = "Bearer $cred" }

Invoke-WebRequest `
  -Method Post `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body "{
    'bigqueryDestination': {
      'tableUri': 'bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID'
    }
  }" `
  -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:export" | Select-Object -Expand Content

Si la requête aboutit, le serveur renvoie la réponse au format JSON :

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
}

La réponse contient un nom d'opération. Pour suivre l'état de l'opération, vous pouvez utiliser la méthode get :

$cred = gcloud auth application-default 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

Si la requête aboutit, le serveur renvoie une réponse avec l'état de l'opération au format JSON :

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
    "apiMethodName": "google.cloud.healthcare.v1.dicom.DicomService.ExportDicomData",
    "createTime": "CREATE_TIME",
    "endTime": "END_TIME",
    "logsUrl": "https://console.cloud.google.com/logs/viewer/CLOUD_LOGGING_URL"
  },
  "done": true,
  "response": {
    "@type": "..."
  }
}

Exporter des métadonnées DICOM vers un autre projet

Pour exporter des métadonnées DICOM d'un projet vers un autre projet, consultez d'abord la section Autorisations permettant d'exporter des métadonnées DICOM vers un autre projet pour savoir comment définir des autorisations Cloud IAM dans le projet de destination.

gcloud

L'exemple suivant fonctionne avec la version v1beta1 de l'API Cloud Healthcare.

Pour exporter des métadonnées DICOM d'un magasin DICOM d'un seul projet vers une table BigQuery dans un autre projet, exécutez la commande gcloud beta healthcare dicom-stores export bq. Spécifiez les informations suivantes :

  • Nom de l'ensemble de données parent
  • Le nom du magasin DICOM
  • Le projet de destination
  • Le nom d'un ensemble de données BigQuery existant dans le projet de destination
  • Le nom de la table BigQuery. Le nom de la table ne peut contenir que des lettres (majuscules ou minuscules), des chiffres et des traits de soulignement.

L'exemple suivant montre la commande gcloud beta dicom-stores export bq.

gcloud beta healthcare dicom-stores export bq DICOM_STORE_ID \
  --dataset=DATASET_ID \
  --location=LOCATION \
  --bq-table=bq://DESTINATION_PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID \
  [--overwrite-table]

La ligne de commande affiche l'ID de l'opération et, une fois l'opération terminée, done :

Request issued for: [DICOM_STORE_ID]
Waiting for operation [projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/OPERATION_ID] to complete...done.
name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID

Pour afficher plus de détails sur l'opération, exécutez la commande gcloud beta healthcare operations describe en fournissant l'identifiant OPERATION_ID spécifié dans la réponse :

gcloud beta healthcare operations describe OPERATION_ID \
  --dataset=DATASET_ID 

Une fois l'opération terminée, la réponse inclut done: true.

done: true
metadata:
  '@type': type.googleapis.com/google.cloud.healthcare.v1beta1.OperationMetadata
  apiMethodName: google.cloud.healthcare.v1beta1.dicom.DicomService.ExportDicomData
  createTime: 'CREATE_TIME'
  endTime: 'END_TIME'
name: projects/SOURCE_PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID
response:
  '@type': '...'

API

Pour exporter des métadonnées DICOM vers BigQuery, utilisez la méthode projects.locations.datasets.dicomStores.export.

Commande curl

Pour exporter des métadonnées DICOM depuis un magasin DICOM d'un projet vers une table BigQuery dans un autre projet, envoyez une requête POST et spécifiez les informations suivantes:

  • Le projet source
  • Nom de l'ensemble de données parent
  • Le nom du magasin DICOM
  • Le projet de destination
  • Le nom d'un ensemble de données BigQuery existant dans le projet de destination
  • La table BigQuery
  • Un jeton d'accès

L'exemple suivant montre une requête POST utilisant curl.

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    --data "{
      'bigqueryDestination': {
        'tableUri': 'bq://DESTINATION_PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID'
      }
    }" "https://healthcare.googleapis.com/v1/projects/SOURCE_PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:export"

Si la requête aboutit, le serveur renvoie la réponse au format JSON :

{
  "name": "projects/SOURCE_PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
}

La réponse contient un nom d'opération. Pour suivre l'état de l'opération, vous pouvez utiliser la méthode get :

curl -X GET \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/SOURCE_PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"

Si la requête aboutit, le serveur renvoie une réponse avec l'état de l'opération au format JSON :

{
  "name": "projects/SOURCE_PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
    "apiMethodName": "google.cloud.healthcare.v1.dicom.DicomService.ExportDicomData",
    "createTime": "CREATE_TIME",
    "endTime": "END_TIME",
    "logsUrl": "https://console.cloud.google.com/logs/viewer/CLOUD_LOGGING_URL"
  },
  "done": true,
  "response": {
    "@type": "..."
  }
}

PowerShell

Pour exporter des métadonnées DICOM depuis un magasin DICOM d'un projet vers une table BigQuery dans un autre projet, envoyez une requête POST et spécifiez les informations suivantes:

  • Le projet source
  • Nom de l'ensemble de données parent
  • Le nom du magasin DICOM
  • Le projet de destination
  • Le nom d'un ensemble de données BigQuery existant dans le projet de destination
  • La table BigQuery
  • Un jeton d'accès

L'exemple suivant montre une requête POST utilisant Windows PowerShell.

$cred = gcloud auth application-default print-access-token
$headers = @{ Authorization = "Bearer $cred" }

Invoke-WebRequest `
  -Method Post `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body "{
    'bigqueryDestination': {
      'tableUri': 'bq://DESTINATION_PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID'
    }
  }" `
  -Uri "https://healthcare.googleapis.com/v1/projects/SOURCE_PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:export" | Select-Object -Expand Content

Si la requête aboutit, le serveur renvoie la réponse au format JSON :

{
  "name": "projects/SOURCE_PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
}

La réponse contient un nom d'opération. Pour suivre l'état de l'opération, vous pouvez utiliser la méthode get :

$cred = gcloud auth application-default print-access-token
$headers = @{ Authorization = "Bearer $cred" }

Invoke-WebRequest `
  -Method Get `
  -Headers $headers `
  -Uri "https://healthcare.googleapis.com/v1/projects/SOURCE_PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

Si la requête aboutit, le serveur renvoie une réponse avec l'état de l'opération au format JSON :

{
  "name": "projects/SOURCE_PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
    "apiMethodName": "google.cloud.healthcare.v1.dicom.DicomService.ExportDicomData",
    "createTime": "CREATE_TIME",
    "endTime": "END_TIME",
    "logsUrl": "https://console.cloud.google.com/logs/viewer/CLOUD_LOGGING_URL"
  },
  "done": true,
  "response": {
    "@type": "..."
  }
}

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

Si des erreurs se produisent lors d'une requête d'exportation de métadonnées DICOM vers BigQuery, elles sont consignées dans Cloud Logging. Pour en savoir plus, consultez la page Afficher les journaux d'erreurs dans Cloud Logging.