In questa pagina viene spiegato come esportare i metadati DICOM in BigQuery ai fini dell'approfondimento e dell'analisi. Per informazioni sullo schema BigQuery creato durante l'esportazione dei metadati DICOM, vedi Informazioni sullo schema DICOM di BigQuery.
Impostazione delle autorizzazioni BigQuery
Prima di esportare i metadati DICOM in una tabella BigQuery, devi concedere autorizzazioni aggiuntive all'account di servizio dell'agente di servizio Cloud Healthcare. Per ulteriori informazioni, consulta Autorizzazioni BigQuery per gli archivi DICOM.
Impostazione della destinazione BigQuery
Quando imposti la destinazione BigQuery, utilizza l'URI completo, come segue:bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID
- Indica se la tabella di destinazione esiste già.
- Se hai impostato il campo
force
(utilizzando l'API) o il flag--overwrite-table
(utilizzando Google Cloud CLI) - Indica se hai impostato un valore per l'enumerazione
writeDisposition
. Se utilizzi l'enumerazionewriteDisposition
, non impostare il campoforce
.
- Se la tabella di destinazione esiste già e
force
è impostato sutrue
o se è specificato il flag--overwrite-table
, l'operazione di esportazione sovrascrive la tabella esistente. - Se la tabella di destinazione esiste già e
force
è impostato sufalse
o il flag--overwrite-table
non è specificato, si verifica un errore. - Se la tabella di destinazione non esiste già, viene creata una nuova tabella, indipendentemente dal fatto che tu specifichi il campo
force
o il flag--overwrite-table
. - Il comportamento di
writeDisposition
è descritto nella relativa documentazione. L'enumerazionewriteDisposition
ha un comportamento simile alle opzioni quando si utilizzaforce
, con la seguente eccezione: se la tabella di destinazione esiste già ed è vuota, l'operazione di esportazione viene completata anziché restituire un errore.
Esportazione dei metadati DICOM
Gli esempi riportati di seguito mostrano come esportare i metadati DICOM in una tabella BigQuery. In questi esempi, l'archivio DICOM e la tabella BigQuery si trovano nello stesso progetto. Per esportare i metadati DICOM in una tabella BigQuery in un altro progetto, consulta Esportazione dei metadati DICOM in un altro progetto.
Console
Per esportare i metadati DICOM in una tabella BigQuery, completa i seguenti passaggi:
Nella console Google Cloud , vai alla pagina Set di dati.
Fai clic sul set di dati che contiene l'archivio DICOM con i metadati che stai esportando.
Nella stessa riga dell'archivio DICOM, apri l'elenco Azioni e seleziona Esporta.
Nella pagina Esporta archivio DICOM visualizzata, seleziona Tabella BigQuery.
Nel campo Progetto, fai clic su Sfoglia e seleziona il tuo progetto.
Nell'elenco Set di dati, seleziona il set di dati BigQuery in cui stai esportando i metadati DICOM.
Nel campo Table (Tabella), inserisci un nuovo nome per la tabella. BigQuery controlla ogni selezione per assicurarsi che la tabella di destinazione sia valida.
Nella sezione Istruzione di scrittura della tabella di destinazione, seleziona una delle seguenti opzioni. Queste opzioni corrispondono all'enumerazione
WriteDisposition
.- Esporta i dati solo se la tabella di destinazione è vuota: equivalente a
WRITE_EMPTY
- Aggiungi i dati alla tabella di destinazione: equivalente a
WRITE_APPEND
- Cancella tutti i dati esistenti nella tabella di destinazione prima di scrivere le istanze: equivalente a
WRITE_TRUNCATE
.
- Esporta i dati solo se la tabella di destinazione è vuota: equivalente a
Fai clic su Esporta per esportare i metadati DICOM nella tabella BigQuery.
- 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 i metadati DICOM in una tabella BigQuery, esegui il comando
gcloud healthcare dicom-stores export bq
.
Esporta i metadati DICOM.
Prima di utilizzare i dati dei comandi riportati di seguito, effettua 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
- DICOM_STORE_ID: l'ID archivio DICOM
- BIGQUERY_DATASET_ID: il nome di un set di dati BigQuery esistente in cui stai esportando i metadati DICOM
- BIGQUERY_TABLE_ID: il nome di una tabella nuova o esistente nel set di dati BigQuery. Se l'operazione di esportazione sta creando una nuova tabella, consulta la sezione Denominazione delle tabelle per i requisiti relativi al nome della tabella.
- WRITE_DISPOSITION: un valore per l'enum
WriteDisposition
. Utilizza uno dei seguenti valori:write-empty
: esporta i dati solo se la tabella BigQuery è vuota.write-truncate
: cancella tutti i dati esistenti nella tabella BigQuery prima di scrivere le istanze DICOM.write-append
: aggiungi dati alla tabella BigQuery.
Esegui questo comando:
Linux, macOS o Cloud Shell
gcloud healthcare dicom-stores export bq DICOM_STORE_ID \ --location=LOCATION \ --dataset=DATASET_ID \ --bq-table=bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID \ --write-disposition=WRITE_DISPOSITION
Windows (PowerShell)
gcloud healthcare dicom-stores export bq DICOM_STORE_ID ` --location=LOCATION ` --dataset=DATASET_ID ` --bq-table=bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID ` --write-disposition=WRITE_DISPOSITION
Windows (cmd.exe)
gcloud healthcare dicom-stores export bq DICOM_STORE_ID ^ --location=LOCATION ^ --dataset=DATASET_ID ^ --bq-table=bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID ^ --write-disposition=WRITE_DISPOSITION
name
al termine dell'esportazione. Prendi nota del valore diOPERATION_ID
. Ti servirà nel passaggio successivo.Risposta
Request issued for: [DICOM_STORE_ID] Waiting for operation [projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID] to complete...⠏ name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID
Per visualizzare ulteriori dettagli sull'operazione, esegui il comando
gcloud healthcare operations describe
e fornisci OPERATION_ID dalla risposta:Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:
- PROJECT_ID: l'ID del tuo Google Cloud progetto
- DATASET_ID: l'ID set di dati
- LOCATION: la posizione del set di dati
- OPERATION_ID: l'ID restituito dall'operazione a lunga esecuzione
Esegui questo comando:
Linux, macOS o Cloud Shell
gcloud healthcare operations describe OPERATION_ID \ --project=PROJECT_ID \ --dataset=DATASET_ID \ --location=LOCATION
Windows (PowerShell)
gcloud healthcare operations describe OPERATION_ID ` --project=PROJECT_ID ` --dataset=DATASET_ID ` --location=LOCATION
Windows (cmd.exe)
gcloud healthcare operations describe OPERATION_ID ^ --project=PROJECT_ID ^ --dataset=DATASET_ID ^ --location=LOCATION
Dovresti ricevere una risposta simile alla seguente:
Risposta
done: true // If there were any errors, an `error` field displays instead of a `response` field. // See Troubleshooting long-running operations for a list of response codes. error: ERROR code: ERROR_CODE message: DESCRIPTION metadata: '@type': 'type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata' apiMethodName: 'google.cloud.healthcare.v1.dicom.DicomService.ExportDicomData_bq' counter: success: 'SUCCESS_COUNT' // If there were any failures, they display in the `failure` field. failure: 'FAILURE_COUNT' createTime: 'YYYY-MM-DDTHH:MM:SS+ZZ:ZZ' endTime: 'YYYY-MM-DDTHH:MM:SS+ZZ:ZZ' logsUrl: https://console.cloud.google.com/CLOUD_LOGGING_URL name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID // The `response` field only displays if there were no errors. response: '@type': 'type.googleapis.com/google.protobuf.Empty'
REST
Per esportare i metadati DICOM in una tabella BigQuery, utilizza il metodo
projects.locations.datasets.dicomStores.export
.
Esporta i metadati DICOM.
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
- DICOM_STORE_ID: l'ID archivio DICOM
- BIGQUERY_DATASET_ID: il nome di un set di dati BigQuery esistente in cui stai esportando i metadati DICOM
- BIGQUERY_TABLE_ID: il nome di una tabella nuova o esistente nel set di dati BigQuery. Se l'operazione di esportazione sta creando una nuova tabella, consulta la sezione Denominazione delle tabelle per i requisiti relativi al nome della tabella.
- WRITE_DISPOSITION: un valore per l'enum
WriteDisposition
. Utilizza uno dei seguenti valori:WRITE_EMPTY
: esporta i dati solo se la tabella BigQuery è vuota.WRITE_TRUNCATE
: cancella tutti i dati esistenti nella tabella BigQuery prima di scrivere le istanze DICOM.WRITE_APPEND
: aggiungi dati alla tabella BigQuery.
Corpo JSON della richiesta:
{ "bigqueryDestination": { "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" } }
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' { "bigqueryDestination": { "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" } } 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; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:export"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:@' { "bigqueryDestination": { "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" } } '@ | 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; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:export" | Select-Object -Expand ContentExplorer API
Copia il corpo della richiesta e apri la pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Explorer API. 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.
OPERATION_ID
. Ti servirà nel passaggio successivo.Utilizza il metodo
projects.locations.datasets.operations.get
per ottenere 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
- DATASET_ID: l'ID set di dati
- LOCATION: la posizione del set di dati
- 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 ContentExplorer API
Apri la pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Explorer API. Puoi interagire con questo strumento per inviare richieste. Completa i campi obbligatori e fai clic su Esegui.
"done": true
, l'operazione a lunga esecuzione è terminata.
Esportazione dei metadati DICOM in un altro progetto
Per esportare i metadati DICOM da un archivio DICOM in un progetto a un set di dati BigQuery in un altro progetto, consulta prima Esportazione dei metadati DICOM in un altro progetto: autorizzazioni per informazioni su come impostare le autorizzazioni IAM nel progetto di destinazione.
gcloud
Per esportare i metadati DICOM da un archivio DICOM in un progetto a una tabella BigQuery in un altro progetto, utilizza il comando
gcloud healthcare dicom-stores export bq
.
Esporta i metadati DICOM.
Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:
- SOURCE_PROJECT_ID: l'ID del progetto Google Cloud di origine
- SOURCE_LOCATION: la posizione del set di dati di origine
- SOURCE_DATASET_ID: il set di dati padre dell'archivio DICOM di origine
- SOURCE_DICOM_STORE_ID: l'ID dell'archivio DICOM di origine
- DESTINATION_PROJECT_ID: l'ID del progetto diverso
- DESTINATION_BIGQUERY_DATASET_ID: il nome di un set di dati BigQuery esistente nel progetto di destinazione in cui stai esportando i metadati DICOM
- DESTINATION_BIGQUERY_TABLE_ID: il nome di una tabella nuova o esistente nel set di dati BigQuery. Se l'operazione di esportazione sta creando una nuova tabella, consulta la sezione Denominazione delle tabelle per i requisiti relativi al nome della tabella.
- WRITE_DISPOSITION: un valore per l'enum
WriteDisposition
. Utilizza uno dei seguenti valori:write-empty
: esporta i dati solo se la tabella BigQuery è vuota.write-truncate
: cancella tutti i dati esistenti nella tabella BigQuery prima di scrivere le istanze DICOM.write-append
: aggiungi dati alla tabella BigQuery.
Esegui questo comando:
Linux, macOS o Cloud Shell
gcloud healthcare dicom-stores export bq SOURCE_DICOM_STORE_ID \ --project=SOURCE_PROJECT_ID \ --location=SOURCE_LOCATION \ --dataset=SOURCE_DATASET_ID \ --bq-table=bq://DESTINATION_PROJECT_ID.DESTINATION_BIGQUERY_DATASET_ID.DESTINATION_BIGQUERY_TABLE_ID \ --write-disposition=WRITE_DISPOSITION
Windows (PowerShell)
gcloud healthcare dicom-stores export bq SOURCE_DICOM_STORE_ID ` --project=SOURCE_PROJECT_ID ` --location=SOURCE_LOCATION ` --dataset=SOURCE_DATASET_ID ` --bq-table=bq://DESTINATION_PROJECT_ID.DESTINATION_BIGQUERY_DATASET_ID.DESTINATION_BIGQUERY_TABLE_ID ` --write-disposition=WRITE_DISPOSITION
Windows (cmd.exe)
gcloud healthcare dicom-stores export bq SOURCE_DICOM_STORE_ID ^ --project=SOURCE_PROJECT_ID ^ --location=SOURCE_LOCATION ^ --dataset=SOURCE_DATASET_ID ^ --bq-table=bq://DESTINATION_PROJECT_ID.DESTINATION_BIGQUERY_DATASET_ID.DESTINATION_BIGQUERY_TABLE_ID ^ --write-disposition=WRITE_DISPOSITION
name
al termine dell'esportazione. Prendi nota del valore diOPERATION_ID
. Ti servirà nel passaggio successivo.Risposta
Request issued for: [SOURCE_DICOM_STORE_ID] Waiting for operation [projects/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID] to complete...⠏ name: projects/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID
Per visualizzare ulteriori dettagli sull'operazione, esegui il comando
gcloud healthcare operations describe
e fornisci OPERATION_ID dalla risposta:Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:
- SOURCE_PROJECT_ID: l'ID del progetto Google Cloud di origine
- SOURCE_LOCATION: la posizione del set di dati di origine
- SOURCE_DATASET_ID: l'ID del set di dati di origine
- OPERATION_ID: l'ID restituito dall'operazione a lunga esecuzione
Esegui questo comando:
Linux, macOS o Cloud Shell
gcloud healthcare operations describe OPERATION_ID \ --project=SOURCE_PROJECT_ID \ --dataset=SOURCE_DATASET_ID \ --location=SOURCE_LOCATION
Windows (PowerShell)
gcloud healthcare operations describe OPERATION_ID ` --project=SOURCE_PROJECT_ID ` --dataset=SOURCE_DATASET_ID ` --location=SOURCE_LOCATION
Windows (cmd.exe)
gcloud healthcare operations describe OPERATION_ID ^ --project=SOURCE_PROJECT_ID ^ --dataset=SOURCE_DATASET_ID ^ --location=SOURCE_LOCATION
Dovresti ricevere una risposta simile alla seguente:
Risposta
done: true // If there were any errors, an `error` field displays instead of a `response` field. // See Troubleshooting long-running operations for a list of response codes. error: ERROR code: ERROR_CODE message: DESCRIPTION metadata: '@type': 'type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata' apiMethodName: 'google.cloud.healthcare.v1.dicom.DicomService.ExportDicomData_bq' counter: success: 'SUCCESS_COUNT' // If there were any failures, they display in the `failure` field. failure: 'FAILURE_COUNT' createTime: 'YYYY-MM-DDTHH:MM:SS+ZZ:ZZ' endTime: 'YYYY-MM-DDTHH:MM:SS+ZZ:ZZ' logsUrl: https://console.cloud.google.com/CLOUD_LOGGING_URL name: projects/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID // The `response` field only displays if there were no errors. response: '@type': 'type.googleapis.com/google.protobuf.Empty'
REST
Per esportare i metadati DICOM da un archivio DICOM in un progetto a una tabella BigQuery in un altro progetto, utilizza il metodo
projects.locations.datasets.dicomStores.export
.
Esporta i metadati DICOM.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- SOURCE_PROJECT_ID: l'ID del progetto Google Cloud di origine
- SOURCE_LOCATION: la posizione del set di dati di origine
- SOURCE_DATASET_ID: il set di dati padre dell'archivio DICOM di origine
- SOURCE_DICOM_STORE_ID: l'ID dell'archivio DICOM di origine
- DESTINATION_PROJECT_ID: l'ID del progetto diverso
- DESTINATION_BIGQUERY_DATASET_ID: il nome di un set di dati BigQuery esistente nel progetto di destinazione in cui stai esportando i metadati DICOM
- DESTINATION_BIGQUERY_TABLE_ID: il nome di una tabella nuova o esistente nel set di dati BigQuery. Se l'operazione di esportazione sta creando una nuova tabella, consulta la sezione Denominazione delle tabelle per i requisiti relativi al nome della tabella.
- WRITE_DISPOSITION: un valore per l'enum
WriteDisposition
. Utilizza uno dei seguenti valori:WRITE_EMPTY
: esporta i dati solo se la tabella BigQuery è vuota.WRITE_TRUNCATE
: cancella tutti i dati esistenti nella tabella BigQuery prima di scrivere le istanze DICOM.WRITE_APPEND
: aggiungi dati alla tabella BigQuery.
Corpo JSON della richiesta:
{ "bigqueryDestination": { "tableUri": "bq://DESTINATION_PROJECT_ID.DESTINATION_BIGQUERY_DATASET_ID.DESTINATION_BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" } }
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' { "bigqueryDestination": { "tableUri": "bq://DESTINATION_PROJECT_ID.DESTINATION_BIGQUERY_DATASET_ID.DESTINATION_BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" } } 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; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/SOURCE_DICOM_STORE_ID:export"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:@' { "bigqueryDestination": { "tableUri": "bq://DESTINATION_PROJECT_ID.DESTINATION_BIGQUERY_DATASET_ID.DESTINATION_BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" } } '@ | 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; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/SOURCE_DICOM_STORE_ID:export" | Select-Object -Expand ContentExplorer API
Copia il corpo della richiesta e apri la pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Explorer API. 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.
OPERATION_ID
. Ti servirà nel passaggio successivo.Utilizza il metodo
projects.locations.datasets.operations.get
per ottenere lo stato dell'operazione a lunga esecuzione.Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- SOURCE_PROJECT_ID: l'ID del progetto Google Cloud di origine
- SOURCE_LOCATION: la posizione del set di dati di origine
- SOURCE_DATASET_ID: l'ID del set di dati di origine
- 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/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_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/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentExplorer API
Apri la pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Explorer API. Puoi interagire con questo strumento per inviare richieste. Completa i campi obbligatori e fai clic su Esegui.
"done": true
, l'operazione a lunga esecuzione è terminata.
Esportazione dei metadati DICOM mediante filtri
Per impostazione predefinita, quando esporti i file DICOM in Cloud Storage, vengono esportati tutti i file DICOM nell'archivio DICOM specificato. Analogamente, quando esporti i metadati DICOM in BigQuery, vengono esportati i metadati di tutti i dati DICOM nell'archivio DICOM specificato.
Puoi esportare un sottoinsieme di dati o metadati DICOM utilizzando un filtro. Definisci il filtro in un file di filtri.
Configurare i file di filtro
Un file di filtro definisce quali file DICOM esportare in Cloud Storage o BigQuery. Puoi configurare i file di filtri ai seguenti livelli:
- A livello di studio
- A livello di serie
- A livello di istanza
Il file di filtro è composto da più righe, ognuna delle quali definisce lo
studio, la serie o l'istanza che vuoi
esportare. Ogni riga utilizza il formato /studies/STUDY_UID[/series/SERIES_UID[/instances/INSTANCE_UID]]
.
Se uno studio, una serie o un'istanza non è specificato nel file di filtro quando lo passi, non verrà esportato.
È necessaria solo la parte /studies/STUDY_UID
del percorso. Puoi esportare un intero studio specificando
/studies/STUDY_UID
oppure un'intera
serie specificando /studies/STUDY_UID/series/SERIES_UID
.
Considera il seguente file di filtri. Il file di filtro comporterà l'esportazione di uno studio, due serie e tre singole istanze:
/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
Creazione di un file di filtri utilizzando BigQuery
In genere, si crea un file di filtro esportando prima i metadati da un archivio DICOM a BigQuery. In questo modo, puoi utilizzare BigQuery per visualizzare gli UID di studio, serie e istanza dei dati DICOM nel tuo archivio DICOM. A questo punto, puoi completare i seguenti passaggi:
-
Esegui una query per gli UID di studio, serie e istanza che ti interessano.
Ad esempio, dopo aver esportato i metadati DICOM in BigQuery, puoi eseguire la seguente query per concatenare gli UID di studio, serie e istanza in un formato compatibile con i requisiti del file di filtro:
SELECT CONCAT ('/studies/', StudyInstanceUID, '/series/', SeriesInstanceUID, '/instances/', SOPInstanceUID) FROM [PROJECT_ID:BIGQUERY_DATASET.BIGQUERY_TABLE]
- Se la query restituisce un set di risultati di grandi dimensioni, puoi materializzare una nuova tabella salvando i risultati della query in una tabella di destinazione in BigQuery.
- Se hai salvato i risultati della query in una tabella di destinazione, puoi salvare i contenuti della tabella di destinazione in un file ed esportarlo in Cloud Storage. Per i passaggi su come farlo, consulta Esportazione dei dati della tabella. Il file esportato è il file di filtri. Utilizzi la posizione del file di filtro in Cloud Storage quando specifichi il filtro nell'operazione di esportazione.
Creazione manuale di un file di filtri
Puoi creare un file di filtri con contenuti personalizzati e caricarlo in un bucket Cloud Storage. Utilizzi la posizione del file di filtro in Cloud Storage quando specifichi il filtro nell'operazione di esportazione. Il seguente esempio mostra come caricare un file di filtri in un bucket Cloud Storage utilizzando il comandogcloud storage cp
:
gcloud storage cp FILTER_FILE gs://BUCKET
Passaggio nel file di filtri
Dopo aver creato un file di filtro, puoi chiamare l'operazione di esportazione DICOM e trasmettere il file di filtro utilizzando l'API REST. Gli esempi riportati di seguito mostrano come esportare i metadati DICOM utilizzando un filtro.
gcloud
Per esportare i metadati DICOM in una tabella BigQuery utilizzando un filtro, esegui il comando
gcloud beta healthcare dicom-stores export bq
.
Esporta i metadati DICOM.
Prima di utilizzare i dati dei comandi riportati di seguito, effettua 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
- DICOM_STORE_ID: l'ID archivio DICOM
- BIGQUERY_DATASET_ID: il nome di un set di dati BigQuery esistente in cui stai esportando i metadati DICOM
- BIGQUERY_TABLE_ID: il nome di una tabella nuova o esistente nel set di dati BigQuery. Se l'operazione di esportazione sta creando una nuova tabella, consulta la sezione Denominazione delle tabelle per i requisiti relativi al nome della tabella.
- BUCKET: il nome del bucket Cloud Storage contenente il file di filtro. Se il file di filtro si trova in una directory, includi la directory nel percorso.
- FILTER_FILE: la posizione e il nome del file di filtro in un bucket Cloud Storage
- WRITE_DISPOSITION: un valore per l'enum
WriteDisposition
. Utilizza uno dei seguenti valori:write-empty
: esporta i dati solo se la tabella BigQuery è vuota.write-truncate
: cancella tutti i dati esistenti nella tabella BigQuery prima di scrivere le istanze DICOM.write-append
: aggiungi dati alla tabella BigQuery.
Esegui questo comando:
Linux, macOS o Cloud Shell
gcloud beta healthcare dicom-stores export bq DICOM_STORE_ID \ --location=LOCATION \ --dataset=DATASET_ID \ --bq-table=bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID \ --filter-config-gcs-uri=gs://BUCKET/FILTER_FILE \ --write-disposition=WRITE_DISPOSITION
Windows (PowerShell)
gcloud beta healthcare dicom-stores export bq DICOM_STORE_ID ` --location=LOCATION ` --dataset=DATASET_ID ` --bq-table=bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID ` --filter-config-gcs-uri=gs://BUCKET/FILTER_FILE ` --write-disposition=WRITE_DISPOSITION
Windows (cmd.exe)
gcloud beta healthcare dicom-stores export bq DICOM_STORE_ID ^ --location=LOCATION ^ --dataset=DATASET_ID ^ --bq-table=bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID ^ --filter-config-gcs-uri=gs://BUCKET/FILTER_FILE ^ --write-disposition=WRITE_DISPOSITION
name
al termine dell'esportazione. Prendi nota del valore diOPERATION_ID
. Ti servirà nel passaggio successivo.Risposta
Request issued for: [DICOM_STORE_ID] Waiting for operation [projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID] to complete...⠏ name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID
Per visualizzare ulteriori dettagli sull'operazione, esegui il comando
gcloud healthcare operations describe
e fornisci OPERATION_ID dalla risposta:Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:
- PROJECT_ID: l'ID del tuo Google Cloud progetto
- DATASET_ID: l'ID set di dati
- LOCATION: la posizione del set di dati
- OPERATION_ID: l'ID restituito dall'operazione a lunga esecuzione
Esegui questo comando:
Linux, macOS o Cloud Shell
gcloud healthcare operations describe OPERATION_ID \ --project=PROJECT_ID \ --dataset=DATASET_ID \ --location=LOCATION
Windows (PowerShell)
gcloud healthcare operations describe OPERATION_ID ` --project=PROJECT_ID ` --dataset=DATASET_ID ` --location=LOCATION
Windows (cmd.exe)
gcloud healthcare operations describe OPERATION_ID ^ --project=PROJECT_ID ^ --dataset=DATASET_ID ^ --location=LOCATION
Dovresti ricevere una risposta simile alla seguente:
Risposta
done: true // If there were any errors, an `error` field displays instead of a `response` field. // See Troubleshooting long-running operations for a list of response codes. error: ERROR code: ERROR_CODE message: DESCRIPTION metadata: '@type': 'type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata' apiMethodName: 'google.cloud.healthcare.v1.dicom.DicomService.ExportDicomData_bq' counter: success: 'SUCCESS_COUNT' // If there were any failures, they display in the `failure` field. failure: 'FAILURE_COUNT' createTime: 'YYYY-MM-DDTHH:MM:SS+ZZ:ZZ' endTime: 'YYYY-MM-DDTHH:MM:SS+ZZ:ZZ' logsUrl: https://console.cloud.google.com/CLOUD_LOGGING_URL name: projects/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID // The `response` field only displays if there were no errors. response: '@type': 'type.googleapis.com/google.protobuf.Empty'
REST
Per esportare i metadati DICOM in una tabella BigQuery utilizzando un filtro, utilizza il metodo
projects.locations.datasets.dicomStores.export
.
Esporta i metadati DICOM.
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
- DICOM_STORE_ID: l'ID archivio DICOM
- BIGQUERY_DATASET_ID: il nome di un set di dati BigQuery esistente in cui stai esportando i metadati DICOM
- BIGQUERY_TABLE_ID: il nome di una tabella nuova o esistente nel set di dati BigQuery. Se l'operazione di esportazione sta creando una nuova tabella, consulta la sezione Denominazione delle tabelle per i requisiti relativi al nome della tabella.
- BUCKET: il nome del bucket Cloud Storage contenente il file di filtro. Se il file di filtro si trova in una directory, includi la directory nel percorso.
- FILTER_FILE: la posizione e il nome del file di filtro in un bucket Cloud Storage
- WRITE_DISPOSITION: un valore per l'enum
WriteDisposition
. Utilizza uno dei seguenti valori:WRITE_EMPTY
: esporta i dati solo se la tabella BigQuery è vuota.WRITE_TRUNCATE
: cancella tutti i dati esistenti nella tabella BigQuery prima di scrivere le istanze DICOM.WRITE_APPEND
: aggiungi dati alla tabella BigQuery.
Corpo JSON della richiesta:
{ "bigqueryDestination": { "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" }, "filterConfig": { "resourcePathsGcsUri": "gs://BUCKET/FILTER_FILE" } }
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' { "bigqueryDestination": { "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" }, "filterConfig": { "resourcePathsGcsUri": "gs://BUCKET/FILTER_FILE" } } 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; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:export"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:@' { "bigqueryDestination": { "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" }, "filterConfig": { "resourcePathsGcsUri": "gs://BUCKET/FILTER_FILE" } } '@ | 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; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:export" | Select-Object -Expand ContentExplorer API
Copia il corpo della richiesta e apri la pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Explorer API. 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.
OPERATION_ID
. Ti servirà nel passaggio successivo.Utilizza il metodo
projects.locations.datasets.operations.get
per ottenere 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
- DATASET_ID: l'ID set di dati
- LOCATION: la posizione del set di dati
- 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 ContentExplorer API
Apri la pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Explorer API. Puoi interagire con questo strumento per inviare richieste. Completa i campi obbligatori e fai clic su Esegui.
"done": true
, l'operazione a lunga esecuzione è terminata.
Eseguire query e analizzare i dati DICOM in BigQuery
Dopo aver esportato i metadati DICOM in una tabella BigQuery, puoi eseguire query di esempio per ottenere maggiori dettagli sui metadati. Gli esempi seguenti mostrano come eseguire query per alcuni casi d'uso comuni.
Ricerca nei metadati
Supponiamo che tu voglia eseguire ricerche in una grande quantità di metadati
difficili da trovare in altri sistemi, ad esempio un sistema PACS (Picture Archiving and Communication System)
o un archivio indipendente dal fornitore (VNA). La
query seguente mostra come eseguire query sul valore PatientID
di un paziente e utilizzare il
percorso DICOMweb per recuperare istanze di immagini specifiche. L'esempio utilizza la tabella
chc-nih-chest-xray.nih_chest_xray.nih_chest_xray del
set di dati per immagini toraciche a raggi X NIH.
#standardSQL
SELECT CONCAT('/dicomWeb/studies/', StudyInstanceUID, '/series/', SeriesInstanceUID, '/instances/', SOPInstanceUID) as DICOMwebPath
FROM `chc-nih-chest-xray.nih_chest_xray.nih_chest_xray`
WHERE PatientID = '19045';
La query restituisce gli studi associati al paziente. La seguente risposta utilizza la formattazione JSON:
[
{
"DICOMwebPath": "/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.169629990647803559688464142879817265366193/series/1.3.6.1.4.1.11129.5.5.141990184899344268273968625887396932057061/instances/1.3.6.1.4.1.11129.5.5.162448513493627342869165322873398445570578"
},
{
"DICOMwebPath": "/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.114160532832901355654444239008681456919023/series/1.3.6.1.4.1.11129.5.5.178361108150351071908200174504411112440700/instances/1.3.6.1.4.1.11129.5.5.145959606905209488520697484018030440952428"
},
{
"DICOMwebPath": "/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.177801331756958922168115732894519725643007/series/1.3.6.1.4.1.11129.5.5.134128639331055702643451404466208677561042/instances/1.3.6.1.4.1.11129.5.5.148534317486838863760908141408862094292875"
},
{
"DICOMwebPath": "/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.119570482687494886334491471870663517807852/series/1.3.6.1.4.1.11129.5.5.148050768676645373034111775531663876425927/instances/1.3.6.1.4.1.11129.5.5.111153708388576066195389700503245704293300"
},
{
"DICOMwebPath": "/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.144704399171290022427247626928443085419319/series/1.3.6.1.4.1.11129.5.5.190285793344339390593165731988543561416633/instances/1.3.6.1.4.1.11129.5.5.110245902713751842026864359179754889505217"
},
{
"DICOMwebPath": "/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.172276126220388966649736649950361623806435/series/1.3.6.1.4.1.11129.5.5.171512371498506519035489729484464872160452/instances/1.3.6.1.4.1.11129.5.5.111721417729733087384317002785068394901165"
}
]
Esecuzione di query sugli studi più recenti
Supponiamo di voler compilare un elenco di lavoro di lettura PACS con gli studi più recenti del tuo set di dati.
La seguente query mostra come recuperare e visualizzare gli studi più recenti insieme ai conteggi delle istanze e ai metadati circostanti. L'esempio utilizza la tabella bigquery-public-data.idc_v5.dicom_metadata del set di dati TCIA.
#standardSQL
SELECT
MIN(CONCAT(StudyDate, ' ', StudyTime)) as StudyDateTime, MIN(PatientID) as PatientID, StudyInstanceUID, COUNT(*) as InstanceCount
FROM
`bigquery-public-data.idc_v5.dicom_metadata` AS dicom
GROUP BY StudyInstanceUID
ORDER BY StudyDateTime DESC
LIMIT 10;
La query restituisce le seguenti informazioni:
- I 10 studi più recenti inseriti nel sistema e la data di inserimento
- Il paziente associato a ogni studio
- L'UID dello studio
- Il numero di istanze associate allo studio
La seguente risposta utilizza la formattazione JSON:
[
{
"StudyDateTime": "2021-07-11 00:38:22",
"PatientID": "C3L-01924",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2466232160.763753303.1625963902816.3.0",
"InstanceCount": "4"
}, {
"StudyDateTime": "2021-07-10 23:52:10",
"PatientID": "C3L-01924",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2463459463.1074873794.1625961130119.3.0",
"InstanceCount": "4"
}, {
"StudyDateTime": "2021-07-10 23:31:13",
"PatientID": "C3L-02513",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2462202516.1453336368.1625959873172.3.0",
"InstanceCount": "7"
}, {
"StudyDateTime": "2021-07-10 23:25:17",
"PatientID": "C3L-01924",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2461846936.496969835.1625959517592.3.0",
"InstanceCount": "4"
}, {
"StudyDateTime": "2021-07-10 22:35:16",
"PatientID": "C3L-02515",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2458845347.1905567435.1625956516003.3.0",
"InstanceCount": "6"
}, {
"StudyDateTime": "2021-07-10 21:49:46",
"PatientID": "C3L-02515",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2456116127.1264613559.1625953786783.3.0",
"InstanceCount": "7"
}, {
"StudyDateTime": "2021-07-10 21:46:04",
"PatientID": "C3L-02513",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2455894080.1705479047.1625953564736.3.0",
"InstanceCount": "6"
}, {
"StudyDateTime": "2021-07-10 21:13:30",
"PatientID": "C3L-01924",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2453939652.2052768474.1625951610308.3.0",
"InstanceCount": "4"
}, {
"StudyDateTime": "2021-07-10 21:10:17",
"PatientID": "C3L-02515",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2453746219.164669562.1625951416875.3.0",
"InstanceCount": "6"
}, {
"StudyDateTime": "2021-07-10 20:05:48",
"PatientID": "C3L-02513",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2449877792.1996682667.1625947548448.3.0",
"InstanceCount": "6"
}
]
Limitazioni e comportamento aggiuntivo
Se il tag DICOM non ha un tipo supportato in BigQuery
(elencato in VR esclusi),
viene elencato in una colonna separata (denominata DroppedTags.TagName
) nella
tabella BigQuery di destinazione.
Risoluzione dei problemi relativi alle richieste di esportazione DICOM
Se si verificano errori durante una richiesta di esportazione dei metadati DICOM in BigQuery, gli errori vengono registrati in Cloud Logging. Per ulteriori informazioni, consulta Visualizzazione dei log degli errori in Cloud Logging.