Cette page explique comment modifier la classe de stockage des données DICOM dans l'API Cloud Healthcare.
Présentation
L'API Cloud Healthcare propose les classes de stockage suivantes:
- Standard
- Nearline
- Coldline
- Archiver
Ces classes de stockage sont semblables à celles disponibles dans Cloud Storage.
Vous pouvez modifier la classe de stockage de votre objet DICOM comme mesure d'économie dans les scénarios suivants:
- Déplacement d'une série d'images DICOM peu consultée, du stockage standard vers le stockage Nearline ou Coldline. Cela libère les buckets de stockage standards pour stocker les images les plus fréquemment consultées.
- Déplacement des données des patients du stockage standard vers le stockage d'archives, vers l'archivage des données devant être conservées pour des raisons juridiques. Le stockage Archive est la classe de stockage la plus économique et offrant une grande durabilité.
Méthodes pour modifier la classe de stockage DICOM
Par défaut, une instance DICOM possède une classe de stockage standard. Vous pouvez modifier la classe de stockage à l'aide des méthodes suivantes:
- Méthode
import
: définissez la classe de stockage lorsque vous importez une instance DICOM à partir d'un bucket Cloud Storage avec le champblobStorageSettings
. - Méthode
storeInstances
: définissez la classe de stockage lorsque vous stockez une instance DICOM à partir d'un chemin d'accès local. - La méthode
setBlobStorageSettings
: modifier la classe de stockage d'une instance DICOM dans un magasin DICOM au niveau de l'instance, de la série ou de l'étude.
Avant de commencer
Avant de modifier la classe de stockage de vos instances DICOM dans l'API Cloud Healthcare, consultez les conditions tarifaires suivantes:
Modifier la classe de stockage d'une instance DICOM
Les exemples suivants montrent comment modifier la classe de stockage d'une instance DICOM au niveau d'une instance, d'une série ou d'une étude.
Au niveau de l'instance
Pour modifier la classe de stockage d'une instance DICOM au niveau de l'instance, procédez comme suit:
REST
Exécutez la méthode projects.locations.datasets.dicomStores.studies.series.instances.setBlobStorageSettings
.
- Modifiez la classe de stockage de l'instance DICOM au niveau de l'instance.
Avant d'utiliser les données de requête, 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'objet DICOM dans le store DICOM à partir deSTANDARD
,NEARLINE
,COLDLINE
etARCHIVE
Corps JSON de la requête :
{ "blobStorageSettings": { "blob_storage_class": "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": { "blob_storage_class": "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" \
-d @request.json \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instance/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": { "blob_storage_class": "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" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instance/INSTANCE_UID:setBlobStorageSettings" | Select-Object -Expand Content - Obtenez l'état de l'opération de longue durée.
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
- 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/v1beta1/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/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content
Au niveau de la série
Pour modifier la classe de stockage d'une instance DICOM au niveau de la série, procédez comme suit:
REST
Exécutez la méthode projects.locations.datasets.dicomStores.studies.series.setBlobStorageSettings
.
- Modifiez la classe de stockage de l'instance DICOM au niveau de la série.
Avant d'utiliser les données de requête, 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érieSTORAGE_CLASS
: classe de stockage de l'objet DICOM dans le store DICOM à partir deSTANDARD
,NEARLINE
,COLDLINE
etARCHIVE
Corps JSON de la requête :
{ "blobStorageSettings": { "blob_storage_class": "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": { "blob_storage_class": "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" \
-d @request.json \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_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": { "blob_storage_class": "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" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID:setBlobStorageSettings" | Select-Object -Expand Content - Obtenez l'état de l'opération de longue durée.
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
- 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/v1beta1/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/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content
Au niveau de l'étude
Pour modifier la classe de stockage d'une instance DICOM au niveau d'une étude, procédez comme suit:
REST
Exécutez la méthode projects.locations.datasets.dicomStores.studies.setBlobStorageSettings
.
- Modifiez la classe de stockage de l'instance DICOM au niveau de l'étude.
Avant d'utiliser les données de requête, 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'étudeSTORAGE_CLASS
: classe de stockage de l'objet DICOM dans le store DICOM à partir deSTANDARD
,NEARLINE
,COLDLINE
etARCHIVE
Corps JSON de la requête :
{ "blobStorageSettings": { "blob_storage_class": "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": { "blob_storage_class": "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" \
-d @request.json \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_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": { "blob_storage_class": "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" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID:setBlobStorageSettings" | Select-Object -Expand Content - Obtenez l'état de l'opération de longue durée.
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
- 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/v1beta1/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/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content
Utiliser des filtres
La section suivante montre comment filtrer des instances spécifiques et modifier leur classe de stockage au niveau d'une étude, d'une série ou d'une instance à l'aide d'un fichier de filtre.
Vous devez ajouter le rôle Lecteur des objets Storage au compte de service Agent de service de santé, qui a accès au bucket dans lequel le fichier de filtre est stocké.
Configurer un fichier de filtre
À l'aide d'un fichier de filtre, vous pouvez définir la liste des fichiers DICOM dont la classe de stockage doit être modifiée.
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 tronquer une ligne pour indiquer le niveau auquel le filtre fonctionne.
Par exemple, vous pouvez modifier la classe de stockage de l'ensemble d'une étude en spécifiant /studies/STUDY_INSTANCE_UID
ou la classe de stockage d'une série entière en spécifiant /studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID
.
Examinez le 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
Ce fichier de filtre permet de filtrer les éléments suivants:
- L'étude entière 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
123.456
et567.890
dans l'étude1.666.333.111
- Trois instances individuelles avec des ID d'instance tels que
111
,222
et333
dans l'étude1.888.999.222
et la 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 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 l'exportation terminée, procédez comme suit:
Interrogez les UID d'étude, de série et d'instance requis.
Par exemple, après avoir exporté les métadonnées DICOM vers BigQuery, exécutez la requête suivante pour concaténer les UID d'étude, de série et d'instance afin qu'elles correspondent aux exigences du 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 ensemble de résultats volumineux qui dépasse la taille maximale de réponse, enregistrez les résultats de la requête dans une nouvelle table de destination dans BigQuery.
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 la section Exporter les données de table pour exporter le contenu de la table vers Cloud Storage.
Modifiez le fichier exporté si nécessaire et utilisez-le comme fichier de filtre. L'emplacement du fichier de filtre dans Cloud Storage est requis dans la méthode
setBlobStorageSettings
.
Créer un fichier de filtre manuellement
Pour créer un fichier de filtre avec du contenu personnalisé et l'importer dans un bucket Cloud Storage, procédez comme suit:
Créez un fichier de filtre contenant la liste des instances dont la classe de stockage doit être modifiée sur votre ordinateur local. Utilisez le format décrit dans la section Configurer le fichier de filtre.
Importez le fichier texte du filtre vers un emplacement Cloud Storage.
gsutil cp PATH_TO_FILTER_FILE/FILTER_FILE_NAME.txt gs://BUCKET/DIRECTORY
Remplacez les éléments suivants :
PATH_TO_FILTER_FILE
: chemin d'accès au fichier de filtre sur votre ordinateur localFILTER_FILE_NAME
: nom du fichier de filtreBUCKET/DIRECTORY
: chemin d'accès à l'emplacement Cloud Storage
Par exemple :
gsutil cp my-local-folder/archive-filters.txt gs://my-bucket/my-directory
Transmettre le fichier de filtre
REST
Utilisez la méthode
projects.locations.datasets.dicomStores.studies.setBlobStorageSettings
pour modifier la classe de stockage de toutes les instances du fichier de filtre au niveau d'un magasin DICOM.Avant d'utiliser les données de requête, 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 de l'objet DICOM dans le store DICOM à partir deSTANDARD
,NEARLINE
,COLDLINE
etARCHIVE
BUCKET/DIRECTORY
Corps JSON de la requête :
{ "filter_config": { "resource_paths_gcs_uri": "gs://BUCKET/DIRECTORY" }, "blobStorageSettings": { "blob_storage_class": "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' { "filter_config": { "resource_paths_gcs_uri": "gs://BUCKET/DIRECTORY" }, "blobStorageSettings": { "blob_storage_class": "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" \
-d @request.json \
"https://healthcare.googleapis.com/v1beta1/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 :@' { "filter_config": { "resource_paths_gcs_uri": "gs://BUCKET/DIRECTORY" }, "blobStorageSettings": { "blob_storage_class": "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" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:setBlobStorageSettings" | Select-Object -Expand ContentObtenez l'état de l'opération de longue durée.
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
- 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/v1beta1/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/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content
Vérifier la classe de stockage d'une instance DICOM
Utiliser la méthode getStorageInfo
Les exemples suivants montrent comment afficher la classe de stockage d'une instance DICOM.
REST
Utilisez la méthodeprojects.locations.datasets.dicomStores.dicomWeb.studies.series.instances.getStorageInfo
.
Avant d'utiliser les données de requête, 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'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/v1beta1/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/v1beta1/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
Vous devriez recevoir une réponse JSON de ce type :
Interroger les métadonnées DICOM exportées dans BigQuery
Vous pouvez également exporter les métadonnées DICOM vers BigQuery et interroger l'ensemble de données BigQuery pour afficher les classes de stockage des instances DICOM.
Par exemple, vous pouvez exécuter la requête suivante pour afficher l'UID de l'instance d'étude, l'UID de l'instance de série, l'UID de l'instance, la taille de stockage d'objet blob et la classe de stockage d'objet blob de toutes les instances de votre ensemble de données BigQuery:
SELECT StudyInstanceUID,SeriesInstanceUID,SOPInstanceUID,BlobStorageSize,StorageClass FROM PROJECT_ID:BIGQUERY_DATASET.BIGQUERY_TABLE LIMIT 1000