Classes de stockage DICOM

Cette page explique comment gérer les données DICOM dans l'API Cloud Healthcare à l'aide de différentes classes de stockage. Choisir la classe de stockage appropriée peut vous aider à réduire les coûts et à répondre aux exigences réglementaires en matière de conservation des données.

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

Présentation

Les classes de stockage DICOM fonctionnent de manière similaire aux classes de stockage Cloud Storage, offrant différentes caractéristiques de coût et de performances en fonction de la fréquence à laquelle vous accédez à vos données et de la durée de stockage requise. Pour en savoir plus sur chaque classe de stockage, consultez la section Descriptions des classes.

Vous pouvez modifier la classe de stockage des objets DICOM en fonction de la fréquence d'accès à l'objet ou de la durée pendant laquelle il doit être conservé. Exemple :

  • Vous pouvez déplacer les images DICOM rarement consultées du stockage standard vers le stockage Nearline ou 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 un impact sur vos coûts de facturation. Pour en savoir plus, consultez les ressources suivantes :

Modifier la classe de stockage d'objets DICOM individuels

Vous pouvez modifier la classe de stockage des objets DICOM au niveau de l'étude, de la série ou 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 dans l'é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'un des types suivants : 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 un identifiant pour 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, 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 la classe de stockage des objets DICOM en fonction d'un critère de filtre.

Exigences concernant les fichiers de filtre

  • Chaque ligne du fichier de filtre définit l'étude, la série ou l'instance, et utilise le format /studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID.
  • Vous pouvez couper une ligne pour spécifier le niveau auquel le filtre fonctionne. Par exemple, vous pouvez sélectionner une étude entière en spécifiant /studies/STUDY_INSTANCE_UID, ou 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 de l'étude comme 1.123.456.789
  • Deux séries distinctes avec des UID d'instance de série comme 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 l'étude 1.888.999.222 et la 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 indiquent les UID d'étude, de série et d'instance des données DICOM dans votre magasin DICOM.

Une fois les métadonnées exporté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 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 dans un fichier et exportez-le vers Cloud Storage. Si vous avez enregistré les résultats de votre requête dans une nouvelle table de destination à l'étape 2, consultez Exporter des données de table pour exporter le contenu de la table vers Cloud Storage.

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

Créer un fichier de filtre manuellement

Pour créer manuellement un fichier de filtre, 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 la page 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 la 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 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
    • STORAGE_CLASS: classe de stockage des objets DICOM. Spécifiez l'un des types suivants : 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 un identifiant pour 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, 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 de l'instance.

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

Obtenir des informations sur la classe de stockage d'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 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 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