Nesta página, explicamos como usar a implementação da DICOMweb da API Cloud Healthcare para armazenar e gerenciar dados de imagem DICOM.
Para mais informações sobre como a API Cloud Healthcare implementa vários serviços REST DICOMweb, consulte a declaração de conformidade com o DICOM.
A implementação do DICOMweb na API Cloud Healthcare é compatível apenas com REST, não com RPC.
Instalar a CLI DICOMweb da API Cloud Healthcare
Várias das amostras nesta página usam a CLI DICOMweb da API Cloud Healthcare, uma ferramenta de código aberto que simplifica como interagir com servidores DICOMweb. A ferramenta fornece recursos para armazenar, recuperar, excluir e pesquisar arquivos DICOM. A página do GitHub para a ferramenta contém mais informações, como requisitos detalhados de instalação e maneiras de personalizar a ferramenta.
A ferramenta é executada em Python. Para informações sobre como configurar em Python no Google Cloud, consulte Como configurar um ambiente de desenvolvimento Python.
Depois de configurar em Python, instale a ferramenta usando Pip:
pip install https://github.com/GoogleCloudPlatform/healthcare-api-dicomweb-cli/archive/v1.0.zip
Para usar a ferramenta, faça a autenticação nos servidores do Google Cloud. Para isso, use um dos métodos a seguir:
- Como configurar a variável de ambiente
GOOGLE_APPLICATION_CREDENTIALS
- Como fazer a autenticação pela CLI do Google Cloud usando
gcloud auth application-default login
Depois de configurar uma dessas opções, a ferramenta detecta suas credenciais automaticamente.
Armazenar dados DICOM
Antes de armazenar dados DICOM, você precisa criar um armazenamento DICOM.
A API Cloud Healthcare implementa a transação da loja Serviço da Web RESTful ao armazenar dados DICOM. Para mais informações, consulte Transações de armazenamento na instrução de conformidade da API Cloud Healthcare.
É possível armazenar dados DICOM usando os seguintes métodos. Em ambos os casos, é necessário transmitir um cabeçalho application/dicom
Accept na solicitação.
- Armazenar uma instância DICOM (normalmente um arquivo
.dcm
) Armazenar metadados JSON DICOM com arquivos JPEG
Todas as solicitações para armazenar metadados JSON DICOM com arquivos JPEG são mensagens de várias partes, designadas pela parte
multipart/related
deContent-Type
. A partemultipart/related
deContent-Type
indica que a solicitação é composta por várias partes de dados que são combinadas após a conclusão da solicitação. Cada um desses conjuntos de dados precisa ser separado por um limite, conforme designado pela parteboundary
doContent-Type
.
Os exemplos a seguir mostram como armazenar uma instância em um armazenamento DICOM. Para mais informações, consulte estes tópicos:
projects.locations.datasets.dicomStores.storeInstances
Armazenar uma instância DICOM
Os exemplos a seguir mostram como armazenar uma instância DICOM. Para ver mais informações, consulte projects.locations.datasets.dicomStores.storeInstances
.
REST
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_ID
: o ID do seu projeto do Google Cloud;LOCATION
: o local do conjunto de dados;DATASET_ID
: o conjunto de dados pai do armazenamento DICOMDICOM_STORE_ID
: o ID do repositório DICOMDICOM_INSTANCE_FILE
: o caminho para um arquivo de instância DICOM na máquina local que termina com o sufixo.dcm
Para enviar a solicitação, 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
Especificar a classe de armazenamento para armazenar instâncias DICOM (visualização)
Por padrão, o método projects.locations.datasets.dicomStores.storeInstances
armazena uma instância DICOM em um armazenamento DICOM com uma classe de armazenamento padrão. Você
você pode definir a classe de armazenamento ao armazenar objetos DICOM da
máquina virtual.
Para mais informações, consulte
Altere a classe de armazenamento DICOM.
Os exemplos a seguir mostram como especificar a classe de armazenamento ao armazenar Objetos DICOM da máquina local.
curl
Use o método
projects.locations.datasets.dicomStores.storeInstances
.
Antes de usar os dados da solicitação, faça as substituições a seguir:
PROJECT_ID
: o ID do seu projeto do Google Cloud;LOCATION
: o local do conjunto de dados;DATASET_ID
: o conjunto de dados pai do armazenamento DICOMDICOM_STORE_ID
: o ID do repositório DICOMDICOM_INSTANCE_FILE
: o caminho para um arquivo de instância DICOM na máquina local que termina com o sufixo.dcm
STORAGE_CLASS
: a classe de armazenamento para a instância DICOM no armazenamento 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 a solicitação for bem-sucedida, o servidor vai retornar a seguinte 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 os dados da solicitação, faça as substituições a seguir:
PROJECT_ID
: o ID do seu projeto do Google Cloud;LOCATION
: o local do conjunto de dados;DATASET_ID
: o conjunto de dados pai do armazenamento DICOMDICOM_STORE_ID
: o ID do repositório DICOMDICOM_INSTANCE_FILE
: o caminho para um arquivo de instância DICOM na máquina local que termina com o sufixo.dcm
STORAGE_CLASS
: a classe de armazenamento da instância DICOM no armazenamento 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 a solicitação for bem-sucedida, o servidor retornará 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>
Criar instâncias DICOM a partir de metadados JSON e imagens JPEG
A API Cloud Healthcare pode criar instâncias DICOM usando um metadado JSON e um arquivo JPEG. Criar instâncias DICOM a partir de metadados JSON e arquivo JPEG se preferir não fazer o DICOM analisar e serializar por conta própria, assim como a API Cloud Healthcare faz essas tarefas para você.
A solicitação HTTP que armazena esses dados precisa incluir o seguinte no Content-Type
da solicitação:
- O tipo de mídia
multipart/related
- O tipo MIME
application/dicom+json
- Um separador
boundary
Os exemplos a seguir mostram como armazenar um arquivo de metadados JSON com um arquivo JPEG.
curl
O exemplo a seguir supõe que você tem uma imagem JPEG.
O armazenamento de um arquivo de metadados JSON com uma imagem JPEG consiste em três etapas:
- Crie um arquivo que contenha uma representação JSON de uma instância DICOM contendo uma imagem JPEG. Veja abaixo um arquivo de modelo.
Crie três arquivos de limite:
opening.file
: contém o limite de abertura do arquivo de metadados JSONmiddle.file
: contém o limite do meio da imagem JPEGclosing.file
: contém o limite de fechamento de todas as partes da mensagem
Crie um arquivo chamado
multipart-request.file
colocando o arquivo de metadados JSON e a imagem JPEG dentro dos arquivos de limite.
Observe os seguintes valores que são fornecidos por padrão no arquivo de modelo de metadados JSON:
- O UID de sintaxe de transferência (
1.2.840.10008.1.2.4.50
) designa a sintaxe de transferência como valor de referência JPEG. A maioria das imagens JPEG está no formato do valor de referência JPEG. O valor de interpretação fotonumérica (YBR_FULL_422
) indica que a imagem está em cor, não em escala de cinza. BulkDataUri
é um descritor arbitrário para a imagem e, no modelo, é definido comojpeg-image
. Esse valor é usado ao criar 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. Portanto, escolha um conjunto lógico de identificadores para essas variáveis.
Substitua SOP Class UID por um valor da tabela de classes SOP padrão que designa o tipo de imagem que está sendo armazenado.
Substitua Rows pela altura vertical da imagem JPEG em pixels. Substitua Columns pela largura horizontal da imagem JPEG em pixels.
Siga estas etapas:
Salve o texto a seguir em um arquivo chamado
instance.json
, substituindo as variáveis onde for 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 metadados JSON), meio (para a imagem JPEG) e fechamento, 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
Una a imagem JPEG dentro dos limites intermediários e de fechamento. O arquivo de saída, que é enviado para a API Cloud Healthcare, é chamado de
multipart-request.file
:cat opening.file instance.json middle.file image.jpg closing.file > multipart-request.file
Faça uma solicitação
POST
e especifique as seguintes informações:- O nome do conjunto de dados pai
- O nome do armazenamento DICOM
- Arquivo
multipart-request.file
- Um token de acesso
O exemplo a seguir mostra uma solicitação POST
usando 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 a solicitação for bem-sucedida, o servidor retornará 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>
Usar a CLI DICOMweb
Os exemplos a seguir mostram como usar o CLI DICOMweb da API Cloud Healthcare para armazenar uma ou mais instâncias DICOM. Há mais amostras disponíveis no Repositório GitHub da CLI DICOM.
Como armazenar 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 a solicitação for bem-sucedida, o servidor retornará uma resposta semelhante à seguinte amostra:
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
Como armazenar vários arquivos em paralelo usando caracteres curinga:
O exemplo a seguir mostra como armazenar recursivamente vários arquivos DICOM em paralelo a partir do diretório de trabalho atual. Para armazenar os arquivos em paralelo, adicione a sinalização -m
.
dcmweb -m \ https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb \ store "./**.dcm"
Se a solicitação for bem-sucedida, o servidor retornará uma resposta semelhante à seguinte amostra:
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
Pesquisar dados DICOM
Você pode pesquisar estudos, séries, instâncias e frames. Os exemplos a seguir mostram uma implementação da transação de pesquisa. para pesquisar instâncias em um armazenamento DICOM. Para mais informações, consulte Transação de pesquisa na instrução de conformidade da API Cloud Healthcare.
Os exemplos a seguir mostram como pesquisar instâncias em um armazenamento DICOM. Para ver mais informações, consulte projects.locations.datasets.dicomStores.searchForInstances
.
REST
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_ID
: o ID do seu projeto do Google Cloud;LOCATION
: o local do conjunto de dados;DATASET_ID
: o conjunto de dados pai do armazenamento DICOMDICOM_STORE_ID
: o ID do repositório DICOM
Para enviar a solicitação, 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
APIs Explorer
Abra o página de referência do método. O painel "APIs Explorer" é aberto no lado direito da página. Interaja com essa ferramenta para enviar solicitações. Preencha todos os campos obrigatórios e clique em Executar.
Você receberá uma resposta JSON semelhante a esta:
Go
Java
Node.js
Python
Pesquisar usando tags DICOM
Para refinar as pesquisas, anexe tags DICOM às solicitações na forma de parâmetros de consulta. Por exemplo, talvez você queira pesquisar estudos que contenham o nome de um paciente.
Assim como os exemplos anteriores, os exemplos a seguir mostram uma implementação da transação de pesquisa para procurar estudos em um armazenamento DICOM. No entanto, esses exemplos mostram como procurar estudos em que o nome do paciente é "Sally Zhang".
A amostra a seguir mostra uma parte dos metadados de uma instância DICOM em que o nome do paciente é listado:
...
{
"vr": "PN",
"Value": [
{
"Alphabetic": "Sally Zhang"
}
]
}
...
Para pesquisar estudos em um armazenamento DICOM que pertencem ao paciente, adicione um parâmetro de consulta à sua solicitação em que você pesquisa pela tag DICOM PatientName
.
Para uma lista de parâmetros de pesquisa compatíveis na API Cloud Healthcare, consulte a documentação sobre transação de pesquisa.
REST
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_ID
: o ID do seu projeto do Google Cloud;LOCATION
: o local do conjunto de dados;DATASET_ID
: o conjunto de dados pai do armazenamento DICOMDICOM_STORE_ID
: o ID do repositório DICOM
Para enviar a solicitação, 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
APIs Explorer
Abra a página de referência do método. O painel "APIs Explorer" é aberto no lado direito da página. Interaja com essa ferramenta para enviar solicitações. Preencha todos os campos obrigatórios e clique em Executar.
Você receberá uma resposta JSON semelhante a esta:
Go
Java
Node.js
Python
Usar a CLI DICOMweb
O exemplo a seguir mostra como usar o CLI DICOMweb da API Cloud Healthcare para procurar instâncias em um armazenamento DICOM. Há mais amostras, incluindo como filtrar a pesquisa, disponíveis no Repositório do GitHub da CLI DICOMweb.
dcmweb \ https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb \ search instances
Se a solicitação for bem-sucedida, o servidor retornará 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" } ] }, }, ... ]
Recuperar dados de DICOM
A API Cloud Healthcare implementa a Transação de recuperação para recuperar estudos, séries, instâncias e frames em um armazenamento DICOM.
Para mais informações, consulte Recuperar transação na instrução de conformidade da API Cloud Healthcare.
Recuperar um estudo
Os exemplos a seguir mostram como recuperar um estudo. Para mais informações, consulte estudo/série/instâncias DICOM na instrução de conformidade da API Cloud Healthcare DICOM.
Ao especificar o arquivo de saída, use uma extensão como .multipart
. Em seguida, analise o arquivo de várias partes para ver a série individual e as instâncias no estudo.
Para ver mais informações, consulte projects.locations.datasets.dicomStores.studies.retrieveStudy
.
curl
Para recuperar um estudo, faça uma solicitação GET
e especifique as seguintes informações:
- O nome do conjunto de dados pai
- O nome do armazenamento DICOM
- O identificador exclusivo do estudo (UID)
- Um arquivo de saída
- Um token de acesso
O exemplo a seguir mostra uma solicitação GET
usando 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 a solicitação for bem-sucedida, o arquivo DICOM será gravado na sua máquina.
PowerShell
Para recuperar um estudo, faça uma solicitação GET
e especifique as seguintes informações:
- O nome do conjunto de dados pai
- O nome do armazenamento DICOM
- O identificador exclusivo do estudo (UID)
- Um arquivo de saída
- Um token de acesso
O exemplo a seguir mostra uma solicitação GET
usando o 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 a solicitação for bem-sucedida, o arquivo DICOM será gravado na sua máquina.
Go
Java
Node.js
Python
Recuperar uma instância
Os exemplos a seguir mostram como recuperar uma instância. Para mais informações, consulte Instâncias DICOM na instrução de conformidade DICOM da API Cloud Healthcare.
Se você estiver recuperando uma instância, é possível evitar a necessidade de analisar limites de várias partes usando o cabeçalho HTTP Accept: application/dicom
. Adicionar transfer-syntax=*
evita a transcodificação retornando o arquivo no formato em que ele foi originalmente armazenado.
Para ver mais informações, consulte projects.locations.datasets.dicomStores.studies.series.instances.retrieveInstance
.
curl
Para recuperar uma instância, faça uma solicitação GET
e especifique as seguintes informações:
- O nome do conjunto de dados pai
- O nome do armazenamento DICOM
- O identificador exclusivo do estudo (UID)
- O UID da série, o UID da instância
- Um nome de arquivo de saída
- Um token de acesso
O exemplo a seguir mostra uma solicitação GET
usando 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 a solicitação for bem-sucedida, o arquivo DICOM será gravado na sua máquina.
PowerShell
Para recuperar uma instância, faça uma solicitação GET
e especifique as seguintes informações:
- O nome do conjunto de dados pai
- O nome do armazenamento DICOM
- O identificador exclusivo do estudo (UID)
- O UID da série
- O UID da instância
- Um nome de arquivo de saída
- Um token de acesso
O exemplo a seguir mostra uma solicitação GET
usando o 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 a solicitação for bem-sucedida, o arquivo DICOM será gravado na sua máquina.
Go
Java
Node.js
Python
Extrair formatos de imagem do consumidor
Os exemplos a seguir mostram como recuperar um formato de imagem do consumidor, como JPEG ou PNG, usando a implementação da API Cloud Healthcare de recursos renderizados. Para mais informações, consulte Recursos renderizados na declaração de conformidade DICOM da API Cloud Healthcare.
Para ver mais informações, consulte projects.locations.datasets.dicomStores.studies.series.instances.retrieveRendered
.
curl
Para recuperar uma imagem, faça uma solicitação GET
e especifique as seguintes informações:
- O nome do conjunto de dados pai
- O nome do armazenamento DICOM
- O identificador exclusivo do estudo (UID)
- O UID da série
- O UID da instância
- Um nome de arquivo de saída
- Um token de acesso
O exemplo a seguir mostra como recuperar uma imagem PNG com uma solicitação GET
usando 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 a solicitação for bem-sucedida, o arquivo PNG será gravado na máquina.
PowerShell
Para recuperar uma imagem, faça uma solicitação GET
e especifique as seguintes informações:
- O nome do conjunto de dados pai
- O nome do armazenamento DICOM
- O identificador exclusivo do estudo (UID)
- O UID da série
- O UID da instância
- Um nome de arquivo de saída
- Um token de acesso
O exemplo a seguir mostra como recuperar uma imagem PNG com uma solicitação GET
usando o 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 a solicitação for bem-sucedida, o arquivo PNG será gravado na máquina.
Go
Java
Node.js
Python
Recuperar metadados
É possível recuperar os metadados de todas as instâncias em um estudo ou série. O exemplo a seguir mostra como recuperar os metadados de uma instância. Para mais informações, consulte Recursos de metadados na declaração de conformidade DICOM da API Cloud Healthcare.
Para ver mais informações, consulte projects.locations.datasets.dicomStores.studies.series.instances.retrieveMetadata
.
Quando você chama retrieveMetadata
, o método retorna o mesmo conjunto de campos
retornados quando você pesquisa uma instância
com o parâmetro de consulta includefield=all
. Se seu aplicativo for
sensível à latência e você quiser recuperar os
metadados de um conjunto específico de campos (em vez de todos os campos), não chame
retrieveMetadata
. Em vez disso, chame
um dos métodos searchForInstances
e especifique os campos. A resposta será um conjunto menor de campos, e um conjunto menor de campos será útil para aplicativos sensíveis à latência.
Por padrão, retrieveMetadata
retorna uma resposta JSON. Para retornar uma resposta XML,
transmitir um cabeçalho HTTP Accept: multipart/related; type="application/dicom+xml"
na solicitação.
REST
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_ID
: o ID do seu projeto do Google Cloud;LOCATION
: o local do conjunto de dados;DATASET_ID
: o conjunto de dados pai do armazenamento DICOMDICOM_STORE_ID
: o ID do repositório DICOMSTUDY_INSTANCE_UID
: o identificador exclusivo da instância do estudo.SERIES_INSTANCE_UID
: o identificador exclusivo da instância de série.INSTANCE_UID
: o identificador exclusivo da instância.
Para enviar a solicitação, 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
APIs Explorer
Abra a página de referência do método. O painel "APIs Explorer" é aberto no lado direito da página. Interaja com essa ferramenta para enviar solicitações. Preencha todos os campos obrigatórios e clique em Executar.
Você receberá uma resposta JSON semelhante a esta:
Recuperar dados em massa
Você pode recuperar os bytes brutos para uma tag Bulkdata específica em uma instância armazenada. Ao recuperar metadados de uma instância usando métodos de visualização, BulkDataURIs será gerado para tags de dados em massa compatíveis (consulte definição de Bulkdata).
Para ver mais informações, consulte projects.locations.datasets.dicomStores.studies.series.instances.bulkdata.retrieveBulkdata
.
O exemplo a seguir cria o URL da solicitação diretamente com base no caminho conhecido de uma tag de bulkdata (sem usar retrieveMetadata
para acessar o BulkDataURI).
curl
Para recuperar dados em massa, faça uma solicitação GET
e especifique as seguintes informações:
- O nome do conjunto de dados pai
- O nome do armazenamento DICOM
- O identificador exclusivo do estudo (UID)
- O UID da série
- O UID da instância
- O caminho da tag de dados de lote de destino
- Para uma tag (XXXX,XXXX) em uma sequência (AAAA,AAAA) no índice i, o caminho seria "AAAAAAAA/i/XXXXXXXX".
- Um nome de arquivo de saída
- Um token de acesso
O exemplo a seguir mostra como recuperar um arquivo DAT
com uma solicitação 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
Se a solicitação for bem-sucedida, o arquivo DAT que contém bytes brutos do é gravada na sua máquina.
PowerShell
Para recuperar dados em massa, faça uma solicitação GET
e especifique as seguintes informações:
- O nome do conjunto de dados pai
- O nome do armazenamento DICOM
- O identificador exclusivo do estudo (UID)
- O UID da série
- O UID da instância
- O caminho da tag de dados de lote de destino
- Para uma tag (XXXX,XXXX) em uma sequência (AAAA,AAAA) no índice i, o caminho seria "AAAAAAAA/i/XXXXXXXX".
- Um nome de arquivo de saída
- Um token de acesso
O exemplo a seguir mostra como recuperar um arquivo DAT com
uma solicitação GET
usando o Windows PowerShell.
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred"; Accept = "application/octet-stream; transfer-syntax=*" } Invoke-RestMethod ` -Method Get ` -Headers $headers ` -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID/bulkdata/BULKDATA_PATH" -OutFile FILENAME.DAT `
Se a solicitação for bem-sucedida, o arquivo DAT que contém bytes brutos do é gravada na sua máquina.
Usar a CLI da DICOMweb
O exemplo a seguir mostra como usar o CLI DICOMweb da API Cloud Healthcare para recuperar todas as instâncias em um armazenamento DICOM e salvá-las na sua máquina diretório de trabalho atual. Há mais amostras disponíveis no Repositório GitHub da CLI DICOM.
dcmweb \ https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb \ retrieve
Se a solicitação for bem-sucedida, o servidor retornará uma resposta semelhante à seguinte, e os arquivos DICOM serão gravados na sua máquina:
TIMESTAMP -- Saving files into ./ TIMESTAMP -- Transferred SIZE in COUNT files
Excluir um estudo, uma série ou uma instância
A API Cloud Healthcare implementa um serviço da Web reservado para a exclusão de estudos, séries e instâncias DICOM. Esse serviço não faz parte dos serviços padrão da DICOMweb. Para mais informações, consulte a seção Excluir na declaração de conformidade DICOM da API Cloud Healthcare.
Solicitações de exclusão de estudos e séries retornam uma operação de longa duração. Após a conclusão da operação, todas as instâncias do estudo ou da série serão excluídas.
As solicitações de exclusão de instâncias não retornam uma operação de longa duração. Em vez disso, elas retornam um corpo de resposta vazio como o seguinte:
{}
Os exemplos a seguir mostram como excluir um estudo DICOM. Para mais informações, consulte estes tópicos projects.locations.datasets.dicomStores.studies.delete
.
REST
Excluir o estudo.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_ID
: o ID do seu projeto do Google Cloud;LOCATION
: o local do conjunto de dados;DATASET_ID
: o conjunto de dados pai do armazenamento DICOMDICOM_STORE_ID
: o ID do repositório DICOMSTUDY_INSTANCE_UID
: o identificador exclusivo da instância do estudo.
Para enviar a solicitação, 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 ContentAPIs Explorer
Abra o página de referência do método. O painel "APIs Explorer" é aberto no lado direito da página. Interaja com essa ferramenta para enviar solicitações. Preencha todos os campos obrigatórios e clique em Executar.
Você receberá uma resposta JSON semelhante a esta:
Confira o status da operação de longa duração.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_ID
: o ID do seu projeto do Google Cloud;LOCATION
: o local do conjunto de dados;DATASET_ID
: o conjunto de dados pai do armazenamento DICOMOPERATION_ID
: o ID retornado da operação de longa duração.
Para enviar a solicitação, 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 ContentAPIs Explorer
Abra o página de referência do método. O painel "APIs Explorer" é aberto no lado direito da página. Interaja com essa ferramenta para enviar solicitações. Preencha todos os campos obrigatórios e clique em Executar.
Você receberá uma resposta JSON semelhante a esta:
Go
Java
Node.js
Python
Usar a CLI da DICOMweb
O exemplo a seguir mostra como usar o CLI DICOMweb da API Cloud Healthcare para excluir 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 a solicitação for bem-sucedida, o servidor retornará uma operação que a ferramenta CLI consulta até que a operação de exclusão seja concluída.