Questa pagina descrive come modificare la classe di archiviazione per i dati DICOM in API Cloud Healthcare.
Panoramica
L'API Cloud Healthcare offre le seguenti classi di archiviazione:
- Standard
- Nearline
- Coldline
- Archivia
Queste classi di archiviazione sono simili in 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 da Standard Storage a Nearline o Coldline Storage. In questo modo si liberano i bucket di archiviazione standard per archiviare le immagini più consultati spesso.
- Spostamento dei dati dei pazienti dall'archiviazione standard all'archiviazione in archivio per 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 di archiviazione usando i seguenti metodi:
- La
import
metodo: imposta la classe di archiviazione quando importi un'istanza DICOM da un nel bucket Cloud Storage CampoblobStorageSettings
- La
storeInstances
metodo: imposta la classe di archiviazione quando archivi un da un percorso locale - Il metodo
setBlobStorageSettings
: modifica la classe di archiviazione di un 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, consulta i seguenti dettagli sui 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 in un'istanza, in una serie di studio.
A livello di istanza
Per modificare la classe di archiviazione di un'istanza DICOM a livello di istanza, completa questi passaggi:
REST
Utilizza la
projects.locations.datasets.dicomStores.studies.series.instances.setBlobStorageSettings
.
- Modifica la classe di archiviazione dell'istanza DICOM nell'istanza
livello.
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 corrente: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 corrente:@' { "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 la
projects.locations.datasets.dicomStores.studies.series.setBlobStorageSettings
.
- Modifica la classe di archiviazione dell'istanza DICOM in base alla serie
livello.
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 corrente: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 corrente:@' { "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 la
projects.locations.datasets.dicomStores.studies.setBlobStorageSettings
.
- Modifica la classe di archiviazione dell'istanza DICOM nello studio
livello.
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 corrente: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 corrente:@' { "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 sezione seguente mostra come filtrare istanze specifiche e modificarne di archiviazione a livello di studio, serie o istanza utilizzando un file di 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 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
o puoi modificare la classe di archiviazione di un
intere 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 di istanze di serie come
123.456
e567.890
nello studio1.666.333.111
- Tre singole istanze con ID istanza come
111
,222
e333
nel studio1.888.999.222
e serie123.456
Creare un file di filtro utilizzando BigQuery
Per creare un file filtro utilizzando BigQuery, devi esportare i metadati dell'archivio DICOM in BigQuery. I metadati esportati mostra gli UID di studio, serie e istanza dei dati DICOM nella .
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 lo studio, la serie e UID dell'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 il dimensione massima della risposta, salvare i risultati della query in una nuova tabella di destinazione in BigQuery.
Salva i risultati della query in un ed esportarlo in Cloud Storage. Se hai salvato i risultati della query a una nuova tabella di destinazione nel Passaggio 2, consulta Esportazione dei dati della tabella per esportare i dati 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 in il metodo
setBlobStorageSettings
.
Creare manualmente un file di filtro
Per creare un file filtro con contenuti personalizzati e caricarlo in un bucket Cloud Storage, completa questi passaggi:
Crea un file filtro contenente un elenco di istanze le cui classi di archiviazione richiedono sul computer locale. Utilizza il formato descritto in Configurare il file del filtro .
Carica il file di testo del filtro in un percorso di Cloud Storage.
gcloud storage 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:
gcloud storage cp my-local-folder/archive-filters.txt gs://my-bucket/my-directory
Supera il file del filtro
REST
Usa
projects.locations.datasets.dicomStores.studies.setBlobStorageSettings
per modificare la classe di archiviazione di tutte le istanze nel file di filtro in 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 corrente: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 corrente:@' { "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 laprojects.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 una query sul set di dati BigQuery per visualizzare le classi di archiviazione DICOM istanze.
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 BLOB e il blob di tutte le istanze del tuo set di dati BigQuery:
SELECT StudyInstanceUID,SeriesInstanceUID,SOPInstanceUID,BlobStorageSize,StorageClass FROM PROJECT_ID:BIGQUERY_DATASET.BIGQUERY_TABLE LIMIT 1000