Classi di archiviazione DICOM

Questa pagina descrive come gestire i dati DICOM nell'API Cloud Healthcare utilizzando classi di archiviazione diverse. La scelta della classe di archiviazione giusta può aiutarti a ridurre i costi e a soddisfare i requisiti normativi per la conservazione dei dati.

Questa pagina è rivolta agli utenti tecnici già familiarizzati con DICOM e con l'API Cloud Healthcare.

Panoramica

Le classi di archiviazione DICOM funzionano in modo simile alle classi di archiviazione di Cloud Storage, offrendo caratteristiche di costo e prestazioni diverse in base alla frequenza con cui accedo ai dati e al tempo di archiviazione necessario. Per ulteriori informazioni su ogni classe di archiviazione, consulta Descrizioni delle classi.

Potresti voler modificare la classe di archiviazione degli oggetti DICOM in base alla frequenza con cui accedi all'oggetto o al periodo di conservazione dell'oggetto. Ad esempio:

  • Puoi spostare le immagini DICOM a cui si accede di rado dallo spazio di archiviazione Standard a Nearline o Coldline per risparmiare sui costi di fatturazione.
  • Puoi spostare i dati dei pazienti che devono essere conservati per motivi legali in Archive Storage, la classe di archiviazione più economica e durevole.

Classi di archiviazione DICOM disponibili

Per gli oggetti DICOM puoi utilizzare le seguenti classi di archiviazione:

  • Standard (valore predefinito)
  • Nearline
  • Coldline
  • Archivia

Prezzi delle classi di archiviazione

Ogni classe di archiviazione ha una propria struttura tariffaria. La modifica della classe di archiviazione degli oggetti DICOM potrebbe influire sui costi di fatturazione. Per ulteriori informazioni, consulta quanto segue:

Modificare la classe di archiviazione per singoli oggetti DICOM

Puoi modificare la classe di archiviazione degli oggetti DICOM a livello di studio, serie o istanza.

Gli esempi riportati di seguito mostrano come modificare la classe di archiviazione di un'istanza DICOM.

REST

  1. Modifica la classe di archiviazione dell'istanza DICOM utilizzando il metodo projects.locations.datasets.dicomStores.studies.series.instances.setBlobStorageSettings.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo progetto Google Cloud
    • LOCATION: la posizione del set di dati
    • DATASET_ID: il set di dati principale dell'archivio DICOM
    • DICOM_STORE_ID: l'ID dell'archivio DICOM
    • STUDY_INSTANCE_UID: l'identificatore univoco dell'istanza dello studio
    • SERIES_INSTANCE_UID: l'identificatore univoco dell'istanza della serie
    • INSTANCE_UID: l'identificatore univoco dell'istanza
    • STORAGE_CLASS: la classe di archiviazione per l'istanza DICOM. Uno dei seguenti valori: STANDARD, NEARLINE, COLDLINE o ARCHIVE.

    Corpo JSON della richiesta:

    {
      "blobStorageSettings": {
        "blobStorageClass": "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": {
        "blobStorageClass": "STORAGE_CLASS"
      }
    }
    EOF

    Quindi, esegui il seguente comando per inviare la richiesta 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

    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": {
        "blobStorageClass": "STORAGE_CLASS"
      }
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Quindi, esegui il seguente 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; 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

    Explorer API

    Copia il corpo della richiesta e apri la pagina di riferimento del metodo. Il riquadro Esplora API si apre sul lato destro della pagina. Puoi interagire con questo strumento per inviare richieste. Incolla il corpo della richiesta in questo strumento, compila gli altri campi obbligatori e fai clic su Esegui.

    L'output è il seguente. La risposta contiene un identificatore per un'operazione a lunga esecuzione (LRO). Le operazioni che richiedono molto tempo vengono restituite quando le chiamate ai metodi potrebbero richiedere ulteriore tempo per essere completate. Prendi nota del valore di OPERATION_ID. Questo valore ti servirà nel passaggio successivo.

  2. Recupera lo stato dell'operazione a lunga esecuzione utilizzando il metodo projects.locations.datasets.operations.get.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo progetto Google Cloud
    • LOCATION: la posizione del set di dati
    • DATASET_ID: il set di dati principale 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/v1/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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content
    L'output è il seguente. Quando la risposta contiene "done": true, la richiesta di autorizzazione di accesso è terminata.

Modificare la classe di archiviazione di più oggetti utilizzando un file di filtro

Le sezioni riportate di seguito mostrano come creare e utilizzare un file filtro per modificare la classe di archiviazione degli oggetti DICOM in base a criteri di filtro.

Requisiti dei file del filtro

  • Ogni riga del file del 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 il filtro funziona. Ad esempio, puoi selezionare un intero studio specificando /studies/STUDY_INSTANCE_UID oppure puoi selezionare un'intera serie specificando /studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID.

Considera il seguente file di 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 di esempio si applica a quanto segue:

  • L'intero studio con l'UID dell'istanza dello studio 1.123.456.789
  • Due serie distinte con UID istanza serie come 123.456 e 567.890 nello studio 1.666.333.111
  • Tre singole istanze con ID istanza 111, 222 e 333 nello studio 1.888.999.222 e nella serie 123.456

Creare un file di filtro utilizzando BigQuery

Per creare un file di filtro utilizzando BigQuery, devi prima esportare i metadati del tuo archivio DICOM in BigQuery. I metadati esportati mostrano gli UID di studi, serie e istanze dei dati DICOM nell'archivio DICOM.

Dopo aver esportato i metadati, completa i seguenti passaggi:

  1. Esegui una query per restituire gli UID dello studio, delle serie e delle istanze che vuoi aggiungere al file del filtro.

    Ad esempio, la seguente query mostra come concatenare gli UID di studio, serie e istanza in modo che corrispondano ai requisiti del formato del file del filtro:

    SELECT CONCAT
        ('/studies/', StudyInstanceUID, '/series/', SeriesInstanceUID, '/instances/', SOPInstanceUID)
    FROM
        [PROJECT_ID:BIGQUERY_DATASET.BIGQUERY_TABLE]
  2. (Facoltativo) Se la query restituisce un insieme di risultati di grandi dimensioni che supera la dimensione massima della risposta, salva i risultati della query in una nuova tabella di destinazione in BigQuery.

  3. Salva i risultati della query in un file ed esportali in Cloud Storage. Se hai salvato i risultati della query in una nuova tabella di destinazione nel passaggio 2, consulta Esportazione dei dati delle tabelle per esportare i contenuti della tabella in Cloud Storage.

  4. Modifica il file esportato in base alle necessità e includilo nella richiesta per cambiare la classe di archiviazione di più oggetti DICOM.

Creare manualmente un file di filtro

Per creare manualmente un file di filtro:

  1. Crea un file di filtro contenente gli oggetti DICOM in base ai quali vuoi applicare il filtro.
  2. Carica il file del filtro su Cloud Storage. Per le istruzioni, consulta Caricare oggetti da un file system.

Utilizzare un file filtro

Gli esempi riportati di seguito mostrano come applicare un file di filtro quando si modifica la classe di archiviazione degli oggetti DICOM.

REST

  1. Modifica la classe di archiviazione delle istanze DICOM nel file del filtro utilizzando il metodo projects.locations.datasets.dicomStores.studies.series.instances.setBlobStorageSettings.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo progetto Google Cloud
    • LOCATION: la posizione del set di dati
    • DATASET_ID: il set di dati principale dell'archivio DICOM
    • DICOM_STORE_ID: l'ID dell'archivio DICOM
    • STORAGE_CLASS: la classe di archiviazione per gli oggetti DICOM. Uno dei seguenti valori: STANDARD, NEARLINE, COLDLINE o ARCHIVE.
    • CLOUD_STORAGE_BUCKET: il nome del bucket Cloud Storage contenente il file del filtro
    • FILTER_FILE_PATH: l'URI completo del file del filtro nel bucket Cloud Storage

    Corpo JSON della richiesta:

    {
      "blobStorageSettings": {
        "blobStorageClass": "STORAGE_CLASS"
      },
      "filterConfig": {
        "resourcePathsGcsUri": "gs://CLOUD_STORAGE_BUCKET/FILTER_FILE_PATH"
      }
    }
    

    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": {
        "blobStorageClass": "STORAGE_CLASS"
      },
      "filterConfig": {
        "resourcePathsGcsUri": "gs://CLOUD_STORAGE_BUCKET/FILTER_FILE_PATH"
      }
    }
    EOF

    Quindi, esegui il seguente 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/v1/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:

    @'
    {
      "blobStorageSettings": {
        "blobStorageClass": "STORAGE_CLASS"
      },
      "filterConfig": {
        "resourcePathsGcsUri": "gs://CLOUD_STORAGE_BUCKET/FILTER_FILE_PATH"
      }
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Quindi, esegui il seguente 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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:setBlobStorageSettings" | Select-Object -Expand Content
    L'output è il seguente. La risposta contiene un identificatore per un'operazione a lunga esecuzione (LRO). Le operazioni che richiedono molto tempo vengono restituite quando le chiamate ai metodi potrebbero richiedere ulteriore tempo per essere completate. Prendi nota del valore di OPERATION_ID. Questo valore ti servirà nel passaggio successivo.

  2. Recupera lo stato dell'operazione a lunga esecuzione utilizzando il metodo projects.locations.datasets.operations.get.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: l'ID del tuo progetto Google Cloud
    • LOCATION: la posizione del set di dati
    • DATASET_ID: il set di dati principale 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/v1/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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content
    L'output è il seguente. Quando la risposta contiene "done": true, la richiesta di autorizzazione di accesso è terminata.

Visualizzare la classe di archiviazione di un oggetto DICOM

Puoi visualizzare la classe di archiviazione degli oggetti DICOM a livello di studio, serie o istanza.

Le sezioni riportate di seguito descrivono come visualizzare la classe di archiviazione di un'istanza DICOM.

Ottenere informazioni sulla classe di archiviazione per un oggetto DICOM

Gli esempi riportati di seguito mostrano come utilizzare il metodo instances.getStorageInfo per visualizzare la classe di archiviazione degli oggetti DICOM.

REST

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • PROJECT_ID: l'ID del tuo progetto Google Cloud
  • LOCATION: la posizione del set di dati
  • DATASET_ID: il set di dati principale dell'archivio DICOM
  • DICOM_STORE_ID: l'ID dell'archivio DICOM
  • STUDY_INSTANCE_UID: l'identificatore univoco dell'istanza dello studio
  • SERIES_INSTANCE_UID: l'identificatore univoco dell'istanza della serie
  • INSTANCE_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/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

Esegui questo comando:

$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

Explorer API

Apri la pagina di riferimento del metodo. Il riquadro Esplora API si apre sul lato destro della pagina. Puoi interagire con questo strumento per inviare richieste. Compila i campi obbligatori e fai clic su Esegui.

Dovresti ricevere una risposta JSON simile alla seguente:

Esegui query sui metadati DICOM esportati in BigQuery

Puoi esportare i metadati DICOM in BigQuery e poi eseguire query per visualizzare le classi di archiviazione degli oggetti DICOM esportati.

La query riportata di seguito mostra come recuperare l'UID istanza dello studio, l'UID istanza della serie, l'UID istanza, le dimensioni dello spazio di archiviazione e la classe di archiviazione di un massimo di 1000 istanze DICOM da un set di dati BigQuery:

SELECT StudyInstanceUID, SeriesInstanceUID, SOPInstanceUID, BlobStorageSize, StorageClass
FROM PROJECT_ID:BIGQUERY_DATASET.BIGQUERY_TABLE
LIMIT 1000

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del tuo progetto Google Cloud
  • BIGQUERY_DATASET: il set di dati BigQuery principale della tabella contenente i metadati DICOM esportati
  • BIGQUERY_TABLE: la tabella BigQuery contenente i metadati DICOM esportati