Compartir vía


Instrucción de conformidad de DICOM v1

Nota:

La versión 2 de la API es la versión más reciente de la API y debe usarse en lugar de la versión 1. Consulte la instrucción de conformidad de DICOM v2 para obtener más información.

El servidor de imágenes médicas para DICOM® admite un subconjunto del estándar DICOMweb. La compatibilidad incluye:

Además, se admiten las siguientes API no estándar:

El servicio usa el control de versiones de la API REST. La versión de la API REST debe especificarse explícitamente como parte de la dirección URL base, como en el ejemplo siguiente:

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

Esta versión de la instrucción de conformidad corresponde a la v1 versión de las API REST.

Para obtener más información sobre cómo especificar la versión al realizar solicitudes, consulte la documentación de control de versiones de API.

Puede encontrar solicitudes de ejemplo para transacciones admitidas en la colección Postman.

Saneamiento del preámbulo

El servicio omite el preámbulo del archivo de 128 bytes y reemplaza su contenido por caracteres NULL. Este comportamiento garantiza que ningún archivo pasado a través del servicio sea vulnerable a la vulnerabilidad de preámbulo malintencionada. Sin embargo, esta sanación de preámbulo también significa que los preámbulos usados para codificar contenido de formato dual, como TIFF, no se pueden usar con el servicio.

Servicio de estudios

El Servicio de estudios permite a los usuarios almacenar, recuperar y buscar estudios, series e instancias de DICOM. Se ha agregado la transacción Delete no estándar para habilitar un ciclo de vida completo de los recursos.

Almacenamiento (STOW-RS)

Esta transacción usa el método POST o PUT para almacenar representaciones de estudios, series e instancias contenidas en la carga de la solicitud.

Método Ruta de acceso Descripción
POST ../studies Almacena instancias.
PUBLICAR ../studies/{estudio} Almacena instancias para un estudio específico.
PUT ../studies Instancias de Upsert.
PUT ../studies/{estudio} Instancias de Upsert para un estudio específico.

El parámetro study corresponde al atributo StudyInstanceUID de DICOM. Si se especifica, cualquier instancia que no pertenezca al estudio proporcionado se rechaza con un 43265 código de advertencia.

Se admiten los encabezados Accept siguientes para la respuesta:

  • application/dicom+json

Se admiten los encabezados Content-Type siguientes:

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

Nota:

El servidor no coerce ni reemplazará los atributos que entran en conflicto con los datos existentes para las solicitudes POST. Todos los datos se almacenan según se proporciona. Para las solicitudes upsert (PUT), los datos existentes se reemplazan por los nuevos datos recibidos.

Almacenar los atributos necesarios

Es necesario que los elementos DICOM siguientes estén presentes en cada archivo DICOM que se intente almacenar:

  • StudyInstanceUID
  • SeriesInstanceUID
  • SOPInstanceUID
  • SOPClassUID
  • PatientID

Nota:

Todos los UID deben tener entre 1 y 64 caracteres, y solo deben contener caracteres alfa numéricos o los siguientes caracteres especiales: ., -. PatientID se valida en función de su LO VR tipo.

Cada archivo almacenado debe tener una combinación única de StudyInstanceUID, SeriesInstanceUIDy SopInstanceUID. El código 45070 de advertencia se devuelve si ya existe un archivo con los mismos identificadores.

Solo se aceptan sintaxis de transferencia con representaciones de valor explícitas.

Códigos de estado de respuesta de almacenamiento

Código Descripción
200 (OK) Todas las instancias de SOP de la solicitud se almacenan.
202 (Accepted) Algunas instancias de la solicitud se almacenan, pero otras no.
204 (No Content) No se proporcionó contenido en la solicitud de transacción de almacenamiento.
400 (Bad Request) El formato de la solicitud no era correcto. Por ejemplo, el identificador de instancia de estudio proporcionado no se ajustaba al formato de UID esperado.
401 (Unauthorized) El cliente no está autenticado.
403 (Forbidden) El usuario no está autorizado.
406 (Not Acceptable) No se admite el encabezado especificado Accept .
409 (Conflict) Ninguna de las instancias de la solicitud de transacción del almacén se almacenó.
415 (Unsupported Media Type) No se admite el proporcionado Content-Type .
503 (Service Unavailable) El servicio no está disponible o está ocupado. Vuelva a intentarlo más tarde.

Carga de la respuesta de almacenamiento

La carga de respuesta rellena un conjunto de datos DICOM con los siguientes elementos:

Etiqueta Nombre Descripción
(0008, 1190) RetrieveURL La dirección URL de recuperación del estudio si se proporcionó StudyInstanceUID en la solicitud de almacenamiento y, al menos, una instancia se almacenó correctamente.
(0008, 1198) FailedSOPSequence Secuencia de las instancias que no se pudieron almacenar.
(0008, 1199) ReferencedSOPSequence Secuencia de las instancias almacenadas.

Cada conjunto de datos de FailedSOPSequence tiene los siguientes elementos (si se puede leer el archivo DICOM que intenta almacenarse):

Etiqueta Nombre Descripción
(0008, 1150) ReferencedSOPClassUID Identificador único de la clase de SOP de la instancia que no se pudo almacenar.
(0008, 1155) ReferencedSOPInstanceUID Identificador único de la instancia de SOP de la instancia que no se pudo almacenar.
(0008, 1197) FailureReason Código del motivo por el cual no se pudo almacenar esta instancia.
(0074, 1048) FailedAttributesSequence Secuencia de ErrorComment que incluye el motivo de cada atributo con error.

Cada conjunto de datos de ReferencedSOPSequence tiene los siguientes elementos:

Etiqueta Nombre Descripción
(0008, 1150) ReferencedSOPClassUID Identificador único de la clase de SOP de la instancia que no se pudo almacenar.
(0008, 1155) ReferencedSOPInstanceUID Identificador único de la instancia de SOP de la instancia que no se pudo almacenar.
(0008, 1190) RetrieveURL Dirección URL de recuperación de esta instancia en el servidor DICOM.

Una respuesta de ejemplo con Accept el encabezado 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 error de almacenamiento

Código Descripción
272 La transacción de almacén no almacenaba la instancia debido a un error general en el procesamiento de la operación.
43264 No se pudo validar la instancia de DICOM.
43265 La instancia StudyInstanceUID proporcionada no coincide con la especificada StudyInstanceUID en la solicitud de almacén.
45070 Ya se almacena una instancia de DICOM con el mismo StudyInstanceUID, SeriesInstanceUIDy SopInstanceUID . Si desea actualizar el contenido, elimine primero esta instancia.
45071 Otro proceso crea una instancia de DICOM o el intento anterior de crear un error y el proceso de limpieza no se ha completado. Primero elimine esta instancia antes de volver a intentar la creación.

Almacenar códigos de motivo de advertencia

Código Descripción
45063 Un conjunto de datos de instancia de DICOM no coincide con la clase SOP. La transacción del almacén de estudios (sección 10.5) observó que el conjunto de datos no coincidía con las restricciones de la clase SOP durante el almacenamiento de la instancia.

Almacenar códigos de error

Código Descripción
100 Los atributos de instancia proporcionados no cumplen los criterios de validación.

Recuperación (WADO-RS)

Esta transacción de recuperación ofrece compatibilidad para recuperar estudios, series, instancias y fotogramas almacenados por referencia.

Método Ruta de acceso Descripción
GET ../studies/{estudio} Recupera todas las instancias de un estudio.
GET ../studies/{estudio}/metadata Recupera los metadatos de todas las instancias de un estudio.
GET ../studies/{estudio}/series/{serie} Recupera todas las instancias de una serie.
GET ../studies/{estudio}/series/{serie}/metadata Recupera los metadatos de todas las instancias de una serie.
GET ../studies/{estudio}/series/{serie}/instances/{instancia} Recupera una instancia única.
GET ../studies/{estudio}/series/{serie}/instances/{instancia}/metadata Recupera los metadatos de una sola instancia.
GET .. /studies/{study}/series/{series}/instances/{instance}/rendered Recupera una instancia representada en un formato de imagen.
GET ../studies/{estudio}/series/{serie}/instances/{instancia}/frames/{fotogramas} Recupera uno o varios fotogramas de una sola instancia. Si desea especificar más de un fotograma, use una coma para separada cada fotograma que se va a devolver. Por ejemplo, /studies/1/series/2/instance/3/frames/4,5,6.
GET .. /studies/{study}/series/{series}/instances/{instance}/frames/{frame}/rendered Recupera un solo fotograma representado en un formato de imagen.

Recuperación de instancias de un estudio o una serie

Se admiten los encabezados Accept siguientes para recuperar instancias de un estudio o una serie:

  • multipart/related; type="application/dicom"; transfer-syntax=*
  • multipart/related; type="application/dicom"; (cuando no se especifica transfer-syntax, se usa 1.2.840.10008.1.2.1 como valor predeterminado).
  • 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
  • */* (cuando no se especifica la sintaxis de transferencia, * se usa como valor predeterminado y mediaType tiene application/dicomcomo valor predeterminado ).

Recuperación de una instancia

Se admiten los encabezados Accept siguientes para recuperar una instancia específica:

  • application/dicom; transfer-syntax=*
  • multipart/related; type="application/dicom"; transfer-syntax=*
  • application/dicom; (cuando no se especifica la sintaxis de transferencia, 1.2.840.10008.1.2.1 se usa como valor predeterminado)
  • multipart/related; type="application/dicom" (cuando no se especifica la sintaxis de transferencia, 1.2.840.10008.1.2.1 se usa como valor predeterminado)
  • 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
  • */* (cuando no se especifica la sintaxis de transferencia, * se usa como valor predeterminado y mediaType tiene application/dicomcomo valor predeterminado ).

Recuperar fotogramas

Se admiten los encabezados Accept siguientes para recuperar fotogramas:

  • multipart/related; type="application/octet-stream"; transfer-syntax=*
  • multipart/related; type="application/octet-stream"; (cuando no se especifica la sintaxis de transferencia, 1.2.840.10008.1.2.1 se usa como valor predeterminado)
  • multipart/related; type="application/octet-stream"; transfer-syntax=1.2.840.10008.1.2.1
  • multipart/related; type="image/jp2"; (cuando no se especifica la sintaxis de transferencia, 1.2.840.10008.1.2.4.90 se usa como valor predeterminado)
  • multipart/related; type="image/jp2";transfer-syntax=1.2.840.10008.1.2.4.90
  • */* (cuando no se especifica la sintaxis de transferencia, * se usa como valor predeterminado y mediaType tiene application/octet-streamcomo valor predeterminado ).

Recuperación de la sintaxis de transferencia

Cuando la sintaxis de transferencia solicitada es diferente del archivo original, el archivo original se transcodifica a la sintaxis de transferencia solicitada. El archivo original debe ser uno de los siguientes formatos para que la transcodificación se realice correctamente; de lo contrario, es posible que se produzca un error en la transcodificación:

  • 1.2.840.10008.1.2 (Little Endian Implicit)
  • 1.2.840.10008.1.2.1 (Little Endian Explicit)
  • 1.2.840.10008.1.2.2 (Explicit VR Big Endian)
  • 1.2.840.10008.1.2.4.50 (JPEG Baseline Process 1)
  • 1.2.840.10008.1.2.4.57 (JPEG Lossless)
  • 1.2.840.10008.1.2.4.70 (JPEG Lossless Selection Value 1)
  • 1.2.840.10008.1.2.4.90 (JPEG 2000 Lossless Only)
  • 1.2.840.10008.1.2.4.91 (JPEG 2000)
  • 1.2.840.10008.1.2.5 (RLE Lossless)

Un resultado no admitido transfer-syntax es 406 Not Acceptable.

Recuperación de metadatos (para estudio, serie o instancia)

El siguiente Accept encabezado es compatible con la recuperación de metadatos para un estudio, una serie o una instancia de :

  • application/dicom+json

La recuperación de metadatos no devuelve atributos con las siguientes representaciones de valor:

Nombre de VR Descripción
OB Other Byte
OD Other Double
OF Other Float
OL Other Long
OV Other 64-Bit Very Long
OW Other Word
UN Unknown

Recuperación de la validación de caché de metadatos (para estudio, serie o instancia)

La validación de caché se admite mediante el mecanismo ETag. En la respuesta a una solicitud de metadatos, se devuelve ETag como uno de los encabezados. Esta ETag se puede almacenar en caché y agregar como encabezado If-None-Match en las solicitudes posteriores para los mismos metadatos. Si los datos existen, hay dos tipos de respuestas posibles:

  • Los datos no se modifican desde la última solicitud: HTTP 304 (Not Modified) la respuesta se envía sin cuerpo de respuesta.
  • Datos modificados desde la última solicitud: HTTP 200 (OK) la respuesta se envía con ETag actualizado. Los datos necesarios también se devuelven como parte del cuerpo.

Recuperar imagen representada (por ejemplo o marco)

Se admiten los siguientes Accept encabezados para recuperar una imagen representada, una instancia o un marco:

  • image/jpeg
  • image/png

En caso de que no se especifique ningún Accept encabezado, el servicio representa un image/jpeg valor de forma predeterminada.

El servicio solo admite la representación de un solo fotograma. Si se solicita representación para una instancia con varios fotogramas, solo se representa el primer fotograma como una imagen de forma predeterminada.

Al especificar un marco determinado que se va a devolver, la indexación de fotogramas comienza en 1.

También se admite el quality parámetro de consulta. Un valor entero entre 1 e 100 inclusivo (1 siendo la peor calidad y 100 como mejor calidad) puede pasarse como valor para el parámetro de consulta. Este parámetro se usa para las imágenes representadas como jpegy se omite para png las solicitudes de representación. Si no se especifica el parámetro, el valor predeterminado es 100.

Códigos de estado de respuesta de recuperación

Código Descripción
200 (OK) Se recuperaron todos los datos solicitados.
304 (Not Modified) Los datos solicitados no se han modificado desde la última solicitud. El contenido no se agrega al cuerpo de la respuesta en ese caso. Para más información, consulte la sección anterior Recuperación de validación de caché de metadatos para (estudio, serie o instancia).
400 (Bad Request) El formato de la solicitud no era correcto. Por ejemplo, el identificador de instancia de estudio proporcionado no se ajustaba al formato UID esperado o no se admite la codificación de sintaxis de transferencia solicitada.
401 (Unauthorized) El cliente no está autenticado.
403 (Forbidden) El usuario no está autorizado.
404 (Not Found) No se encontró el recurso DICOM especificado o para la solicitud representada, la instancia no contenía datos de píxeles.
406 (Not Acceptable) No se admite el encabezado especificado Accept , ni para las solicitudes representadas y transcodificas que el archivo solicitado era demasiado grande.
503 (Service Unavailable) El servicio no está disponible o está ocupado. Vuelva a intentarlo más tarde.

Búsqueda (QIDO-RS)

La consulta basada en identificador para los objetos DICOM (QIDO) permite buscar estudios, series e instancias por atributos.

Método Ruta de acceso Descripción
Búsqueda de estudios
GET ../studies?... Búsqueda de estudios
Búsqueda de series
GET ../series?... Búsqueda de series
GET ../studies/{estudio}/series?... Búsqueda de series en un estudio
Búsqueda de instancias
GET ../instances?... Búsqueda de instancias
GET ../studies/{estudio}/instances?... Búsqueda de instancias en un estudio
GET ../studies/{estudio}/series/{serie}/instances?... Búsqueda de instancias en una serie

Se admiten los encabezados Accept siguientes para realizar la búsqueda:

  • application/dicom+json

Parámetros de búsqueda admitidos

Se admiten los parámetros siguientes para cada consulta:

Clave Valor de soporte Número permitido Descripción
{attributeID}= {value} 0…N Busque la coincidencia de atributo y valor en la consulta.
includefield= {attributeID}
all
0…N Los demás atributos que se van a devolver en la respuesta. Se admiten las etiquetas públicas y las privadas.
Cuando all se proporciona, consulte Respuesta de búsqueda para obtener más información sobre qué atributos se devuelven para cada tipo de consulta.
Si se proporciona una combinación de {attributeID} y all , el servidor usa de forma predeterminada all.
limit= {value} 0..1 Valor entero para limitar el número de valores que se devuelven en la respuesta.
El valor puede estar entre el intervalo 1 >= x <= 200. El valor predeterminado es 100.
offset= {value} 0..1 Omita {value} los resultados.
Si se proporciona un desplazamiento mayor que el número de resultados de la consulta de búsqueda, se devuelve una respuesta 204 (sin contenido).
fuzzymatching= true / false 0..1 Si el valor es "true", se aplica la coincidencia aproximada verdadera al atributo PatientName. Hace una coincidencia de palabra de prefijo de cualquier parte de nombre dentro del valor PatientName. Por ejemplo, si PatientName es "John^Doe", "joh", "do", "jo do", "Doe" y "John Doe" coinciden. Sin embargo, "ohn" no coincide.

Atributos que se pueden buscar

Es posible buscar los atributos y tipos de búsqueda siguientes.

Palabra clave de atributo Todos los estudios Todas las series Todas las instancias Serie de estudios Instancias del estudio Instancias de la serie de estudios
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

Coincidencias de búsqueda

Se admiten estos tipos de coincidencia.

Tipo de búsqueda Atributo admitido Ejemplo
Consulta por rango StudyDate/PatientBirthDate {attributeID}={value1}-{value2}. Para los valores de fecha y hora, se admite un intervalo inclusivo en la etiqueta . Se asigna a attributeID >= {value1} AND attributeID <= {value2}. Si {value1} no se especifica, todas las apariciones de fechas y horas anteriores a e incluidas {value2} coinciden. Del mismo modo, si {value2} no se especifica, se coinciden todas las apariciones de {value1} y las fechas y horas posteriores. Sin embargo, uno de estos valores debe estar presente. {attributeID}={value1}- y {attributeID}=-{value2} son válidos, sin embargo, {attributeID}=- no es válido.
Coincidencia exacta Todos los atributos admitidos {attributeID}={value1}
Coincidencia aproximada PatientName, ReferringPhysicianName Coincide con cualquier componente del nombre que comience por el valor .

Identificador de atributo

Las etiquetas se pueden codificar de varias maneras para el parámetro de consulta. Implementamos parcialmente el estándar tal como se define en PS3.18 6.7.1.1.1. Se admiten estas codificaciones para una etiqueta:

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

Consulta de ejemplo que busca instancias:

../instances?Modality=CT&00280011=512&includefield=00280010&limit=5&offset=0

Respuesta de la búsqueda

La respuesta es una matriz de conjuntos de datos DICOM. En función del recurso, los atributos siguientes se devuelven de manera predeterminada:

Etiquetas de estudio predeterminadas

Etiqueta Nombre del 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

Etiquetas de serie predeterminadas

Etiqueta Nombre del 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

Etiquetas de instancia predeterminadas

Etiqueta Nombre del 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

Si includefield=alles , se incluyen los atributos siguientes junto con los atributos predeterminados. Junto con los atributos predeterminados, esta es la lista completa de atributos admitidos en cada nivel de recurso.

Etiquetas de estudio adicionales

Etiqueta Nombre del 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

Otras etiquetas de serie

Etiqueta Nombre del atributo
(0020, 0011) SeriesNumber
(0020, 0060) Laterality
(0008, 0021) SeriesDate
(0008, 0031) SeriesTime

Se devuelven los atributos siguientes:

  • Todos los parámetros de consulta y las UID de la dirección URL del recurso coincidentes.
  • IncludeField atributos admitidos en ese nivel de recurso.
  • Si el recurso de destino es All Series, Study también se devuelven los atributos de nivel.
  • Si el recurso de destino es All Instances, Study también se devuelven los atributos de nivel y Series .
  • Si el recurso de destino es Study's Instances, Series también se devuelven los atributos de nivel.
  • NumberOfStudyRelatedInstances el atributo agregado se admite en Study el nivel includeField.
  • NumberOfSeriesRelatedInstances el atributo agregado se admite en Series el nivel includeField.

Códigos de respuesta de búsqueda

La API de consulta devuelve uno de los códigos de estado siguientes en la respuesta:

Código Descripción
200 (OK) La carga de respuesta contiene todos los recursos correspondientes.
204 (No Content) La búsqueda se completó correctamente, pero no devolvió ningún resultado.
400 (Bad Request) El servidor no pudo realizar la consulta porque el componente de la consulta no era válido. El cuerpo de la respuesta contiene detalles del error.
401 (Unauthorized) El cliente no está autenticado.
403 (Forbidden) El usuario no está autorizado.
503 (Service Unavailable) El servicio no está disponible o está ocupado. Vuelva a intentarlo más tarde.

Otras notas

  • No se admite la consulta mediante .TimezoneOffsetFromUTC (00080201)
  • La API de consulta no devuelve 413 (request entity too large). Si el límite de respuesta de consulta solicitado está fuera del intervalo aceptable, se devuelve una solicitud incorrecta. Todo lo solicitado dentro del intervalo aceptable se resuelve.
  • Cuando el recurso de destino es Study/Series, hay un potencial para metadatos de nivel de estudio o serie incoherentes en varias instancias. Por ejemplo, dos instancias podrían tener un valor patientName distinto. En este caso, la versión más reciente gana y solo puede buscar en los datos más recientes.
  • Los resultados paginados están optimizados para devolver primero la instancia más reciente coincidente, lo que podría dar lugar a registros duplicados en páginas posteriores si se han agregado datos más recientes que coincidan con la consulta.
  • La coincidencia distingue mayúsculas de minúsculas y acentos en los tipos de VR PN.
  • La coincidencia no distingue mayúsculas de minúsculas ni acentos en otros tipos de VR.
  • Solo el primer valor se indexa de un único elemento de datos con valores que tiene varios valores incorrectamente.

Eliminar

Esta transacción no forma parte del estándar oficial DICOMwe. Usa el método DELETE para quitar representaciones de Estudios, Series e Instancias del almacén.

Método Ruta de acceso Descripción
Delete ../studies/{estudio} Elimina todas las instancias de un estudio específico.
Delete ../studies/{estudio}/series/{serie} Elimina todas las instancias de una serie específica de un estudio.
Delete ../studies/{estudio}/series/{serie}/instances/{instancia} Elimine una instancia específica de una serie.

Los parámetros study, , y instance corresponden a los atributos StudyInstanceUIDDICOM , SeriesInstanceUIDy SopInstanceUID respectivamente. series

No hay restricciones en el encabezado Accept, el encabezado Content-Type ni el contenido del cuerpo de la solicitud.

Nota:

Después de una transacción Delete, las instancias eliminadas no se podrán recuperar.

Códigos de estado de respuesta

Código Descripción
204 (No Content) Cuando se eliminan todas las instancias de SOP.
400 (Bad Request) El formato de la solicitud no era correcto.
401 (Unauthorized) El cliente no está autenticado.
403 (Forbidden) El usuario no está autorizado.
404 (Not Found) Cuando no se encontró la serie especificada dentro de un estudio o la instancia especificada no se encontró dentro de la serie.
503 (Service Unavailable) El servicio no está disponible o está ocupado. Vuelva a intentarlo más tarde.

Carga de la respuesta de eliminación

El cuerpo de la respuesta está vacío. El código de estado es la única información útil que se devuelve.

Servicio worklist (UPS-RS)

El servicio DICOM admite los SOP de inserción y extracción del servicio Worklist (UPS-RS).. El servicio Worklist proporciona acceso a una lista de trabajo que contiene Workitems, cada una de las cuales representa un paso de procedimiento unificado (UPS).

A lo largo de todo, la variable {workitem} de una plantilla de URI representa un UID workitem.

Los puntos de conexión UPS-RS disponibles incluyen:

Verbo Ruta de acceso Descripción
POST {s}/workitems{? AffectedSOPInstanceUID} Crear un elemento de trabajo
PUBLICAR {s}/workitems/{instance}{?transaction} Actualizar un elemento de trabajo
GET {s}/workitems{?query*} Búsqueda de elementos de trabajo
GET {s}/workitems/{instance} Recuperar un elemento de trabajo
PUT {s}/workitems/{instance}/state Cambio del estado del elemento de trabajo
PUBLICAR {s}/workitems/{instance}/cancelrequest Cancelar elemento de trabajo
PUBLICAR {s}/workitems/{instance}/subscribers/{AETitle}{?deletionlock} Creación de una suscripción
PUBLICAR {s}/workitems/1.2.840.10008.5.1.4.34.5/ Suspender suscripción
Delete {s}/workitems/{instance}/subscribers/{AETitle} Eliminar suscripción
GET {s}/subscribers/{AETitle} Abrir canal de suscripción

Creación de workitem

Esta transacción usa el método POST para crear un nuevo workitem.

Método Ruta de acceso Descripción
POST .. /workitems Cree un objeto Workitem.
PUBLICAR .. /workitems? {workitem} Crea un objeto Workitem con el UID especificado.

Si no se especifica en el URI, el conjunto de datos de carga debe contener el objeto Workitem en el SOPInstanceUID atributo .

Los Accept encabezados y Content-Type son necesarios en la solicitud y deben tener el valor application/dicom+json.

Hay varios requisitos relacionados con los atributos de datos DICOM en el contexto de una transacción específica. Es posible que sea necesario que los atributos estén presentes, que no estén presentes, que estén vacíos o que no estén vacíos. Estos requisitos se pueden encontrar en esta tabla.

Nota:

Aunque la tabla de referencia indica que UID de instancia de SOP no debe estar presente, esta guía es específica del protocolo DIMSE y se controla de forma diferente en DICOMWeb. El UID de instancia de SOP debe estar presente en el conjunto de datos si no está en el URI.

Nota:

Todos los códigos de requisitos condicionales, incluidos 1C y 2C, se tratan como opcionales.

Creación de códigos de estado de respuesta

Código Descripción
201 (Created) Workitem de destino se creó correctamente.
400 (Bad Request) Hubo un problema con la solicitud. Por ejemplo, la carga de la solicitud no cumplió los requisitos.
401 (Unauthorized) El cliente no está autenticado.
403 (Forbidden) El usuario no está autorizado.
409 (Conflict) El objeto Workitem ya existe.
415 (Unsupported Media Type) No se admite el proporcionado Content-Type .
503 (Service Unavailable) El servicio no está disponible o está ocupado. Vuelva a intentarlo más tarde.

Creación de una carga de respuesta

Una respuesta correcta no tiene carga. Los Location encabezados de respuesta y Content-Location contienen una referencia de URI al workitem creado.

Una carga de respuesta de error contiene un mensaje que describe el error.

Cancelación de solicitudes

Esta transacción permite al usuario solicitar la cancelación de un workitem nonowned.

Hay cuatro estados workitem válidos:

  • SCHEDULED
  • IN PROGRESS
  • CANCELED
  • COMPLETED

Esta transacción solo se realiza correctamente en Workitems en el SCHEDULED estado . Cualquier usuario puede reclamar la propiedad de un objeto Workitem estableciendo su UID de transacción y cambiando su estado a IN PROGRESS. A partir de entonces, un usuario solo puede modificar el objeto Workitem proporcionando el UID de transacción correcto. Aunque UPS define las clases Watch y Event SOP que permiten reenviar solicitudes de cancelación y otros eventos, este servicio DICOM no implementa estas clases y, por tanto, las solicitudes de cancelación en los elementos de trabajo que devuelven IN PROGRESS errores. Un workitem propiedad se puede cancelar a través de la transacción Change Workitem State .

Método Ruta de acceso Descripción
POST .. /workitems/{workitem}/cancelrequest Solicitar la cancelación de un workitem programado

El Content-Type encabezado es obligatorio y debe tener el valor application/dicom+json.

La carga de la solicitud puede incluir información de acción tal como se define en el estándar DICOM.

Códigos de estado de respuesta de cancelación de solicitud

Código Descripción
202 (Accepted) El servidor aceptó la solicitud, pero el estado workitem de destino no ha cambiado.
400 (Bad Request) Hubo un problema con la sintaxis de la solicitud.
401 (Unauthorized) El cliente no está autenticado.
403 (Forbidden) El usuario no está autorizado.
404 (Not Found) No se encontró el objeto Workitem de destino.
409 (Conflict) La solicitud es incoherente con el estado actual del objeto Workitem de destino. Por ejemplo, el objeto Workitem de destino está en el SCHEDULED estado o COMPLETED .
415 (Unsupported Media Type) No se admite el proporcionado Content-Type .

Carga de respuesta de cancelación de solicitudes

Una respuesta correcta no tiene carga y una carga de respuesta de error contiene un mensaje que describe el error. Si la instancia de Workitem ya está en estado cancelado, la respuesta incluye el siguiente encabezado de advertencia HTTP: 299: The UPS is already in the requested state of CANCELED.

Recuperar workitem

Esta transacción recupera un objeto Workitem. Corresponde a la operación UPS DIMSE N-GET.

Consulte: https://dicom.nema.org/medical/dicom/current/output/html/part18.html#sect_11.5

Si el objeto Workitem existe en el servidor de origen, el objeto Workitem se devolverá en un tipo de medio aceptable. El workitem devuelto no contendrá el atributo Transaction UID (0008,1195). Esto es necesario para conservar el rol del atributo como bloqueo de acceso.

Método Ruta de acceso Descripción
GET .. /workitems/{workitem} Solicitud para recuperar un objeto Workitem

El Accept encabezado es obligatorio y debe tener el valor application/dicom+json.

Recuperar códigos de estado de respuesta de Workitem

Código Descripción
200(OK) La instancia de Workitem se recuperó correctamente.
400 (Solicitud incorrecta) Hubo un problema con la solicitud.
401 (No autorizado) El cliente no está autenticado.
403 (Prohibido) El usuario no está autorizado.
404 (No encontrado) No se encontró el objeto Workitem de destino.

Recuperación de la carga de respuesta de Workitem

  • Una respuesta correcta tiene una carga de una sola parte que contiene el objeto Workitem solicitado en el tipo de medio seleccionado.
  • El workitem devuelto no contendrá el atributo Transaction UID (0008, 1195) del workitem, ya que solo se debe conocer al propietario.

Actualizar workitem

Esta transacción modifica los atributos de un workitem existente. Corresponde a la operación N-SET de UPS DIMSE.

Consulte: https://dicom.nema.org/medical/dicom/current/output/html/part18.html#sect_11.6

Para actualizar un workitem actualmente en el SCHEDULED estado, el Transaction UID atributo no estará presente. Para un workitem en el IN PROGRESS estado , la solicitud debe incluir el UID de transacción actual como parámetro de consulta. Si workitem ya está en los COMPLETED estados o CANCELED , la respuesta es 400 (Bad Request).

Método Ruta de acceso Descripción
POST .. /workitems/{workitem}? {transaction-uid} Actualizar transacción workitem

El Content-Type encabezado es obligatorio y debe tener el valor application/dicom+json.

La carga de solicitud contiene un conjunto de datos con los cambios que se aplicarán al workitem de destino. Cuando se modifica una secuencia, la solicitud debe incluir todos los elementos de la secuencia, no solo los elementos que se van a modificar. Cuando es necesario actualizar varios atributos como un grupo, realice la actualización como varios atributos en una sola solicitud, no como varias solicitudes.

Hay muchos requisitos relacionados con los atributos de datos DICOM en el contexto de una transacción específica. Es posible que sea necesario que los atributos estén presentes, que no estén presentes, que estén vacíos o que no estén vacíos. Estos requisitos se pueden encontrar en esta tabla.

Nota:

Todos los códigos de requisitos condicionales, incluidos 1C y 2C, se tratan como opcionales.

Nota:

La solicitud no puede establecer el valor del atributo Estado del paso de procedimiento (0074 1000). El estado del paso de procedimiento se administra mediante la transacción Cambiar estado o la transacción De cancelación de solicitudes.

Actualizar códigos de estado de respuesta de transacción workitem

Código Descripción
200 (OK) Target Workitem se actualizó.
400 (Bad Request) Hubo un problema con la solicitud. Por ejemplo: (1) el objeto Workitem de destino estaba en el COMPLETED estado o CANCELED . (2) Falta el UID de transacción. (3) El UID de transacción es incorrecto. (4) El conjunto de datos no se ajustaba a los requisitos.
401 (Unauthorized) El cliente no está autenticado.
403 (Forbidden) El usuario no está autorizado.
404 (Not Found) No se encontró el objeto Workitem de destino.
409 (Conflict) La solicitud es incoherente con el estado actual del objeto Workitem de destino.
415 (Unsupported Media Type) No se admite el proporcionado Content-Type .

Actualización de la carga de respuesta de la transacción workitem

El servidor de origen admitirá los campos de encabezado según sea necesario en la tabla 11.6.3-2.

Una respuesta correcta no tendrá ninguna carga o una carga que contenga un documento de informe de estado.

Una carga de respuesta de error puede contener un informe de estado que describa los errores, advertencias u otra información útil.

Cambio del estado workitem

Esta transacción se usa para cambiar el estado de un objeto Workitem. Corresponde a la operación N-ACTION de UPS DIMSE "Cambiar el estado de UPS". Los cambios de estado se usan para reclamar la propiedad, completar o cancelar un workitem.

Consulte: https://dicom.nema.org/medical/dicom/current/output/html/part18.html#sect_11.7

Si el objeto Workitem existe en el servidor de origen, el objeto Workitem se devolverá en un tipo de medio aceptable. El workitem devuelto no contendrá el atributo Transaction UID (0008,1195). Esto es necesario para conservar el rol de este atributo como bloqueo de acceso, tal como se describe aquí.

Método Ruta de acceso Descripción
PUT .. /workitems/{workitem}/state Cambiar el estado del objeto Workitem

El Accept encabezado es obligatorio y debe tener el valor application/dicom+json.

La carga de solicitud contendrá los elementos de datos de estado de UPS modificados. Estos elementos de datos son:

  • UID de transacción (0008, 1195). La carga de solicitud incluirá un UID de transacción. El agente de usuario crea el UID de transacción al solicitar una transición al IN PROGRESS estado de un workitem determinado. El agente de usuario proporciona que transaction UID en transacciones posteriores con ese workitem.
  • Estado del paso de procedimiento (0074, 1000). Los valores legales corresponden a la transición de estado solicitada. Son: IN PROGRESS, COMPLETEDo CANCELED.

Cambiar códigos de estado de respuesta de workitem

Código Descripción
200 (OK) La instancia de Workitem se recuperó correctamente.
400 (Bad Request) La solicitud no se puede realizar por uno de los siguientes motivos: (1) la solicitud no es válida dado el estado actual del objeto Workitem de destino. (2) Falta el UID de transacción. (3) El UID de transacción es incorrecto
401 (Unauthorized) El cliente no está autenticado.
403 (Forbidden) El usuario no está autorizado.
404 (Not Found) No se encontró el objeto Workitem de destino.
409 (Conflict) La solicitud es incoherente con el estado actual del objeto Workitem de destino.

Cambio de la carga de respuesta de estado workitem

  • Las respuestas incluyen los campos de encabezado especificados en la sección 11.7.3.2.
  • Una respuesta correcta no tendrá carga útil.
  • Una carga de respuesta de error puede contener un informe de estado que describa los errores, advertencias u otra información útil.

Search Workitems

Esta transacción le permite buscar Workitems por atributos.

Método Ruta de acceso Descripción
GET .. /workitems? Buscar Workitems

Se admiten los encabezados Accept siguientes para realizar la búsqueda:

  • application/dicom+json

Parámetros de búsqueda admitidos

Se admiten los parámetros siguientes para cada consulta:

Clave Valor de soporte Número permitido Descripción
{attributeID}= {value} 0…N Busque la coincidencia de atributo y valor en la consulta.
includefield= {attributeID}
all
0…N Los demás atributos que se van a devolver en la respuesta. Solo se pueden incluir atributos de nivel superior, no atributos que forman parte de secuencias. Se admiten etiquetas públicas y privadas. Cuando all se proporciona, consulte Respuesta de búsqueda para obtener más información sobre qué atributos se devuelven para cada tipo de consulta. Si se proporciona una mezcla de {attributeID} y all , el servidor usa "all".
limit= {value} 0...1 Valor entero para limitar el número de valores que se devuelven en la respuesta. El valor puede estar entre el intervalo 1 >= x <= 200. El valor predeterminado es 100.
offset= {value} 0...1 Omita los resultados de {value}. Si se proporciona un desplazamiento mayor que el número de resultados de la consulta de búsqueda, se devuelve una 204 (no content) respuesta.
fuzzymatching= true | false 0...1 Si la coincidencia aproximada verdadera se aplica a cualquier atributo con la representación de valor de nombre de persona (PN) (VR). Hace una coincidencia de palabra de prefijo de cualquier parte de nombre dentro de estos atributos. Por ejemplo, si PatientName es John^Doe, , johdo, jo doy Doe John Doe todas coinciden. Sin embargoohn, no coincide.
Atributos que se pueden buscar

Se admite la búsqueda en estos atributos:

Palabra clave de atributo
PatientName
PatientID
ReferencedRequestSequence.AccessionNumber
ReferencedRequestSequence.RequestedProcedureID
ScheduledProcedureStepStartDateTime
ScheduledStationNameCodeSequence.CodeValue
ScheduledStationClassCodeSequence.CodeValue
ScheduledStationGeographicLocationCodeSequence.CodeValue
ProcedureStepState
StudyInstanceUID
Búsqueda de coincidencias

Se admiten estos tipos coincidentes:

Tipo de búsqueda Atributo admitido Ejemplo
Consulta por rango Scheduled​Procedure​Step​Start​Date​Time {attributeID}={value1}-{value2}. Para los valores de fecha y hora, se admite un intervalo inclusivo en la etiqueta. Se asigna a attributeID >= {value1} AND attributeID <= {value2}. Si {value1} no se especifica, todas las apariciones de fechas y horas anteriores a e incluidas {value2} coinciden. Del mismo modo, si {value2} no se especifica, se coinciden todas las apariciones de {value1} y las fechas y horas posteriores. Sin embargo, uno de estos valores debe estar presente. {attributeID}={value1}- y {attributeID}=-{value2} son válidos, sin embargo, {attributeID}=- no es válido.
Coincidencia exacta Todos los atributos admitidos {attributeID}={value1}
Coincidencia aproximada PatientName Coincide con cualquier componente del nombre que comience por el valor .

Nota:

Aunque no se admite la coincidencia completa de secuencias, se admite la coincidencia exacta en los atributos enumerados que se encuentran en una secuencia.

Identificador de atributo

Las etiquetas se pueden codificar de muchas maneras para el parámetro de consulta. Implementamos parcialmente el estándar tal como se define en PS3.18 6.7.1.1.1. Se admiten estas codificaciones para una etiqueta:

Valor Ejemplo
{group}{element} 00100010
{dicomKeyword} PatientName

Consulta de ejemplo:

../workitems?PatientID=K123&0040A370.00080050=1423JS&includefield=00404005&limit=5&offset=0

Respuesta de búsqueda

La respuesta es una matriz de conjuntos de 0...N datos DICOM con los atributos siguientes devueltos:

  • Todos los atributos de DICOM PowerShell 3.4 Table CC.2.5-3 con un tipo de clave de retorno de 1 o 2
  • Todos los atributos de DICOM PowerShell 3.4 Tabla CC.2.5-3 con un tipo de clave de retorno de 1C para el que se cumplen los requisitos condicionales
  • Todos los demás atributos workitem pasados como parámetros de coincidencia
  • Todos los demás atributos workitem pasados como includefield valores de parámetro

Códigos de respuesta de búsqueda

La API de consulta devuelve uno de los códigos de estado siguientes en la respuesta:

Código Descripción
200 (OK) La carga de respuesta contiene todo el recurso coincidente.
206 (Partial Content) La carga de respuesta contiene solo algunos de los resultados de búsqueda y el resto se puede solicitar a través de la solicitud adecuada.
204 (No Content) La búsqueda se completó correctamente, pero no devolvió ningún resultado.
400 (Bad Request) Hubo un problema con la solicitud. Por ejemplo, sintaxis de parámetro de consulta no válida. El cuerpo de la respuesta contiene detalles del error.
401 (Unauthorized) El cliente no está autenticado.
403 (Forbidden) El usuario no está autorizado.
503 (Service Unavailable) El servicio no está disponible o está ocupado. Vuelva a intentarlo más tarde.

Otras notas

La API de consulta no 413 (request entity too large)es . Si el límite de respuesta de consulta solicitado está fuera del intervalo aceptable, se devuelve una solicitud incorrecta. Todo lo solicitado dentro del intervalo aceptable se resuelve.

  • Los resultados paginados están optimizados para devolver primero la instancia más reciente coincidente, lo que podría dar lugar a registros duplicados en páginas posteriores si se han agregado datos más recientes que coincidan con la consulta.
  • La coincidencia no distingue mayúsculas de minúsculas y no distingue acentos para los tipos de VR de PN.
  • La coincidencia no distingue mayúsculas de minúsculas y distingue acentos para otros tipos de vr de cadena.
  • Si hay un escenario en el que cancelar un workitem y consultar lo mismo ocurre al mismo tiempo, es probable que la consulta excluya el objeto Workitem que se está actualizando y el código de respuesta es 206 (Partial Content).

Nota:

DICOM® es la marca registrada de la Asociación Nacional de Fabricantes Eléctricos para sus publicaciones de normas relacionadas con las comunicaciones digitales de información médica.