Questa pagina descrive come modificare la classe di archiviazione per i dati DICOM nell'API Cloud Healthcare.
Panoramica
L'API Cloud Healthcare offre le seguenti classi di archiviazione:
- Standard
- Nearline
- Coldline
- Archivia
Queste classi di archiviazione sono simili a quelle di Cloud Storage.
Puoi modificare la classe di archiviazione dell'oggetto DICOM come misura per risparmiare sui costi in scenari come i seguenti:
- Spostamento di una serie di immagini DICOM a cui si accede raramente da Standard Storage a Nearline o Coldline Storage. In questo modo, i bucket di archiviazione standard vengono liberati per archiviare le immagini a cui si accede con maggiore frequenza.
- Spostamento dei dati dei pazienti da archiviazione standard a archiviazione di archiviazione fino ad archiviare i dati che devono essere conservati per motivi legali. Archive Storage è la classe di archiviazione con il costo più basso e un'elevata durabilità.
Metodi per modificare la classe di archiviazione DICOM
Per impostazione predefinita, un'istanza DICOM ha una classe di archiviazione standard. Puoi modificare la classe di archiviazione utilizzando i seguenti metodi:
- Il metodo
import
: imposta la classe di archiviazione quando importi un'istanza DICOM da un bucket Cloud Storage con il campoblobStorageSettings
. - Il metodo
storeInstances
: imposta la classe di archiviazione quando archivi un'istanza DICOM da un percorso locale - Metodo
setBlobStorageSettings
: modifica la classe di archiviazione di un'istanza DICOM in un archivio DICOM a livello di istanza, serie o studio
Prima di iniziare
Prima di modificare la classe di archiviazione delle istanze DICOM nell'API Cloud Healthcare, rivedi i seguenti dettagli dei prezzi:
- Archiviazione dati DICOM
- Tariffe per il recupero dei dati DICOM
Modifica la classe di archiviazione di un'istanza DICOM
Gli esempi riportati di seguito mostrano come modificare la classe di archiviazione di un'istanza DICOM a livello di istanza, serie o studio.
A livello di istanza
Per modificare la classe di archiviazione di un'istanza DICOM a livello di istanza, completa questi passaggi:
REST
Utilizza il metodo projects.locations.datasets.dicomStores.studies.series.instances.setBlobStorageSettings
.
- Modificare la classe di archiviazione dell'istanza DICOM a livello di istanza.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
PROJECT_ID
: l'ID del tuo progetto Google CloudLOCATION
: la posizione del set di datiDATASET_ID
: set di dati padre dell'archivio DICOMDICOM_STORE_ID
: l'ID datastore DICOMSTUDY_INSTANCE_UID
: l'identificatore univoco dell'istanza di studioSERIES_INSTANCE_UID
: l'identificatore univoco dell'istanza della serieINSTANCE_UID
: l'identificatore univoco dell'istanzaSTORAGE_CLASS
: la classe di archiviazione per l'oggetto DICOM nell'archivio DICOM daSTANDARD
,NEARLINE
,COLDLINE
eARCHIVE
Corpo JSON della richiesta:
{ "blobStorageSettings": { "blob_storage_class": "STORAGE_CLASS" } }
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Salva il corpo della richiesta in un file denominato
request.json
. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory attuale:cat > request.json << 'EOF' { "blobStorageSettings": { "blob_storage_class": "STORAGE_CLASS" } } EOF
Quindi, esegui questo comando per inviare la richiesta 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
Salva il corpo della richiesta in un file denominato
request.json
. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory attuale:@' { "blobStorageSettings": { "blob_storage_class": "STORAGE_CLASS" } } '@ | Out-File -FilePath request.json -Encoding utf8
Quindi, esegui questo comando per inviare la richiesta 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 - Visualizza lo stato dell'operazione a lunga esecuzione.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: l'ID del tuo progetto Google Cloud
- LOCATION: la posizione del set di dati
- DATASET_ID: set di dati padre dell'archivio DICOM
- OPERATION_ID: l'ID restituito dall'operazione a lunga esecuzione
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Esegui questo comando:
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
Esegui questo comando:
$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
A livello di serie
Per modificare la classe di archiviazione di un'istanza DICOM a livello di serie, completa questi passaggi:
REST
Utilizza il metodo projects.locations.datasets.dicomStores.studies.series.setBlobStorageSettings
.
- Modificare la classe di archiviazione dell'istanza DICOM a livello di serie.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
PROJECT_ID
: l'ID del tuo progetto Google CloudLOCATION
: la posizione del set di datiDATASET_ID
: set di dati padre dell'archivio DICOMDICOM_STORE_ID
: l'ID datastore DICOMSTUDY_INSTANCE_UID
: l'identificatore univoco dell'istanza di studioSERIES_INSTANCE_UID
: l'identificatore univoco dell'istanza della serieSTORAGE_CLASS
: la classe di archiviazione per l'oggetto DICOM nell'archivio DICOM daSTANDARD
,NEARLINE
,COLDLINE
eARCHIVE
Corpo JSON della richiesta:
{ "blobStorageSettings": { "blob_storage_class": "STORAGE_CLASS" } }
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Salva il corpo della richiesta in un file denominato
request.json
. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory attuale:cat > request.json << 'EOF' { "blobStorageSettings": { "blob_storage_class": "STORAGE_CLASS" } } EOF
Quindi, esegui questo comando per inviare la richiesta 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
Salva il corpo della richiesta in un file denominato
request.json
. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory attuale:@' { "blobStorageSettings": { "blob_storage_class": "STORAGE_CLASS" } } '@ | Out-File -FilePath request.json -Encoding utf8
Quindi, esegui questo comando per inviare la richiesta 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 - Visualizza lo stato dell'operazione a lunga esecuzione.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: l'ID del tuo progetto Google Cloud
- LOCATION: la posizione del set di dati
- DATASET_ID: set di dati padre dell'archivio DICOM
- OPERATION_ID: l'ID restituito dall'operazione a lunga esecuzione
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Esegui questo comando:
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
Esegui questo comando:
$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
A livello di studio
Per modificare la classe di archiviazione di un'istanza DICOM a livello di studio, completa questi passaggi:
REST
Utilizza il metodo projects.locations.datasets.dicomStores.studies.setBlobStorageSettings
.
- Modificare la classe di archiviazione dell'istanza DICOM a livello di studio.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
PROJECT_ID
: l'ID del tuo progetto Google CloudLOCATION
: la posizione del set di datiDATASET_ID
: set di dati padre dell'archivio DICOMDICOM_STORE_ID
: l'ID datastore DICOMSTUDY_INSTANCE_UID
: l'identificatore univoco dell'istanza di studioSTORAGE_CLASS
: la classe di archiviazione per l'oggetto DICOM nell'archivio DICOM daSTANDARD
,NEARLINE
,COLDLINE
eARCHIVE
Corpo JSON della richiesta:
{ "blobStorageSettings": { "blob_storage_class": "STORAGE_CLASS" } }
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Salva il corpo della richiesta in un file denominato
request.json
. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory attuale:cat > request.json << 'EOF' { "blobStorageSettings": { "blob_storage_class": "STORAGE_CLASS" } } EOF
Quindi, esegui questo comando per inviare la richiesta 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
Salva il corpo della richiesta in un file denominato
request.json
. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory attuale:@' { "blobStorageSettings": { "blob_storage_class": "STORAGE_CLASS" } } '@ | Out-File -FilePath request.json -Encoding utf8
Quindi, esegui questo comando per inviare la richiesta 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 - Visualizza lo stato dell'operazione a lunga esecuzione.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: l'ID del tuo progetto Google Cloud
- LOCATION: la posizione del set di dati
- DATASET_ID: set di dati padre dell'archivio DICOM
- OPERATION_ID: l'ID restituito dall'operazione a lunga esecuzione
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Esegui questo comando:
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
Esegui questo comando:
$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
Utilizza i filtri
La seguente sezione mostra come filtrare istanze specifiche e modificarne la classe di archiviazione a livello di studio, serie o istanza utilizzando un file filtro.
Devi aggiungere il ruolo Visualizzatore oggetti Storage all'account di servizio Agente di servizio sanitario, che ha accesso al bucket in cui è archiviato il file del filtro.
Configurare un file di filtro
Utilizzando un file filtro puoi definire l'elenco dei file DICOM la cui classe di archiviazione deve essere modificata.
Ogni riga nel file di filtro definisce lo studio, la serie o l'istanza e utilizza il formato /studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID
.
Puoi troncare una riga per specificare il livello a cui funziona il filtro.
Ad esempio, puoi modificare la classe di archiviazione di un intero studio specificando /studies/STUDY_INSTANCE_UID
oppure modificare la classe di archiviazione di un'intera serie specificando /studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID
.
Considera il seguente file filtro:
/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
Questo file di filtro restituisce i risultati seguenti:
- L'intero studio con l'UID dell'istanza di studio
1.123.456.789
- Due serie separate con UID delle istanze di serie come
123.456
e567.890
nello studio1.666.333.111
- Tre singole istanze con ID istanza come
111
,222
e333
nello studio1.888.999.222
e nella serie123.456
Creare un file di filtro utilizzando BigQuery
Per creare un file filtro utilizzando BigQuery, devi esportare in BigQuery i metadati dell'archivio DICOM. I metadati esportati mostrano gli UID di studio, serie e istanza dei dati DICOM nel tuo archivio DICOM.
Dopo l'esportazione, completa i seguenti passaggi:
Query per gli UID dello studio, della serie e dell'istanza richiesti.
Ad esempio, dopo aver esportato i metadati DICOM in BigQuery, esegui la seguente query per concatenare gli UID di studio, serie e istanza in modo che corrispondano ai requisiti del formato file del filtro:
SELECT CONCAT ('/studies/', StudyInstanceUID, '/series/', SeriesInstanceUID, '/instances/', SOPInstanceUID) FROM [PROJECT_ID:BIGQUERY_DATASET.BIGQUERY_TABLE]
(Facoltativo) Se la query restituisce un set di risultati di grandi dimensioni che supera le dimensioni massime della risposta, salva i risultati della query in una nuova tabella di destinazione in BigQuery.
Salva i risultati della query in un file ed esportalo in Cloud Storage. Se hai salvato i risultati della query in una nuova tabella di destinazione nel passaggio 2, consulta Esportazione dei dati della tabella per esportare i contenuti della tabella in Cloud Storage.
Modifica il file esportato in base alle esigenze e utilizzalo come file del filtro. La posizione del file del filtro in Cloud Storage è obbligatoria nel metodo
setBlobStorageSettings
.
Creare manualmente un file di filtro
Per creare un file di filtro con contenuti personalizzati e caricarlo in un bucket Cloud Storage, completa questi passaggi:
Crea un file filtro contenente un elenco di istanze la cui classe di archiviazione deve essere modificata sulla macchina locale. Utilizza il formato descritto nella sezione Configurare il file dei filtri.
Carica il file di testo del filtro in un percorso di Cloud Storage.
gsutil cp PATH_TO_FILTER_FILE/FILTER_FILE_NAME.txt gs://BUCKET/DIRECTORY
Sostituisci quanto segue:
PATH_TO_FILTER_FILE
: il percorso del file del filtro sulla macchina localeFILTER_FILE_NAME
: il nome del file del filtroBUCKET/DIRECTORY
: il percorso della località di Cloud Storage
Ad esempio:
gsutil cp my-local-folder/archive-filters.txt gs://my-bucket/my-directory
Supera il file del filtro
REST
Utilizza il metodo
projects.locations.datasets.dicomStores.studies.setBlobStorageSettings
per modificare la classe di archiviazione di tutte le istanze nel file di filtro a livello di archivio DICOM.Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
PROJECT_ID
: l'ID del tuo progetto Google CloudLOCATION
: la posizione del set di datiDATASET_ID
: set di dati padre dell'archivio DICOMDICOM_STORE_ID
: l'ID datastore DICOMSTORAGE_CLASS
: la classe di archiviazione per l'oggetto DICOM nell'archivio DICOM daSTANDARD
,NEARLINE
,COLDLINE
eARCHIVE
BUCKET/DIRECTORY
Corpo JSON della richiesta:
{ "filter_config": { "resource_paths_gcs_uri": "gs://BUCKET/DIRECTORY" }, "blobStorageSettings": { "blob_storage_class": "STORAGE_CLASS" } }
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Salva il corpo della richiesta in un file denominato
request.json
. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory attuale:cat > request.json << 'EOF' { "filter_config": { "resource_paths_gcs_uri": "gs://BUCKET/DIRECTORY" }, "blobStorageSettings": { "blob_storage_class": "STORAGE_CLASS" } } EOF
Quindi, esegui questo comando per inviare la richiesta 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
Salva il corpo della richiesta in un file denominato
request.json
. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory attuale:@' { "filter_config": { "resource_paths_gcs_uri": "gs://BUCKET/DIRECTORY" }, "blobStorageSettings": { "blob_storage_class": "STORAGE_CLASS" } } '@ | Out-File -FilePath request.json -Encoding utf8
Quindi, esegui questo comando per inviare la richiesta 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 ContentVisualizza lo stato dell'operazione a lunga esecuzione.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: l'ID del tuo progetto Google Cloud
- LOCATION: la posizione del set di dati
- DATASET_ID: set di dati padre dell'archivio DICOM
- OPERATION_ID: l'ID restituito dall'operazione a lunga esecuzione
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Esegui questo comando:
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
Esegui questo comando:
$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
Controlla la classe di archiviazione di un'istanza DICOM
Usa il metodo getStorageInfo
Gli esempi riportati di seguito mostrano come visualizzare la classe di archiviazione di un'istanza DICOM.
REST
Utilizza il metodoprojects.locations.datasets.dicomStores.dicomWeb.studies.series.instances.getStorageInfo
.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
PROJECT_ID
: l'ID del tuo progetto Google CloudLOCATION
: la posizione del set di datiDATASET_ID
: set di dati padre dell'archivio DICOMDICOM_STORE_ID
: l'ID datastore DICOMSTUDY_INSTANCE_UID
: l'identificatore univoco dell'istanza di studioSERIES_INSTANCE_UID
: l'identificatore univoco dell'istanza della serieINSTANCE_UID
: l'identificatore univoco dell'istanza
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Esegui questo comando:
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
Esegui questo comando:
$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
Dovresti ricevere una risposta JSON simile alla seguente:
Query sui metadati DICOM esportati in BigQuery
Puoi anche esportare i metadati DICOM in BigQuery ed eseguire query sul set di dati BigQuery per visualizzare le classi di archiviazione delle istanze DICOM.
Ad esempio, puoi eseguire questa query per visualizzare l'UID dell'istanza di studio, l'UID dell'istanza della serie, l'UID dell'istanza, le dimensioni dell'archiviazione dei BLOB e la classe di archiviazione dei BLOB di tutte le istanze nel set di dati BigQuery:
SELECT StudyInstanceUID,SeriesInstanceUID,SOPInstanceUID,BlobStorageSize,StorageClass FROM PROJECT_ID:BIGQUERY_DATASET.BIGQUERY_TABLE LIMIT 1000