Diffuser des métadonnées DICOM vers BigQuery

Cette page explique comment configurer un magasin DICOM pour exporter les métadonnées d'une instance DICOM vers une table BigQuery dans les cas suivants:

En diffusant des métadonnées DICOM vers une table BigQuery, celle-ci est synchronisée avec vos données DICOM. Vous pouvez ainsi exécuter des requêtes complexes sur la dernière version de votre store DICOM.

Avant de commencer

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

Définir les 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.

Découvrir comment 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 magasin 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 Présentation de la page Informations sur le datastore, 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, 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

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 :

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 possèdent une valeur NULL pour ces colonnes. NULL est 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 magasin DICOM, la table BigQuery configurée est mise à jour.

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

Restrictions et comportements supplémentaires

Il est possible que certains tags DICOM ne figurent pas dans les métadonnées exportées. Le cas échéant, les tags manquants sont ajoutés à une colonne distincte nommée DroppedTags.TagName dans la table BigQuery de destination.

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

  • La balise DICOM n'est pas compatible et figure dans la liste RV exclues.
  • La balise DICOM dépasse environ 1 Mo.
  • Le nombre de colonnes dans 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 tags DICOM ne correspondant pas à une colonne existante sont ajoutés à la colonne DroppedTags.Name. Si la colonne DroppedTags ne peut pas être ajoutée, les tags DICOM sont supprimés sans notification et un journal d'avertissement est généré. Pour plus d'informations, consultez la section Dépannage des requêtes de streaming DICOM pour l'affichage des journaux.

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

Le comportement de la vue générée varie selon que sa table de base contient des 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 antérieures à la prise en charge des métadonnées de suppression. Voici ce qui se produit:

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

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

Pour vous assurer d'interroger les métadonnées d'instance DICOM les plus récentes, effectuez l'une des opérations suivantes:

  • Interrogez la table de base plutôt que 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 les métadonnées de streaming historiques, 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'erreurs de métadonnées DICOM en flux continu 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.

    Tous les journaux d'erreurs sont affichés dans la section Résultats de la requête.