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 une table BigQuery, vous devez accorder des autorisations supplémentaires au compte de service de l'agent de service Cloud Healthcare. Pour en savoir plus, consultez la section Autorisations BigQuery pour les magasins DICOM.
Définir la destination BigQuery
Lorsque vous définissez la destination BigQuery, utilisez l'URI complet, comme suit :bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID
- 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 Google Cloud CLI) - Si vous avez défini une valeur pour l'énumération
writeDisposition
. Si vous utilisez l'énumérationwriteDisposition
, ne définissez pas le champforce
.
- Si la table de destination existe déjà et que le champ
force
est défini surtrue
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 surfalse
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
. - Le comportement de
writeDisposition
est décrit dans sa documentation. L'énumérationwriteDisposition
exécute un comportement similaire aux options lors de l'utilisation deforce
, avec l'exception suivante : si la table de destination existe déjà et qu'elle est vide, l'opération d'exportation se termine au lieu de renvoyer une erreur.
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 une table BigQuery dans un autre projet, consultez la section Exporter des métadonnées DICOM vers un autre projet.
Console
Pour exporter des métadonnées DICOM vers une table BigQuery, procédez comme suit :
Dans la console Google Cloud, accédez à la page Ensembles de données.
Cliquez sur l'ensemble de données contenant le magasin DICOM dont vous exportez les métadonnées.
Sur la même ligne que le magasin DICOM, ouvrez la liste Actions et sélectionnez Exporter.
Sur la page Exporter un magasin DICOM qui s'affiche, sélectionnez Table BigQuery.
Dans le champ Projet, cliquez sur Parcourir et sélectionnez votre projet.
Dans la liste Ensemble de données, sélectionnez l'ensemble de données BigQuery vers lequel vous exportez les métadonnées DICOM.
Dans le champ Table, saisissez un nouveau nom de table. BigQuery vérifie chaque sélection pour s'assurer que la table de destination est valide.
Dans la section Disposition d'écriture de la table de destination, sélectionnez l'une des options suivantes : Ces options correspondent à l'énumération
WriteDisposition
.- N'exporter les données que si la table de destination est vide : équivalent à
WRITE_EMPTY
- Ajouter des données à la table de destination : équivalent à
WRITE_APPEND
- Effacer toutes les données existantes de la table de destination avant d'écrire les instances : équivalent à
WRITE_TRUNCATE
.
- N'exporter les données que si la table de destination est vide : équivalent à
Cliquez sur Exporter pour exporter les métadonnées DICOM vers la table BigQuery.
- 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.
gcloud
Pour exporter des métadonnées DICOM vers une table BigQuery, exécutez la commande gcloud healthcare dicom-stores export bq
.
Exportez les métadonnées DICOM.
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 DICOM
- DICOM_STORE_ID : ID du magasin DICOM
- BIGQUERY_DATASET_ID : nom d'un ensemble de données BigQuery existant vers lequel vous exportez les métadonnées DICOM
- BIGQUERY_TABLE_ID : nom d'une table nouvelle ou existante dans l'ensemble de données BigQuery. Si l'opération d'exportation crée une nouvelle table, consultez la section Dénomination des tables pour connaître les exigences concernant les noms de table.
- WRITE_DISPOSITION : valeur pour l'énumération
WriteDisposition
. Utilisez l'une des valeurs suivantes :write-empty
: n'exporter les données que si la table BigQuery est videwrite-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.
Exécutez la commande suivante :
Linux, macOS ou Cloud Shell
gcloud healthcare dicom-stores export bq DICOM_STORE_ID \ --location=LOCATION \ --dataset=DATASET_ID \ --bq-table=bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID \ --write-disposition=WRITE_DISPOSITION
Windows (PowerShell)
gcloud healthcare dicom-stores export bq DICOM_STORE_ID ` --location=LOCATION ` --dataset=DATASET_ID ` --bq-table=bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID ` --write-disposition=WRITE_DISPOSITION
Windows (cmd.exe)
gcloud healthcare dicom-stores export bq DICOM_STORE_ID ^ --location=LOCATION ^ --dataset=DATASET_ID ^ --bq-table=bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID ^ --write-disposition=WRITE_DISPOSITION
name
une fois l'exportation terminée. Notez la valeur deOPERATION_ID
. Vous en aurez besoin à l'étape suivante.Réponse
Request issued for: [DICOM_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
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.dicom.DicomService.ExportDicomData_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.protobuf.Empty'
REST
Pour exporter des métadonnées DICOM vers une table BigQuery, utilisez la méthode projects.locations.datasets.dicomStores.export
.
Exportez les métadonnées DICOM.
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 DICOM
- DICOM_STORE_ID : ID du magasin DICOM
- BIGQUERY_DATASET_ID : nom d'un ensemble de données BigQuery existant vers lequel vous exportez les métadonnées DICOM
- BIGQUERY_TABLE_ID : nom d'une table nouvelle ou existante dans l'ensemble de données BigQuery. Si l'opération d'exportation crée une nouvelle table, consultez la section Dénomination des tables pour connaître les exigences concernant les noms de table.
- WRITE_DISPOSITION : valeur pour l'énumération
WriteDisposition
. Utilisez l'une des valeurs suivantes :WRITE_EMPTY
: n'exporter les données que si la table BigQuery est videWRITE_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": { "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID", "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": { "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID", "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/dicomStores/DICOM_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": { "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID", "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/dicomStores/DICOM_STORE_ID:export" | Select-Object -Expand ContentAPI 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).
OPERATION_ID
. Vous en aurez besoin à l'étape suivante.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 ContentAPI 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).
"done": true
, l'opération de longue durée est terminée.
Exporter des métadonnées DICOM vers un autre projet
Pour exporter des métadonnées DICOM depuis un magasin DICOM d'un projet vers un ensemble de données BigQuery dans 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 les autorisations IAM dans le projet de destination.
gcloud
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 healthcare dicom-stores export bq
.
Exportez les métadonnées DICOM.
Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :
- SOURCE_PROJECT_ID : ID du projet Google Cloud source
- SOURCE_LOCATION : emplacement de l'ensemble de données source
- SOURCE_DATASET_ID : ensemble de données parent du magasin DICOM
- SOURCE_DICOM_STORE_ID : ID du magasin DICOM source
- DESTINATION_PROJECT_ID : ID de l'autre projet
- DESTINATION_BIGQUERY_DATASET_ID : nom d'un ensemble de données BigQuery existant dans le projet de destination vers lequel vous exportez les métadonnées DICOM
- DESTINATION_BIGQUERY_TABLE_ID : nom d'une table nouvelle ou existante dans l'ensemble de données BigQuery. Si l'opération d'exportation crée une nouvelle table, consultez la section Dénomination des tables pour connaître les exigences concernant les noms de table.
- WRITE_DISPOSITION : valeur pour l'énumération
WriteDisposition
. Utilisez l'une des valeurs suivantes :write-empty
: n'exporter les données que si la table BigQuery est videwrite-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.
Exécutez la commande suivante :
Linux, macOS ou Cloud Shell
gcloud healthcare dicom-stores export bq SOURCE_DICOM_STORE_ID \ --project=SOURCE_PROJECT_ID \ --location=SOURCE_LOCATION \ --dataset=SOURCE_DATASET_ID \ --bq-table=bq://DESTINATION_PROJECT_ID.DESTINATION_BIGQUERY_DATASET_ID.DESTINATION_BIGQUERY_TABLE_ID \ --write-disposition=WRITE_DISPOSITION
Windows (PowerShell)
gcloud healthcare dicom-stores export bq SOURCE_DICOM_STORE_ID ` --project=SOURCE_PROJECT_ID ` --location=SOURCE_LOCATION ` --dataset=SOURCE_DATASET_ID ` --bq-table=bq://DESTINATION_PROJECT_ID.DESTINATION_BIGQUERY_DATASET_ID.DESTINATION_BIGQUERY_TABLE_ID ` --write-disposition=WRITE_DISPOSITION
Windows (cmd.exe)
gcloud healthcare dicom-stores export bq SOURCE_DICOM_STORE_ID ^ --project=SOURCE_PROJECT_ID ^ --location=SOURCE_LOCATION ^ --dataset=SOURCE_DATASET_ID ^ --bq-table=bq://DESTINATION_PROJECT_ID.DESTINATION_BIGQUERY_DATASET_ID.DESTINATION_BIGQUERY_TABLE_ID ^ --write-disposition=WRITE_DISPOSITION
name
une fois l'exportation terminée. Notez la valeur deOPERATION_ID
. Vous en aurez besoin à l'étape suivante.Réponse
Request issued for: [SOURCE_DICOM_STORE_ID] Waiting for operation [projects/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID] to complete...⠏ name: projects/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID
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 :
- SOURCE_PROJECT_ID : ID du projet Google Cloud source
- SOURCE_LOCATION : emplacement de l'ensemble de données source
- SOURCE_DATASET_ID : ID de l'ensemble de données source
- 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=SOURCE_PROJECT_ID \ --dataset=SOURCE_DATASET_ID \ --location=SOURCE_LOCATION
Windows (PowerShell)
gcloud healthcare operations describe OPERATION_ID ` --project=SOURCE_PROJECT_ID ` --dataset=SOURCE_DATASET_ID ` --location=SOURCE_LOCATION
Windows (cmd.exe)
gcloud healthcare operations describe OPERATION_ID ^ --project=SOURCE_PROJECT_ID ^ --dataset=SOURCE_DATASET_ID ^ --location=SOURCE_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.dicom.DicomService.ExportDicomData_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/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID // The `response` field only displays if there were no errors. response: '@type': 'type.googleapis.com/google.protobuf.Empty'
REST
Pour exporter des métadonnées DICOM d'un magasin DICOM dans un projet vers une table BigQuery dans un autre projet, exécutez la commande projects.locations.datasets.dicomStores.export
.
Exportez les métadonnées DICOM.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- SOURCE_PROJECT_ID : ID du projet Google Cloud source
- SOURCE_LOCATION : emplacement de l'ensemble de données source
- SOURCE_DATASET_ID : ensemble de données parent du magasin DICOM
- SOURCE_DICOM_STORE_ID : ID du magasin DICOM source
- DESTINATION_PROJECT_ID : ID de l'autre projet
- DESTINATION_BIGQUERY_DATASET_ID : nom d'un ensemble de données BigQuery existant dans le projet de destination vers lequel vous exportez les métadonnées DICOM
- DESTINATION_BIGQUERY_TABLE_ID : nom d'une table nouvelle ou existante dans l'ensemble de données BigQuery. Si l'opération d'exportation crée une nouvelle table, consultez la section Dénomination des tables pour connaître les exigences concernant les noms de table.
- WRITE_DISPOSITION : valeur pour l'énumération
WriteDisposition
. Utilisez l'une des valeurs suivantes :WRITE_EMPTY
: n'exporter les données que si la table BigQuery est videWRITE_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": { "tableUri": "bq://DESTINATION_PROJECT_ID.DESTINATION_BIGQUERY_DATASET_ID.DESTINATION_BIGQUERY_TABLE_ID", "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": { "tableUri": "bq://DESTINATION_PROJECT_ID.DESTINATION_BIGQUERY_DATASET_ID.DESTINATION_BIGQUERY_TABLE_ID", "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/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/SOURCE_DICOM_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": { "tableUri": "bq://DESTINATION_PROJECT_ID.DESTINATION_BIGQUERY_DATASET_ID.DESTINATION_BIGQUERY_TABLE_ID", "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/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/SOURCE_DICOM_STORE_ID:export" | Select-Object -Expand ContentAPI 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).
OPERATION_ID
. Vous en aurez besoin à l'étape suivante.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 :
- SOURCE_PROJECT_ID : ID du projet Google Cloud source
- SOURCE_LOCATION : emplacement de l'ensemble de données source
- SOURCE_DATASET_ID : ID de l'ensemble de données source
- 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/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_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/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPI 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).
"done": true
, l'opération de longue durée est terminée.
Exporter des métadonnées DICOM à l'aide de filtres
Par défaut, lorsque vous exportez des fichiers DICOM vers Cloud Storage, tous les fichiers DICOM du magasin DICOM spécifié sont exportés. De même, lorsque vous exportez des métadonnées DICOM vers BigQuery, les métadonnées de toutes les données DICOM du magasin DICOM spécifié sont exportées.
Vous pouvez exporter un sous-ensemble de données ou de métadonnées DICOM à l'aide d'un filtre. Vous définissez le filtre dans un fichier de filtre.
Configurer des fichiers de filtre
Un fichier de filtre définit les fichiers DICOM à exporter vers Cloud Storage ou BigQuery. Vous pouvez configurer les fichiers de filtre aux niveaux suivants :
- Au niveau de l'étude
- Au niveau de la série
- Au niveau de l'instance
Le fichier de filtre est constitué de plusieurs lignes, chaque ligne définissant l'étude, la série ou l'instance que vous souhaitez exporter. Chaque ligne utilise le format /studies/STUDY_UID[/series/SERIES_UID[/instances/INSTANCE_UID]]
.
Si une étude, une série ou une instance n'est pas spécifiée dans le fichier de filtre lorsque vous transmettez le fichier, cette étude, cette série ou cette instance n'est pas exportée.
Seule la partie /studies/STUDY_UID
du chemin est obligatoire. Vous pouvez exporter une étude entière en spécifiant /studies/STUDY_UID
, ou exporter une série entière en spécifiant /studies/STUDY_UID/series/SERIES_UID
.
Prenons l'exemple du fichier de filtre suivant : Le fichier de filtre génère l'exportation d'une étude, de deux séries et de trois instances individuelles :
/studies/1.123.456.789 /studies/1.666.333.111/series/123.456 /studies/1.666.333.111/series/567.890 /studies/1.888.999.222/series/123.456/instances/111 /studies/1.888.999.222/series/123.456/instances/222 /studies/1.888.999.222/series/123.456/instances/333
Créer un fichier de filtre à l'aide de BigQuery
Vous créez généralement un fichier de filtre en commençant par exporter les métadonnées d'un magasin DICOM vers BigQuery. Cela vous permet d'utiliser BigQuery pour afficher les UID d'étude, de série et d'instance des données DICOM dans votre magasin DICOM. Vous pouvez ensuite effectuer les étapes suivantes :
-
Demander les UID d'étude, de série et d'instance qui vous intéressent.
Par exemple, après avoir exporté des métadonnées DICOM vers BigQuery, vous pouvez exécuter la requête suivante pour concaténer les UID d'étude, de série et d'instance dans un format compatible avec les exigences du fichier de filtre :
SELECT CONCAT ('/studies/', StudyInstanceUID, '/series/', SeriesInstanceUID, '/instances/', SOPInstanceUID) FROM [PROJECT_ID:BIGQUERY_DATASET.BIGQUERY_TABLE]
- Si la requête renvoie un grand ensemble de résultats, vous pouvez matérialiser une nouvelle table en enregistrant les résultats de la requête dans une table de destination dans BigQuery.
- Si vous avez enregistré les résultats de la requête dans une table de destination, vous pouvez enregistrer le contenu de celle-ci dans un fichier et l'exporter vers Cloud Storage. Pour obtenir des instructions sur la procédure à suivre, consultez la page Exporter des données de table. Le fichier exporté est votre fichier de filtre. Vous utiliserez l'emplacement du fichier de filtre dans Cloud Storage lors de la spécification du filtre dans l'opération d'exportation.
Créer un fichier de filtre manuellement
Vous pouvez créer un fichier de filtre avec du contenu personnalisé et l'importer dans un bucket Cloud Storage. Vous utiliserez l'emplacement du fichier de filtre dans Cloud Storage lors de la spécification du filtre dans l'opération d'exportation. L'exemple suivant montre comment importer un fichier de filtre dans un bucket Cloud Storage à l'aide de la commandegcloud storage cp
:
gcloud storage cp FILTER_FILE gs://BUCKET
Transmettre le fichier de filtre
Après avoir créé un fichier de filtre, vous pouvez appeler l'opération d'exportation DICOM et transmettre le fichier de filtre à l'aide de l'API REST. Les exemples suivants montrent comment exporter des métadonnées DICOM à l'aide d'un filtre.
gcloud
Pour exporter des métadonnées DICOM vers une table BigQuery à l'aide d'un filtre, exécutez la commande gcloud beta healthcare dicom-stores export bq
.
Exportez les métadonnées DICOM.
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 DICOM
- DICOM_STORE_ID : ID du magasin DICOM
- BIGQUERY_DATASET_ID : nom d'un ensemble de données BigQuery existant vers lequel vous exportez les métadonnées DICOM
- BIGQUERY_TABLE_ID : nom d'une table nouvelle ou existante dans l'ensemble de données BigQuery. Si l'opération d'exportation crée une nouvelle table, consultez la section Dénomination des tables pour connaître les exigences concernant les noms de table.
- BUCKET : nom du bucket Cloud Storage contenant le fichier de filtre. Si le fichier de filtre se trouve dans un répertoire, incluez le répertoire dans le chemin d'accès.
- FILTER_FILE : emplacement et nom du fichier de filtre dans un bucket Cloud Storage
- WRITE_DISPOSITION : valeur pour l'énumération
WriteDisposition
. Utilisez l'une des valeurs suivantes :write-empty
: n'exporter les données que si la table BigQuery est videwrite-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.
Exécutez la commande suivante :
Linux, macOS ou Cloud Shell
gcloud beta healthcare dicom-stores export bq DICOM_STORE_ID \ --location=LOCATION \ --dataset=DATASET_ID \ --bq-table=bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID \ --filter-config-gcs-uri=gs://BUCKET/FILTER_FILE \ --write-disposition=WRITE_DISPOSITION
Windows (PowerShell)
gcloud beta healthcare dicom-stores export bq DICOM_STORE_ID ` --location=LOCATION ` --dataset=DATASET_ID ` --bq-table=bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID ` --filter-config-gcs-uri=gs://BUCKET/FILTER_FILE ` --write-disposition=WRITE_DISPOSITION
Windows (cmd.exe)
gcloud beta healthcare dicom-stores export bq DICOM_STORE_ID ^ --location=LOCATION ^ --dataset=DATASET_ID ^ --bq-table=bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID ^ --filter-config-gcs-uri=gs://BUCKET/FILTER_FILE ^ --write-disposition=WRITE_DISPOSITION
name
une fois l'exportation terminée. Notez la valeur deOPERATION_ID
. Vous en aurez besoin à l'étape suivante.Réponse
Request issued for: [DICOM_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
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.dicom.DicomService.ExportDicomData_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/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID // The `response` field only displays if there were no errors. response: '@type': 'type.googleapis.com/google.protobuf.Empty'
REST
Pour exporter des métadonnées DICOM vers une table BigQuery à l'aide d'un filtre, utilisez la méthode projects.locations.datasets.dicomStores.export
.
Exportez les métadonnées DICOM.
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 DICOM
- DICOM_STORE_ID : ID du magasin DICOM
- BIGQUERY_DATASET_ID : nom d'un ensemble de données BigQuery existant vers lequel vous exportez les métadonnées DICOM
- BIGQUERY_TABLE_ID : nom d'une table nouvelle ou existante dans l'ensemble de données BigQuery. Si l'opération d'exportation crée une nouvelle table, consultez la section Dénomination des tables pour connaître les exigences concernant les noms de table.
- BUCKET : nom du bucket Cloud Storage contenant le fichier de filtre. Si le fichier de filtre se trouve dans un répertoire, incluez le répertoire dans le chemin d'accès.
- FILTER_FILE : emplacement et nom du fichier de filtre dans un bucket Cloud Storage
- WRITE_DISPOSITION : valeur pour l'énumération
WriteDisposition
. Utilisez l'une des valeurs suivantes :WRITE_EMPTY
: n'exporter les données que si la table BigQuery est videWRITE_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": { "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" }, "filterConfig": { "resourcePathsGcsUri": "gs://BUCKET/FILTER_FILE" } }
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": { "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" }, "filterConfig": { "resourcePathsGcsUri": "gs://BUCKET/FILTER_FILE" } } 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/dicomStores/DICOM_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": { "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" }, "filterConfig": { "resourcePathsGcsUri": "gs://BUCKET/FILTER_FILE" } } '@ | 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/dicomStores/DICOM_STORE_ID:export" | Select-Object -Expand ContentAPI 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).
OPERATION_ID
. Vous en aurez besoin à l'étape suivante.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 ContentAPI 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).
"done": true
, l'opération de longue durée est terminée.
Interroger et analyser des données DICOM dans BigQuery
Après avoir exporté les métadonnées DICOM vers une table BigQuery, vous pouvez exécuter des exemples de requêtes pour obtenir plus de détails sur les métadonnées. Les exemples suivants montrent comment exécuter des requêtes pour certains cas d'utilisation courants.
Rechercher dans les métadonnées
Supposons que vous souhaitiez effectuer une recherche sur une grande quantité de métadonnées difficiles à rechercher dans d'autres systèmes, telles qu'un système d'archivage et de transmission d'images (PACS, Picture Archiving and Communication System) ou une archive fournisseur neutre (VNA, Vendor Neutral Archive). La requête suivante montre comment interroger la valeur PatientID
d'un patient et utiliser le chemin DICOMweb pour récupérer des instances d'image spécifiques. L'exemple utilise la table chc-nih-chest-xray.nih_chest_xray.nih_chest_xray de l'ensemble de données radiographiques du thorax du NIH.
#standardSQL
SELECT CONCAT('/dicomWeb/studies/', StudyInstanceUID, '/series/', SeriesInstanceUID, '/instances/', SOPInstanceUID) as DICOMwebPath
FROM `chc-nih-chest-xray.nih_chest_xray.nih_chest_xray`
WHERE PatientID = '19045';
La requête renvoie les études associées au patient. La réponse suivante utilise le format JSON :
[
{
"DICOMwebPath": "/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.169629990647803559688464142879817265366193/series/1.3.6.1.4.1.11129.5.5.141990184899344268273968625887396932057061/instances/1.3.6.1.4.1.11129.5.5.162448513493627342869165322873398445570578"
},
{
"DICOMwebPath": "/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.114160532832901355654444239008681456919023/series/1.3.6.1.4.1.11129.5.5.178361108150351071908200174504411112440700/instances/1.3.6.1.4.1.11129.5.5.145959606905209488520697484018030440952428"
},
{
"DICOMwebPath": "/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.177801331756958922168115732894519725643007/series/1.3.6.1.4.1.11129.5.5.134128639331055702643451404466208677561042/instances/1.3.6.1.4.1.11129.5.5.148534317486838863760908141408862094292875"
},
{
"DICOMwebPath": "/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.119570482687494886334491471870663517807852/series/1.3.6.1.4.1.11129.5.5.148050768676645373034111775531663876425927/instances/1.3.6.1.4.1.11129.5.5.111153708388576066195389700503245704293300"
},
{
"DICOMwebPath": "/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.144704399171290022427247626928443085419319/series/1.3.6.1.4.1.11129.5.5.190285793344339390593165731988543561416633/instances/1.3.6.1.4.1.11129.5.5.110245902713751842026864359179754889505217"
},
{
"DICOMwebPath": "/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.172276126220388966649736649950361623806435/series/1.3.6.1.4.1.11129.5.5.171512371498506519035489729484464872160452/instances/1.3.6.1.4.1.11129.5.5.111721417729733087384317002785068394901165"
}
]
Interroger les dernières études
Supposons que vous souhaitiez remplir une liste de travail de lecture PACS avec les dernières études de votre ensemble de données.
La requête suivante montre comment extraire et afficher les dernières études, ainsi que le nombre d'instances et les métadonnées environnantes. L'exemple utilise la table bigquery-public-data.idc_v5.dicom_metadata de l'ensemble de données TCIA.
#standardSQL
SELECT
MIN(CONCAT(StudyDate, ' ', StudyTime)) as StudyDateTime, MIN(PatientID) as PatientID, StudyInstanceUID, COUNT(*) as InstanceCount
FROM
`bigquery-public-data.idc_v5.dicom_metadata` AS dicom
GROUP BY StudyInstanceUID
ORDER BY StudyDateTime DESC
LIMIT 10;
La requête renvoie les informations suivantes :
- Les 10 dernières études qui ont été entrées dans le système et la date à laquelle elles ont été entrées
- Le patient associé à chaque étude
- L'UID de l'étude
- Le nombre d'instances associées à l'étude
La réponse suivante utilise le format JSON :
[
{
"StudyDateTime": "2021-07-11 00:38:22",
"PatientID": "C3L-01924",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2466232160.763753303.1625963902816.3.0",
"InstanceCount": "4"
}, {
"StudyDateTime": "2021-07-10 23:52:10",
"PatientID": "C3L-01924",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2463459463.1074873794.1625961130119.3.0",
"InstanceCount": "4"
}, {
"StudyDateTime": "2021-07-10 23:31:13",
"PatientID": "C3L-02513",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2462202516.1453336368.1625959873172.3.0",
"InstanceCount": "7"
}, {
"StudyDateTime": "2021-07-10 23:25:17",
"PatientID": "C3L-01924",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2461846936.496969835.1625959517592.3.0",
"InstanceCount": "4"
}, {
"StudyDateTime": "2021-07-10 22:35:16",
"PatientID": "C3L-02515",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2458845347.1905567435.1625956516003.3.0",
"InstanceCount": "6"
}, {
"StudyDateTime": "2021-07-10 21:49:46",
"PatientID": "C3L-02515",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2456116127.1264613559.1625953786783.3.0",
"InstanceCount": "7"
}, {
"StudyDateTime": "2021-07-10 21:46:04",
"PatientID": "C3L-02513",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2455894080.1705479047.1625953564736.3.0",
"InstanceCount": "6"
}, {
"StudyDateTime": "2021-07-10 21:13:30",
"PatientID": "C3L-01924",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2453939652.2052768474.1625951610308.3.0",
"InstanceCount": "4"
}, {
"StudyDateTime": "2021-07-10 21:10:17",
"PatientID": "C3L-02515",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2453746219.164669562.1625951416875.3.0",
"InstanceCount": "6"
}, {
"StudyDateTime": "2021-07-10 20:05:48",
"PatientID": "C3L-02513",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2449877792.1996682667.1625947548448.3.0",
"InstanceCount": "6"
}
]
Restrictions et comportements supplémentaires
Si le tag DICOM n'est pas d'un type compatible dans BigQuery (répertorié dans VR exclues), il est répertorié dans une colonne distincte (appelée DroppedTags.TagName
) dans la table BigQuery de destination.
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.