Declaração de conformidade DICOM v1
Observação
A versão 2 da API é a versão mais recente da API e deve ser usada no lugar da v1. Consulte a Declaração de Conformidade DICOM v2 para obter detalhes.
O Medical Imaging Server for DICOM® suporta um subconjunto do padrão DICOMweb. O suporte inclui:
Além disso, há suporte para as seguintes APIs não padrão:
O serviço usa o controle de versão da API REST. A versão da API REST deve ser especificada explicitamente como parte da URL base, como no exemplo a seguir:
https://<service_url>/v<version>/studies
Essa versão da declaração de conformidade corresponde à v1
versão das APIs REST.
Para obter informações sobre como especificar a versão ao fazer solicitações, consulte a Documentação de controle de versão da API.
Você pode encontrar exemplos de solicitações para transações com suporte na coleção Postman.
Preâmbulo Sanitização
O serviço ignora o Preâmbulo do Arquivo de 128 bytes e substitui seu conteúdo por caracteres nulos. Esse comportamento garante que nenhum arquivo passado pelo serviço seja vulnerável à vulnerabilidade de preâmbulo mal-intencionado. No entanto, essa limpeza de preâmbulo também significa que os preâmbulos usados para codificar conteúdo de formato duplo, como TIFF, não podem ser usados com o serviço.
Serviço de Estudos
O serviço de estudos permite que os usuários armazenem, recuperem e pesquisem estudos, séries e instâncias DICOM. Adicionamos a transação Delete não padrão para habilitar um ciclo de vida completo do recurso.
Loja (STOW-RS)
Essa transação usa o método POST ou PUT para armazenar representações de estudos, séries e instâncias contidas na carga útil da solicitação.
Método | Caminho | Descrição |
---|---|---|
POST | .. /Estudos | Armazenar instâncias. |
POSTAR | .. /estudos/{estudo} | Armazene instâncias para um estudo específico. |
PUT | .. /Estudos | Instâncias de upsert. |
PUT | .. /estudos/{estudo} | Instâncias de upsert para um estudo específico. |
O parâmetro study
corresponde ao atributo StudyInstanceUID
DICOM . Se especificado, qualquer instância que não pertença ao estudo fornecido será rejeitada com um código de 43265
aviso.
Há suporte para o seguinte Accept
cabeçalho para a resposta:
application/dicom+json
Os seguintes Content-Type
cabeçalhos são suportados:
multipart/related; type="application/dicom"
application/dicom
Observação
O servidor não forçará ou substituirá atributos que entrem em conflito com os dados existentes para solicitações POST. Todos os dados são armazenados conforme fornecido. Para solicitações upsert (PUT), os dados existentes são substituídos pelos novos dados recebidos.
Armazenar atributos necessários
Os seguintes elementos DICOM devem estar presentes em todos os arquivos DICOM que tentam ser armazenados:
StudyInstanceUID
SeriesInstanceUID
SOPInstanceUID
SOPClassUID
PatientID
Observação
Todos os UIDs devem ter entre 1 e 64 caracteres e conter apenas caracteres alfanuméricos ou os seguintes caracteres especiais: .
, -
. PatientID
é validado com base em seu LO
VR
tipo.
Cada arquivo armazenado deve ter uma combinação exclusiva de StudyInstanceUID
, SeriesInstanceUID
e SopInstanceUID
. O código 45070
de aviso será retornado se já existir um arquivo com os mesmos identificadores.
Somente sintaxes de transferência com representações de valor explícitas são aceitas.
Códigos de status de resposta da loja
Código | Descrição |
---|---|
200 (OK) |
Todas as instâncias de SOP na solicitação são armazenadas. |
202 (Accepted) |
Algumas instâncias na solicitação são armazenadas, mas outras falharam. |
204 (No Content) |
Nenhum conteúdo foi fornecido na solicitação de transação da loja. |
400 (Bad Request) |
O pedido foi mal formatado. Por exemplo, o identificador de instância de estudo fornecido não estava em conformidade com o formato UID esperado. |
401 (Unauthorized) |
O cliente não está autenticado. |
403 (Forbidden) |
O usuário não está autorizado. |
406 (Not Acceptable) |
Não há suporte para o cabeçalho especificado Accept . |
409 (Conflict) |
Nenhuma das instâncias na solicitação de transação de armazenamento foi armazenada. |
415 (Unsupported Media Type) |
Não há suporte para o fornecido Content-Type . |
503 (Service Unavailable) |
O serviço está indisponível ou ocupado. Tente novamente depois. |
Armazenar carga de resposta
A carga de resposta preenche um conjunto de dados DICOM com os elementos a seguir.
Marca | Nome | Descrição |
---|---|---|
(0008, 1190) | RetrieveURL |
A URL de recuperação do estudo, se o StudyInstanceUID foi fornecido na solicitação de armazenamento e pelo menos uma instância foi armazenada com êxito |
(0008, 1198) | FailedSOPSequence |
A sequência de instâncias que falharam ao armazenar |
(0008, 1199) | ReferencedSOPSequence |
A sequência de instâncias armazenadas |
Cada conjunto de dados no FailedSOPSequence
tem os seguintes elementos (se o arquivo DICOM que está tentando ser armazenado puder ser lido).
Marca | Nome | Descrição |
---|---|---|
(0008, 1150) | ReferencedSOPClassUID |
O identificador exclusivo da classe SOP da instância que falhou ao armazenar |
(0008, 1155) | ReferencedSOPInstanceUID |
O identificador exclusivo da instância SOP da instância que falhou ao armazenar |
(0008, 1197) | FailureReason |
O código de razão pelo qual esta instância falhou ao armazenar |
(0074, 1048) | FailedAttributesSequence |
A sequência disso inclui o motivo de ErrorComment cada atributo com falha |
Cada conjunto de dados no ReferencedSOPSequence
tem os seguintes elementos.
Marca | Nome | Descrição |
---|---|---|
(0008, 1150) | ReferencedSOPClassUID |
O identificador exclusivo da classe SOP da instância que falhou ao armazenar |
(0008, 1155) | ReferencedSOPInstanceUID |
O identificador exclusivo da instância SOP da instância que falhou ao armazenar |
(0008, 1190) | RetrieveURL |
A URL de recuperação dessa instância no servidor DICOM |
Um exemplo de resposta com Accept
cabeçalho application/dicom+json
:
{
"00081190":
{
"vr":"UR",
"Value":["http://localhost/studies/d09e8215-e1e1-4c7a-8496-b4f6641ed232"]
},
"00081198":
{
"vr":"SQ",
"Value":
[{
"00081150":
{
"vr":"UI","Value":["cd70f89a-05bc-4dab-b6b8-1f3d2fcafeec"]
},
"00081155":
{
"vr":"UI",
"Value":["22c35d16-11ce-43fa-8f86-90ceed6cf4e7"]
},
"00081197":
{
"vr":"US",
"Value":[43265]
}
}]
},
"00081199":
{
"vr":"SQ",
"Value":
[{
"00081150":
{
"vr":"UI",
"Value":["d246deb5-18c8-4336-a591-aeb6f8596664"]
},
"00081155":
{
"vr":"UI",
"Value":["4a858cbb-a71f-4c01-b9b5-85f88b031365"]
},
"00081190":
{
"vr":"UR",
"Value":["http://localhost/studies/d09e8215-e1e1-4c7a-8496-b4f6641ed232/series/8c4915f5-cc54-4e50-aa1f-9b06f6e58485/instances/4a858cbb-a71f-4c01-b9b5-85f88b031365"]
}
}]
}
}
Códigos de motivo de falha do armazenamento
Código | Descrição |
---|---|
272 |
A transação de armazenamento não armazenou a instância devido a uma falha geral no processamento da operação. |
43264 |
A instância DICOM falhou na validação. |
43265 |
A instância StudyInstanceUID fornecida não correspondeu ao especificado StudyInstanceUID na solicitação de armazenamento. |
45070 |
Uma instância DICOM com o mesmo StudyInstanceUID , SeriesInstanceUID , e SopInstanceUID já está armazenada. Se você quiser atualizar o conteúdo, exclua essa instância primeiro. |
45071 |
Uma instância DICOM está sendo criada por outro processo ou a tentativa anterior de criar falhou e o processo de limpeza não foi concluído. Exclua a instância antes de tentar criar novamente. |
Armazenar códigos de motivo de aviso
Código | Descrição |
---|---|
45063 |
Um conjunto de dados de instância DICOM não corresponde à classe SOP. A transação de armazenamento de estudos (Seção 10.5) observou que o conjunto de dados não correspondia às restrições da classe SOP durante o armazenamento da instância. |
Códigos de erro da loja
Código | Descrição |
---|---|
100 |
Os atributos de instância fornecidos não atenderam aos critérios de validação. |
Recuperar (WADO-RS)
Essa transação de recuperação oferece suporte para recuperar estudos, séries, instâncias e quadros armazenados por referência.
Método | Caminho | Descrição |
---|---|---|
GET | .. /estudos/{estudo} | Recupera todas as instâncias em um estudo |
GET | .. /estudos/{estudo}/metadados | Recupera os metadados de todas as instâncias em um estudo |
GET | .. /estudos/{estudo}/série/{série} | Recupera todas as instâncias dentro de uma série |
GET | .. /estudos/{estudo}/série/{série}/metadados | Recupera os metadados de todas as instâncias em uma série |
GET | .. /estudos/{estudo}/série/{série}/instâncias/{instância} | Recupera uma única instância |
GET | .. /estudos/{estudo}/série/{série}/instâncias/{instância}/metadados | Recupera os metadados de uma única instância |
GET | .. /estudos/{estudo}/série/{série}/instâncias/{instância}/renderizado | Recupera uma instância renderizada em um formato de imagem |
GET | .. /estudos/{estudo}/série/{série}/instâncias/{instância}/quadros/{quadros} | Recupera um ou vários quadros de uma única instância; Para especificar mais de um quadro, use uma vírgula para separar cada quadro a ser retornado. Por exemplo, /studies/1/series/2/instance/3/frames/4,5,6 . |
GET | .. /estudos/{estudo}/série/{série}/instâncias/{instância}/quadros/{quadro}/renderizado | Recupera um único quadro renderizado em um formato de imagem |
Recuperar instâncias dentro de estudo ou série
Os cabeçalhos a seguir Accept
têm suporte para recuperar instâncias em um estudo ou em uma série.
multipart/related; type="application/dicom"; transfer-syntax=*
multipart/related; type="application/dicom";
(quando a sintaxe de transferência não é especificada, 1.2.840.10008.1.2.1 é usado como padrão)multipart/related; type="application/dicom"; transfer-syntax=1.2.840.10008.1.2.1
multipart/related; type="application/dicom"; transfer-syntax=1.2.840.10008.1.2.4.90
*/*
(quando a sintaxe de transferência não é especificada,*
é usada como padrão e o padrão mediaType éapplication/dicom
)
Recuperar uma instância
Os seguintes Accept
cabeçalhos são suportados para recuperar uma instância específica:
application/dicom; transfer-syntax=*
multipart/related; type="application/dicom"; transfer-syntax=*
application/dicom;
(quando a sintaxe de transferência não é especificada,1.2.840.10008.1.2.1
é usada como padrão)multipart/related; type="application/dicom"
(quando a sintaxe de transferência não é especificada,1.2.840.10008.1.2.1
é usada como padrão)application/dicom; transfer-syntax=1.2.840.10008.1.2.1
multipart/related; type="application/dicom"; transfer-syntax=1.2.840.10008.1.2.1
application/dicom; transfer-syntax=1.2.840.10008.1.2.4.90
multipart/related; type="application/dicom"; transfer-syntax=1.2.840.10008.1.2.4.90
*/*
(quando a sintaxe de transferência não é especificada,*
é usada como padrão e o padrão mediaType éapplication/dicom
)
Recuperar quadros
Os cabeçalhos a seguir Accept
são suportados para recuperar quadros.
multipart/related; type="application/octet-stream"; transfer-syntax=*
multipart/related; type="application/octet-stream";
(quando a sintaxe de transferência não é especificada,1.2.840.10008.1.2.1
é usada como padrão)multipart/related; type="application/octet-stream"; transfer-syntax=1.2.840.10008.1.2.1
multipart/related; type="image/jp2";
(quando a sintaxe de transferência não é especificada,1.2.840.10008.1.2.4.90
é usada como padrão)multipart/related; type="image/jp2";transfer-syntax=1.2.840.10008.1.2.4.90
*/*
(quando a sintaxe de transferência não é especificada,*
é usada como padrão e o padrão mediaType éapplication/octet-stream
)
Recuperar sintaxe de transferência
Quando a sintaxe de transferência solicitada é diferente do arquivo original, o arquivo original é transcodificado para a sintaxe de transferência solicitada. O arquivo original precisa ser um dos seguintes formatos para que a transcodificação seja bem-sucedida, caso contrário, a transcodificação poderá falhar.
- 1.2.840.10008.1.2 (Little Endian implícito)
- 1.2.840.10008.1.2.1 (Little Endian explícito)
- 1.2.840.10008.1.2.2 (Big Endian VR explícito)
- 1.2.840.10008.1.2.4.50 (Processo de Linha de Base 1 do JPEG)
- 1.2.840.10008.1.2.4.57 (JPEG sem perdas)
- 1.2.840.10008.1.2.4.70 (Valor de seleção sem perdas JPEG 1)
- 1.2.840.10008.1.2.4.90 (somente JPEG 2000 sem perdas)
- 1.2.840.10008.1.2.4.91 (JPEG 2000)
- 1.2.840.10008.1.2.5 (RLE sem perdas)
Um resultado não suportado transfer-syntax
em 406 Not Acceptable
.
Recuperar metadados (para estudo, série ou instância)
O cabeçalho a seguir Accept
tem suporte para recuperar metadados de um estudo, uma série ou uma instância.
application/dicom+json
A recuperação de metadados não retorna atributos com as representações de valor a seguir.
Nome VR | Descrição |
---|---|
OB | Outro byte |
OD | Outros Duplos |
OF | Outro flutuador |
OL | Outros Longos |
OV | Outros 64 bits muito longos |
OW | Outra palavra |
UN | Desconhecido |
Recuperar validação de cache de metadados (para estudo, série ou instância)
A validação de cache é suportada usando o ETag
mecanismo. Na resposta a uma solicitação de metadados, ETag é retornado como um dos cabeçalhos. Essa ETag pode ser armazenada em cache e adicionada como If-None-Match
cabeçalho nas solicitações posteriores para os mesmos metadados. Dois tipos de respostas são possíveis se os dados existirem:
- Os dados permanecem inalterados desde a última solicitação: a resposta é enviada sem corpo de
HTTP 304 (Not Modified)
resposta. - Os dados foram alterados desde a última solicitação: a resposta é enviada com ETag
HTTP 200 (OK)
atualizada. Os dados necessários também são retornados como parte do corpo.
Recuperar imagem renderizada (por exemplo ou quadro)
Os cabeçalhos a seguir Accept
são suportados para recuperar uma imagem renderizada, uma instância ou um quadro.
image/jpeg
image/png
Caso nenhum Accept
cabeçalho seja especificado, o serviço renderiza um image/jpeg
por padrão.
O serviço suporta apenas a renderização de um único quadro. Se a renderização for solicitada para uma instância com vários quadros, por padrão, somente o primeiro quadro será renderizado como uma imagem.
Ao especificar um quadro específico a ser retornado, a indexação de quadros começa em 1.
O quality
parâmetro de consulta também é suportado. Um valor inteiro de 1
para 100
inclusive (1 sendo a pior qualidade e 100 sendo a melhor qualidade) pode ser passado como o valor do parâmetro de consulta. Esse parâmetro é usado para imagens renderizadas como jpeg
e é ignorado para png
solicitações de renderização. Se não for especificado, o parâmetro padrão será 100
.
Recuperar códigos de status de resposta
Código | Descrição |
---|---|
200 (OK) |
Todos os dados solicitados foram recuperados. |
304 (Not Modified) |
Os dados solicitados não foram modificados desde a última solicitação. Nesse caso, o conteúdo não é adicionado ao corpo da resposta. Para obter mais informações, consulte a seção anterior Recuperar validação de cache de metadados (para estudo, série ou instância). |
400 (Bad Request) |
O pedido foi mal formatado. Por exemplo, o identificador de instância de estudo fornecido não estava em conformidade com o formato UID esperado ou a codificação de sintaxe de transferência solicitada não é compatível. |
401 (Unauthorized) |
O cliente não está autenticado. |
403 (Forbidden) |
O usuário não está autorizado. |
404 (Not Found) |
O recurso DICOM especificado não pôde ser encontrado ou, para uma solicitação renderizada, a instância não continha dados de pixel. |
406 (Not Acceptable) |
Não há suporte para o cabeçalho especificado Accept ou, para solicitações renderizadas e transcodificadas, o arquivo solicitado era muito grande. |
503 (Service Unavailable) |
O serviço está indisponível ou ocupado. Tente novamente depois. |
Pesquisa (QIDO-RS)
A consulta baseada em ID para objetos DICOM (QIDO) permite pesquisar estudos, séries e instâncias por atributos.
Método | Caminho | Descrição |
---|---|---|
Busca de Estudos | ||
GET | .. /Estudos?... | Pesquisar estudos |
Pesquisar por séries | ||
GET | .. /série?... | Pesquisar séries |
GET | .. /estudos/{estudo}/série?... | Pesquisar séries em um estudo |
Pesquisar instâncias | ||
GET | .. /Instâncias?... | Pesquisar instâncias |
GET | .. /studies/{study}/instances?... | Pesquisar instâncias em um estudo |
GET | .. /estudos/{estudo}/série/{série}/instâncias?... | Pesquisar instâncias em uma série |
O seguinte Accept
cabeçalho é suportado para pesquisa:
application/dicom+json
Parâmetros de pesquisa com suporte
Os parâmetros a seguir para cada consulta são suportados.
Chave | Valores de suporte | Contagem permitida | Descrição |
---|---|---|---|
{attributeID}= |
{value} |
0...N | Pesquisar correspondência de atributo/valor na consulta |
includefield= |
{attributeID} all |
0...N | Os outros atributos a serem retornados na resposta; Há suporte para tags públicas e privadas. Quando all é fornecido. Consulte Resposta de Pesquisa para obter mais informações sobre quais atributos são retornados para cada tipo de consulta.Se uma mistura de {attributeID} e all for fornecida, o servidor usará all como padrão . |
limit= |
{value} |
0..1 | Valor inteiro para limitar o número de valores retornados na resposta; O valor pode estar entre o intervalo 1 >= x <= 200, padronizado para 100. |
offset= |
{value} |
0..1 | Ignorar {value} resultados; Se um deslocamento maior que o número de resultados da consulta de pesquisa for fornecido, uma 204 (no content) resposta será retornada. |
fuzzymatching= |
true / false |
0..1 | Se a correspondência difusa verdadeira for aplicada ao atributo PatientName; Ele faz uma correspondência de palavra de prefixo de qualquer parte do nome dentro do valor PatientName. Por exemplo, se PatientName for "John^Doe", então "joh", "do", "jo do", "Doe" e "John Doe" correspondem. No entanto, "ohn" não corresponde. |
Atributos pesquisáveis
Oferecemos suporte à pesquisa dos seguintes atributos e tipos de pesquisa.
Palavra-chave de atributo | Todos os estudos | Todas as séries | Todas as instâncias | Série de Estudos | Instâncias do estudo | Exemplos da série de estudos |
---|---|---|---|---|---|---|
StudyInstanceUID |
X | X | X | |||
PatientName |
X | X | X | |||
PatientID |
X | X | X | |||
PatientBirthDate |
X | X | X | |||
AccessionNumber |
X | X | X | |||
ReferringPhysicianName |
X | X | X | |||
StudyDate |
X | X | X | |||
StudyDescription |
X | X | X | |||
ModalitiesInStudy |
X | X | X | |||
SeriesInstanceUID |
X | X | X | X | ||
Modality |
X | X | X | X | ||
PerformedProcedureStepStartDate |
X | X | X | X | ||
ManufacturerModelName |
X | X | X | X | ||
SOPInstanceUID |
X | X | X |
Correspondência de pesquisa
Oferecemos suporte aos seguintes tipos de correspondência.
Tipo de pesquisa | Atributo suportado | Exemplo |
---|---|---|
Consulta de intervalo | StudyDate /PatientBirthDate |
{attributeID}={value1}-{value2} . Para valores de data/hora, oferecemos suporte a um intervalo inclusivo na tag, que é mapeado para attributeID >= {value1} AND attributeID <= {value2} . Se {value1} não for especificado, todas as ocorrências de datas/horas anteriores e incluindo {value2} serão correspondidas. Da mesma forma, se {value2} não for especificado, todas as ocorrências e {value1} datas/horas subsequentes serão correspondidas. No entanto, um desses valores tem que estar presente. {attributeID}={value1}- e {attributeID}=-{value2} são válidos, no entanto, {attributeID}=- é inválido. |
Correspondência Exata | Todos os atributos suportados | {attributeID}={value1} |
Partida difusa | PatientName , ReferringPhysicianName |
Corresponde a qualquer componente do nome que comece com o valor. |
ID do atributo
As tags podem ser codificadas de várias maneiras para o parâmetro de consulta. Implementamos parcialmente o padrão conforme definido em PS3.18 6.7.1.1.1. As seguintes codificações para uma marca são suportadas.
Valor | Exemplo |
---|---|
{group}{element} |
0020000D |
{dicomKeyword} |
StudyInstanceUID |
Aqui está um exemplo de consulta pesquisando instâncias:
../instances?Modality=CT&00280011=512&includefield=00280010&limit=5&offset=0
Resposta da pesquisa
A resposta é uma matriz de conjuntos de dados DICOM. Dependendo do recurso, por padrão , os atributos a seguir são retornados.
Tags de estudo padrão
Marca | Nome do atributo |
---|---|
(0008, 0005) | SpecificCharacterSet |
(0008, 0020) | StudyDate |
(0008, 0030) | StudyTime |
(0008, 0050) | AccessionNumber |
(0008, 0056) | InstanceAvailability |
(0008, 0090) | ReferringPhysicianName |
(0008, 0201) | TimezoneOffsetFromUTC |
(0010, 0010) | PatientName |
(0010, 0020) | PatientID |
(0010, 0030) | PatientBirthDate |
(0010, 0040) | PatientSex |
(0020, 0010) | StudyID |
(0020, 000D) | StudyInstanceUID |
Tags de série padrão
Marca | Nome do atributo |
---|---|
(0008, 0005) | SpecificCharacterSet |
(0008, 0060) | Modality |
(0008, 0201) | TimezoneOffsetFromUTC |
(0008, 103E) | SeriesDescription |
(0020, 000E) | SeriesInstanceUID |
(0040, 0244) | PerformedProcedureStepStartDate |
(0040, 0245) | PerformedProcedureStepStartTime |
(0040, 0275) | RequestAttributesSequence |
Tags de instância padrão
Marca | Nome do atributo |
---|---|
(0008, 0005) | SpecificCharacterSet |
(0008, 0016) | SOPClassUID |
(0008, 0018) | SOPInstanceUID |
(0008, 0056) | InstanceAvailability |
(0008, 0201) | TimezoneOffsetFromUTC |
(0020, 0013) | InstanceNumber |
(0028, 0010) | Rows |
(0028, 0011) | Columns |
(0028, 0100) | BitsAllocated |
(0028, 0008) | NumberOfFrames |
Se includefield=all
, os atributos a seguir serão incluídos junto com os atributos padrão. Juntamente com os atributos padrão, esta é a lista completa de atributos suportados em cada nível de recurso.
Tags de estudo extras
Marca | Nome do atributo |
---|---|
(0008, 1030) | Study Description |
(0008, 0063) | AnatomicRegionsInStudyCodeSequence |
(0008, 1032) | ProcedureCodeSequence |
(0008, 1060) | NameOfPhysiciansReadingStudy |
(0008, 1080) | AdmittingDiagnosesDescription |
(0008, 1110) | ReferencedStudySequence |
(0010, 1010) | PatientAge |
(0010, 1020) | PatientSize |
(0010, 1030) | PatientWeight |
(0010, 2180) | Occupation |
(0010, 21B0) | AdditionalPatientHistory |
Outras tags de série
Marca | Nome do atributo |
---|---|
(0020, 0011) | SeriesNumber |
(0020, 0060) | Laterality |
(0008, 0021) | SeriesDate |
(0008, 0031) | SeriesTime |
Os seguintes atributos são retornados:
- Todos os parâmetros de consulta e UIDs correspondentes na URL do recurso.
IncludeField
atributos suportados nesse nível de recurso.- Se o recurso de destino for
All Series
, osStudy
atributos de nível também serão retornados. - Se o recurso de destino for
All Instances
, osStudy
atributos deSeries
nível e também serão retornados. - Se o recurso de destino for
Study's Instances
, osSeries
atributos de nível também serão retornados. NumberOfStudyRelatedInstances
atributo agregado é suportado noStudy
nívelincludeField
.NumberOfSeriesRelatedInstances
atributo agregado é suportado noSeries
nívelincludeField
.
Códigos de resposta de pesquisa
A API de consulta retorna um dos seguintes códigos de status na resposta.
Código | Descrição |
---|---|
200 (OK) |
A carga de resposta contém todos os recursos correspondentes. |
204 (No Content) |
A pesquisa foi concluída com sucesso, mas não retornou resultados. |
400 (Bad Request) |
O servidor não pôde executar a consulta porque o componente de consulta era inválido. O corpo da resposta contém detalhes da falha. |
401 (Unauthorized) |
O cliente não está autenticado. |
403 (Forbidden) |
O usuário não está autorizado. |
503 (Service Unavailable) |
O serviço está indisponível ou ocupado. Tente novamente depois. |
Outras observações
- Não há suporte para a consulta usando o
TimezoneOffsetFromUTC (00080201)
. - A API de consulta não retorna
413 (request entity too large)
. Se o limite de resposta da consulta solicitada estiver fora do intervalo aceitável, uma solicitação incorreta será retornada. Qualquer coisa solicitada dentro do intervalo aceitável é resolvida. - Quando o recurso de destino é Estudo/Série, há um potencial para metadados inconsistentes no nível do estudo/série em várias instâncias. Por exemplo, duas instâncias podem ter patientName diferente. Nesse caso, o mais recente vence e você pode pesquisar apenas nos dados mais recentes.
- Os resultados paginados são otimizados para retornar a instância mais recente correspondente primeiro, o que pode resultar em registros duplicados nas páginas subsequentes se os dados mais recentes correspondentes à consulta forem adicionados.
- A correspondência não diferencia maiúsculas de minúsculas e não diferencia acentos para tipos PN VR.
- A correspondência não diferencia maiúsculas de minúsculas e diferencia acentos para outros tipos de VR de cadeia de caracteres.
- Somente o primeiro valor será indexado se um único elemento de dados de valor tiver vários valores incorretamente.
Excluir
Esta transação não faz parte do padrão oficial da DICOMwe. Ele usa o método DELETE para remover representações de Estudos, Séries e Instâncias do repositório.
Método | Caminho | Descrição |
---|---|---|
DELETE | .. /estudos/{estudo} | Excluir todas as instâncias de um estudo específico |
DELETE | .. /estudos/{estudo}/série/{série} | Excluir todas as instâncias de uma série específica em um estudo |
DELETE | .. /estudos/{estudo}/série/{série}/instâncias/{instância} | Excluir uma instância específica dentro de uma série |
Os parâmetros study
, series
, e instance
correspondem aos atributos StudyInstanceUID
DICOM , SeriesInstanceUID
, e SopInstanceUID
respectivamente.
Não há restrições quanto ao cabeçalho, Content-Type
cabeçalho ou conteúdo do corpo da Accept
solicitação.
Observação
Após uma transação Delete, as instâncias excluídas não serão recuperáveis.
Códigos de status de resposta
Código | Descrição |
---|---|
204 (No Content) |
Quando todas as instâncias do SOP são excluídas |
400 (Bad Request) |
A solicitação foi mal formatada |
401 (Unauthorized) |
O cliente não está autenticado |
403 (Forbidden) |
O usuário não está autorizado |
404 (Not Found) |
Quando a série especificada não foi encontrada em um estudo ou a instância especificada não foi encontrada na série |
503 (Service Unavailable) |
O serviço está indisponível ou ocupado. Tente novamente depois. |
Excluir carga de resposta
O corpo da resposta está vazio. O código de status é a única informação útil retornada.
Serviço de lista de trabalho (UPS-RS)
O serviço DICOM dá suporte aos SOPs Push e Pull do Serviço de lista de trabalho (UPS-RS). O serviço Worklist fornece acesso a uma Worklist contendo Workitems, cada um dos quais representa uma Etapa de Procedimento Unificado (UPS).
Por toda parte, a variável {workitem}
em um modelo de URI representa um UID de item de trabalho.
Os endpoints UPS-RS disponíveis incluem:
Verbo | Caminho | Descrição |
---|---|---|
POST | {s}/workitems{? AffectedSOPInstanceUID} | Criar um item de trabalho |
POSTAR | {s}/workitems/{instance}{?transaction} | Atualizar um item de trabalho |
GET | {s}/workitems{?query*} | Pesquisar itens de trabalho |
GET | {s}/workitems/{instance} | Recuperar um item de trabalho |
PUT | {s}/workitems/{instance}/state | Alterar o estado do item de trabalho |
POSTAR | {s}/workitems/{instance}/cancelrequest | Cancelar item de trabalho |
POSTAR | {s}/workitems/{instance}/subscribers/{AETitle}{?deletionlock} | Criar assinatura |
POSTAR | {s}/workitems/1.2.840.10008.5.1.4.34.5/ | Suspender assinatura |
DELETE | {s}/workitems/{instance}/subscribers/{AETitle} | Excluir assinatura |
GET | {s}/assinantes/{AETitle} | Abrir canal de inscrição |
Criar item de trabalho
Essa transação usa o método POST para criar um novo Workitem.
Método | Caminho | Descrição |
---|---|---|
POST | .. /itens de trabalho | Criar um item de trabalho |
POSTAR | .. /workitems? {item de trabalho} | Cria um Workitem com o UID especificado. |
Se não for especificado no URI, o conjunto de dados de carga deverá conter o Workitem no SOPInstanceUID
atributo.
Os Accept
cabeçalhos e Content-Type
são necessários na solicitação e devem ter o valor application/dicom+json
.
Existem vários requisitos relacionados aos atributos de dados DICOM no contexto de uma transação específica. Os atributos podem ser obrigados a estar presentes, não estar presentes, vazios ou não vazios. Esses requisitos podem ser encontrados nesta tabela.
Observação
Embora a tabela de referência diga que o UID da instância SOP não deve estar presente, essa orientação é específica para o protocolo DIMSE e é tratada de forma diferente no DICOMWeb. O UID da instância SOP deve estar presente no conjunto de dados, se não no URI.
Observação
Todos os códigos de requisitos condicionais, incluindo 1C e 2C, são tratados como opcionais.
Criar códigos de status de resposta
Código | Descrição |
---|---|
201 (Created) |
O Workitem de destino foi criado com êxito. |
400 (Bad Request) |
Houve um problema com o pedido. Por exemplo, a carga da solicitação não atendeu aos requisitos. |
401 (Unauthorized) |
O cliente não está autenticado. |
403 (Forbidden) |
O usuário não está autorizado. |
409 (Conflict) |
O Workitem já existe. |
415 (Unsupported Media Type) |
Não há suporte para o fornecido Content-Type . |
503 (Service Unavailable) |
O serviço está indisponível ou ocupado. Tente novamente depois. |
Criar carga de resposta
Uma resposta bem-sucedida não tem carga. Os Location
cabeçalhos de resposta e Content-Location
contêm uma referência de URI para o Workitem criado.
Uma carga de resposta a falhas contém uma mensagem descrevendo a falha.
Solicitar cancelamento
Essa transação permite que o usuário solicite o cancelamento de um Workitem sem proprietário.
Há quatro estados de Workitem válidos.
SCHEDULED
IN PROGRESS
CANCELED
COMPLETED
Essa transação só é bem-sucedida em Workitems no SCHEDULED
estado. Qualquer usuário pode reivindicar a propriedade de um Workitem definindo seu UID de transação e alterando seu estado para IN PROGRESS
. A partir de então, um usuário só pode modificar o Workitem fornecendo o UID de transação correto. Embora a UPS defina classes SOP de Observação e Evento que permitem que solicitações de cancelamento e outros eventos sejam encaminhados, esse serviço DICOM não implementa essas classes e, portanto, as solicitações de cancelamento em itens de trabalho que retornam IN PROGRESS
uma falha. Um Workitem de propriedade pode ser cancelado por meio da transação Alterar Estado do Item de Trabalho.
Método | Caminho | Descrição |
---|---|---|
POST | .. /workitems/{workitem}/cancelrequest | Solicitar o cancelamento de um Workitem agendado |
O Content-Type
cabeçalho é necessário e deve ter o valor application/dicom+json
.
A carga útil da solicitação pode incluir informações de ação, conforme definido no padrão DICOM.
Solicitar códigos de status de resposta de cancelamento
Código | Descrição |
---|---|
202 (Accepted) |
A solicitação foi aceita pelo servidor, mas o estado do Item de Trabalho de Destino permanece inalterado. |
400 (Bad Request) |
Houve um problema com a sintaxe da solicitação. |
401 (Unauthorized) |
O cliente não está autenticado. |
403 (Forbidden) |
O usuário não está autorizado. |
404 (Not Found) |
O item de trabalho de destino não foi encontrado. |
409 (Conflict) |
A solicitação é inconsistente com o estado atual do Item de Trabalho de Destino. Por exemplo, o Item de Trabalho de Destino está no SCHEDULED estado ou COMPLETED . |
415 (Unsupported Media Type) |
Não há suporte para o fornecido Content-Type . |
Solicitar carga de resposta de cancelamento
Uma resposta bem-sucedida não tem carga e uma carga útil de resposta a falha contém uma mensagem descrevendo a falha.
Se a instância do item de trabalho já estiver em um estado cancelado, a resposta incluirá o seguinte cabeçalho de aviso HTTP: 299: The UPS is already in the requested state of CANCELED.
Recuperar item de trabalho
Essa transação recupera um Workitem. Corresponde à operação UPS DIMSE N-GET.
Referir-se a: https://dicom.nema.org/medical/dicom/current/output/html/part18.html#sect_11.5
Se o Workitem existir no servidor de origem, o Workitem será retornado em um Tipo de Mídia Aceitável. O Workitem retornado não conterá o atributo UID da transação (0008,1195). Isso é necessário para preservar a função do atributo como um bloqueio de acesso.
Método | Caminho | Descrição |
---|---|---|
GET | .. /workitems/{workitem} | Solicitação para recuperar um Workitem |
O Accept
cabeçalho é obrigatório e deve ter o valor application/dicom+json
.
Recuperar códigos de status de resposta do item de trabalho
Código | Descrição |
---|---|
200 (OK) | A instância do item de trabalho foi recuperada com êxito. |
400 (Solicitação inválida) | Houve um problema com o pedido. |
401 (não autorizado) | O cliente não está autenticado. |
403 (Proibido) | O usuário não está autorizado. |
404 (Não encontrado) | O item de trabalho de destino não foi encontrado. |
Recuperar carga de resposta do item de trabalho
- Uma resposta de sucesso tem uma carga útil de parte única contendo o Workitem solicitado no Tipo de Mídia Selecionado.
- O Workitem retornado não conterá o atributo UID da Transação (0008, 1195) do Workitem, pois isso só deve ser conhecido pelo Proprietário.
Atualizar item de trabalho
Essa transação modifica atributos de um Workitem existente. Corresponde à operação UPS DIMSE N-SET.
Referir-se a: https://dicom.nema.org/medical/dicom/current/output/html/part18.html#sect_11.6
Para atualizar um Workitem atualmente no SCHEDULED
estado, o Transaction UID
atributo não deve estar presente. Para um Workitem no IN PROGRESS
estado, a solicitação deve incluir o UID de transação atual como um parâmetro de consulta. Se o Workitem já estiver nos COMPLETED
estados ou CANCELED
, a resposta será 400 (Bad Request)
.
Método | Caminho | Descrição |
---|---|---|
POST | .. /workitems/{workitem}? {uid da transação} | Atualizar transação de item de trabalho |
O Content-Type
cabeçalho é necessário e deve ter o valor application/dicom+json
.
A carga da solicitação contém um conjunto de dados com as alterações a serem aplicadas ao Workitem de destino. Quando uma sequência é modificada, a solicitação deve incluir todos os Itens na sequência, não apenas os Itens a serem modificados. Quando vários atributos precisarem ser atualizados como um grupo, faça a atualização como vários atributos em uma única solicitação, não como várias solicitações.
Existem muitos requisitos relacionados aos atributos de dados DICOM no contexto de uma transação específica. Os atributos podem ser obrigados a estar presentes, não estar presentes, vazios ou não vazios. Esses requisitos podem ser encontrados nesta tabela.
Observação
Todos os códigos de requisitos condicionais, incluindo 1C e 2C, são tratados como opcionais.
Observação
A solicitação não pode definir o valor do atributo Estado da Etapa do Procedimento (0074,1000). O Estado da Etapa do Procedimento é gerenciado usando a transação Alterar Estado ou a transação Solicitar Cancelamento.
Atualizar códigos de status de resposta de transação de item de trabalho
Código | Descrição |
---|---|
200 (OK) |
O item de trabalho de destino foi atualizado. |
400 (Bad Request) |
Houve um problema com o pedido. Por exemplo: (1) O Item de Trabalho de Destino estava no COMPLETED estado ou CANCELED . (2) O UID da transação está ausente. (3) O UID da Transação está incorreto. (4) O conjunto de dados não estava em conformidade com os requisitos. |
401 (Unauthorized) |
O cliente não está autenticado. |
403 (Forbidden) |
O usuário não está autorizado. |
404 (Not Found) |
O item de trabalho de destino não foi encontrado. |
409 (Conflict) |
A solicitação é inconsistente com o estado atual do Item de Trabalho de Destino. |
415 (Unsupported Media Type) |
Não há suporte para o fornecido Content-Type . |
Atualizar carga de resposta da transação Workitem
O servidor de origem suporta campos de cabeçalho conforme exigido na Tabela 11.6.3-2.
Uma resposta bem-sucedida não tem carga ou contém uma carga contendo um documento de Relatório de Status.
Uma carga de resposta a falhas pode conter um Relatório de Status descrevendo quaisquer falhas, avisos ou outras informações úteis.
Alterar estado do item de trabalho
Essa transação é usada para alterar o estado de um Workitem. Corresponde à operação UPS DIMSE N-ACTION "Alterar estado do UPS". As alterações de estado são usadas para reivindicar a propriedade, concluir ou cancelar um Workitem.
Referir-se a: https://dicom.nema.org/medical/dicom/current/output/html/part18.html#sect_11.7
Se o Workitem existir no servidor de origem, o Workitem será retornado em um Tipo de Mídia Aceitável. O Workitem retornado não conterá o atributo UID da Transação (0008,1195). Isso é necessário para preservar a função desse atributo como um bloqueio de acesso, conforme descrito aqui.
Método | Caminho | Descrição |
---|---|---|
PUT | .. /workitems/{workitem}/estado | Alterar estado do item de trabalho |
O Accept
cabeçalho é necessário e deve ter o valor application/dicom+json
.
A carga útil da solicitação contém os Elementos de Dados de Alteração do Estado do UPS. Esses elementos de dados são:
- UID da transação (0008, 1195). A carga útil da solicitação inclui um UID de transação. O agente do usuário cria o UID da transação ao solicitar uma transição para o
IN PROGRESS
estado de um determinado item de trabalho. O agente do usuário fornece esse UID da transação em transações subsequentes com esse item de trabalho. - Estado da etapa do procedimento (0074, 1000). Os valores legais correspondem à transição de estado solicitada. Eles são:
IN PROGRESS
,COMPLETED
, ouCANCELED
.
Alterar códigos de status de resposta de estado do item de trabalho
Código | Descrição |
---|---|
200 (OK) |
A instância do item de trabalho foi recuperada com êxito. |
400 (Bad Request) |
A solicitação não pode ser executada por um dos seguintes motivos. (1) A solicitação não é válida devido ao estado atual do Item de Trabalho de Destino. (2) O UID da transação está ausente. (3) O UID da transação está incorreto |
401 (Unauthorized) |
O cliente não está autenticado. |
403 (Forbidden) |
O usuário não está autorizado. |
404 (Not Found) |
O item de trabalho de destino não foi encontrado. |
409 (Conflict) |
A solicitação é inconsistente com o estado atual do Item de Trabalho de Destino. |
Alterar carga de resposta de estado do item de trabalho
- As respostas incluem os campos de cabeçalho especificados na seção 11.7.3.2.
- Uma resposta bem-sucedida não tem carga.
- Uma carga de resposta a falhas pode conter um Relatório de Status descrevendo quaisquer falhas, avisos ou outras informações úteis.
Pesquisar itens de trabalho
Essa transação permite que você pesquise Workitems por atributos.
Método | Caminho | Descrição |
---|---|---|
GET | .. /workitems? | Pesquisar itens de trabalho |
O cabeçalho a seguir Accept
tem suporte para pesquisa.
application/dicom+json
Parâmetros de pesquisa suportados
Os parâmetros a seguir para cada consulta são suportados.
Chave | Valores de suporte | Contagem permitida | Descrição |
---|---|---|---|
{attributeID}= |
{value} |
0...N | Pesquisar correspondência de atributo/valor na consulta |
includefield= |
{attributeID} all |
0...N | Os outros atributos a serem retornados na resposta; Somente atributos de nível superior podem ser incluídos, não atributos que fazem parte de sequências. Há suporte para tags públicas e privadas. Quando all for fornecido, consulte Resposta de pesquisa para obter mais informações sobre quais atributos são retornados para cada tipo de consulta. Se uma mistura de {attributeID} e all for fornecida, o servidor usará como padrão 'all'. |
limit= |
{value} |
0...1 | Valor inteiro para limitar o número de valores retornados na resposta; O valor pode estar entre o intervalo 1 >= x <= 200 , padronizado para 100 . |
offset= |
{value} |
0...1 | Pule os resultados de {value}; Se um deslocamento maior que o número de resultados da consulta de pesquisa for fornecido, uma 204 (no content) resposta será retornada. |
fuzzymatching= |
true | false |
0...1 | Se a correspondência difusa verdadeira for aplicada a qualquer atributo com a Representação de Valor (VR) do Nome da Pessoa (PN); Uma correspondência de palavras de prefixo de qualquer parte do nome dentro desses atributos é executada. Por exemplo, se PatientName for John^Doe , então joh , , do , jo do e John Doe Doe todos correspondem. ohn No entanto, não corresponde. |
Atributos pesquisáveis
Oferecemos suporte à pesquisa nesses atributos.
Palavra-chave de atributo |
---|
PatientName |
PatientID |
ReferencedRequestSequence.AccessionNumber |
ReferencedRequestSequence.RequestedProcedureID |
ScheduledProcedureStepStartDateTime |
ScheduledStationNameCodeSequence.CodeValue |
ScheduledStationClassCodeSequence.CodeValue |
ScheduledStationGeographicLocationCodeSequence.CodeValue |
ProcedureStepState |
StudyInstanceUID |
Correspondência de pesquisa
Oferecemos suporte a esses tipos correspondentes.
Tipo de pesquisa | Atributo suportado | Exemplo |
---|---|---|
Consulta de intervalo | ScheduledProcedureStepStartDateTime |
{attributeID}={value1}-{value2} . Para valores de data/hora, oferecemos suporte a um intervalo inclusivo na tag. Isso é mapeado para attributeID >= {value1} AND attributeID <= {value2} . Se {value1} não for especificado, todas as ocorrências de datas/horas anteriores e incluindo {value2} serão correspondidas. Da mesma forma, se {value2} não for especificado, todas as ocorrências e {value1} datas/horas subsequentes serão correspondidas. No entanto, um desses valores deve estar presente. {attributeID}={value1}- e {attributeID}=-{value2} são válidos, no entanto, {attributeID}=- é inválido. |
Correspondência Exata | Todos os atributos suportados | {attributeID}={value1} |
Partida difusa | PatientName |
Corresponde a qualquer componente do nome que comece com o valor |
Observação
Embora não demos suporte à correspondência de sequência completa, oferecemos suporte à correspondência exata nos atributos listados que estão contidos em uma sequência.
ID do atributo
As marcas podem ser codificadas de várias maneiras para o parâmetro de consulta. Implementamos parcialmente o padrão conforme definido no PS3.18 6.7.1.1.1. As seguintes codificações para uma marca são suportadas.
Valor | Exemplo |
---|---|
{group}{element} |
00100010 |
{dicomKeyword} |
PatientName |
Exemplo de consulta:
../workitems?PatientID=K123&0040A370.00080050=1423JS&includefield=00404005&limit=5&offset=0
Resposta de pesquisa
A resposta é uma matriz de conjuntos de 0...N
dados DICOM com os seguintes atributos retornados:
- Todos os atributos no DICOM PowerShell 3.4 Tabela CC.2.5-3 com um Tipo de Chave de Retorno de 1 ou 2.
- Todos os atributos no DICOM PowerShell 3.4 Tabela CC.2.5-3 com um Tipo de Chave de Retorno de 1C para o qual os requisitos condicionais são atendidos.
- Todos os outros atributos Workitem passados como parâmetros de correspondência.
- Todos os outros atributos Workitem passados como
includefield
valores de parâmetro.
Códigos de resposta de pesquisa
A API de consulta retorna um dos seguintes códigos de status na resposta.
Código | Descrição |
---|---|
200 (OK) |
A carga de resposta contém todos os recursos correspondentes. |
206 (Partial Content) |
A carga de resposta contém apenas alguns dos resultados da pesquisa e o restante pode ser solicitado por meio da solicitação apropriada. |
204 (No Content) |
A pesquisa foi concluída com sucesso, mas não retornou resultados. |
400 (Bad Request) |
Houve um problema com o pedido. Por exemplo, sintaxe de parâmetro de consulta inválida. O corpo da resposta contém detalhes da falha. |
401 (Unauthorized) |
O cliente não está autenticado. |
403 (Forbidden) |
O usuário não está autorizado. |
503 (Service Unavailable) |
O serviço está indisponível ou ocupado. Tente novamente depois. |
Outras notas
A API de consulta não retorna 413 (request entity too large)
. Se o limite de resposta da consulta solicitada estiver fora do intervalo aceitável, uma solicitação incorreta será retornada. Qualquer coisa solicitada dentro do intervalo aceitável é resolvida.
- Os resultados paginados são otimizados para retornar a instância mais recente correspondente primeiro, o que pode resultar em registros duplicados nas páginas subsequentes se os dados mais recentes correspondentes à consulta forem adicionados.
- A correspondência não diferencia maiúsculas de minúsculas e não diferencia acentos para tipos PN VR.
- A correspondência não diferencia maiúsculas de minúsculas e diferencia acentos para outros tipos de VR de cadeia de caracteres.
- Se houver um cenário em que o cancelamento de um Workitem e a consulta do mesmo Workitem ocorram ao mesmo tempo, a consulta provavelmente excluirá o Workitem que está sendo atualizado e o código de resposta será
206 (Partial Content)
.
Observação
DICOM® é a marca registrada da National Electrical Manufacturers Association para suas publicações de padrões relacionados às comunicações digitais de informações médicas.