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 de 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 Google Cloud CLI con
gcloud auth application-default login
Después de configurar cualquiera de estas opciones, la herramienta detecta de forma automática tus credenciales.
Almacena datos de DICOM
Antes de que puedas almacenar datos de DICOM, debes crear un almacén de DICOM.
La API de Cloud Healthcare implementa la transacción de almacenamiento Servicio web RESTful cuando se almacenan datos de 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. Para obtener más información, consulta projects.locations.datasets.dicomStores.storeInstances
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID
El ID de tu proyecto de Google Cloud.LOCATION
: La ubicación del conjunto de datosDATASET_ID
: El conjunto de datos superior del almacén de DICOMDICOM_STORE_ID
: El ID del almacén de DICOMDICOM_INSTANCE_FILE
: La ruta de acceso a un archivo de instancia de DICOM en tu máquina local, que finaliza en el sufijo.dcm
Para enviar tu solicitud, elige una de estas opciones:
curl
Ejecuta el siguiente 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
Ejecuta el siguiente 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
Especifica la clase de almacenamiento para almacenar instancias de DICOM (vista previa)
De forma predeterminada, el método projects.locations.datasets.dicomStores.storeInstances
almacena una instancia de DICOM en un almacén de DICOM con una clase de almacenamiento Standard. Tú
puede establecer la clase de almacenamiento cuando almacenas objetos DICOM de tu
máquina.
Para obtener más información, consulta
Cambia la clase de almacenamiento de DICOM.
En los siguientes ejemplos, se muestra cómo especificar la clase de almacenamiento cuando almacenas Objetos de DICOM de tu máquina local.
curl
Usa el
projects.locations.datasets.dicomStores.storeInstances
.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID
El ID de tu proyecto de Google Cloud.LOCATION
: La ubicación del conjunto de datosDATASET_ID
: El conjunto de datos superior del almacén de DICOMDICOM_STORE_ID
: El ID del almacén de DICOMDICOM_INSTANCE_FILE
: La ruta de acceso a un archivo de instancia de DICOM en tu máquina local, que finaliza en el sufijo.dcm
STORAGE_CLASS
: Es la clase de almacenamiento para la instancia de DICOM en el almacén de DICOM deSTANDARD
,NEARLINE
,COLDLINE
yARCHIVE
.
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"
Si la solicitud se realiza correctamente, el servidor mostrará la siguiente respuesta:
<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
Usa el método projects.locations.datasets.dicomStores.storeInstances
.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID
El ID de tu proyecto de Google Cloud.LOCATION
: La ubicación del conjunto de datosDATASET_ID
: El conjunto de datos superior del almacén de DICOMDICOM_STORE_ID
: El ID del almacén de DICOMDICOM_INSTANCE_FILE
: La ruta de acceso a un archivo de instancia de DICOM en tu máquina local, que finaliza en el sufijo.dcm
STORAGE_CLASS
: Es la clase de almacenamiento para la instancia de DICOM en el almacén de DICOM deSTANDARD
,NEARLINE
,COLDLINE
yARCHIVE
.
$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
Si la solicitud tiene éxito, se mostrará la respuesta en formato JSON en el servidor:
<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>
Crear instancias de DICOM a partir de imágenes JPEG y metadatos JSON
La API de Cloud Healthcare puede crear instancias de DICOM mediante metadatos JSON y uno JPEG. Crea instancias de DICOM a partir de metadatos JSON y un archivo JPEG si prefieres no usar DICOM como lo hace la API de Cloud Healthcare 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
application/dicom+json
del tipo de MIME - 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 da por sentado 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.
Crea un archivo llamado
multipart-request.file
colocando 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 de forma predeterminada en el archivo de plantilla 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 SOP_CLASS_UID, SOP_INSTANCE_UID, STUDY_INSTANCE_UID y SERIES_INSTANCE_UID 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 tabla de clases de SOP estándar que designa 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":["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"} }]
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
Coloca 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_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>
Usar 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 la Repositorio de GitHub de la CLI de DICOM.
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_INSTANCE_UID/series/SERIES_INSTANCE_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 múltiples 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_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
Busca datos de DICOM
Puedes buscar estudios, series, instancias y marcos. En los siguientes ejemplos, 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
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID
El ID de tu proyecto de Google Cloud.LOCATION
: La ubicación del conjunto de datosDATASET_ID
: El conjunto de datos superior del almacén de DICOMDICOM_STORE_ID
: El ID del almacén de DICOM
Para enviar tu solicitud, elige una de estas opciones:
curl
Ejecuta el siguiente 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
Ejecuta el siguiente 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
Explorador de API
Abre el página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
Go
Java
Node.js
Python
Busca con 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, quizás desees buscar estudios que contengan el nombre de un paciente.
Al igual que en los ejemplos anteriores, en los siguientes ejemplos se muestra una implementación del 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 de la paciente sea “Sally Zhang”.
En el siguiente ejemplo, se muestra una parte de los metadatos de una instancia de DICOM en la que aparece el nombre de la paciente:
...
{
"vr": "PN",
"Value": [
{
"Alphabetic": "Sally Zhang"
}
]
}
...
Para buscar estudios en un almacén de DICOM que atañan al paciente, agrega un parámetro de consulta a tu solicitud en el que busques según 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.
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID
El ID de tu proyecto de Google Cloud.LOCATION
: La ubicación del conjunto de datosDATASET_ID
: El conjunto de datos superior del almacén de DICOMDICOM_STORE_ID
: El ID del almacén de DICOM
Para enviar tu solicitud, elige una de estas opciones:
curl
Ejecuta el siguiente 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
Ejecuta el siguiente 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
Explorador de API
Abre el página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
Go
Java
Node.js
Python
Usar 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, que incluyen cómo filtrar la búsqueda, en la Repositorio de GitHub de la CLI de DICOM.
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 de DICOM
La API de Cloud Healthcare implementa la transacción Retrieve para recuperar estudios, series, instancias y marcos 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.
Cómo recuperar un estudio
En los siguientes ejemplos, se muestra cómo recuperar un estudio. Para obtener más información, consulta Estudios/series/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 las instancias y series individuales 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_INSTANCE_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_INSTANCE_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 estás recuperando una instancia, puedes evitar tener que analizar los límites de varias partes usando el encabezado HTTP Accept: application/dicom
. Agregar transfer-syntax=*
evita la transcodificación, ya que se muestra el 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_INSTANCE_UID/series/SERIES_INSTANCE_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_INSTANCE_UID/series/SERIES_INSTANCE_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 consumidores
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_INSTANCE_UID/series/SERIES_INSTANCE_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_INSTANCE_UID/series/SERIES_INSTANCE_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
Cómo recuperar metadatos
Puedes recuperar los metadatos de todas las instancias de 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 cambio, llama
uno de los métodos searchForInstances
y especifica los campos. La respuesta será un conjunto de campos más pequeño, el que es útil para aplicaciones sensibles a la latencia.
De forma predeterminada, retrieveMetadata
muestra una respuesta JSON. Para devolver una respuesta XML,
pasa un encabezado HTTP Accept: multipart/related; type="application/dicom+xml"
en tu solicitud.
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID
El ID de tu proyecto de Google Cloud.LOCATION
: La ubicación del conjunto de datosDATASET_ID
: El conjunto de datos superior del almacén de DICOMDICOM_STORE_ID
: El ID del almacén de DICOMSTUDY_INSTANCE_UID
: Es el identificador único de la instancia del estudio.SERIES_INSTANCE_UID
: Es el identificador único de la instancia de la serie.INSTANCE_UID
: Es el identificador único de la instancia.
Para enviar tu solicitud, elige una de estas opciones:
curl
Ejecuta el siguiente 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
Ejecuta el siguiente 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
Explorador de API
Abre el página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
Cómo recuperar datos masivos
Puedes recuperar los bytes sin procesar de una etiqueta de batchdata específica en una instancia almacenada. Cuando se recuperan metadatos de una instancia con los métodos de vista previa, BulkDataURIs se generarán para etiquetas de datos masivos admitidas (consulta Definición de Bulkdata).
Para obtener más información, consulta projects.locations.datasets.dicomStores.studies.series.instances.bulkdata.retrieveBulkdata
.
En el siguiente ejemplo, se creará la URL de la solicitud directamente en función del nombre de usuario
de una etiqueta de datos masivos (sin usar retrieveMetadata
para obtener el
BulkDataURI).
curl
Para recuperar datos masivos, haz 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
- La ruta de acceso de la etiqueta de datos masivos de destino
- Para una etiqueta (XXXX,XXXX) en una secuencia (YYYY,YYYY) en el índice i, la ruta de acceso sería "AAAAAAAA/i/XXXXXXXX"
- Un nombre de archivo de salida
- Un token de acceso
En el siguiente ejemplo, se muestra cómo recuperar un archivo DAT
con una solicitud GET
usando 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
Si la solicitud es exitosa, el archivo DAT contiene bytes sin procesar del se escribe en tu máquina.
PowerShell
Para recuperar datos masivos, haz 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
- La ruta de acceso de la etiqueta de datos masivos de destino
- Para una etiqueta (XXXX,XXXX) en una secuencia (YYYY,YYYY) en el índice i, la ruta de acceso sería "AAAAAAAA/i/XXXXXXXX"
- Un nombre de archivo de salida
- Un token de acceso
En el siguiente ejemplo, se muestra cómo recuperar un archivo DAT con
Una solicitud GET
con 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 `
Si la solicitud es exitosa, el archivo DAT contiene bytes sin procesar del se escribe en tu máquina.
Usar 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 de un almacén de DICOM y guardarlas en tu máquina el directorio de trabajo actual. Hay más muestras disponibles en la Repositorio de GitHub de la CLI de DICOM.
dcmweb \ https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb \ retrieve
Si la solicitud se completa correctamente, el servidor muestra una respuesta similar a la siguiente y los archivos de DICOM se escriben en la máquina:
TIMESTAMP -- Saving files into ./ TIMESTAMP -- Transferred SIZE in COUNT files
Cómo borrar un estudio, una serie o una instancia
La API de Cloud Healthcare implementa un servicio web propio 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
.
REST
Borra el estudio.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID
El ID de tu proyecto de Google Cloud.LOCATION
: La ubicación del conjunto de datosDATASET_ID
: El conjunto de datos superior del almacén de DICOMDICOM_STORE_ID
: El ID del almacén de DICOMSTUDY_INSTANCE_UID
: Es el identificador único de la instancia del estudio.
Para enviar tu solicitud, elige una de estas opciones:
curl
Ejecuta el siguiente 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
Ejecuta el siguiente 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 ContentExplorador de API
Abre el página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
Obtén el estado de la operación de larga duración.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID
El ID de tu proyecto de Google Cloud.LOCATION
: La ubicación del conjunto de datosDATASET_ID
: El conjunto de datos superior del almacén de DICOMOPERATION_ID
: Es el ID que muestra la operación de larga duración.
Para enviar tu solicitud, elige una de estas opciones:
curl
Ejecuta el siguiente 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
Ejecuta el siguiente 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 ContentExplorador de API
Abre el página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
Go
Java
Node.js
Python
Usar 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, sigue estos pasos:
dcmweb \ https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb \ delete studies/STUDY_INSTANCE_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.