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
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 CloudLOCATION
: emplacement de l'ensemble de donnéesDATASET_ID
: ensemble de données parent du magasin DICOMDICOM_STORE_ID
: ID du magasin DICOMSTUDY_INSTANCE_UID
: identifiant unique de l'instance d'étudeSERIES_INSTANCE_UID
: identifiant unique de l'instance de la sérieINSTANCE_UID
: identifiant unique de l'instanceSTORAGE_CLASS
: classe de stockage de l'instance DICOM. Spécifiez l'une des valeurs suivantes :STANDARD
,NEARLINE
,COLDLINE
ouARCHIVE
.
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 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.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 CloudLOCATION
: emplacement de l'ensemble de donnéesDATASET_ID
: ensemble de données parent du magasin DICOMOPERATION_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"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
et567.890
dans l'étude1.666.333.111
- Trois instances individuelles avec les ID d'instance
111
,222
et333
dans le étude1.888.999.222
et série123.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:
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]
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.
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.
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:
- Créez un fichier de filtre contenant les objets DICOM sur lesquels vous effectuez le filtrage.
- 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
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 CloudLOCATION
: emplacement de l'ensemble de donnéesDATASET_ID
: ensemble de données parent du magasin DICOMDICOM_STORE_ID
: ID du magasin DICOMSTORAGE_CLASS
: classe de stockage des objets DICOM. Spécifiez l'une des valeurs suivantes :STANDARD
,NEARLINE
,COLDLINE
ouARCHIVE
.CLOUD_STORAGE_BUCKET
: nom du bucket Cloud Storage contenant le fichier de filtreFILTER_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 ContentOPERATION_ID
. Vous en aurez besoin à l'étape suivante.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 CloudLOCATION
: emplacement de l'ensemble de donnéesDATASET_ID
: ensemble de données parent du magasin DICOMOPERATION_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"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 CloudLOCATION
: emplacement de l'ensemble de donnéesDATASET_ID
: ensemble de données parent du magasin DICOMDICOM_STORE_ID
: ID du magasin DICOMSTUDY_INSTANCE_UID
: identifiant unique de l'instance dans l'étudeSERIES_INSTANCE_UID
: identifiant unique de l'instance de la sérieINSTANCE_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 CloudBIGQUERY_DATASET
: ensemble de données BigQuery parent de la table contenant les métadonnées DICOM exportéesBIGQUERY_TABLE
: table BigQuery contenant les métadonnées DICOM exportées