Classes de stockage DICOM

Cette page explique comment gérer les données DICOM dans l'API Cloud Healthcare utilisant différentes classes de stockage. Choisir la bonne classe de stockage peut aider vous réduisez les coûts et répondez aux exigences réglementaires pour la conservation des données.

Cette page est destinée aux utilisateurs techniques déjà familiarisés avec DICOM et l'API Cloud Healthcare.

Présentation

Les classes de stockage DICOM fonctionnent de la même manière que les classes de stockage Cloud Storage, offrant différentes caractéristiques de coût et de performances selon la fréquence vous accédez à vos données et combien de temps vous avez besoin de les stocker. Pour en savoir plus sur chaque classe de stockage, consultez la section Description des classes.

Vous pouvez modifier la classe de stockage des objets DICOM en fonction de la manière dont la fréquence à laquelle vous accédez à l'objet ou combien de temps l'objet doit être conservé. Exemple :

  • Vous pouvez déplacer des images DICOM rarement consultées du stockage standard vers le stockage Nearline ou Stockage Coldline pour réduire les coûts de facturation
  • Vous pouvez déplacer les données patient qui doivent être conservées pour des raisons légales vers le stockage Archive, qui est la classe de stockage la moins chère et la plus durable.

Classes de stockage DICOM disponibles

Vous pouvez utiliser les classes de stockage suivantes pour vos objets DICOM:

  • Standard (par défaut)
  • Nearline
  • Coldline
  • Archiver

Tarifs des classes de stockage

Chaque classe de stockage a sa propre structure tarifaire. La modification de la classe de stockage de vos objets DICOM peut avoir une incidence sur vos coûts de facturation. Pour en savoir plus, consultez les ressources suivantes :

Modifier la classe de stockage pour des objets DICOM individuels

Vous pouvez modifier la classe de stockage des objets DICOM au niveau de l'étude, de la série ou au niveau de l'instance.

Les exemples suivants montrent comment modifier la classe de stockage d'une instance DICOM.

REST

  1. Modifiez la classe de stockage de l'instance DICOM à l'aide de la méthode projects.locations.datasets.dicomStores.studies.series.instances.setBlobStorageSettings.

    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
    • STUDY_INSTANCE_UID: identifiant unique de l'instance d'étude
    • SERIES_INSTANCE_UID: identifiant unique de l'instance de la série
    • INSTANCE_UID: identifiant unique de l'instance
    • STORAGE_CLASS: classe de stockage de l'instance DICOM. Spécifiez l'une des valeurs suivantes : STANDARD, NEARLINE, COLDLINE ou ARCHIVE.

    Corps JSON de la requête :

    {
      "blobStorageSettings": {
        "blobStorageClass": "STORAGE_CLASS"
      }
    }
    

    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'
    {
      "blobStorageSettings": {
        "blobStorageClass": "STORAGE_CLASS"
      }
    }
    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/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID:setBlobStorageSettings"

    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 :

    @'
    {
      "blobStorageSettings": {
        "blobStorageClass": "STORAGE_CLASS"
      }
    }
    '@  | 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/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID:setBlobStorageSettings" | 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).

    Le résultat est le suivant. La réponse contient l'identifiant d'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. Obtenez l'état de l'opération de longue durée à l'aide de la méthode projects.locations.datasets.operations.get.

    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
    • 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
    Le résultat est le suivant. Lorsque la réponse contient "done": true, le L'opération de longue durée est terminée.

Modifier la classe de stockage de plusieurs objets à l'aide d'un fichier de filtre

Les sections suivantes expliquent comment créer et utiliser un fichier de filtre pour modifier le classe de stockage d'objets DICOM en fonction d'un critère de filtre.

Exigences relatives aux fichiers de filtre

  • Chaque ligne du fichier de filtres définit l'étude, la série ou l'instance utilise le format /studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID.
  • Vous pouvez tronquer une ligne pour indiquer le niveau auquel le filtre fonctionne. Par exemple, vous pouvez sélectionner une étude entière en spécifiant /studies/STUDY_INSTANCE_UID ou vous pouvez sélectionner une une série entière en spécifiant /studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID

Prenons l'exemple du fichier de filtre suivant:

/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

Cet exemple de fichier de filtre s'applique aux éléments suivants:

  • L'ensemble de l'étude avec l'UID de l'instance d'étude en tant que 1.123.456.789
  • Deux séries distinctes avec des UID d'instance de série en tant que 123.456 et 567.890 dans l'étude 1.666.333.111
  • Trois instances individuelles avec les ID d'instance 111, 222 et 333 dans le étude 1.888.999.222 et série 123.456

Créer un fichier de filtre à l'aide de BigQuery

Pour créer un fichier de filtre à l'aide de BigQuery, vous devez d'abord exporter les métadonnées de votre magasin DICOM vers BigQuery. Les métadonnées exportées vous montre les UID des études, séries et instances des données DICOM de votre Google Store.

Après avoir exporté les métadonnées, procédez comme suit:

  1. Exécutez une requête pour renvoyer les UID de l'étude, de la série et des instances que vous vous souhaitez ajouter au fichier de filtre.

    Par exemple, la requête suivante montre comment concaténer les UID d'étude, de série et d'instance pour qu'ils correspondent aux exigences de format de fichier de filtre :

    SELECT CONCAT
        ('/studies/', StudyInstanceUID, '/series/', SeriesInstanceUID, '/instances/', SOPInstanceUID)
    FROM
        [PROJECT_ID:BIGQUERY_DATASET.BIGQUERY_TABLE]
  2. Facultatif : Si la requête renvoie un grand ensemble de résultats qui dépasse la taille de réponse maximale, enregistrez les résultats de la requête dans une nouvelle table de destination dans BigQuery.

  3. Enregistrez les résultats de la requête et l'exporter vers Cloud Storage. Si vous avez enregistré les résultats de votre requête vers une nouvelle table de destination à l'étape 2, consultez Exporter les données d'une table pour exporter les données contenus dans Cloud Storage.

  4. Modifiez le fichier exporté si nécessaire et incluez-le dans votre demande modifier la classe de stockage de plusieurs objets DICOM.

Créer un fichier de filtre manuellement

Pour créer un fichier de filtre manuellement, procédez comme suit:

  1. Créez un fichier de filtre contenant les objets DICOM sur lesquels vous effectuez le filtrage.
  2. Importez le fichier de filtre dans Cloud Storage. Pour obtenir des instructions, consultez l'article Importer des objets à partir d'un système de fichiers

Utiliser un fichier de filtre

Les exemples suivants montrent comment appliquer un fichier de filtre lorsque vous modifiez le paramètre classe de stockage des objets DICOM.

REST

  1. Modifiez la classe de stockage des instances DICOM dans le fichier de filtre à l'aide de la propriété projects.locations.datasets.dicomStores.studies.series.instances.setBlobStorageSettings.

    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
    • STORAGE_CLASS: classe de stockage des objets DICOM. Spécifiez l'une des valeurs suivantes : STANDARD, NEARLINE, COLDLINE ou ARCHIVE.
    • CLOUD_STORAGE_BUCKET: nom du bucket Cloud Storage contenant le fichier de filtre
    • FILTER_FILE_PATH: URI complet du fichier de filtre dans le bucket Cloud Storage

    Corps JSON de la requête :

    {
      "blobStorageSettings": {
        "blobStorageClass": "STORAGE_CLASS"
      },
      "filterConfig": {
        "resourcePathsGcsUri": "gs://CLOUD_STORAGE_BUCKET/FILTER_FILE_PATH"
      }
    }
    

    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'
    {
      "blobStorageSettings": {
        "blobStorageClass": "STORAGE_CLASS"
      },
      "filterConfig": {
        "resourcePathsGcsUri": "gs://CLOUD_STORAGE_BUCKET/FILTER_FILE_PATH"
      }
    }
    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" \
    -d @request.json \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:setBlobStorageSettings"

    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 :

    @'
    {
      "blobStorageSettings": {
        "blobStorageClass": "STORAGE_CLASS"
      },
      "filterConfig": {
        "resourcePathsGcsUri": "gs://CLOUD_STORAGE_BUCKET/FILTER_FILE_PATH"
      }
    }
    '@  | 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" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:setBlobStorageSettings" | Select-Object -Expand Content
    Le résultat est le suivant. La réponse contient l'identifiant d'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. Obtenez l'état de l'opération de longue durée à l'aide de la méthode projects.locations.datasets.operations.get.

    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
    • 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
    Le résultat est le suivant. Lorsque la réponse contient "done": true, le L'opération de longue durée est terminée.

Afficher la classe de stockage d'un objet DICOM

Vous pouvez afficher la classe de stockage des objets DICOM au niveau de l'étude, de la série ou au niveau de l'instance.

Les sections suivantes décrivent comment afficher la classe de stockage d'une instance DICOM.

Obtenir des informations sur la classe de stockage pour un objet DICOM

Les exemples suivants montrent comment utiliser la méthode instances.getStorageInfo pour afficher la classe de stockage des objets DICOM.

REST

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
  • STUDY_INSTANCE_UID : identifiant unique de l'instance dans l'étude
  • SERIES_INSTANCE_UID : identifiant unique de l'instance de la série
  • INSTANCE_UID: identifiant unique de l'instance

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/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID:getStorageInfo"

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/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID:getStorageInfo" | Select-Object -Expand Content

API Explorer

Ouvrez le 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 Exécuter.

Vous devriez recevoir une réponse JSON de ce type :

Interroger les métadonnées DICOM exportées dans BigQuery

Vous pouvez exporter des métadonnées DICOM vers BigQuery, puis exécuter des requêtes pour afficher les classes de stockage de vos objets DICOM exportés.

La requête suivante montre comment récupérer l'UID d'instance d'étude, l'UID d'instance de série, l'UID d'instance, la taille de stockage et la classe de stockage de jusqu'à 1 000 instances DICOM à partir d'un ensemble de données BigQuery :

SELECT StudyInstanceUID, SeriesInstanceUID, SOPInstanceUID, BlobStorageSize, StorageClass
FROM PROJECT_ID:BIGQUERY_DATASET.BIGQUERY_TABLE
LIMIT 1000

Remplacez les éléments suivants :

  • PROJECT_ID : ID de votre projet Google Cloud
  • BIGQUERY_DATASET: ensemble de données BigQuery parent de la table contenant les métadonnées DICOM exportées
  • BIGQUERY_TABLE: table BigQuery contenant les métadonnées DICOM exportées