In questa pagina viene spiegato come utilizzare l'implementazione dell'API Cloud Healthcare di DICOMweb per archiviare e gestire i dati delle immagini DICOM.
Per ulteriori informazioni sul modo in cui l'API Cloud Healthcare implementa i vari servizi REST DICOMweb, consulta la dichiarazione di conformità DICOM.
L'implementazione di DICOMweb nell'API Cloud Healthcare supporta solo REST, non RPC.
Installa la CLI DICOMweb dell'API Cloud Healthcare
Diversi esempi in questa pagina utilizzano la CLI DICOMweb dell'API Cloud Healthcare, uno strumento open source che semplifica l'interazione con i server DICOMweb. Lo strumento fornisce funzionalità per archiviare, recuperare, eliminare e cercare file DICOM. La pagina GitHub dello strumento contiene ulteriori informazioni, come requisiti di installazione dettagliati e modi per personalizzare lo strumento.
Lo strumento viene eseguito utilizzando Python. Per informazioni su come configurare Python su Google Cloud, consulta Configurazione di un ambiente di sviluppo Python.
Dopo aver configurato Python, puoi installare lo strumento utilizzando Pip:
pip install https://github.com/GoogleCloudPlatform/healthcare-api-dicomweb-cli/archive/v1.0.zip
Per utilizzare lo strumento, devi autenticarti sui server Google Cloud . Puoi farlo utilizzando uno dei seguenti metodi:
- Impostazione della variabile di ambiente
GOOGLE_APPLICATION_CREDENTIALS
- Autenticazione tramite Google Cloud CLI utilizzando
gcloud auth application-default login
Dopo aver configurato una di queste opzioni, lo strumento rileva automaticamente le tue credenziali.
Archiviazione dei dati DICOM
Prima di poter archiviare i dati DICOM, devi creare un archivio DICOM.
L'API Cloud Healthcare implementa il servizio web RESTful Store transaction durante l'archiviazione dei dati DICOM. Per saperne di più, consulta Transazione di archiviazione nella dichiarazione di conformità DICOM dell'API Cloud Healthcare.
Archivia i dati DICOM utilizzando uno dei seguenti metodi. Includi l'intestazione application/dicom
Accept nella tua richiesta.
- Archivia un'istanza DICOM: in genere un file
.dcm
. Archivia più elementi utilizzando un messaggio in più parti (multipart): crea un file multipart con più parti di dati separate da un limite. Nella richiesta, imposta
Content-Type
sumultipart/related; type=application/dicom; boundary=BOUNDARY
, doveBOUNDARY
è un valore definito dall'utente che indica le diverse parti del messaggio. Per informazioni dettagliate sulla creazione di messaggi in più parti, consulta RFC 1341.Utilizza messaggi multipart per archiviare i seguenti tipi di dati DICOM:
- Studi o serie DICOM contenenti più istanze. Separa ogni istanza utilizzando un confine. Per istruzioni, vedi Archiviare uno studio o una serie DICOM utilizzando un messaggio multipart.
- Metadati JSON DICOM con file JPEG. Separa ogni set di dati utilizzando un separatore. Per istruzioni, vedi Creare istanze DICOM da metadati JSON e immagini JPEG.
I valori SOP_CLASS_UID
, SOP_INSTANCE_UID
, STUDY_INSTANCE_UID
e SERIES_INSTANCE_UID
vengono compilati dai metadati forniti. Gli ID utente devono soddisfare i seguenti requisiti:
- Contengono solo valori numerici separati da punti.
- Non contengano informazioni sanitarie protette (PHI).
Gli esempi riportati di seguito mostrano come archiviare un'istanza in un archivio DICOM. Per
maggiori informazioni, vedi
projects.locations.datasets.dicomStores.storeInstances
.
Archivia un'istanza DICOM
Gli esempi riportati di seguito mostrano come archiviare un'istanza DICOM. Per ulteriori informazioni, vedi
projects.locations.datasets.dicomStores.storeInstances
.
REST
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 DICOMDICOM_INSTANCE_FILE
: il percorso di un file di istanza DICOM sulla tua macchina locale che termina con il suffisso.dcm
Per inviare la richiesta, scegli una di queste opzioni:
curl
Esegui questo comando:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/dicom" \
--data-binary @DICOM_INSTANCE_FILE \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies"
PowerShell
Esegui questo comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-InFile DICOM_INSTANCE_FILE `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies" | Select-Object -Expand Content
Go
Java
Node.js
Python
Archiviare uno studio o una serie DICOM utilizzando un messaggio multipart
Gli esempi riportati di seguito mostrano come archiviare uno studio o una serie DICOM, costituiti da più istanze, utilizzando un messaggio multipart.
REST
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 DICOMMULTIPART_FILE
: il percorso di un file in più parti sulla macchina locale. Il file contiene più istanze DICOM, ciascuna separata da un limite.BOUNDARY
: il limite utilizzato per separare le istanze DICOM nel file in più parti
Per inviare la richiesta, scegli una di queste opzioni:
curl
Esegui questo comando:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: multipart/related; type=application/dicom; boundary=BOUNDARY" \
--data-binary @MULTIPART_FILE \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies"
PowerShell
Esegui questo comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-InFile MULTIPART_FILE `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies" | Select-Object -Expand Content
Specifica una classe di archiviazione per le istanze DICOM
Per impostazione predefinita, il metodo projects.locations.datasets.dicomStores.storeInstances
archivia un'istanza DICOM in un archivio DICOM con una classe di archiviazione standard. Puoi
impostare la classe di archiviazione quando memorizzi gli oggetti DICOM dalla tua macchina
locale.
Per ulteriori informazioni, vedi
Modificare la classe di archiviazione DICOM.
Gli esempi riportati di seguito mostrano come specificare la classe di archiviazione quando archivi gli oggetti DICOM dalla tua macchina locale.
curl
Utilizza il
metodo projects.locations.datasets.dicomStores.storeInstances
.
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 DICOMDICOM_INSTANCE_FILE
: il percorso di un file di istanza DICOM sulla tua macchina locale che termina con il suffisso.dcm
STORAGE_CLASS
: la classe di archiviazione per l'istanza DICOM nell'archivio DICOM daSTANDARD
,NEARLINE
,COLDLINE
eARCHIVE
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/dicom" \ -H "Storage-Class: STORAGE_CLASS" \ --data-binary @DICOM_INSTANCE_FILE \ "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies"
Se la richiesta riesce, il server restituisce la risposta:
<NativeDicomModel> <DicomAttribute tag="00081190" vr="UR" keyword="RetrieveURL"> <Value number="1">https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID</Value> </DicomAttribute> <DicomAttribute tag="00081199" vr="SQ" keyword="ReferencedSOPSequence"> <Item number="1"> <DicomAttribute tag="00081150" vr="UI" keyword="ReferencedSOPClassUID"> <Value number="1">SOP_CLASS_UID</Value> </DicomAttribute> <DicomAttribute tag="00081155" vr="UI" keyword="ReferencedSOPInstanceUID"> <Value number="1">SOP_INSTANCE_UID</Value> </DicomAttribute> <DicomAttribute tag="00081190" vr="UR" keyword="RetrieveURL"> <Value number="1">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</Value> </DicomAttribute> </Item> </DicomAttribute> </NativeDicomModel>
PowerShell
Utilizza il
metodo
projects.locations.datasets.dicomStores.storeInstances
.
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 DICOMDICOM_INSTANCE_FILE
: il percorso di un file di istanza DICOM sulla tua macchina locale che termina con il suffisso.dcm
STORAGE_CLASS
: la classe di archiviazione per l'istanza DICOM nell'archivio DICOM daSTANDARD
,NEARLINE
,COLDLINE
eARCHIVE
$cred = gcloud auth application-default print-access-token $headers = @{ "Authorization" = "Bearer $cred"; "Storage-Class" = "STORAGE_CLASS" } Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/dicom" ` -InFile DCM_FILE.dcm ` -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies" | Select-Object -Expand Content
Se la richiesta riesce, il server restituisce la risposta in formato JSON:
<NativeDicomModel> <DicomAttribute tag="00081190" vr="UR" keyword="RetrieveURL"> <Value number="1">https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID</Value> </DicomAttribute> <DicomAttribute tag="00081199" vr="SQ" keyword="ReferencedSOPSequence"> <Item number="1"> <DicomAttribute tag="00081150" vr="UI" keyword="ReferencedSOPClassUID"> <Value number="1">SOP_CLASS_UID</Value> </DicomAttribute> <DicomAttribute tag="00081155" vr="UI" keyword="ReferencedSOPInstanceUID"> <Value number="1">SOP_INSTANCE_UID</Value> </DicomAttribute> <DicomAttribute tag="00081190" vr="UR" keyword="RetrieveURL"> <Value number="1">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</Value> </DicomAttribute> </Item> </DicomAttribute> </NativeDicomModel>
Creare istanze DICOM da metadati JSON e immagini JPEG
L'API Cloud Healthcare può creare istanze DICOM utilizzando un file di metadati JSON e un file JPEG. Crea istanze DICOM da metadati JSON e file JPEG se preferisci non eseguire personalmente l'analisi e la serializzazione DICOM, poiché l'API Cloud Healthcare può eseguire queste operazioni per conto tuo.
La richiesta HTTP che archivia questi dati deve includere quanto segue nella sezione Content-Type
della richiesta:
- Il tipo di media
multipart/related
- Il tipo MIME
application/dicom+json
- Un separatore
boundary
Gli esempi riportati di seguito mostrano come archiviare un file di metadati JSON con un file JPEG.
curl
Nel seguente esempio si presuppone che tu disponga di un'immagine JPEG.
L'archiviazione di un file di metadati JSON con un'immagine JPEG prevede tre passaggi:
- Creare un file che include una rappresentazione JSON di un'istanza DICOM contenente un'immagine JPEG. Di seguito viene fornito un file modello.
Creare tre file di separazione:
opening.file
: contiene il separatore di apertura per il file di metadati JSONmiddle.file
: contiene il separatore centrale per l'immagine JPEGclosing.file
: contiene il separatore di chiusura per tutte le parti del messaggio
Crea un file denominato
multipart-request.file
racchiudendo il file di metadati JSON e l'immagine JPEG tra i file di separazione.
Tieni presente che i valori riportati di seguito sono forniti per impostazione predefinita nel file modello di metadati JSON:
- L'UID della sintassi di trasferimento (
1.2.840.10008.1.2.4.50
) specifica che tale sintassi sarà in formato JPEG, La maggior parte delle immagini JPEG è in formato JPEG Baseline. Il valore di interpretazione fotometrica (YBR_FULL_422
) indica che l'immagine è a colori, non in scala di grigi. BulkDataUri
è un descrittore arbitrario per l'immagine e nel modello è impostato sujpeg-image
. Questo valore viene utilizzato al momento della creazione del separatore dell'immagine.
I valori per SOP_CLASS_UID, SOP_INSTANCE_UID, STUDY_INSTANCE_UID e SERIES_INSTANCE_UID possono essere qualsiasi valore numerico separato da punti. DICOM utilizza una gerarchia di identificatori per istanze, pazienti, studi e serie, perciò scegli un set logico di identificatori per queste variabili.
Sostituisci SOP Class UID con un valore all'interno della tabella di classi SOP standard che specifichi il tipo di immagine da archiviare.
Sostituisci Rows con l'altezza verticale dell'immagine JPEG in pixel. Sostituisci Columns con la larghezza orizzontale dell'immagine JPEG in pixel.
Completa i seguenti passaggi:
Salva il testo riportato di seguito in un file denominato
instance.json
, sostituendo le variabili dove specificato.[{ "00020010":{"vr":"UI","Value":["1.2.840.10008.1.2.4.50"]}, "00080005":{"vr":"CS","Value":["ISO_IR 192"]}, "00080016":{"vr":"UI","Value":["SOP_CLASS_UID"]}, "00080018":{"vr":"UI","Value":["SOP_INSTANCE_UID"]}, "0020000D":{"vr":"UI","Value":["STUDY_INSTANCE_UID"]}, "0020000E":{"vr":"UI","Value":["SERIES_INSTANCE_UID"]}, "00280002":{"vr":"US","Value":[3]}, "00280004":{"vr":"CS","Value":["YBR_FULL_422"]}, "00280006":{"vr":"US","Value":[0]}, "00280008":{"vr":"IS","Value":[1]}, "00280010":{"vr":"US","Value":[Rows]}, "00280011":{"vr":"US","Value":[Columns]}, "00280100":{"vr":"US","Value":[8]}, "00280101":{"vr":"US","Value":[8]}, "00280102":{"vr":"US","Value":[7]}, "00280103":{"vr":"US","Value":[0]}, "7FE00010":{"vr":"OB","BulkDataURI":"jpeg-image"} }]
Per creare il separatore di apertura (per i metadati JSON), quello centrale (per l'immagine JPEG) e quello di chiusura, esegui questi comandi:
echo -ne "--DICOMwebBoundary\r\nContent-Type: application/dicom+json\r\n\r\n" > opening.file echo -ne "\r\n--DICOMwebBoundary\r\nContent-Location: jpeg-image\r\nContent-Type: image/jpeg; transfer-syntax=1.2.840.10008.1.2.4.50\r\n\r\n" > middle.file echo -ne "\r\n--DICOMwebBoundary--" > closing.file
Inserisci l'immagine JPEG tra il separatore centrale e quello di chiusura. Il file di output che invii all'API Cloud Healthcare è denominato
multipart-request.file
:cat opening.file instance.json middle.file image.jpg closing.file > multipart-request.file
Invia una richiesta
POST
e specifica le seguenti informazioni:- Il nome del set di dati padre
- Il nome dell'archivio DICOM
- Il file
multipart-request.file
- Un token di accesso
L'esempio seguente mostra una richiesta POST
mediante curl
.
curl -X POST \ -H "Content-Type: multipart/related; type=\"application/dicom+json\"; boundary=DICOMwebBoundary" \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies \ --data-binary @multipart-request.file
Se la richiesta riesce, il server restituisce la risposta in formato XML:
<NativeDicomModel> <DicomAttribute tag="00081190" vr="UR" keyword="RetrieveURL"> <Value number="1">https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID</Value> </DicomAttribute> <DicomAttribute tag="00081199" vr="SQ" keyword="ReferencedSOPSequence"> <Item number="1"> <DicomAttribute tag="00081150" vr="UI" keyword="ReferencedSOPClassUID"> <Value number="1">SOP_CLASS_UID</Value> </DicomAttribute> <DicomAttribute tag="00081155" vr="UI" keyword="ReferencedSOPInstanceUID"> <Value number="1">SOP_INSTANCE_UID</Value> </DicomAttribute> <DicomAttribute tag="00081190" vr="UR" keyword="RetrieveURL"> <Value number="1">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</Value> </DicomAttribute> </Item> </DicomAttribute> </NativeDicomModel>
Utilizza la CLI DICOMweb
Gli esempi riportati di seguito mostrano come utilizzare la CLI DICOMweb dell'API Cloud Healthcare per archiviare una o più istanze DICOM. Sono disponibili altri esempi nel repository GitHub DICOMweb CLI.
Archiviazione di una singola istanza DICOM:
dcmweb \ https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb \ store DCM_FILE
Se la richiesta riesce, il server restituisce una risposta simile al seguente esempio:
TIMESTAMP -- DCM_FILE.dcm uploaded as 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 TIMESTAMP -- INSTANCE_UID TIMESTAMP -- Transferred SIZE in COUNT files
Memorizzazione di più file in parallelo utilizzando i caratteri jolly:
L'esempio riportato di seguito mostra come archiviare in modo ricorsivo più file DICOM in parallelo dalla directory di lavoro corrente. Per archiviare i file
in parallelo, aggiungi il flag -m
.
dcmweb -m \ https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb \ store "./**.dcm"
Se la richiesta riesce, il server restituisce una risposta simile al seguente esempio:
TIMESTAMP -- DCM_FILE_1.dcm uploaded as 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 TIMESTAMP -- INSTANCE_UID TIMESTAMP -- DCM_FILE_2.dcm uploaded as 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 TIMESTAMP -- INSTANCE_UID TIMESTAMP -- DCM_FILE_3.dcm uploaded as 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 TIMESTAMP -- INSTANCE_UID ... TIMESTAMP -- Transferred SIZE in COUNT files
Cercare dati DICOM
Puoi cercare studi, serie, istanze e frame. Gli esempi riportati di seguito mostrano un'implementazione della transazione di ricerca per cercare istanze in un archivio DICOM. Per ulteriori informazioni, consulta Transazione di ricerca nella dichiarazione di conformità DICOM dell'API Cloud Healthcare.
Gli esempi riportati di seguito mostrano come cercare istanze in un archivio DICOM. Per ulteriori informazioni, vedi
projects.locations.datasets.dicomStores.searchForInstances
.
REST
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 DICOM
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/dicomStores/DICOM_STORE_ID/dicomWeb/instances"
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/instances" | Select-Object -Expand Content
Explorer 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.
Dovresti ricevere una risposta JSON simile alla seguente:
Go
Java
Node.js
Python
Ricerca utilizzando i tag DICOM
Puoi perfezionare le ricerche aggiungendo tag DICOM alle richieste sotto forma di parametri di ricerca. Ad esempio, potresti voler cercare studi contenenti il nome di un paziente.
Come gli esempi precedenti, gli esempi riportati di seguito mostrano un'implementazione della transazione di ricerca per cercare studi in un archivio DICOM. Tuttavia, questi esempi mostrano come cercare studi in cui il nome del paziente è "Sally Zhang".
L'esempio seguente mostra una parte dei metadati di un'istanza DICOM in cui è elencato il nome del paziente:
...
{
"vr": "PN",
"Value": [
{
"Alphabetic": "Sally Zhang"
}
]
}
...
Per cercare gli studi in un archivio DICOM relativi al paziente, aggiungi un parametro di query alla richiesta in cui esegui la ricerca in base al tag DICOM PatientName
.
Per un elenco dei parametri di ricerca supportati nell'API Cloud Healthcare, consulta la documentazione relativa alla transazione di ricerca.
REST
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 DICOM
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/dicomStores/DICOM_STORE_ID/dicomWeb/studies?PatientName=Sally%20Zhang"
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?PatientName=Sally%20Zhang" | Select-Object -Expand Content
Explorer 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.
Dovresti ricevere una risposta JSON simile alla seguente:
Go
Java
Node.js
Python
Utilizza la CLI DICOMweb
L'esempio seguente mostra come utilizzare la CLI DICOMweb dell'API Cloud Healthcare per cercare istanze in un archivio DICOM. Sono disponibili altri esempi, inclusa la procedura per filtrare la ricerca, nel repository GitHub DICOMweb CLI.
dcmweb \ https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb \ search instances
Se la richiesta riesce, il server restituisce la risposta in formato JSON:
[ { "00080005":{ "vr":"CS", "Value":[ "CODE_STRING" ] }, "00080016":{ "vr":"UI", "Value":[ "UNIQUE_IDENTIFIER" ] }, "00080018":{ "vr":"UI", "Value":[ "UNIQUE_IDENTIFIER" ] }, "00080020":{ "vr":"DA", "Value":[ "DATE_TIME" ] }, "00080030":{ "vr":"TM", "Value":[ "TIME" ] }, "00080060":{ "vr":"CS", "Value":[ "CODE_STRING" ] }, "0008103E":{ "vr":"LO", "Value":[ "LONG_STRING" ] }, "00100010":{ "vr":"PN", "Value":[ { "Alphabetic":"Anonymized" } ] }, }, ... ]
Recupero di dati DICOM
L'API Cloud Healthcare implementa la transazione di recupero per recuperare studi, serie, istanze e frame in un archivio DICOM.
Per ulteriori informazioni, consulta la sezione Transazione di recupero nella dichiarazione di conformità DICOM dell'API Cloud Healthcare.
Recuperare uno studio
Gli esempi riportati di seguito mostrano come recuperare uno studio. Per ulteriori informazioni, consulta Studio/serie/istanze DICOM nella dichiarazione di conformità DICOM dell'API Cloud Healthcare.
Quando specifichi il file di output, utilizza un'estensione come .multipart
. Quindi analizza il file in più parti per
ottenere le singole serie e istanze nello studio.
Per ulteriori informazioni, vedi
projects.locations.datasets.dicomStores.studies.retrieveStudy
.
curl
Per recuperare uno studio, invia una richiesta GET
e specifica le seguenti informazioni:
- Il nome del set di dati padre
- Il nome dell'archivio DICOM
- L'identificatore univoco dello studio (UID)
- Un file di output
- Un token di accesso
L'esempio seguente mostra una richiesta GET
mediante curl
.
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Accept: multipart/related; type=application/dicom; transfer-syntax=*" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID" \ --output FILENAME.multipart
Se la richiesta va a buon fine, il file DICOM viene scritto sul tuo computer.
PowerShell
Per recuperare uno studio, invia una richiesta GET
e specifica le seguenti informazioni:
- Il nome del set di dati padre
- Il nome dell'archivio DICOM
- L'identificatore univoco dello studio (UID)
- Un file di output
- Un token di accesso
Il seguente esempio mostra una richiesta GET
mediante Windows PowerShell.
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred"; Accept = "multipart/related; type=application/dicom; transfer-syntax=*" } 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" | Select-Object -Expand Content -OutFile FILENAME.multipart `
Se la richiesta va a buon fine, il file DICOM viene scritto sul tuo computer.
Go
Java
Node.js
Python
Recuperare un'istanza
Gli esempi riportati di seguito mostrano come recuperare un'istanza. Per ulteriori informazioni, consulta Istanze DICOM nella dichiarazione di conformità DICOM dell'API Cloud Healthcare.
Se stai recuperando un'istanza, puoi evitare di analizzare i limiti multipart utilizzando l'intestazione HTTP Accept: application/dicom
. L'aggiunta di
transfer-syntax=*
evita la transcodifica restituendo il file nel formato in cui
è stato originariamente memorizzato.
Per ulteriori informazioni, vedi projects.locations.datasets.dicomStores.studies.series.instances.retrieveInstance
.
curl
Per recuperare un'istanza, effettua una richiesta GET
e specifica le seguenti informazioni:
- Il nome del set di dati padre
- Il nome dell'archivio DICOM
- L'identificatore univoco dello studio (UID)
- L'UID della serie, l'UID dell'istanza
- Un nome file di output
- Un token di accesso
L'esempio seguente mostra una richiesta GET
mediante curl
.
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Accept: application/dicom; transfer-syntax=*" \ "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" \ --output FILENAME.dcm
Se la richiesta va a buon fine, il file DICOM viene scritto sul tuo computer.
PowerShell
Per recuperare un'istanza, effettua una richiesta GET
e specifica le seguenti informazioni:
- Il nome del set di dati padre
- Il nome dell'archivio DICOM
- L'identificatore univoco dello studio (UID)
- L'UID della serie
- L'UID istanza
- Un nome file di output
- Un token di accesso
Il seguente esempio mostra una richiesta GET
mediante Windows PowerShell.
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred"; Accept = "application/dicom; transfer-syntax=*" } Invoke-RestMethod ` -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" -OutFile FILENAME.dcm `
Se la richiesta va a buon fine, il file DICOM viene scritto sul tuo computer.
Go
Java
Node.js
Python
Recuperare i formati delle immagini consumer
Gli esempi riportati di seguito mostrano come recuperare un formato di imaging di consumo come JPEG o PNG utilizzando l'implementazione dell'API Cloud Healthcare delle risorse sottoposte a rendering. Per ulteriori informazioni, consulta Risorse sottoposte a rendering nella dichiarazione di conformità DICOM dell'API Cloud Healthcare.
Per ulteriori informazioni, vedi
projects.locations.datasets.dicomStores.studies.series.instances.retrieveRendered
.
curl
Per recuperare un'immagine, effettua una richiesta GET
e specifica le seguenti informazioni:
- Il nome del set di dati padre
- Il nome dell'archivio DICOM
- L'identificatore univoco dello studio (UID)
- L'UID della serie
- L'UID istanza
- Un nome file di output
- Un token di accesso
L'esempio riportato di seguito mostra come recuperare un'immagine PNG con una richiesta GET
mediante curl
.
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Accept: image/png" \ "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/rendered" \ --output FILENAME.png
Se la richiesta ha esito positivo, il file PNG viene scritto sul tuo computer.
PowerShell
Per recuperare un'immagine, effettua una richiesta GET
e specifica le seguenti informazioni:
- Il nome del set di dati padre
- Il nome dell'archivio DICOM
- L'identificatore univoco dello studio (UID)
- L'UID della serie
- L'UID istanza
- Un nome file di output
- Un token di accesso
Il seguente esempio mostra come recuperare un'immagine PNG con una richiesta GET
mediante Windows PowerShell.
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred"; Accept = "image/png" } Invoke-RestMethod ` -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/rendered" -OutFile FILENAME.png `
Se la richiesta ha esito positivo, il file PNG viene scritto sul tuo computer.
Go
Java
Node.js
Python
Recuperare i metadati
Puoi recuperare i metadati di tutte le istanze in uno studio o in una serie. Il seguente esempio mostra come recuperare i metadati di un'istanza. Per ulteriori informazioni, consulta Risorse di metadati nella dichiarazione di conformità DICOM dell'API Cloud Healthcare.
Per ulteriori informazioni, vedi projects.locations.datasets.dicomStores.studies.series.instances.retrieveMetadata
.
Quando chiami retrieveMetadata
, il metodo restituisce lo stesso insieme di campi
restituiti quando cerchi un'istanza
con il parametro di query includefield=all
. Se la tua applicazione è
sensibile alla latenza e vuoi recuperare i
metadati per un insieme specifico di campi (anziché tutti i campi), non chiamare
retrieveMetadata
. Chiama invece
uno dei metodi searchForInstances
e specifica i campi. La risposta
sarà un insieme più piccolo di campi, il che è utile per
le applicazioni sensibili alla latenza.
Per impostazione predefinita, retrieveMetadata
restituisce una risposta JSON. Per restituire una risposta XML,
passa un'intestazione HTTP Accept: multipart/related; type="application/dicom+xml"
nella richiesta.
REST
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 DICOMSTUDY_INSTANCE_UID
: l'identificatore univoco dell'istanza dello studioSERIES_INSTANCE_UID
: l'identificatore univoco dell'istanza della serieINSTANCE_UID
: l'identificatore univoco dell'istanza
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/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID/metadata"
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/metadata" | Select-Object -Expand Content
Explorer 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.
Dovresti ricevere una risposta JSON simile alla seguente:
Recupera bulkdata
Puoi recuperare i byte non elaborati per un tag bulkdata specifico in un'istanza archiviata. Quando recuperi i metadati da un'istanza utilizzando i metodi di anteprima, vengono generati BulkDataURIs per i tag bulkdata supportati (vedi Definizione di bulkdata).
Per ulteriori informazioni, vedi projects.locations.datasets.dicomStores.studies.series.instances.bulkdata.retrieveBulkdata
.
L'esempio seguente creerà l'URL della richiesta direttamente in base al percorso noto di un tag bulkdata (senza utilizzare retrieveMetadata
per ottenere BulkDataURI).
curl
Per recuperare bulkdata, effettua una richiesta GET
e specifica le seguenti informazioni:
- Il nome del set di dati padre
- Il nome dell'archivio DICOM
- L'identificatore univoco dello studio (UID)
- L'UID della serie
- L'UID istanza
- Il percorso del tag bulkdata di destinazione
- Per un tag (XXXX,XXXX) all'interno di una sequenza (YYYY,YYYY) all'indice i, il percorso sarebbe "YYYYYYYY/i/XXXXXXXX"
- Un nome file di output
- Un token di accesso
L'esempio riportato di seguito mostra come recuperare un file DAT
con una richiesta GET
mediante curl
.
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Accept: application/octet-stream; transfer-syntax=*" \ "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/bulkdata/BULKDATA_PATH" \ --output FILENAME.dat
Se la richiesta ha esito positivo, il file DAT contenente i byte non elaborati dell'istanza viene scritto sulla tua macchina.
PowerShell
Per recuperare bulkdata, effettua una richiesta GET
e specifica le seguenti informazioni:
- Il nome del set di dati padre
- Il nome dell'archivio DICOM
- L'identificatore univoco dello studio (UID)
- L'UID della serie
- L'UID istanza
- Il percorso del tag bulkdata di destinazione
- Per un tag (XXXX,XXXX) all'interno di una sequenza (YYYY,YYYY) all'indice i, il percorso sarebbe "YYYYYYYY/i/XXXXXXXX"
- Un nome file di output
- Un token di accesso
Il seguente esempio mostra come recuperare un file DAT con una richiesta GET
mediante Windows PowerShell.
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred"; Accept = "application/octet-stream; transfer-syntax=*" } Invoke-RestMethod ` -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/bulkdata/BULKDATA_PATH" -OutFile FILENAME.DAT `
Se la richiesta ha esito positivo, il file DAT contenente i byte non elaborati dell'istanza viene scritto sulla tua macchina.
Utilizza la CLI DICOMweb
L'esempio riportato di seguito mostra come utilizzare la CLI DICOMweb dell'API Cloud Healthcare per recuperare tutte le istanze in un archivio DICOM e salvarle sul tuo computer nella directory di lavoro corrente. Sono disponibili altri esempi nel repository GitHub DICOMweb CLI.
dcmweb \ https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb \ retrieve
Se la richiesta riesce, il server restituisce una risposta simile alla seguente e i file DICOM vengono scritti sul tuo computer:
TIMESTAMP -- Saving files into ./ TIMESTAMP -- Transferred SIZE in COUNT files
Eliminare uno studio, una serie o un'istanza
L'API Cloud Healthcare implementa un servizio web proprietario per eliminare studi, serie e istanze DICOM. Questo servizio non fa parte dei servizi dello standard DICOMweb. Per saperne di più, consulta la sezione Elimina nella dichiarazione di conformità DICOM dell'API Cloud Healthcare.
Le richieste di eliminazione di studi e serie restituiscono un'operazione a lunga esecuzione. Al termine dell'operazione, tutte le istanze dello studio o della serie vengono eliminate.
Le richieste di eliminazione delle istanze non restituiscono un'operazione a lunga esecuzione, ma un corpo della risposta vuoto come il seguente:
{}
Gli esempi riportati di seguito mostrano come eliminare uno studio DICOM. Per ulteriori informazioni,
vedi
projects.locations.datasets.dicomStores.studies.delete
.
REST
Elimina lo studio.
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 DICOMSTUDY_INSTANCE_UID
: l'identificatore univoco dell'istanza dello studio
Per inviare la richiesta, scegli una di queste opzioni:
curl
Esegui questo comando:
curl -X DELETE \
-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"PowerShell
Esegui questo comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method DELETE `
-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" | 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.
Dovresti ricevere una risposta JSON simile alla seguente:
Recuperare 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 progettoLOCATION
: la posizione del set di datiDATASET_ID
: il set di dati principale dell'archivio DICOMOPERATION_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.
Dovresti ricevere una risposta JSON simile alla seguente:
Go
Java
Node.js
Python
Utilizza la CLI DICOMweb
L'esempio riportato di seguito mostra come utilizzare la CLI DICOMweb dell'API Cloud Healthcare per eliminare uno studio:
dcmweb \ https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb \ delete studies/STUDY_INSTANCE_UID
Se la richiesta riesce, il server restituisce un'operazione che lo strumento CLI interroga fino al completamento dell'operazione di eliminazione.