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 DICOMweb Standard. O suporte inclui:

Além disso, as seguintes APIs não padrão são suportadas:

O serviço usa o controle de versão da API REST. A versão da API REST deve ser explicitamente especificada como parte da URL base, como no exemplo a seguir:

https://<service_url>/v<version>/studies

Esta versão da declaração de conformidade corresponde à v1 versão das APIs REST.

Para obter mais 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 de arquivo de 128 bytes e substitui seu conteúdo por caracteres nulos. Esse comportamento garante que nenhum arquivo passado pelo serviço é vulnerável à vulnerabilidade de preâmbulo mal-intencionado. No entanto, essa higienização do 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 Excluir 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 de solicitação.

Método Caminho Descrição
POST .. /Estudos Armazenar instâncias.
POSTAR .. /estudos/{estudo} Armazenar instâncias para um estudo específico.
PUT .. /Estudos Instâncias Upsert.
PUT .. /estudos/{estudo} Instâncias de upsert para um estudo específico.

O parâmetro study corresponde ao atributo DICOM StudyInstanceUID. Se especificado, qualquer instância que não pertença ao estudo fornecido será rejeitada com um código de 43265 aviso.

O(s) seguinte Accept (s) cabeçalho(s) para a resposta são suportados:

  • application/dicom+json

O(s) seguinte Content-Type (s) cabeçalho(s) são(ão) suportado(s):

  • multipart/related; type="application/dicom"
  • application/dicom

Observação

O servidor não coagirá ou substituirá atributos que entrem em conflito com 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 LOVR tipo.

Cada arquivo armazenado deve ter uma combinação exclusiva de StudyInstanceUID, SeriesInstanceUIDe SopInstanceUID. O código 45070 de aviso será retornado se um arquivo com os mesmos identificadores já existir.

Somente sintaxes de transferência com representações de valor explícitas são aceitas.

Armazenar códigos de status de resposta

Código Descrição
200 (OK) Todas as instâncias do 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 estava 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 é autenticado.
403 (Forbidden) O usuário não está autorizado.
406 (Not Acceptable) O cabeçalho especificado Accept não é suportado.
409 (Conflict) Nenhuma das instâncias na solicitação de transação de armazenamento foi armazenada.
415 (Unsupported Media Type) O fornecido Content-Type não é suportado.
503 (Service Unavailable) O serviço está indisponível ou ocupado. Tente novamente depois.

Armazenar carga útil de resposta

A carga útil de resposta preenche um conjunto de dados DICOM com os seguintes elementos:

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 é armazenada com êxito.
(0008, 1198) FailedSOPSequence A sequência de instâncias que não foi armazenada ao armazenar.
(0008, 1199) ReferencedSOPSequence A sequência de instâncias armazenadas.

Cada conjunto de FailedSOPSequence dados no 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 motivo pelo qual essa instância falhou ao armazenar.
(0074, 1048) FailedAttributesSequence A sequência disso inclui o motivo de ErrorComment cada atributo com falha.

Cada conjunto de ReferencedSOPSequence dados no 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"]
      }
    }]
  }
}

Armazenar códigos de motivo de falha

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 correspondia à especificada StudyInstanceUID na solicitação de armazenamento.
45070 Uma instância DICOM com o mesmo StudyInstanceUID, SeriesInstanceUIDe 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 criação falhou e o processo de limpeza não foi concluído. Exclua a instância primeiro 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. O Studies Store Transaction (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.

Armazenar códigos de erro

Código Descrição
100 Os atributos de instância fornecidos não atendiam aos critérios de validação.

Recuperar (WADO-RS)

Esta 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 de uma série.
GET .. /studies/{study}/series/{series}/instances/{instance} Recupera uma única instância.
GET .. /studies/{study}/series/{series}/instances/{instance}/metadata Recupera os metadados de uma única instância.
GET .. /studies/{study}/series/{series}/instances/{instance}/renderizado Recupera uma instância renderizada em um formato de imagem
GET .. /studies/{study}/series/{series}/instances/{instance}/frames/{frames} 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 .. /studies/{study}/series/{series}/instances/{instance}/frames/{frame}/renderizado Recupera um único quadro renderizado em um formato de imagem.

Recuperar instâncias dentro de estudo ou série

O(s) seguinte Accept (s) cabeçalho(s) é suportado(s) para recuperar instâncias dentro de um estudo ou de 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 mediaType padrão para application/dicom)

Recuperar uma instância

O(s) seguinte Accept (s) cabeçalho(s) 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 mediaType padrão para application/dicom)

Recuperar quadros

Os seguintes Accept cabeçalhos 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 mediaType padrão para 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 pode falhar:

  • 1.2.840.10008.1.2 (Pequeno Endian implícito)
  • 1.2.840.10008.1.2.1 (Pequeno Endian Explícito)
  • 1.2.840.10008.1.2.2 (VR Explícito Big Endian)
  • 1.2.840.10008.1.2.4.50 (Processo de linha de base JPEG 1)
  • 1.2.840.10008.1.2.4.57 (JPEG sem perdas)
  • 1.2.840.10008.1.2.4.70 (JPEG Lossless Selection Value 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 sem suporte 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 seguintes representações de valor:

Nome do VR Descrição
OB Outro byte
OD Outro Duplo
OF Outros Flutuadores
OL Outros longos
OV Outros 64-Bit Muito Longo
OW Outras palavras
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. Esse ETag pode ser armazenado em cache e adicionado 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: HTTP 304 (Not Modified) a resposta é enviada sem corpo de resposta.
  • Dados alterados desde a última solicitação: HTTP 200 (OK) a resposta é enviada com ETag atualizado. Os dados necessários também são retornados como parte do corpo.

Recuperar imagem renderizada (por exemplo, ou quadro)

O(s) seguinte Accept (s) cabeçalho(s) é suportado(s) 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, somente o primeiro quadro será renderizado como uma imagem por padrão.

Ao especificar um quadro específico a ser retornado, a indexação de quadros começa em 1.

O quality parâmetro query também é suportado. Um valor inteiro entre 1 e 100 inclusive (1 sendo pior qualidade e 100 sendo melhor qualidade) pode ser passado como o valor para o 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 assumirá como 100padrão .

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 acima Recuperar validação de cache de metadados (para estudo, série ou instância).
400 (Bad Request) O pedido estava mal formatado. Por exemplo, o identificador de instância de estudo fornecido não está em conformidade com o formato UID esperado ou a codificação de sintaxe de transferência solicitada não é suportada.
401 (Unauthorized) O cliente não é 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 solicitação renderizada, a instância não continha dados de pixel.
406 (Not Acceptable) O cabeçalho especificado Accept não é suportado 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.

Pesquisar (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 por Estudos
GET .. /Estudos?... Pesquisar estudos
Procurar por Série
GET .. /série?... Pesquisar séries
GET .. /estudos/{estudo}/série?... Busca de séries em um estudo
Pesquisar instâncias
GET .. /Instâncias?... Pesquisar instâncias
GET .. /estudos/{estudo}/instâncias?... Pesquisar instâncias em um estudo
GET .. /estudos/{estudo}/série/{série}/instâncias?... Pesquisar instâncias em uma série

O(s) seguinte Accept (s) cabeçalho(s) são suportados para pesquisa:

  • application/dicom+json

Parâmetros de pesquisa suportados

Há suporte para os seguintes parâmetros para cada consulta:

Chave Valor(es) de Suporte Contagem permitida Descrição
{attributeID}= {value} 0...N Procure 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 for fornecido, consulte Search Response para obter mais informações sobre quais atributos são retornados para cada tipo de consulta.
Se for fornecida uma mistura de {attributeID} e all fornecida, o servidor usará como padrão 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. Padrão para 100.
offset= {value} 0..1 Ignorar {value} resultados.
Se um deslocamento for fornecido maior que o número de resultados da consulta de pesquisa, uma resposta 204 (sem conteúdo) 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 de 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 combina.

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 Casos 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. Isso é mapeado para attributeID >= {value1} AND attributeID <= {value2}. Se {value1} não for especificado, todas as ocorrências de datas/horas anteriores e incluídas {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}
Jogo Fuzzy PatientName, ReferringPhysicianName Corresponde a qualquer componente do nome que começa 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 no PS3.18 6.7.1.1.1. As seguintes codificações para uma tag são suportadas:

Valor Exemplo
{group}{element} 0020000D
{dicomKeyword} StudyInstanceUID

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 seguintes atributos 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

Marcas 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. Junto com os atributos padrão, esta é a lista completa de atributos com suporte em cada nível de recurso.

Tags de estudo extra

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 da 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 correspondem na URL do recurso.
  • IncludeField atributos suportados nesse nível de recurso.
  • Se o recurso de destino for All Series, os Study atributos de nível também serão retornados.
  • Se o recurso de destino for All Instances, os Study atributos e Series level também serão retornados.
  • Se o recurso de destino for Study's Instances, os Series atributos de nível também serão retornados.
  • NumberOfStudyRelatedInstances O atributo agregado é suportado no Study nível includeField.
  • NumberOfSeriesRelatedInstances O atributo agregado é suportado no Series nível includeField.

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 êxito, mas não retornou nenhum resultado.
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 é 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 consultas usando o TimezoneOffsetFromUTC (00080201) .
  • A API de consulta não retorna 413 (request entity too large). Se o limite de resposta de consulta solicitado 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 diferentes. Neste caso, o mais recente vence e você pode pesquisar apenas sobre os dados mais recentes.
  • Os resultados paginados são otimizados para retornar a instância mais recente correspondente primeiro, isso pode resultar em registros duplicados nas páginas subsequentes se os dados mais recentes correspondentes à consulta forem adicionados.
  • A correspondência diferencia maiúsculas de minúsculas e diferencia acentos para tipos PN VR.
  • A correspondência diferencia maiúsculas de minúsculas e diferencia acentos para outros tipos de VR de cadeia de caracteres.
  • Somente o primeiro valor é indexado de um único elemento de dados de valor que incorretamente tem vários valores.

Excluir

Esta transação não faz parte do padrão oficial DICOMwe. Ele usa o método DELETE para remover representações de Studies, Series e Instances do armazenamento.

Método Caminho Descrição
DELETE .. /estudos/{estudo} Exclua todas as instâncias de um estudo específico.
DELETE .. /estudos/{estudo}/série/{série} Exclua todas as instâncias de uma série específica dentro de um estudo.
DELETE .. /studies/{study}/series/{series}/instances/{instance} Exclua uma instância específica dentro de uma série.

Os parâmetros study, seriese instance correspondem aos atributos StudyInstanceUIDDICOM , SeriesInstanceUIDe SopInstanceUID respectivamente.

Não há restrições sobre o conteúdo do cabeçalho, Content-Type cabeçalho ou corpo da Accept solicitação.

Observação

Após uma transação Excluir, 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) O pedido estava mal formatado.
401 (Unauthorized) O cliente não é 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 dentro da série.
503 (Service Unavailable) O serviço está indisponível ou ocupado. Tente novamente depois.

Excluir carga útil 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 UPS (Etapa de Procedimento Unificado).

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{? AfetadoSOPInstanceUID} 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}/subscribers/{AETitle} Abrir canal de assinatura

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 Crie um item de trabalho.
POSTAR .. /itens de trabalho? {item de trabalho} Cria um Workitem com o UID especificado.

Se não for especificado no URI, o conjunto de dados de carga útil deverá conter o item de trabalho no SOPInstanceUID atributo.

Os Accept cabeçalhos e Content-Type são necessários na solicitação e ambos 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 necessários para estar presentes, necessários para não estar presentes, necessários para estar vazios ou necessários para não estar 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 do SOP deve estar presente no conjunto de dados se não estiver 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 item de trabalho de destino foi criado com êxito.
400 (Bad Request) Houve um problema com o pedido. Por exemplo, a carga útil da solicitação não atendeu aos requisitos.
401 (Unauthorized) O cliente não é autenticado.
403 (Forbidden) O usuário não está autorizado.
409 (Conflict) O item de trabalho já existe.
415 (Unsupported Media Type) O fornecido Content-Type não é suportado.
503 (Service Unavailable) O serviço está indisponível ou ocupado. Tente novamente depois.

Criar carga útil de resposta

Uma resposta bem-sucedida não tem carga útil. Os Location cabeçalhos e Content-Location resposta contêm uma referência de URI para o Workitem criado.

Uma carga de resposta de falha contém uma mensagem descrevendo a falha.

Solicitar cancelamento

Essa transação permite que o usuário solicite o cancelamento de um Workitem que não seja de sua propriedade.

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 de evento que permitem que solicitações de cancelamento e outros eventos sejam encaminhados, esse serviço DICOM não implementa essas classes e, portanto, solicitações de cancelamento em itens de trabalho que estão IN PROGRESS com falha de retorno. Um item de trabalho 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 item de trabalho agendado

O Content-Type cabeçalho é obrigató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 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 é 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) O fornecido Content-Type não é suportado.

Solicitar carga útil de resposta de cancelamento

Uma resposta de êxito não tem carga útil e uma carga de resposta de 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

Esta 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 deverá ser retornado em um Tipo de Mídia Aceitável. O Workitem retornado não deve conter o atributo UID de 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/{item de trabalho} Solicitação para recuperar um item de trabalho

O Accept cabeçalho é obrigatório e deve ter o valor application/dicom+json.

Recuperar códigos de status de resposta do Workitem

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 é 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 útil de resposta do item de trabalho

  • Uma resposta bem-sucedida tem uma carga útil de peça única contendo o item de trabalho solicitado no Tipo de mídia selecionado.
  • O Workitem retornado não deve conter o atributo Transaction UID (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 item de trabalho já estiver nos COMPLETED estados ou CANCELED , a resposta será 400 (Bad Request).

Método Caminho Descrição
POST .. /workitems/{item de trabalho}? {transaction-uid} Atualizar transação de item de trabalho

O Content-Type cabeçalho é obrigatório e deve ter o valor application/dicom+json.

A carga de solicitação contém um conjunto de dados com as alterações a serem aplicadas ao item de trabalho 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.

Há muitos requisitos relacionados aos atributos de dados DICOM no contexto de uma transação específica. Os atributos podem ser necessários para estar presentes, necessários para não estar presentes, necessários para estar vazios ou necessários para não estar 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 do Workitem

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 é 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) O fornecido Content-Type não é suportado.

Atualizar carga útil de resposta de transação do item de trabalho

O servidor de origem deve suportar campos de cabeçalho, conforme exigido na Tabela 11.6.3-2.

Uma resposta bem-sucedida não deve ter carga útil ou uma carga útil que contenha um documento de relatório de situação.

Uma carga de resposta de falha pode conter um Relatório de Status descrevendo quaisquer falhas, avisos ou outras informações úteis.

Alterar o estado do item de trabalho

Essa transação é usada para alterar o estado de um Workitem. Corresponde à operação UPS DIMSE N-ACTION "Change UPS State". As alterações de estado são usadas para reivindicar a propriedade, concluir ou cancelar um item de trabalho.

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 deverá ser retornado em um Tipo de Mídia Aceitável. O Workitem retornado não deve conter o atributo Transaction UID (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 é obrigatório e deve ter o valor application/dicom+json.

A carga útil do pedido deve conter os Elementos de Dados de Estado da UPS de Alteração. Esses elementos de dados são:

  • UID da transação (0008, 1195). A carga útil da solicitação deve incluir um UID de transação. O agente do usuário cria o UID de 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 de 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. São eles: IN PROGRESS, , COMPLETEDou CANCELED.

Alterar códigos de status de resposta do 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 dado o 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 é 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 a carga útil de resposta do 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 deve ter carga útil.
  • Uma carga de resposta de falha 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 .. /itens de trabalho? Pesquisar itens de trabalho

O(s) seguinte Accept (s) cabeçalho(s) são suportados para pesquisa:

  • application/dicom+json

Parâmetros de pesquisa suportados

Há suporte para os seguintes parâmetros para cada consulta:

Chave Valor(es) de Suporte Contagem permitida Descrição
{attributeID}= {value} 0...N Procure 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 Search Response 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 padrão do servidor usará 'todos'.
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. Padrão para 100.
offset= {value} 0...1 Ignorar resultados {value}. Se um deslocamento for fornecido maior do que o número de resultados da consulta de pesquisa, uma 204 (no content) resposta será retornada.
fuzzymatching= true | false 0...1 Se a correspondência difusa verdadeira for aplicada a quaisquer atributos com a Representação de Valor (VR) do Nome da Pessoa (PN). Ele faz uma correspondência de palavra de prefixo de qualquer parte do nome dentro desses atributos. Por exemplo, se PatientName é John^Doe, então joh, , do, Doejo doe John Doe todos correspondem. ohn No entanto não combina.
Atributos pesquisáveis

Apoiamos a pesquisa nestes atributos:

Palavra-chave de atributo
PatientName
PatientID
ReferencedRequestSequence.AccessionNumber
ReferencedRequestSequence.RequestedProcedureID
ScheduledProcedureStepStartDateTime
ScheduledStationNameCodeSequence.CodeValue
ScheduledStationClassCodeSequence.CodeValue
ScheduledStationGeographicLocationCodeSequence.CodeValue
ProcedureStepState
StudyInstanceUID
Correspondência de pesquisa

Suportamos estes tipos de correspondência:

Tipo de pesquisa Atributo suportado Exemplo
Consulta de intervalo Scheduled​Procedure​Step​Start​Date​Time {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 incluídas {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}
Jogo Fuzzy PatientName Corresponde a qualquer componente do nome que começa com o valor.

Observação

Embora não ofereçamos suporte à correspondência de sequência completa, oferecemos suporte à correspondência exata nos atributos listados contidos em uma sequência.

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 no PS3.18 6.7.1.1.1. As seguintes codificações para uma tag 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 da pesquisa

A resposta é uma matriz de conjuntos de 0...N dados DICOM com os seguintes atributos retornados:

  • Todos os atributos na tabela do DICOM PowerShell 3.4 CC.2.5-3 com um tipo de chave de retorno de 1 ou 2
  • Todos os atributos na tabela CC.2.5-3 do DICOM PowerShell 3.4 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 do 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 todo o recurso correspondente.
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 êxito, mas não retornou nenhum resultado.
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 é 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 413 (request entity too large). Se o limite de resposta de consulta solicitado 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 em páginas subsequentes se dados mais recentes correspondentes à consulta forem adicionados.
  • A correspondência não diferencia maiúsculas de minúsculas e 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 aconteçam 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.