In questa pagina viene spiegato come esportare le istanze DICOM da Cloud Storage e come importarvi oggetti DICOM. Un'istanza DICOM è in genere un'immagine, ma può essere un altro tipo di dati persistenti, ad esempio un report strutturato. Un oggetto DICOM in Cloud Storage è un'istanza DICOM presente in Cloud Storage. Per maggiori informazioni, consulta Cloud Storage.
Impostazione delle autorizzazioni Cloud Storage
Prima di esportare e importare i dati DICOM in e da Cloud Storage, devi concedere autorizzazioni aggiuntive all'account di servizio dell'agente di servizio Cloud Healthcare. Per ulteriori informazioni, consulta Autorizzazioni Cloud Storage per gli archivi DICOM.
Importazione degli oggetti DICOM
Per importare più file di istanze DICOM in un archivio DICOM, puoi utilizzare uno dei seguenti metodi:
- Archivia i dati in modo programmatico direttamente in un archivio DICOM dalla tua macchina locale utilizzando il servizio web RESTful Store Transaction come implementato nell'API Cloud Healthcare.
- Carica i dati DICOM in un bucket Cloud Storage e poi importa i file in un archivio DICOM utilizzando una singola operazione di importazione, come spiegato in questa sezione.
Gli esempi riportati di seguito mostrano come importare gli oggetti DICOM da un bucket Cloud Storage.
Console
Per importare oggetti DICOM da un bucket Cloud Storage, completa i seguenti passaggi:
- Nella console Google Cloud , vai alla pagina Set di dati.
Vai a Set di dati - Fai clic sul set di dati contenente l'archivio DICOM in cui stai importando gli oggetti DICOM.
- Nell'elenco dei datastore, scegli Importa dall'elenco Azioni
per l'archivio DICOM.
Viene visualizzata la pagina Importa nell'archivio DICOM. - Nell'elenco Progetto, seleziona un progetto Cloud Storage.
- Nell'elenco Posizione, seleziona un bucket Cloud Storage.
- Per impostare una posizione specifica per l'importazione dei file:
- Espandi Opzioni avanzate.
- Seleziona Override del percorso di Cloud Storage.
- Per impostare un'origine specifica per l'importazione dei file, definisci il percorso
utilizzando le seguenti variabili nella casella di testo Posizione:
*
: trova una corrispondenza con i caratteri non separatori.**
: corrisponde ai caratteri, inclusi i separatori. Può essere utilizzato con un'estensione del nome file per trovare tutti i file dello stesso tipo.?
: corrisponde a un carattere.
- Fai clic su Importa per importare gli oggetti DICOM dall'origine definita.
- Per monitorare lo stato dell'operazione, fai clic sulla scheda Operazioni. Al termine dell'operazione, vengono visualizzate le seguenti indicazioni:
- La sezione Stato operazione a lunga esecuzione è contrassegnata da un segno di spunta verde sotto l'intestazione Ok.
- La sezione Panoramica presenta un segno di spunta verde e un indicatore Ok nella stessa riga dell'ID operazione.
gcloud
Per importare oggetti DICOM da un bucket Cloud Storage, utilizza il comando
gcloud healthcare dicom-stores import gcs
. Specifica il nome del set di dati padre, il nome dell'archivio DICOM e la posizione dell'oggetto in un bucket Cloud Storage.
- La posizione dei file nel bucket è arbitraria e non deve corrispondere esattamente al formato specificato nell'esempio seguente.
- Al momento di specificare la posizione degli oggetti DICOM in Cloud Storage, puoi utilizzare i caratteri jolly per importare più file da una o più directory.
Sono supportati i seguenti caratteri jolly:
- Utilizza
*
per trovare una corrispondenza con nessuno o più caratteri non separatori. Ad esempio,gs://BUCKET/DIRECTORY/Example*.dcm
trova una corrispondenza con test.dcm e test22.dcm in DIRECTORY. - Utilizza
**
per trovare una corrispondenza con nessuno o più caratteri (inclusi i separatori). Deve essere utilizzato alla fine di un percorso e senza altri caratteri jolly nel percorso. Può essere utilizzato anche con un'estensione del nome file (ad esempio .dcm), che importa tutti i file con l'estensione del nome file nella directory specificata e nelle relative sottodirectory. Ad esempio,gs://BUCKET/DIRECTORY/**.dcm
importa tutti i file con l'estensione di nome file .dcm in DIRECTORY e nelle relative sottodirectory. - Utilizza
?
per trovare la corrispondenza di un solo carattere. Ad esempio,gs://BUCKET/DIRECTORY/Example?.dcm
corrisponde a test1.dcm, ma non a test.dcm o test01.dcm.
- Utilizza
L'esempio riportato di seguito mostra come importare gli oggetti DICOM da un bucket Cloud Storage.
gcloud healthcare dicom-stores import gcs DICOM_STORE_ID \ --dataset=DATASET_ID \ --location=LOCATION \ --gcs-uri=gs://BUCKET/DIRECTORY/DICOM_INSTANCE.dcm
La riga di comando visualizza l'ID operazione:
name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID
Per visualizzare lo stato dell'operazione, esegui il comando
gcloud healthcare operations describe
e fornisci OPERATION_ID dalla risposta:
gcloud healthcare operations describe OPERATION_ID \ --location=LOCATION \ --dataset=DATASET_ID
Una volta completato il comando, la risposta include done: true
.
done: true metadata: '@type': type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata apiMethodName: google.cloud.healthcare.v1.dicom.DicomService.ImportDicomData counter: success: SUCCESSFUL_INSTANCES failure: FAILED_INSTANCES createTime: "CREATE_TIME" endTime: "END_TIME" name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID response: '@type': "..."
API
Per importare oggetti DICOM da un bucket Cloud Storage, utilizza il metodo projects.locations.datasets.dicomStores.import
.
- La posizione dei file nel bucket può variare e non deve corrispondere al formato specificato negli esempi seguenti.
- Al momento di specificare la posizione degli oggetti DICOM in Cloud Storage, utilizza i caratteri jolly per importare più file da una o più directory.
Sono supportati i seguenti caratteri jolly:
- Utilizza
*
per trovare una corrispondenza con nessuno o più caratteri non separatori. Ad esempio,gs://BUCKET/DIRECTORY/Example*.dcm
trova una corrispondenza con test.dcm e test22.dcm in DIRECTORY. - Utilizza
**
per trovare una corrispondenza con nessuno o più caratteri (inclusi i separatori). Deve essere utilizzato alla fine di un percorso e senza altri caratteri jolly nel percorso. Può essere utilizzato anche con un'estensione del nome file (ad esempio .dcm), che importa tutti i file con l'estensione del nome file nella directory specificata e nelle relative sottodirectory. Ad esempio,gs://BUCKET/DIRECTORY/**.dcm
importa tutti i file con l'estensione di nome file .dcm in DIRECTORY e nelle relative sottodirectory. - Utilizza
?
per trovare la corrispondenza di un solo carattere. Ad esempio,gs://BUCKET/DIRECTORY/Example?.dcm
corrisponde a test1.dcm, ma non a test.dcm o test01.dcm.
- Utilizza
REST
Importa l'oggetto DICOM.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
PROJECT_ID
: l'ID del tuo Google Cloud progettoLOCATION
: la posizione del set di datiDATASET_ID
: il set di dati principale dell'archivio DICOMDICOM_STORE_ID
: l'ID archivio DICOMBUCKET/PATH/TO/FILE
: il percorso dell'oggetto DICOM in Cloud Storage
Corpo JSON della richiesta:
{ "gcsSource": { "uri": "gs://BUCKET/PATH/TO/FILE.dcm" } }
Per inviare la richiesta, scegli una di queste 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' { "gcsSource": { "uri": "gs://BUCKET/PATH/TO/FILE.dcm" } } 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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:import"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:@' { "gcsSource": { "uri": "gs://BUCKET/PATH/TO/FILE.dcm" } } '@ | 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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:import" | Select-Object -Expand ContentRecuperare lo stato dell'operazione a lunga esecuzione.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: l'ID del tuo Google Cloud progetto
- 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 di queste 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
Go
Java
Node.js
Python
Per recuperare una singola istanza o un singolo studio da un archivio DICOM, recupera i dati DICOM utilizzando il servizio web RESTful Retrieve Transaction implementato nell'API Cloud Healthcare.
Specificare una classe di archiviazione per importare oggetti DICOM (anteprima)
Per impostazione predefinita, il metodo projects.locations.datasets.dicomStores.import
importa
un oggetto DICOM in un archivio DICOM con una classe di archiviazione standard. Puoi impostare la
classe di archiviazione quando importi oggetti DICOM da Cloud Storage.
Per ulteriori informazioni, vedi
Modificare la classe di archiviazione DICOM.
Gli esempi riportati di seguito mostrano come specificare la classe di archiviazione quando importi gli oggetti DICOM da Cloud Storage.
REST
Utilizza il metodo projects.locations.datasets.dicomStores.import
.
Importa l'oggetto DICOM.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
PROJECT_ID
: l'ID del tuo Google Cloud progettoLOCATION
: la posizione del set di datiDATASET_ID
: il set di dati principale dell'archivio DICOMDICOM_STORE_ID
: l'ID archivio DICOMBUCKET/PATH/TO/FILE
: il percorso dell'oggetto DICOM in Cloud StorageSTORAGE_CLASS
: la classe di archiviazione per l'oggetto DICOM nell'archivio DICOM daSTANDARD
,NEARLINE
,COLDLINE
eARCHIVE
Corpo JSON della richiesta:
{ "gcsSource": { "uri": "gs://BUCKET/PATH/TO/FILE.dcm" }, "blob_storage_settings": { "blob_storage_class": "STORAGE_CLASS" } }
Per inviare la richiesta, scegli una di queste 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' { "gcsSource": { "uri": "gs://BUCKET/PATH/TO/FILE.dcm" }, "blob_storage_settings": { "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:import"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:@' { "gcsSource": { "uri": "gs://BUCKET/PATH/TO/FILE.dcm" }, "blob_storage_settings": { "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:import" | Select-Object -Expand ContentRecuperare lo stato dell'operazione a lunga esecuzione.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: l'ID del tuo Google Cloud progetto
- 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 di queste 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
Risoluzione dei problemi relativi alle richieste di importazione DICOM
Se si verificano errori durante una richiesta di importazione DICOM, questi vengono registrati in Cloud Logging. Per ulteriori informazioni, consulta Visualizzazione dei log degli errori su Cloud Logging.
Esportazione delle istanze DICOM
Gli esempi riportati di seguito mostrano come esportare le istanze DICOM in un bucket Cloud Storage. Questa operazione prevede l'esportazione di tutte le istanze nell'archivio DICOM.
Console
Per esportare le istanze DICOM in Cloud Storage, completa i seguenti passaggi:
- Nella console Google Cloud , vai alla pagina Set di dati.
Vai a Set di dati - Fai clic sul set di dati contenente l'archivio DICOM da cui stai esportando le istanze DICOM.
- Nell'elenco dei datastore, scegli Esporta dall'elenco Azioni per l'archivio DICOM.
- Nella pagina Esporta archivio DICOM visualizzata, seleziona Bucket Google Cloud Storage.
- Nell'elenco Progetto, seleziona un progetto Cloud Storage.
- Nell'elenco Posizione, seleziona un bucket Cloud Storage.
- In Impostazioni di esportazione DICOM, seleziona il tipo di file utilizzato per esportare
le istanze DICOM. Sono disponibili i seguenti tipi:
- File DICOM (
.dcm
) - octet-stream
- Immagine (
.jpg
,.png
)
- File DICOM (
- Per definire una sintassi di trasferimento aggiuntiva, scegli la sintassi dall'elenco Sintassi di trasferimento.
- Fai clic su Esporta per esportare le istanze DICOM nella posizione definita in Cloud Storage.
- Per monitorare lo stato dell'operazione, fai clic sulla scheda Operazioni. Al termine dell'operazione, vengono visualizzate le seguenti indicazioni:
- La sezione Stato operazione a lunga esecuzione è contrassegnata da un segno di spunta verde sotto l'intestazione Ok.
- La sezione Panoramica presenta un segno di spunta verde e un indicatore Ok nella stessa riga dell'ID operazione.
gcloud
Per esportare le istanze DICOM in un bucket Cloud Storage, utilizza il comando
gcloud healthcare dicom-stores export gcs
.
- Specifica il nome del set di dati padre, il nome dell'archivio DICOM e il bucket Cloud Storage di destinazione.
- La scrittura deve avvenire in una directory o in un bucket Cloud Storage, anziché in un oggetto, perché l'API Cloud Healthcare crea un file
.dcm
per ogni oggetto. - Se il comando specifica una directory che non esiste, la directory viene creata.
L'esempio seguente mostra il comando gcloud healthcare dicom-stores export gcs
.
gcloud healthcare dicom-stores export gcs DICOM_STORE_ID \ --dataset=DATASET_ID \ --location=LOCATION \ --gcs-uri-prefix=gs://BUCKET/DIRECTORY
La riga di comando visualizza l'ID operazione:
name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID
Per visualizzare lo stato dell'operazione, esegui il comando
gcloud healthcare operations describe
e fornisci OPERATION_ID dalla risposta:
gcloud healthcare operations describe OPERATION_ID \ --location=LOCATION \ --dataset=DATASET_ID
Una volta completato il comando, la risposta include done: true
.
done: true metadata: '@type': type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata apiMethodName: google.cloud.healthcare.v1.dicom.DicomService.ExportDicomData counter: success: SUCCESSFUL_INSTANCES failure: FAILED_INSTANCES createTime: "CREATE_TIME" endTime: "END_TIME" name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID response: '@type': "..."
API
Per esportare le istanze DICOM in un bucket Cloud Storage, utilizza il metodo
projects.locations.datasets.dicomStores.export
.
- La scrittura deve avvenire in una directory o in un bucket Cloud Storage, anziché in un oggetto, perché
l'API Cloud Healthcare crea un file
.dcm
per ogni oggetto DICOM. - Se il comando specifica una directory che non esiste, la directory viene creata.
curl
Per esportare le istanze DICOM, effettua una richiesta POST
e specifica le seguenti informazioni:
- Il nome e la posizione del set di dati principale
- Il nome dell'archivio DICOM
- Il bucket Cloud Storage di destinazione
L'esempio seguente mostra una richiesta POST
mediante curl
.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ 'gcsDestination': { 'uriPrefix': 'gs://BUCKET/DIRECTORY' } }" "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:export"
Se la richiesta riesce, il server restituisce la risposta in formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
La risposta contiene il nome di un'operazione. Per monitorare lo stato dell'operazione,
utilizza il
metodo Operation get
:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
Se la richiesta riesce, il server restituisce una risposta con lo stato dell'operazione in formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata", "apiMethodName": "google.cloud.healthcare.v1.dicom.DicomService.ExportDicomData", "createTime": "CREATE_TIME", "endTime": "END_TIME", "logsUrl": "https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL", "counter":{ "success": SUCCESSFUL_INSTANCES "failure": FAILED_INSTANCES } }, "done": true, "response": { "@type": "..." } }
PowerShell
Per esportare le istanze DICOM, effettua una richiesta POST
e specifica le seguenti informazioni:
- Il nome e la posizione del set di dati principale
- Il nome dell'archivio DICOM
- Il bucket Cloud Storage di destinazione
Il seguente esempio mostra una richiesta POST
mediante Windows PowerShell.
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body "{ 'gcsDestination': { 'uriPrefix': 'gs://BUCKET/DIRECTORY' } }" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:export" | Select-Object -Expand Content
Se la richiesta riesce, il server restituisce la risposta in formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
La risposta contiene il nome di un'operazione. Per monitorare lo stato dell'operazione,
utilizza il
metodo get
dell'operazione:
$cred = gcloud auth application-default 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
Se la richiesta riesce, il server restituisce una risposta con lo stato dell'operazione in formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata", "apiMethodName": "google.cloud.healthcare.v1.dicom.DicomService.ExportDicomData", "createTime": "CREATE_TIME", "endTime": "END_TIME", "logsUrl": "https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL", "counter":{ "success": SUCCESSFUL_INSTANCES "failure": FAILED_INSTANCES }, }, "done": true, "response": { "@type": "..." } }
Go
Java
Node.js
Python
Esportazione delle istanze DICOM mediante filtri
Per impostazione predefinita, quando esporti i file DICOM in Cloud Storage, vengono esportati tutti i file DICOM nell'archivio DICOM. Allo stesso modo, quando esporti i metadati DICOM in BigQuery, vengono esportati i metadati di tutti i dati DICOM nell'archivio DICOM.
Puoi esportare un sottoinsieme di dati o metadati DICOM utilizzando un file di filtro.
Configurare un file di filtri
- Ogni riga del 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 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 filtri:
/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 filtri di esempio si applica a:
- L'intero studio con l'UID istanza studio
1.123.456.789
- Due serie distinte con UID istanza serie come
123.456
e567.890
nello studio1.666.333.111
- Tre singole istanze con ID istanza
111
,222
e333
nello studio1.888.999.222
e nella serie123.456
Creare un file di filtri utilizzando BigQuery
Per creare un file di filtri utilizzando BigQuery, devi prima esportare i metadati dell'archivio DICOM in BigQuery. I metadati esportati mostrano gli UID di studio, serie e istanza dei dati DICOM nell'archivio DICOM.
Dopo aver esportato i metadati, completa i seguenti passaggi:
Esegui una query per restituire gli UID dello studio, della serie e delle istanze che vuoi aggiungere al file di filtri.
Ad esempio, la seguente query mostra come concatenare gli UID di studio, serie e istanza per soddisfare i requisiti del formato del file di 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 la dimensione massima 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 delle tabelle per esportare i contenuti della tabella in Cloud Storage.
Modifica il file esportato in base alle esigenze e includilo nella richiesta di modifica della classe di archiviazione di più oggetti DICOM.
Crea manualmente un file di filtri
Per creare manualmente un file di filtri:
- Crea un file di filtro contenente gli oggetti DICOM su cui stai filtrando.
- Carica il file di filtri su Cloud Storage. Per le istruzioni, vedi Carica oggetti da un file system.
Passaggio nel file di filtri
Dopo aver creato un file di filtro, chiama l'operazione di esportazione DICOM e trasferisci il file di filtro utilizzando l'API REST. Gli esempi riportati di seguito mostrano come esportare i dati DICOM utilizzando un filtro.
gcloud
Per esportare i metadati DICOM in Cloud Storage utilizzando un filtro, utilizza il comando
gcloud beta healthcare dicom-stores export gcs
:
gcloud beta healthcare dicom-stores export gcs DICOM_STORE_ID \ --dataset=DATASET_ID \ --location=LOCATION \ --gcs-uri-prefix=gs://DESTINATION_BUCKET/DIRECTORY \ --filter-config-gcs-uri=gs://BUCKET/DIRECTORY/FILTER_FILE
Sostituisci quanto segue:
- DICOM_STORE_ID: l'identificatore dell'archivio DICOM
- DATASET_ID: il nome del set di dati padre dell'archivio DICOM
- LOCATION: la posizione del set di dati padre dell'archivio DICOM
- DESTINATION_BUCKET/DIRECTORY: il bucket Cloud Storage di destinazione
- BUCKET/DIRECTORY/FILTER_FILE: la posizione del file di filtro in un bucket Cloud Storage
L'output è il seguente:
Request issued for: [DICOM_STORE_ID] Waiting for operation [projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID] to complete...done. name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID
Per visualizzare lo stato dell'operazione, esegui il comando
gcloud healthcare operations describe
e fornisci OPERATION_ID dalla risposta:
gcloud healthcare operations describe OPERATION_ID \ --location=LOCATION \ --dataset=DATASET_ID
Sostituisci quanto segue:
- OPERATION_ID: il numero ID restituito dalla risposta precedente
- DATASET_ID: il nome del set di dati padre dell'archivio DICOM
- LOCATION: la posizione del set di dati padre dell'archivio DICOM
L'output è il seguente:
done: true metadata: '@type': type.googleapis.com/google.cloud.healthcare.v1beta1.OperationMetadata apiMethodName: google.cloud.healthcare.v1beta1.dicom.DicomService.ExportDicomData counter: success: SUCCESSFUL_INSTANCES failure: FAILED_INSTANCES createTime: 'CREATE_TIME' endTime: 'END_TIME' logsUrl: 'https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL' name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID response: '@type': '...'
API
Per esportare i dati DICOM utilizzando un filtro, utilizza il metodo projects.locations.datasets.dicomStores.export
.
curl
Per esportare i dati DICOM utilizzando un file di filtri, effettua una richiesta POST
e specifica le seguenti informazioni:
- Il nome e la posizione del set di dati principale
- Il nome dell'archivio DICOM
- Il bucket Cloud Storage di destinazione
- La posizione del file di filtro in un bucket Cloud Storage
L'esempio seguente mostra una richiesta POST
mediante curl
.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ 'gcsDestination': { 'uriPrefix': 'gs://BUCKET/DIRECTORY' }, 'filterConfig': { 'resourcePathsGcsUri': 'gs://BUCKET/DIRECTORY/FILTER_FILE' } }" "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:export"
Se la richiesta riesce, il server restituisce la seguente risposta in formato JSON:
{ "name": "projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/operations/OPERATION_ID" }
La risposta contiene il nome di un'operazione. Utilizza il
metodo get
dell'operazione
per tenere traccia dello stato dell'operazione:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/operations/OPERATION_NAME"
Se la richiesta riesce, il server restituisce la seguente risposta in formato JSON:
{ "name": "projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.healthcare.v1beta1.OperationMetadata", "apiMethodName": "google.cloud.healthcare.v1beta1.dicom.DicomService.ExportDicomData", "createTime": "CREATE_TIME", "endTime": "END_TIME" }, "done": true, "response": { "@type": "..." } }
PowerShell
Per esportare i dati DICOM utilizzando un file di filtri, effettua una richiesta POST
e specifica le seguenti informazioni:
- Il nome e la posizione del set di dati principale
- Il nome dell'archivio DICOM
- Il bucket Cloud Storage di destinazione
- La posizione del file di filtro in un bucket Cloud Storage
Il seguente esempio mostra una richiesta POST
mediante Windows PowerShell.
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body "{ 'gcsDestination': { 'uriPrefix': 'gs://BUCKET/DIRECTORY' }, 'filterConfig': { 'resourcePathsGcsUri': 'gs://BUCKET/DIRECTORY/FILTER_FILE' }" ` -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:export" | Select-Object -Expand Content
Se la richiesta riesce, il server restituisce la seguente risposta in formato JSON:
{ "name": "projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/operations/OPERATION_ID" }
La risposta contiene il nome di un'operazione. Utilizza il metodo get
dell'operazione per tenere traccia del relativo stato:
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Get ` -Headers $headers ` -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/operations/OPERATION_NAME" | Select-Object -Expand Content
Se la richiesta riesce, il server restituisce la seguente risposta con lo stato dell'operazione in formato JSON:
{ "name": "projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.healthcare.v1beta1.OperationMetadata", "apiMethodName": "google.cloud.healthcare.v1beta1.dicom.DicomService.ExportDicomData", "createTime": "CREATE_TIME", "endTime": "END_TIME" }, "done": true, "response": { "@type": "..." } }
Risoluzione dei problemi relativi alle richieste di esportazione DICOM
Se si verificano errori durante una richiesta di esportazione DICOM, questi vengono registrati in Cloud Logging. Per ulteriori informazioni, consulta Visualizzazione dei log degli errori su Cloud Logging.
Se l'intera operazione restituisce un errore, consulta la sezione Risoluzione dei problemi relativi alle operazioni a lunga esecuzione.