En esta página, se explica cómo usar la implementación de DICOMweb de la API de Cloud Healthcare para almacenar y administrar datos de imágenes de DICOM.
Para obtener más información sobre cómo la API de Cloud Healthcare implementa varios servicios de REST de DICOMweb, consulta la Declaración de conformidad de DICOM.
La implementación de DICOMweb en la API de Cloud Healthcare solo admite REST, no RPC.
Instala la CLI de DICOMweb de la API de Cloud Healthcare
Varias de las muestras en esta página usan la CLI de DICOMweb de la API de Cloud Healthcare, una herramienta de código abierto que simplifica cómo interactuar con los servidores de DICOMweb. La herramienta proporciona funciones para almacenar, recuperar, borrar y buscar archivos de DICOM. La página de GitHub de la herramienta contiene más información, como requisitos de instalación detallados y formas de personalizarla.
La herramienta se ejecuta con Python. Para obtener información sobre cómo configurar Python en Google Cloud, consulta Configura un entorno de desarrollo de Python.
Después de configurar Python, puedes instalar la herramienta mediante Pip:
pip install https://github.com/GoogleCloudPlatform/healthcare-api-dicomweb-cli/archive/v1.0.zip
Para usar la herramienta, debes autenticarte en los servidores de Google Cloud. Puedes hacerlo con cualquiera de los siguientes métodos:
- Configuración de la variable de entorno
GOOGLE_APPLICATION_CREDENTIALS
- Autenticación mediante la herramienta de línea de comandos de
gcloud
congcloud auth application-default login
Después de configurar cualquiera de estas opciones, la herramienta detecta de forma automática las credenciales.
Almacena datos DICOM
Antes de que puedas almacenar datos de DICOM, debes crear un almacén de DICOM.
La API de Cloud Healthcare implementa el servicio web RESTful de Transacción de almacenamiento cuando almacena datos DICOM. Para obtener más información, consulta Transacciones de almacenamiento en la declaración de conformidad de DICOM de la API de Cloud Healthcare.
Puedes almacenar datos de DICOM con los siguientes métodos. En ambos casos, debes pasar un encabezado de aceptación application/dicom
en tu solicitud.
- Almacenar una instancia de DICOM (generalmente un archivo
.dcm
). Almacenar metadatos DICOM JSON con archivos JPEG.
Todas las solicitudes para almacenar metadatos JSON de DICOM con archivos JPEG son mensajes de varias partes, que se designan mediante la parte
multipart/related
de suContent-Type
. La partemultipart/related
deContent-Type
indica que la solicitud consta de varias partes de datos que se combinan una vez que se completa la solicitud. Cada uno de estos conjuntos de datos debe separarse con un límite, según lo designado por la parteboundary
deContent-Type
.
En los siguientes ejemplos, se muestra cómo almacenar una instancia en un almacén de DICOM. Para obtener más información, consulta projects.locations.datasets.dicomStores.storeInstances
.
Almacena una instancia de DICOM
En los siguientes ejemplos, se muestra cómo almacenar una instancia de DICOM.
curl
Para almacenar una instancia de DICOM, realiza una solicitud POST
y especifica la siguiente información:
- El nombre del conjunto de datos superior
- El nombre del almacén de DICOM
- El archivo de la instancia de DICOM
- Un token de acceso
En el siguiente ejemplo, se muestra una solicitud POST
mediante curl
.
curl -X POST \ -H "Content-Type: application/dicom" \ -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 @DCM_FILE.dcm
Si la solicitud tiene éxito, el servidor mostrará la respuesta en 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_UID</Value> </DicomAttribute> <DicomAttribute tag="00081199" vr="SQ" keyword="ReferencedSOPSequence"> <Item number="1"> <DicomAttribute tag="00081150" vr="UI" keyword="ReferencedSOPClassUID"> <Value number="1">SOPClassUID</Value> </DicomAttribute> <DicomAttribute tag="00081155" vr="UI" keyword="ReferencedSOPInstanceUID"> <Value number="1">SOPInstanceUID</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_UID/series/SERIES_UID/instances/INSTANCE_UID</Value> </DicomAttribute> </Item> </DicomAttribute> </NativeDicomModel>
PowerShell
Para almacenar una instancia de DICOM, realiza una solicitud POST
y especifica la siguiente información:
- El nombre del conjunto de datos superior
- El nombre del almacén de DICOM
- El archivo de la instancia de DICOM
- Un token de acceso
En el siguiente ejemplo, se muestra una solicitud POST
mediante Windows PowerShell.
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/dicom" ` -InFile DCM_FILE.dcm ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies" | Select-Object -Expand Content
Si la solicitud tiene éxito, el servidor mostrará la respuesta en 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_UID</Value> </DicomAttribute> <DicomAttribute tag="00081199" vr="SQ" keyword="ReferencedSOPSequence"> <Item number="1"> <DicomAttribute tag="00081150" vr="UI" keyword="ReferencedSOPClassUID"> <Value number="1">SOPClassUID</Value> </DicomAttribute> <DicomAttribute tag="00081155" vr="UI" keyword="ReferencedSOPInstanceUID"> <Value number="1">SOPInstanceUID</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_UID/series/SERIES_UID/instances/INSTANCE_UID</Value> </DicomAttribute> </Item> </DicomAttribute> </NativeDicomModel>
Go
Java
Node.js
Python
Crea instancias de DICOM a partir de imágenes JPEG y metadatos JSON
La API de Cloud Healthcare puede crear instancias de DICOM mediante un archivo de metadatos JSON y una imagen JPEG. Crea instancias de DICOM a partir de metadatos JPEG y imágenes JPEG si prefieres no realizar el análisis y la serialización de DICOM, ya que la API de Cloud Healthcare puede realizar estas tareas por ti.
La solicitud HTTP que almacena estos datos debe incluir lo siguiente en el Content-Type
de la solicitud:
- El tipo de medio
multipart/related
- El tipo de MIME
application/dicom+json
- Un separador
boundary
En los siguientes ejemplos, se muestra cómo almacenar un archivo de metadatos JSON con un archivo JPEG.
curl
En el siguiente ejemplo, se supone que tienes una imagen JPEG existente.
El almacenamiento de un archivo de metadatos JSON con una imagen JPEG consta de tres pasos:
- Crea un archivo que contenga una representación JSON de una instancia de DICOM que contenga una imagen JPEG. A continuación, se proporciona un archivo de plantilla.
Crea tres archivos de límite:
opening.file
: Contiene el límite de apertura del archivo de metadatos JSON.middle.file
: Contiene el límite central de la imagen JPEG.closing.file
: Contiene el límite de cierre para todas las partes del mensaje.
Para crear un archivo llamado
multipart-request.file
, debes encerrar el archivo de metadatos JSON y la imagen JPEG dentro de los archivos de límite.
Ten en cuenta los siguientes valores que se proporcionan en la configuración predeterminada en el archivo de plantillas de metadatos JSON:
- El UID de sintaxis de transferencia (
1.2.840.10008.1.2.4.50
) designa la sintaxis de transferencia como JPEG Baseline. La mayoría de las imágenes JPEG tienen el formato JPEG Baseline. El valor de interpretación fotométrica (YBR_FULL_422
) indica que la imagen está en color, no en escala de grises. BulkDataUri
es un descriptor arbitrario para la imagen y, en la plantilla, se configura comojpeg-image
. Este valor se usa cuando se crea el límite de imágenes.
Los valores de SOPClassUID, SOPInstanceUID, StudyInstanceUID y SeriesInstanceUID pueden ser cualquier valor numérico separado por puntos. DICOM usa una jerarquía de identificadores para instancias, pacientes, estudios y series, por lo que debes elegir un conjunto lógico de identificadores para estas variables.
Reemplaza SOP Class UID por un valor de la tabla de clases SOP estándar que designe el tipo de imagen que se almacena.
Reemplaza Rows por la altura vertical de la imagen JPEG en píxeles. Reemplaza Columns por el ancho horizontal de la imagen JPEG en píxeles.
Completa los siguientes pasos:
Guarda el siguiente texto en un archivo llamado
instance.json
y reemplaza las variables cuando se especifique.[{ "00020010":{"vr":"UI","Value":["1.2.840.10008.1.2.4.50"]}, "00080005":{"vr":"CS","Value":["ISO_IR 192"]}, "00080016":{"vr":"UI","Value":["SOPClassUID"]}, "00080018":{"vr":"UI","Value":["SOPInstanceUID"]}, "0020000D":{"vr":"UI","Value":["StudyInstanceUID"]}, "0020000E":{"vr":"UI","Value":["SeriesInstanceUID"]}, "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"} }]
Para crear la apertura (para los metadatos JSON), el medio (para la imagen JPEG) y los límites de cierre, ejecuta los siguientes comandos:
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
Une la imagen JPEG dentro de los límites central y de cierre. El archivo de salida, que envías a la API de Cloud Healthcare, se llama
multipart-request.file
:cat opening.file instance.json middle.file image.jpg closing.file > multipart-request.file
Realiza una solicitud
POST
y especifica la siguiente información:- El nombre del conjunto de datos superior
- El nombre del almacén de DICOM
- El archivo
multipart-request.file
- Un token de acceso
En el siguiente ejemplo, se muestra una solicitud 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
Si la solicitud tiene éxito, el servidor mostrará la respuesta en 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_UID</Value> </DicomAttribute> <DicomAttribute tag="00081199" vr="SQ" keyword="ReferencedSOPSequence"> <Item number="1"> <DicomAttribute tag="00081150" vr="UI" keyword="ReferencedSOPClassUID"> <Value number="1">SOPClassUID</Value> </DicomAttribute> <DicomAttribute tag="00081155" vr="UI" keyword="ReferencedSOPInstanceUID"> <Value number="1">SOPInstanceUID</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_UID/series/SERIES_UID/instances/INSTANCE_UID</Value> </DicomAttribute> </Item> </DicomAttribute> </NativeDicomModel>
Usa la CLI de DICOMweb
En los siguientes ejemplos, se muestra cómo usar la CLI de DICOMweb de la API de Cloud Healthcare para almacenar una o más instancias de DICOM. Hay más muestras disponibles en el repositorio de GitHub de la CLI de DICOMweb.
Almacena una sola instancia de DICOM:
dcmweb \ https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb \ store DCM_FILE
Si la solicitud se realiza correctamente, el servidor muestra una respuesta similar a la siguiente muestra:
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_UID/series/SERIES_UID TIMESTAMP -- INSTANCE_UID TIMESTAMP -- Transferred SIZE in COUNT files
Almacena varios archivos en paralelo con comodines:
En el siguiente ejemplo, se muestra cómo almacenar de forma recurrente varios archivos de DICOM en paralelo desde el directorio de trabajo actual. Para almacenar los archivos en paralelo, agrega la marca -m
.
dcmweb -m \ https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb \ store "./**.dcm"
Si la solicitud se realiza correctamente, el servidor muestra una respuesta similar a la siguiente muestra:
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_UID/series/SERIES_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_UID/series/SERIES_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_UID/series/SERIES_UID TIMESTAMP -- INSTANCE_UID ... TIMESTAMP -- Transferred SIZE in COUNT files
Busca estudios, series, instancias y marcos.
En los ejemplos siguientes, se muestra una implementación de la transacción de búsqueda para buscar instancias en un almacén de DICOM. Para obtener más información, consulta Transacción de búsqueda en la declaración de conformidad de DICOM de la API de Cloud Healthcare.
En los siguientes ejemplos, se muestra cómo buscar instancias en un almacén de DICOM. Para obtener más información, consulta projects.locations.datasets.dicomStores.searchForInstances
curl
Para buscar instancias en un almacén de DICOM, realiza una solicitud GET
y especifica la siguiente información:
- El nombre del conjunto de datos superior
- El nombre del almacén de DICOM
- Un token de acceso
En el siguiente ejemplo, se muestra una solicitud GET
mediante curl
.
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/dicomStores/DICOM_STORE_ID/dicomWeb/instances"
Si la solicitud tiene éxito, se mostrará la respuesta en formato JSON en el servidor:
[ { "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" } ] }, }, ... ]
PowerShell
Para buscar instancias en un almacén de DICOM, realiza una solicitud GET
y especifica la siguiente información:
- El nombre del conjunto de datos superior
- El nombre del almacén de DICOM
- Un token de acceso
En el siguiente ejemplo, se muestra una solicitud GET
mediante Windows PowerShell.
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } 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/instances"
Si la solicitud tiene éxito, se mostrará la respuesta en formato JSON en el servidor:
[ { "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" } ] }, }, ... ]
Go
Java
Node.js
Python
Busca mediante etiquetas de DICOM
Puedes definir mejor tus búsquedas si agregas etiquetas de DICOM a tus solicitudes en forma de parámetros de consulta. Por ejemplo, es posible que desees buscar estudios que contengan el nombre de un paciente.
Como en los ejemplos anteriores, en los siguientes ejemplos, se muestra una implementación de la transacción de búsqueda para buscar estudios en un almacén de DICOM. Sin embargo, en estos ejemplos, se muestra cómo buscar estudios en los que el nombre del paciente sea “Sally Zhang”.
En el siguiente ejemplo, se muestra una parte de los metadatos de una instancia de DICOM en la que se enumera el nombre del paciente:
...
{
"vr": "PN",
"Value": [
{
"Alphabetic": "Sally Zhang"
}
]
}
...
Para buscar estudios en un almacén de DICOM que pertenezcan al paciente, agrega un parámetro de consulta a tu solicitud en el que busques la etiqueta de DICOM PatientName
.
Para obtener una lista de los parámetros de búsqueda admitidos en la API de Cloud Healthcare, consulta la documentación sobre la transacción de búsqueda.
curl
Para usar etiquetas cuando busques estudios en un almacén de DICOM, realiza una solicitud GET
y especifica la siguiente información:
- El nombre del conjunto de datos superior
- El nombre del almacén de DICOM
- El parámetro de consulta
- Un token de acceso
En el siguiente ejemplo, se muestra una solicitud GET
mediante curl
.
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/dicomStores/DICOM_STORE_ID/dicomWeb/studies?PatientName=Sally%20Zhang"
Si la solicitud tiene éxito, se mostrará la respuesta en formato JSON en el servidor:
[ { "00080005": { "vr": "CS", "Value": [ "CODE_STRING" ] }, "00080020": { "vr": "DA", "Value": [ "DATE_TIME" ] }, "00080030": { "vr": "TM", "Value": [ "TIME" ] }, "00080050": { "vr": "SH" }, "00080090": { "vr": "PN", "Value": [ { "Alphabetic": "VALUE" } ] }, "00100010": { "vr": "PN", "Value": [ { "Alphabetic": "Sally Zhang" } ] }, "00100020": { "vr": "LO", "Value": [ "VALUE" ] }, "00100030": { "vr": "DA" }, "00100040": { "vr": "CS", "Value": [ "F" ] }, "0020000D": { "vr": "UI", "Value": [ "STUDY_INSTANCE_UID" ] }, "00200010": { "vr": "SH" } } ]
PowerShell
Para usar etiquetas cuando busques estudios en un almacén de DICOM, realiza una solicitud GET
y especifica la siguiente información:
- El nombre del conjunto de datos superior
- El nombre del almacén de DICOM
- El parámetro de consulta
- Un token de acceso
En el siguiente ejemplo, se muestra una solicitud GET
mediante Windows PowerShell.
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } 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?PatientName=Sally%20Zhang"
Si la solicitud tiene éxito, se mostrará la respuesta en formato JSON en el servidor:
[ { "00080005": { "vr": "CS", "Value": [ "CODE_STRING" ] }, "00080020": { "vr": "DA", "Value": [ "DATE_TIME" ] }, "00080030": { "vr": "TM", "Value": [ "TIME" ] }, "00080050": { "vr": "SH" }, "00080090": { "vr": "PN", "Value": [ { "Alphabetic": "VALUE" } ] }, "00100010": { "vr": "PN", "Value": [ { "Alphabetic": "Sally Zhang" } ] }, "00100020": { "vr": "LO", "Value": [ "VALUE" ] }, "00100030": { "vr": "DA" }, "00100040": { "vr": "CS", "Value": [ "F" ] }, "0020000D": { "vr": "UI", "Value": [ "STUDY_INSTANCE_UID" ] }, "00200010": { "vr": "SH" } } ]
Go
Java
Node.js
Python
Usa la CLI de DICOMweb
En el siguiente ejemplo, se muestra cómo usar la CLI de DICOMweb de la API de Cloud Healthcare para buscar instancias en un almacén de DICOM. Hay más muestras, incluido cómo filtrar tu búsqueda, disponibles en el repositorio de GitHub de la CLI de DICOMweb.
dcmweb \ https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb \ search instances
Si la solicitud tiene éxito, se mostrará la respuesta en formato JSON en el servidor:
[ { "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" } ] }, }, ... ]
Recupera datos DICOM
La API de Cloud Healthcare implementa la transacción de recuperación para recuperar estudios, series, instancias y fotogramas en un almacén de DICOM.
Para obtener más información, consulta Transacción de recuperación en la declaración de conformidad de DICOM de la API de Cloud Healthcare.
Recupera un estudio
En los siguientes ejemplos, se muestra cómo recuperar un estudio. Para obtener más información, consulta Estudio/serie/instancias de DICOM en la declaración de conformidad de DICOM de la API de Cloud Healthcare.
Cuando especifiques el archivo de salida, usa una extensión como .multipart
. Luego, analiza el archivo de varias partes para obtener la serie individual y las instancias en el estudio.
Para obtener más información, consulta projects.locations.datasets.dicomStores.studies.retrieveStudy
curl
Para recuperar un estudio, realiza una solicitud GET
y especifica la siguiente información:
- El nombre del conjunto de datos superior
- El nombre del almacén de DICOM
- El identificador único del estudio (UID)
- Un archivo de salida
- Un token de acceso
En el siguiente ejemplo, se muestra una solicitud 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_UID" --output FILENAME.multipart
Si la solicitud se realiza correctamente, el archivo DICOM se escribe en su máquina.
PowerShell
Para recuperar un estudio, realiza una solicitud GET
y especifica la siguiente información:
- El nombre del conjunto de datos superior
- El nombre del almacén de DICOM
- El identificador único del estudio (UID)
- Un archivo de salida
- Un token de acceso
En el siguiente ejemplo, se muestra una solicitud 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_UID" | Select-Object -Expand Content -OutFile FILENAME.multipart `
Si la solicitud se realiza correctamente, el archivo DICOM se escribe en su máquina.
Go
Java
Node.js
Python
Recupera una instancia
En los siguientes ejemplos, se muestra cómo recuperar una instancia. Para obtener más información, consulta Instancias de DICOM en la declaración de conformidad de DICOM de la API de Cloud Healthcare.
Si recuperas una instancia, puedes evitar tener que analizar los límites de varias partes mediante el encabezado HTTP Accept: application/dicom
. Agregar transfer-syntax=*
evita la transcodificación mediante la muestra del archivo en el formato en el que se almacenó en un principio.
Para obtener más información, consulta projects.locations.datasets.dicomStores.studies.series.instances.retrieveInstance
.
curl
Para recuperar una instancia completa, realiza una solicitud GET
y especifica la siguiente información:
- El nombre del conjunto de datos superior
- El nombre del almacén de DICOM
- El identificador único del estudio (UID)
- El UID de la serie y el UID de la instancia
- Un nombre de archivo de salida
- Un token de acceso
En el siguiente ejemplo, se muestra una solicitud 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_UID/series/SERIES_UID/instances/INSTANCE_UID" --output FILENAME.dcm
Si la solicitud se realiza correctamente, el archivo DICOM se escribe en su máquina.
PowerShell
Para recuperar una instancia completa, realiza una solicitud GET
y especifica la siguiente información:
- El nombre del conjunto de datos superior
- El nombre del almacén de DICOM
- El identificador único del estudio (UID)
- El UID de la serie
- UID de instancia
- Un nombre de archivo de salida
- Un token de acceso
En el siguiente ejemplo, se muestra una solicitud 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_UID/series/SERIES_UID/instances/INSTANCE_UID" -OutFile FILENAME.dcm `
Si la solicitud se realiza correctamente, el archivo DICOM se escribe en su máquina.
Go
Java
Node.js
Python
Recupera formatos de imagen de consumidor
En los siguientes ejemplos, se muestra cómo recuperar un formato de imágenes de consumidor, como JPEG o PNG, mediante la implementación de la API de Cloud Healthcare de Recursos procesados. Para obtener más información, consulta Recursos procesados en la declaración de conformidad de DICOM de la API de Cloud Healthcare.
Para obtener más información, consulta projects.locations.datasets.dicomStores.studies.series.instances.retrieveRendered
curl
Para recuperar una instancia completa, realiza una solicitud GET
y especifica la siguiente información:
- El nombre del conjunto de datos superior
- El nombre del almacén de DICOM
- El identificador único del estudio (UID)
- El UID de la serie
- UID de instancia
- Un nombre de archivo de salida
- Un token de acceso
En el siguiente ejemplo, se muestra cómo recuperar una imagen PNG con una solicitud 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_UID/series/SERIES_UID/instances/INSTANCE_UID/rendered" --output FILENAME.png
Si la solicitud se realiza correctamente, el archivo PNG se escribe en la máquina.
PowerShell
Para recuperar una instancia completa, realiza una solicitud GET
y especifica la siguiente información:
- El nombre del conjunto de datos superior
- El nombre del almacén de DICOM
- El identificador único del estudio (UID)
- El UID de la serie
- UID de instancia
- Un nombre de archivo de salida
- Un token de acceso
En el siguiente ejemplo, se muestra cómo recuperar una imagen PNG con una solicitud 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_UID/series/SERIES_UID/instances/INSTANCE_UID/rendered" -OutFile FILENAME.png `
Si la solicitud se realiza correctamente, el archivo PNG se escribe en la máquina.
Go
Java
Node.js
Python
Recupera metadatos
Puedes recuperar los metadatos de todas las instancias en un estudio o una serie. En el siguiente ejemplo, se muestra cómo recuperar los metadatos de una instancia. Para obtener más información, consulta Recursos de metadatos en la declaración de conformidad de DICOM de la API de Cloud Healthcare.
Para obtener más información, consulta projects.locations.datasets.dicomStores.studies.series.instances.retrieveMetadata
.
Cuando llamas a retrieveMetadata
, el método muestra el mismo conjunto de campos que se muestran cuando buscas una instancia con el parámetro de consulta includefield=all
. Si tu aplicación es sensible a la latencia y deseas recuperar los metadatos de un conjunto específico de campos (en lugar de todos los campos), no llames a retrieveMetadata
. En su lugar, llama a uno de los métodos searchForInstances
y especifica los campos. La respuesta será un conjunto de campos más pequeño y un conjunto de campos más pequeño es útil para aplicaciones sensibles a la latencia.
curl
Para recuperar los metadatos de una instancia en la que se quitaron datos masivos, realiza una solicitud GET
y especifica la siguiente información:
- El nombre del conjunto de datos superior
- El nombre del almacén de DICOM
- El identificador único del estudio (UID)
- El UID de la serie
- UID de instancia
- Un token de acceso
En el siguiente ejemplo, se muestra una solicitud GET
mediante curl
.
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/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_UID/series/SERIES_UID/instances/INSTANCE_UID/metadata"
Si la solicitud se realiza de forma correcta, la respuesta contiene los metadatos de los atributos de DICOM en la instancia en formato JSON.
[ { "00020002": { "vr": "UI", "Value": [ "UNIQUE_IDENTIFIER" ] }, "00020003": { "vr": "UI", "Value": [ "UNIQUE_IDENTIFIER" ] }, "00020010": { "vr": "UI", "Value": [ "UNIQUE_IDENTIFIER" ] }, "00020012": { "vr": "UI", "Value": [ "UNIQUE_IDENTIFIER" ] }, "00020013": { "vr": "SH", "Value": [ "OFFIS_DCMTK_" ] }, "00080016": { "vr": "UI", "Value": [ "UNIQUE_IDENTIFIER" ] }, ... ]
PowerShell
Para recuperar los metadatos de una instancia en la que se quitaron datos masivos, realiza una solicitud GET
y especifica la siguiente información:
- El nombre del conjunto de datos superior
- El nombre del almacén de DICOM
- El identificador único del estudio (UID)
- El UID de la serie
- UID de instancia
- Un token de acceso
En el siguiente ejemplo, se muestra una solicitud GET
mediante Windows PowerShell.
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } 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_UID/series/SERIES_UID/instances/INSTANCE_UID/metadata"
Si la solicitud se realiza de forma correcta, la respuesta contendrá los metadatos de los atributos de DICOM en la instancia en formato JSON:
[ { "00020002": { "vr": "UI", "Value": [ "UNIQUE_IDENTIFIER" ] }, "00020003": { "vr": "UI", "Value": [ "UNIQUE_IDENTIFIER" ] }, "00020010": { "vr": "UI", "Value": [ "UNIQUE_IDENTIFIER" ] }, "00020012": { "vr": "UI", "Value": [ "UNIQUE_IDENTIFIER" ] }, "00020013": { "vr": "SH", "Value": [ "OFFIS_DCMTK_" ] }, "00080016": { "vr": "UI", "Value": [ "UNIQUE_IDENTIFIER" ] }, ... ]
Usa la CLI de DICOMweb
En el siguiente ejemplo, se muestra cómo usar la CLI de DICOMweb de la API de Cloud Healthcare para recuperar todas las instancias en un almacén de DICOM y guardarlas en tu máquina en el directorio de trabajo actual. Hay más muestras disponibles en el repositorio de GitHub de la CLI de DICOMweb.
dcmweb \ https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb \ retrieve
Si la solicitud se realiza correctamente, el servidor muestra una respuesta similar a la siguiente y los archivos DICOM se escriben en la máquina:
TIMESTAMP -- Saving files into ./ TIMESTAMP -- Transferred SIZE in COUNT files
Borra un estudio, una serie o una instancia
La API de Cloud Healthcare implementa un servicio web de propietario para borrar estudios, series y, también, instancias de DICOM. Este servicio no forma parte de los servicios estándar de DICOMweb. Para obtener más información, consulta la sección Borrar en la declaración de conformidad de DICOM de la API de Cloud Healthcare.
Las solicitudes de eliminación para estudios y series muestran una operación de larga duración. Una vez completada la operación, se borran todas las instancias en el estudio o la serie.
Las solicitudes de eliminación para instancias no muestran una operación de larga duración, sino que muestran un cuerpo de respuesta vacío como el siguiente:
{}
En los siguientes ejemplos, se muestra cómo borrar un almacén de DICOM. Para obtener más información, consulte projects.locations.datasets.dicomStores.studies.delete
.
curl
Para borrar un almacén de DICOM, realiza una solicitud DELETE
y especifica la siguiente información:
- El nombre del conjunto de datos superior
- El nombre del almacén de DICOM
- El identificador único (UID) del estudio
- Un token de acceso
En el siguiente ejemplo, se muestra cómo borrar un estudio con una solicitud DELETE
mediante curl
.
curl -X DELETE \ -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/STUDY_UID"
Si la solicitud tiene éxito, se mostrará la respuesta en formato JSON en el servidor:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
La respuesta contiene un nombre de operación. Para realizar un seguimiento del estado de la operación, puedes usar el método get
de la operación:
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"
Si la solicitud es exitosa, el servidor mostrará una respuesta con el estado de la operación en 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.dicomweb.DicomWebService.DeleteStudy", "createTime": "CREATE_TIME", "endTime": "END_TIME", "logsUrl": "https://console.cloud.google.com/logs/viewer/CLOUD_LOGGING_URL", }, "done": true, "response": { "@type": "type.googleapis.com/google.protobuf.Empty", } }
PowerShell
Para borrar un almacén de DICOM, realiza una solicitud DELETE
y especifica la siguiente información:
- El nombre del conjunto de datos superior
- El nombre del almacén de DICOM
- El identificador único (UID) del estudio
- Un token de acceso
En el siguiente ejemplo, se muestra cómo borrar un estudio con una solicitud DELETE
mediante Windows PowerShell.
$cred = gcloud auth application-default 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_UID" | Select-Object -Expand Content
Si la solicitud tiene éxito, se mostrará la respuesta en formato JSON en el servidor:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
La respuesta contiene un nombre de operación. Para realizar un seguimiento del estado de la operación, puedes usar el método get
de la operación:
$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
Si la solicitud es exitosa, el servidor mostrará una respuesta con el estado de la operación en 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.dicomweb.DicomWebService.DeleteStudy", "createTime": "CREATE_TIME", "endTime": "END_TIME", "logsUrl": "https://console.cloud.google.com/logs/viewer/CLOUD_LOGGING_URL", }, "done": true, "response": { "@type": "type.googleapis.com/google.protobuf.Empty", } }
Go
Java
Node.js
Python
Usa la CLI de DICOMweb
En el siguiente ejemplo, se muestra cómo usar la CLI de DICOMweb de la API de Cloud Healthcare para borrar un estudio:
dcmweb \ https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb \ delete studies/STUDY_UID
Si la solicitud es exitosa, el servidor mostrará una operación que la herramienta de la CLI sondea hasta que se complete la operación de eliminación.