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:
- Fuente de cambios
- Etiquetas de consulta extendidas
- Realizar actualizaciones masivas
- Importación en bloque
- Exportar
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 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
DICOM . Si se especifica, cualquier instancia que no pertenezca al estudio proporcionado se rechaza con un 43265
código de advertencia.
Se admite el siguiente Accept
encabezado para la respuesta:
application/dicom+json
Se admiten los siguientes Content-Type
encabezados:
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
, SeriesInstanceUID
y 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 StudyInstanceUID se proporcionó en la solicitud de almacén y al menos una instancia se almacena correctamente. |
(0008, 1198) | FailedSOPSequence |
Secuencia de instancias que no se pudieron almacenar |
(0008, 1199) | ReferencedSOPSequence |
Secuencia de 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 SOP de la instancia que no pudo almacenar |
(0008, 1155) | ReferencedSOPInstanceUID |
Identificador único de la instancia de SOP de la instancia que no se pudo almacenar |
(0008, 1197) | FailureReason |
El código de motivo por el que esta instancia no pudo almacenar |
(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 SOP de la instancia que no pudo almacenar |
(0008, 1155) | ReferencedSOPInstanceUID |
Identificador único de la instancia de SOP de la instancia que no se pudo almacenar |
(0008, 1190) | RetrieveURL |
La 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 , SeriesInstanceUID y 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 sola instancia |
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; Para especificar más de un marco, use una coma para separar 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 único fotograma representado en un formato de imagen. |
Recuperación de instancias de un estudio o una serie
Los encabezados siguientes Accept
se admiten para recuperar instancias dentro 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 tieneapplication/dicom
como valor predeterminado ).
Recuperación de una instancia
Se admiten los siguientes Accept
encabezados 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 tieneapplication/dicom
como valor predeterminado ).
Recuperar fotogramas
Se admiten los siguientes Accept
encabezados 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 tieneapplication/octet-stream
como 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, podría producirse 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: la
HTTP 304 (Not Modified)
respuesta se envía sin cuerpo de respuesta. - Los datos han cambiado desde la última solicitud: la respuesta se envía con ETag
HTTP 200 (OK)
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 la representación para una instancia con varios fotogramas, de forma predeterminada solo se representa el primer fotograma como una imagen.
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 de 1
a inclusivo 100
(1 siendo la peor calidad y 100 que es la mejor calidad) puede pasarse como valor para el parámetro de consulta. Este parámetro se usa para las imágenes representadas como jpeg
y se omite para png
las solicitudes de representación. Si no se especifica, el parámetro tiene 100
como valor predeterminado .
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. En este caso, el contenido no se agrega al cuerpo de la respuesta. Para obtener más información, consulte la sección anterior Recuperación de la 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 una 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 admite el siguiente Accept
encabezado para la búsqueda:
application/dicom+json
Parámetros de búsqueda admitidos
Se admiten los parámetros siguientes para cada consulta.
Clave | Valores de compatibilidad | Número permitido | Descripción |
---|---|---|---|
{attributeID}= |
{value} |
0…N | Búsqueda de coincidencias de atributos y valores en la consulta |
includefield= |
{attributeID} all |
0…N | Los demás atributos que se van a devolver en la respuesta; Se admiten etiquetas públicas y privadas. Cuando se proporciona all . 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 devueltos en la respuesta; El valor puede estar entre el intervalo 1 >= x <= 200, el valor predeterminado es 100. |
offset= |
{value} |
0..1 | Omitir {value} resultados; 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 true se aplica 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 , que 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 las siguientes codificaciones para una etiqueta.
Valor | Ejemplo |
---|---|
{group}{element} |
0020000D |
{dicomKeyword} |
StudyInstanceUID |
Esta es una 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. Según el recurso, de forma predeterminada se devuelven los atributos siguientes.
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=all
es , 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 ySeries
. - Si el recurso de destino es
Study's Instances
,Series
también se devuelven los atributos de nivel. NumberOfStudyRelatedInstances
el atributo agregado se admite enStudy
el nivelincludeField
.NumberOfSeriesRelatedInstances
el atributo agregado se admite enSeries
el nivelincludeField
.
Códigos de respuesta de búsqueda
La API de consulta devuelve uno de los siguientes códigos de estado 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 una posibilidad de 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 agregaron 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.
- Solo se indexa el primer valor si un único elemento de datos con valores incorrectos tiene varios valores.
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} | Eliminar todas las instancias de un estudio específico |
Delete | ../studies/{estudio}/series/{serie} | Eliminar todas las instancias de una serie específica dentro de un estudio |
Delete | ../studies/{estudio}/series/{serie}/instances/{instancia} | Eliminación de una instancia específica dentro de una serie |
Los parámetros study
, series
y instance
corresponden a los atributos StudyInstanceUID
DICOM , SeriesInstanceUID
y SopInstanceUID
respectivamente.
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) |
La solicitud tenía un formato incorrecto |
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 | Creación de 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
un error. 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 devuelve 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 debe 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 admite campos de encabezado según sea necesario en la tabla 11.6.3-2.
Una respuesta correcta no tiene 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 devuelve 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 contiene los elementos de datos de estado de UPS modificados. Estos elementos de datos son:
- UID de transacción (0008, 1195). La carga de solicitud incluye 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
,COMPLETED
oCANCELED
.
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 tiene carga.
- 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 admite el siguiente Accept
encabezado para la búsqueda.
application/dicom+json
Parámetros de búsqueda admitidos
Se admiten los parámetros siguientes para cada consulta.
Clave | Valores de compatibilidad | Número permitido | Descripción |
---|---|---|---|
{attributeID}= |
{value} |
0…N | Búsqueda de coincidencias de atributos y valores 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 devueltos en la respuesta; El valor puede estar entre el intervalo 1 >= x <= 200 , de forma predeterminada en 100 . |
offset= |
{value} |
0...1 | Omitir 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); Se realiza una coincidencia de palabra de prefijo de cualquier parte de nombre dentro de estos atributos. Por ejemplo, si PatientName es John^Doe , , joh do , jo do y 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 | ScheduledProcedureStepStartDateTime |
{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 las siguientes 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 Tabla 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 siguientes códigos de estado 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 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.
- 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 se cancela un workitem y se consulta el mismo workitem al mismo tiempo, la consulta probablemente excluye el objeto Workitem que se actualiza 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.