Esta página explica como usar a implementação da Cloud Healthcare API do DICOMweb para armazenar e gerir dados de imagens DICOM.
Para mais informações sobre como a Cloud Healthcare API implementa vários serviços REST DICOMweb, consulte a declaração de conformidade com DICOM.
A implementação do DICOMweb na Cloud Healthcare API só suporta REST e não RPC.
Instale a CLI DICOMweb da Cloud Healthcare API
Vários dos exemplos nesta página usam a CLI DICOMweb da Cloud Healthcare API, uma ferramenta de código aberto que simplifica a forma de interagir com servidores DICOMweb. A ferramenta oferece funcionalidades para armazenar, obter, eliminar e pesquisar ficheiros DICOM. A página do GitHub para a ferramenta contém mais informações, como requisitos de instalação detalhados e formas de personalizar a ferramenta.
A ferramenta é executada através do Python. Para obter informações sobre como configurar o Python no Google Cloud, consulte Configurar um ambiente de desenvolvimento Python.
Depois de configurar o Python, pode instalar a ferramenta através do Pip:
pip install https://github.com/GoogleCloudPlatform/healthcare-api-dicomweb-cli/archive/v1.0.zip
Para usar a ferramenta, tem de se autenticar nos Google Cloud servidores. Pode fazê-lo através de um dos seguintes métodos:
- Definir a variável de ambiente
GOOGLE_APPLICATION_CREDENTIALS
- Autenticação através da CLI do Google Cloud com
gcloud auth application-default login
Depois de configurar qualquer uma destas opções, a ferramenta deteta automaticamente as suas credenciais.
Armazene dados DICOM
Antes de poder armazenar dados DICOM, tem de criar um arquivo DICOM.
A Cloud Healthcare API implementa o serviço Web RESTful Store transaction quando armazena dados DICOM. Para mais informações, consulte a secção Transação da loja na declaração de conformidade com a norma DICOM da API Cloud Healthcare.
Armazene dados DICOM através de um dos seguintes métodos. Inclua o cabeçalho application/dicom
Accept
no seu pedido.
- Armazene uma instância DICOM: normalmente, um ficheiro
.dcm
. Armazene vários itens através de uma mensagem de várias partes (multipart): crie um ficheiro multipart com várias partes de dados separadas por um limite. No seu pedido, defina
Content-Type
comomultipart/related; type=application/dicom; boundary=BOUNDARY
, ondeBOUNDARY
é um valor definido pelo utilizador que indica as diferentes partes da mensagem. Consulte a RFC 1341 para ver detalhes sobre a criação de mensagens multipartes.Use mensagens multipartes para armazenar os seguintes tipos de dados DICOM:
- Estudos ou séries DICOM que contêm várias instâncias. Separe cada instância com um limite. Para obter instruções, consulte o artigo Armazene um estudo ou uma série DICOM através de uma mensagem multipartes.
- Metadados JSON DICOM com ficheiros JPEG. Separe cada conjunto de dados com um limite. Para ver instruções, consulte o artigo Crie instâncias DICOM a partir de metadados JSON e imagens JPEG.
Os valores SOP_CLASS_UID
, SOP_INSTANCE_UID
, STUDY_INSTANCE_UID
e SERIES_INSTANCE_UID
são preenchidos a partir dos metadados fornecidos. Os UIDs têm de cumprir os seguintes requisitos:
- Contêm apenas valores numéricos separados por pontos.
- Não contenham informações de saúde protegidas (PHI).
Os exemplos seguintes mostram como armazenar uma instância num arquivo DICOM. Para
mais informações, consulte
projects.locations.datasets.dicomStores.storeInstances
.
Armazene uma instância DICOM
Os exemplos seguintes mostram como armazenar uma instância DICOM. Para mais informações, consulte
projects.locations.datasets.dicomStores.storeInstances
.
REST
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
PROJECT_ID
: o ID do seu Google Cloud projetoLOCATION
: a localização do conjunto de dadosDATASET_ID
: o conjunto de dados principal do arquivo DICOMDICOM_STORE_ID
: o ID da loja DICOMDICOM_INSTANCE_FILE
: o caminho para um ficheiro de instância DICOM no seu computador local que termina com o sufixo.dcm
Para enviar o seu pedido, escolha uma destas opções:
curl
Execute o seguinte 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
Execute o seguinte 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
Armazene um estudo ou uma série DICOM através de uma mensagem multipart
Os exemplos seguintes mostram como armazenar um estudo ou uma série DICOM, que consiste em várias instâncias, através de uma mensagem multipartes.
REST
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
PROJECT_ID
: o ID do seu Google Cloud projetoLOCATION
: a localização do conjunto de dadosDATASET_ID
: o conjunto de dados principal do arquivo DICOMDICOM_STORE_ID
: o ID da loja DICOMMULTIPART_FILE
: o caminho para um ficheiro multipart no seu computador local. O ficheiro contém várias instâncias DICOM, com cada uma separada por um limite.BOUNDARY
: o limite usado para separar as instâncias DICOM no ficheiro de várias partes
Para enviar o seu pedido, escolha uma destas opções:
curl
Execute o seguinte 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
Execute o seguinte 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
Especifique uma classe de armazenamento para instâncias DICOM
Por predefinição, o método projects.locations.datasets.dicomStores.storeInstances
armazena uma instância DICOM num arquivo DICOM com uma classe de armazenamento padrão. Pode definir a classe de armazenamento quando armazena objetos DICOM a partir do seu computador local.
Para mais informações, consulte o artigo
Altere a classe de armazenamento DICOM.
Os exemplos seguintes mostram como especificar a classe de armazenamento quando armazena objetos DICOM a partir do seu computador local.
curl
Use o método
projects.locations.datasets.dicomStores.storeInstances
.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
PROJECT_ID
: o ID do seu Google Cloud projetoLOCATION
: a localização do conjunto de dadosDATASET_ID
: o conjunto de dados principal do arquivo DICOMDICOM_STORE_ID
: o ID da loja DICOMDICOM_INSTANCE_FILE
: o caminho para um ficheiro de instância DICOM no seu computador local que termina com o sufixo.dcm
STORAGE_CLASS
: a classe de armazenamento da instância DICOM no arquivo DICOM deSTANDARD
,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 o pedido for bem-sucedido, o servidor devolve a resposta:
<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
Use o método
projects.locations.datasets.dicomStores.storeInstances
.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
PROJECT_ID
: o ID do seu Google Cloud projetoLOCATION
: a localização do conjunto de dadosDATASET_ID
: o conjunto de dados principal do arquivo DICOMDICOM_STORE_ID
: o ID da loja DICOMDICOM_INSTANCE_FILE
: o caminho para um ficheiro de instância DICOM no seu computador local que termina com o sufixo.dcm
STORAGE_CLASS
: a classe de armazenamento da instância DICOM no arquivo DICOM deSTANDARD
,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 o pedido for bem-sucedido, o servidor devolve a resposta no 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>
Crie instâncias DICOM a partir de metadados JSON e imagens JPEG
A Cloud Healthcare API pode criar instâncias DICOM através de um ficheiro de metadados JSON e um ficheiro JPEG. Criar instâncias DICOM a partir de metadados JSON e um ficheiro JPEG se preferir não fazer a análise e a serialização DICOM, uma vez que a Cloud Healthcare API pode realizar estas tarefas por si.
O pedido HTTP que armazena estes dados tem de incluir o seguinte no Content-Type
do pedido:
- O tipo de suporte
multipart/related
- O tipo MIME
application/dicom+json
- Um separador
boundary
Os exemplos seguintes mostram como armazenar um ficheiro de metadados JSON com um ficheiro JPEG.
curl
O exemplo seguinte pressupõe que tem uma imagem JPEG existente.
O armazenamento de um ficheiro de metadados JSON com uma imagem JPEG compreende três passos:
- Crie um ficheiro que contenha uma representação JSON de uma instância DICOM com uma imagem JPEG. Segue-se um ficheiro de modelo.
Crie três ficheiros de limites:
opening.file
: contém o limite de abertura do ficheiro de metadados JSONmiddle.file
: contém o limite intermédio da imagem JPEGclosing.file
: contém o limite de fecho de todas as partes da mensagem
Crie um ficheiro denominado
multipart-request.file
incluindo o ficheiro de metadados JSON e a imagem JPEG nos ficheiros de limite.
Tenha em atenção os seguintes valores que são fornecidos por predefinição no ficheiro de modelo de metadados JSON:
- O UID da sintaxe de transferência (
1.2.840.10008.1.2.4.50
) designa a sintaxe de transferência como JPEG Baseline. A maioria das imagens JPEG está no formato JPEG Baseline. O valor de interpretação fotométrica (YBR_FULL_422
) significa que a imagem está a cores e não em tons de cinzento. BulkDataUri
é um descritor arbitrário para a imagem e, no modelo, está definido comojpeg-image
. Este valor é usado quando cria o limite da imagem.
Os valores de SOP_CLASS_UID, SOP_INSTANCE_UID, STUDY_INSTANCE_UID e SERIES_INSTANCE_UID podem ser qualquer valor numérico separado por pontos. O DICOM usa uma hierarquia de identificadores para instâncias, pacientes, estudos e séries. Por isso, escolha um conjunto lógico de identificadores para estas variáveis.
Substitua SOP Class UID por um valor da tabela de classes SOP padrão que designa o tipo de imagem que está a ser armazenada.
Substitua Rows pela altura vertical da imagem JPEG em píxeis. Substitua Columns pela largura horizontal da imagem JPEG em píxeis.
Conclua os seguintes passos:
Guarde o texto seguinte num ficheiro denominado
instance.json
, substituindo as variáveis onde especificado.[{ "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 criar os limites de abertura (para os metadados JSON), intermédios (para a imagem JPEG) e de fecho, execute os seguintes 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
Envolva a imagem JPEG nos limites intermédios e finais. O ficheiro de saída, que envia para a Cloud Healthcare API, chama-se
multipart-request.file
:cat opening.file instance.json middle.file image.jpg closing.file > multipart-request.file
Faça um pedido
POST
e especifique as seguintes informações:- O nome do conjunto de dados principal
- O nome do arquivo DICOM
- O ficheiro
multipart-request.file
- Uma chave de acesso
O exemplo seguinte mostra um pedido POST
através de 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 o pedido for bem-sucedido, o servidor devolve a resposta no 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>
Use a DICOMweb CLI
Os exemplos seguintes mostram como usar a CLI DICOMweb da Cloud Healthcare API para armazenar uma ou mais instâncias DICOM. Estão disponíveis mais amostras no repositório do GitHub da DICOMweb CLI.
Armazenamento de uma única instância DICOM:
dcmweb \ https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb \ store DCM_FILE
Se o pedido for bem-sucedido, o servidor devolve uma resposta semelhante ao exemplo seguinte:
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
Armazenar vários ficheiros em paralelo com carateres universais:
O exemplo seguinte mostra como armazenar recursivamente vários ficheiros DICOM em paralelo a partir do diretório de trabalho atual. Para armazenar os ficheiros em paralelo, adicione a 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 o pedido for bem-sucedido, o servidor devolve uma resposta semelhante ao exemplo seguinte:
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
Pesquise dados DICOM
Pode pesquisar estudos, séries, instâncias e frames. Os exemplos seguintes mostram uma implementação da transação de pesquisa para pesquisar instâncias numa loja DICOM. Para mais informações, consulte Transação de pesquisa na declaração de conformidade DICOM da API Cloud Healthcare.
Os exemplos seguintes mostram como pesquisar instâncias num arquivo DICOM. Para mais informações, consulte
projects.locations.datasets.dicomStores.searchForInstances
.
REST
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
PROJECT_ID
: o ID do seu Google Cloud projetoLOCATION
: a localização do conjunto de dadosDATASET_ID
: o conjunto de dados principal do arquivo DICOMDICOM_STORE_ID
: o ID da loja DICOM
Para enviar o seu pedido, escolha uma destas opções:
curl
Execute o seguinte 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
Execute o seguinte 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 APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
Deve receber uma resposta JSON semelhante à seguinte:
Go
Java
Node.js
Python
Pesquise através de etiquetas DICOM
Pode refinar as suas pesquisas anexando etiquetas DICOM aos seus pedidos sob a forma de parâmetros de consulta. Por exemplo, pode querer pesquisar estudos que contenham o nome de um paciente.
Tal como nos exemplos anteriores, os exemplos seguintes mostram uma implementação da transação de pesquisa para pesquisar estudos numa loja DICOM. No entanto, estes exemplos mostram como pesquisar estudos em que o nome do paciente é "Sally Zhang".
O exemplo seguinte mostra uma parte dos metadados de uma instância DICOM onde o nome do paciente está listado:
...
{
"vr": "PN",
"Value": [
{
"Alphabetic": "Sally Zhang"
}
]
}
...
Para pesquisar estudos numa loja DICOM relacionados com o paciente, adicione um parâmetro de consulta ao seu pedido, onde pesquisa pela etiqueta DICOM PatientName
.
Para ver uma lista dos parâmetros de pesquisa suportados na Cloud Healthcare API,
consulte a documentação da transação de pesquisa.
REST
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
PROJECT_ID
: o ID do seu Google Cloud projetoLOCATION
: a localização do conjunto de dadosDATASET_ID
: o conjunto de dados principal do arquivo DICOMDICOM_STORE_ID
: o ID da loja DICOM
Para enviar o seu pedido, escolha uma destas opções:
curl
Execute o seguinte 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
Execute o seguinte 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 APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
Deve receber uma resposta JSON semelhante à seguinte:
Go
Java
Node.js
Python
Use a DICOMweb CLI
O exemplo seguinte mostra como usar a CLI DICOMweb da Cloud Healthcare API para pesquisar instâncias num arquivo DICOM. Estão disponíveis mais exemplos, incluindo como filtrar a sua pesquisa, no repositório do GitHub da DICOMweb CLI.
dcmweb \ https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb \ search instances
Se o pedido for bem-sucedido, o servidor devolve a resposta no 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" } ] }, }, ... ]
Recupere dados DICOM
A Cloud Healthcare API implementa a transação de obtenção para obter estudos, séries, instâncias e frames num arquivo DICOM.
Para mais informações, consulte Recuperar transação na declaração de conformidade DICOM da API Cloud Healthcare.
Recupere um estudo
Os exemplos seguintes mostram como obter um estudo. Para mais informações, consulte DICOM study/series/instances na declaração de conformidade com DICOM da Cloud Healthcare API.
Quando especificar o ficheiro de saída, use uma extensão como .multipart
. Em seguida, analise o ficheiro multipartes para obter as séries e as instâncias individuais no estudo.
Para mais informações, consulte
projects.locations.datasets.dicomStores.studies.retrieveStudy
.
curl
Para obter um estudo, faça um pedido GET
e especifique as seguintes informações:
- O nome do conjunto de dados principal
- O nome do arquivo DICOM
- O identificador único (UID) do estudo
- Um ficheiro de saída
- Uma chave de acesso
O exemplo seguinte mostra um pedido GET
através de 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 o pedido for bem-sucedido, o ficheiro DICOM é escrito no seu computador.
PowerShell
Para obter um estudo, faça um pedido GET
e especifique as seguintes informações:
- O nome do conjunto de dados principal
- O nome do arquivo DICOM
- O identificador único (UID) do estudo
- Um ficheiro de saída
- Uma chave de acesso
O exemplo seguinte mostra um pedido GET
através do 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 o pedido for bem-sucedido, o ficheiro DICOM é escrito no seu computador.
Go
Java
Node.js
Python
Obtenha uma instância
Os exemplos seguintes mostram como obter uma instância. Para mais informações, consulte as instâncias DICOM na declaração de conformidade DICOM da Cloud Healthcare API.
Se estiver a obter uma instância, pode evitar ter de analisar limites de várias partes usando o cabeçalho HTTP Accept: application/dicom
. A adição de
transfer-syntax=*
evita a transcodificação, devolvendo o ficheiro no formato em que foi originalmente armazenado.
Para mais informações, consulte projects.locations.datasets.dicomStores.studies.series.instances.retrieveInstance
.
curl
Para obter uma instância, faça um pedido GET
e especifique as seguintes informações:
- O nome do conjunto de dados principal
- O nome do arquivo DICOM
- O identificador único (UID) do estudo
- O UID da série e o UID da instância
- Um nome de ficheiro de saída
- Uma chave de acesso
O exemplo seguinte mostra um pedido GET
através de 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 o pedido for bem-sucedido, o ficheiro DICOM é escrito no seu computador.
PowerShell
Para obter uma instância, faça um pedido GET
e especifique as seguintes informações:
- O nome do conjunto de dados principal
- O nome do arquivo DICOM
- O identificador único (UID) do estudo
- O UID da série
- O UID da instância
- Um nome de ficheiro de saída
- Uma chave de acesso
O exemplo seguinte mostra um pedido GET
através do 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 o pedido for bem-sucedido, o ficheiro DICOM é escrito no seu computador.
Go
Java
Node.js
Python
Recupere formatos de imagem do consumidor
Os exemplos seguintes mostram como obter um formato de imagem de consumidor, como JPEG ou PNG, através da implementação da API Cloud Healthcare de recursos renderizados. Para mais informações, consulte os recursos renderizados na declaração de conformidade DICOM da Cloud Healthcare API.
Para mais informações, consulte
projects.locations.datasets.dicomStores.studies.series.instances.retrieveRendered
.
curl
Para obter uma imagem, faça um pedido GET
e especifique as seguintes informações:
- O nome do conjunto de dados principal
- O nome do arquivo DICOM
- O identificador único (UID) do estudo
- O UID da série
- O UID da instância
- Um nome de ficheiro de saída
- Uma chave de acesso
O exemplo seguinte mostra como obter uma imagem PNG com um pedido GET
através de 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 o pedido for bem-sucedido, o ficheiro PNG é escrito no seu computador.
PowerShell
Para obter uma imagem, faça um pedido GET
e especifique as seguintes informações:
- O nome do conjunto de dados principal
- O nome do arquivo DICOM
- O identificador único (UID) do estudo
- O UID da série
- O UID da instância
- Um nome de ficheiro de saída
- Uma chave de acesso
O exemplo seguinte mostra como obter uma imagem PNG com um pedido GET
através do 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 o pedido for bem-sucedido, o ficheiro PNG é escrito no seu computador.
Go
Java
Node.js
Python
Obtenha metadados
Pode obter os metadados de todas as instâncias num estudo ou numa série. O exemplo seguinte mostra como obter os metadados de uma instância. Para mais informações, consulte os recursos de metadados na declaração de conformidade com a DICOM da Cloud Healthcare API.
Para mais informações, consulte projects.locations.datasets.dicomStores.studies.series.instances.retrieveMetadata
.
Quando chama retrieveMetadata
, o método devolve o mesmo conjunto de campos
que são devolvidos quando pesquisa uma instância
com o parâmetro de consulta includefield=all
.
O equilíbrio entre retrieveMetadata
e searchForInstances
é a personalização.
retrieveMetadata
devolve uma resposta consistente com um âmbito de pesquisa restrito. Isto é ideal para cenários com carregamento elevado de instâncias DICOM. Entretanto, searchForInstances
pode ser personalizado com vários parâmetros de consulta, como includefield
. Isso é adequado para cenários que precisam de minimizar o tamanho da resposta, incluindo apenas campos selecionados.
Por predefinição, retrieveMetadata
devolve uma resposta JSON. Para devolver uma resposta XML,
transmita um cabeçalho HTTP Accept: multipart/related; type="application/dicom+xml"
no seu pedido.
REST
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
PROJECT_ID
: o ID do seu Google Cloud projetoLOCATION
: a localização do conjunto de dadosDATASET_ID
: o conjunto de dados principal do arquivo DICOMDICOM_STORE_ID
: o ID da loja DICOMSTUDY_INSTANCE_UID
: o identificador exclusivo da instância do estudoSERIES_INSTANCE_UID
: o identificador exclusivo da instância da sérieINSTANCE_UID
: o identificador exclusivo da instância
Para enviar o seu pedido, escolha uma destas opções:
curl
Execute o seguinte 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
Execute o seguinte 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 APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
Deve receber uma resposta JSON semelhante à seguinte:
Obtenha dados em massa
Uma instância DICOM consiste em vários elementos de dados. Embora a maioria dos elementos de dados contenha pequenos fragmentos de metadados (como o nome de um paciente ou a data de um estudo), alguns podem conter grandes quantidades de dados, também denominados "dados em massa". Para compreender que dados são "dados em massa" na Cloud Healthcare API, consulte a definição de dados em massa.
A Cloud Healthcare API processa estes elementos de "dados em massa" separadamente. Para
obter os bytes de valor não processados, chame projects.locations.datasets.dicomStores.studies.series.instances.bulkdata.retrieveBulkdata
usando uma das seguintes opções:
Obtenção direta: se souber os identificadores do estudo, da série, da instância e da etiqueta específica que quer obter, pode construir o URL do pedido e chamar
retrieveBulkdata
diretamente. A obtenção direta é o método mais eficiente porque requer apenas uma única chamada API.Obtenção através dos metadados da instância DICOM: quando obtém os metadados de uma instância, a resposta contém um
BulkDataURI
para cada etiqueta de dados em massa suportada. Pode usar este URI para fazer um pedidoretrieveBulkdata
. Este método é útil para descobrir as etiquetas de dados em massa disponíveis para uma instância antes da obtenção.
Os exemplos seguintes mostram como obter dados em massa através da obtenção direta:
REST
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
PROJECT_ID
: o ID do seu Google Cloud projetoLOCATION
: a localização do conjunto de dadosDATASET_ID
: o conjunto de dados principal do arquivo DICOMDICOM_STORE_ID
: o ID da loja DICOMSTUDY_INSTANCE_UID
: o identificador exclusivo da instância do estudoSERIES_INSTANCE_UID
: o identificador exclusivo da instância da sérieINSTANCE_UID
: o identificador exclusivo da instânciaBULK_DATA_PATH
: a etiqueta de dados em massa, como7FE00010
paraPixelData
. Para uma etiqueta (AAAA,AAAA) numa sequência (BBBB,BBBB) no índice do item i, o caminho seriaBBBBBBBB/i/AAAAAAAA
OUTPUT_FILE_PATH
: um caminho no seu computador local onde os dados em massa estão armazenados num ficheiro DAT. Tem de especificar a extensão.dat
.
Para enviar o seu pedido, escolha uma destas opções:
curl
Execute o seguinte comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
--output OUTPUT_FILE_PATH \
"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/bulkdata/BULK_DATA_PATH"
PowerShell
Execute o seguinte comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-OutFile OUTPUT_FILE_PATH `
-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/bulkdata/BULK_DATA_PATH"
Use a DICOMweb CLI
O exemplo seguinte mostra como usar a CLI DICOMweb da Cloud Healthcare API para obter todas as instâncias num arquivo DICOM e guardá-las no seu computador no diretório de trabalho atual. Estão disponíveis mais amostras no repositório do GitHub da DICOMweb CLI.
dcmweb \ https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb \ retrieve
Se o pedido for bem-sucedido, o servidor devolve uma resposta semelhante à seguinte e os ficheiros DICOM são escritos no seu computador:
TIMESTAMP -- Saving files into ./ TIMESTAMP -- Transferred SIZE in COUNT files
Elimine um estudo, uma série ou uma instância
A Cloud Healthcare API implementa um serviço Web proprietário para eliminar estudos, séries e instâncias DICOM. Este serviço não faz parte dos serviços padrão DICOMweb. Para mais informações, consulte a secção Eliminar na declaração de conformidade com DICOM da API Cloud Healthcare.
As solicitações de eliminação de estudos e séries devolvem uma operação de longa duração. Após a conclusão da operação, todas as instâncias no estudo ou na série são eliminadas.
Os pedidos de eliminação de instâncias não devolvem uma operação de longa duração. Em vez disso, devolvem um corpo de resposta vazio, como o seguinte:
{}
Os exemplos seguintes mostram como eliminar um estudo DICOM. Para mais informações,
consulte
projects.locations.datasets.dicomStores.studies.delete
.
REST
Elimine o estudo.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
PROJECT_ID
: o ID do seu Google Cloud projetoLOCATION
: a localização do conjunto de dadosDATASET_ID
: o conjunto de dados principal do arquivo DICOMDICOM_STORE_ID
: o ID da loja DICOMSTUDY_INSTANCE_UID
: o identificador exclusivo da instância do estudo
Para enviar o seu pedido, escolha uma destas opções:
curl
Execute o seguinte 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
Execute o seguinte 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 APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
Deve receber uma resposta JSON semelhante à seguinte:
Obtenha o estado da operação de execução longa.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
PROJECT_ID
: o ID do seu Google Cloud projetoLOCATION
: a localização do conjunto de dadosDATASET_ID
: o conjunto de dados principal do arquivo DICOMOPERATION_ID
: o ID devolvido pela operação de longa duração
Para enviar o seu pedido, escolha uma destas opções:
curl
Execute o seguinte 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
Execute o seguinte 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 APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
Deve receber uma resposta JSON semelhante à seguinte:
Go
Java
Node.js
Python
Use a DICOMweb CLI
O exemplo seguinte mostra como usar a CLI DICOMweb da Cloud Healthcare API para eliminar um estudo:
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 o pedido for bem-sucedido, o servidor devolve uma operação que a ferramenta de CLI consulta até que a operação de eliminação seja concluída.
Atualize ou corrija um estudo, uma série ou uma instância
A norma DICOMweb não especifica métodos para atualizar dados DICOM, mas a Cloud Healthcare API oferece vários métodos para atualizar estes dados após a carregamento. Consulte o artigo Atualize e aplique patches a estudos, séries e instâncias DICOM para ver métodos e guias disponíveis.