Diffuser des métadonnées DICOM vers BigQuery

Cette page explique comment configurer un magasin DICOM pour exporter les métadonnées d'instance DICOM vers une table BigQuery chaque fois que l'un des événements suivants se produit:

La diffusion de métadonnées DICOM vers une table BigQuery synchronise la table avec vos données DICOM afin que vous puissiez exécuter des requêtes complexes sur la dernière version de votre magasin DICOM.

Avant de commencer

Avant de configurer votre magasin DICOM, procédez comme suit :

Définir des autorisations BigQuery

Avant de diffuser des métadonnées DICOM vers BigQuery, vous devez accorder les autorisations requises au compte de service Agent de service Cloud Healthcare. Pour en savoir plus, consultez la section Autorisations BigQuery pour les magasins DICOM.

Apprendre à exporter des métadonnées DICOM vers BigQuery

Avant de configurer la diffusion, découvrez comment exporter des métadonnées DICOM vers BigQuery.

Configurer le magasin DICOM

Pour activer la diffusion vers BigQuery, configurez l'objet StreamConfig dans votre magasin DICOM. Dans l'objet StreamConfig, définissez l'objet BigQueryDestination sur un URI de table BigQuery complet en tant que destination de métadonnées d'instance DICOM.

Vous pouvez spécifier jusqu'à cinq destinations BigQuery en tant qu'objets JSON séparés par une virgule.

La suppression d'instances DICOM dans un datastore DICOM ne supprime pas les lignes BigQuery contenant les métadonnées de ces instances.

Console

Pour mettre à jour un store DICOM afin d'activer le streaming BigQuery, 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. Sélectionnez l'ensemble de données contenant le magasin DICOM que vous souhaitez modifier.
  3. Sélectionnez le store DICOM pour lequel vous ajoutez une configuration de streaming.
  4. Dans l'onglet Vue d'ensemble de la page Détails du data store, cliquez sur Ajouter une configuration de streaming.
  5. Dans le champ Nouvelle configuration de streaming, cliquez sur Parcourir.
    1. Dans le volet Sélectionner une table, sélectionnez une table BigQuery.
    2. Cliquez sur Sélectionner.
  6. Cliquez sur OK.

REST

Les exemples suivants montrent comment mettre à jour un magasin DICOM pour activer la diffusion 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.

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 store DICOM
  • BIGQUERY_DATASET_ID : nom d'un ensemble de données BigQuery existant
  • BIGQUERY_TABLE_ID : nom unique d'une table dans l'ensemble de données BigQuery. Pour connaître les règles de dénomination des tables, consultez la section Nommer les tables. L'ensemble de données BigQuery doit exister, mais l'API Cloud Healthcare peut mettre à jour une table existante ou en créer une.

Corps JSON de la requête :

{
  'streamConfigs': [{
     'bigqueryDestination': {
      'tableUri': 'bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID'
     }
  }]
}

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'
{
  'streamConfigs': [{
     'bigqueryDestination': {
      'tableUri': 'bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID'
     }
  }]
}
EOF

Exécutez ensuite la commande suivante pour envoyer votre requête REST :

curl -X PATCH \
-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?updateMask=streamConfigs"

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 :

@'
{
  'streamConfigs': [{
     'bigqueryDestination': {
      'tableUri': 'bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID'
     }
  }]
}
'@  | 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 PATCH `
-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?updateMask=streamConfigs" | 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 :

Métadonnées de suppression

Dans les versions précédentes de l'API Cloud Healthcare, les métadonnées d'instance DICOM n'étaient exportées que vers BigQuery lorsqu'une instance DICOM était insérée dans un store DICOM. Lorsque l'écriture de métadonnées pour les suppressions a été ajoutée, deux nouvelles colonnes, nommées Type et LastUpdated, ont été ajoutées à la table générée contenant les métadonnées DICOM.

Toutes les métadonnées de la table qui existaient avant l'introduction des métadonnées de suppression ont une valeur NULL pour ces colonnes. La valeur NULL correspond à la valeur la plus faible et apparaît en dernier lors du tri par ordre décroissant.

Vue BigQuery générée

Lorsque vous insérez ou supprimez une instance DICOM dans un store DICOM, la table BigQuery configurée est mise à jour.

Si une vue de la table n'existe pas, elle est créée. Sinon, la vue est mise à jour.

Restrictions et comportements supplémentaires

Il est possible que certaines balises DICOM ne figurent pas dans les métadonnées exportées. Si tel est le cas, les balises manquantes sont ajoutées à une colonne distincte nommée DroppedTags.TagName dans la table BigQuery de destination.

Les balises sont manquantes pour l'une des raisons suivantes:

  • Le tag DICOM est une RV non prise en charge listée dans VR exclues.
  • La balise DICOM dépasse environ 1 Mo.
  • Le nombre de colonnes de la table BigQuery de destination dépasse le nombre maximal de colonnes. Lorsque l'exportation de métadonnées DICOM vers une table BigQuery dépasse la limite de colonnes, les balises DICOM qui ne correspondent pas à une colonne existante sont ajoutées à la colonne DroppedTags.Name. Si la colonne DroppedTags ne peut pas être ajoutée, les balises DICOM sont supprimées sans notification et un journal d'avertissement est généré. Pour en savoir plus, consultez la section Résoudre les problèmes liés aux requêtes de streaming DICOM pour afficher les journaux.

Intégrer des métadonnées de suppression dans une table existante

Le comportement de la vue générée dépend de la présence ou non de métadonnées ajoutées avant l'introduction de la fonctionnalité de métadonnées de suppression.

Supposons qu'une table BigQuery contienne des métadonnées DICOM datant d'avant la prise en charge des métadonnées de suppression. Ce qui suit se produit:

  1. Vous insérez une instance DICOM dans un store DICOM.
  2. Vous supprimez l'instance DICOM du store DICOM.
  3. Vous modifiez les tags de l'instance DICOM d'origine et insérez l'instance DICOM modifiée dans le store DICOM.

Étant donné que la table BigQuery contenait les métadonnées d'origine avant que les métadonnées de suppression ne soient prises en charge, l'instance DICOM d'origine et sa version modifiée ont les mêmes études, séries et identifiants uniques (UID). La vue générée peut contenir l'instance DICOM d'origine ou la plus récente. Sans la colonne LastUpdated, la vue ne peut pas identifier quelle instance DICOM est la plus récente.

Pour vous assurer d'interroger les métadonnées d'instance DICOM les plus récentes, procédez comme suit:

  • Interrogez la table de base au lieu de la vue. Assurez-vous que la requête recherche les tags mis à jour dans l'instance DICOM modifiée.
  • Supprimez la table existante contenant les métadonnées DICOM, puis recréez-la en exportant manuellement les métadonnées DICOM vers BigQuery. La table recréée contient la colonne LastUpdated.

    Cette option supprime l'historique des métadonnées de streaming, mais garantit que la table contient la colonne LastUpdated avec des valeurs valides.

Résoudre les problèmes liés aux requêtes de streaming 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.

Pour filtrer les journaux d'erreur des métadonnées DICOM en streaming dans la console Google Cloud, procédez comme suit:

  1. Accédez à la page Explorateur de journaux.

    Accéder à l'explorateur de journaux

  2. Dans le champ Requête, saisissez la requête suivante :

    logName="healthcare.googleapis.com%2Fdicom_stream"
    
  3. Cliquez sur Exécuter la requête.

    Les journaux d'erreurs s'affichent dans la section Résultats de la requête.