Содержание
Список рисунков
Список таблиц
Информация в настоящей публикации была признана технически обоснованной по консенсусу лиц, участвовавших в разработке и утверждении документа на момент его создания. Консенсус не обязательно означает единогласное согласие среди всех лиц, участвующих в разработке данного документа.
Стандарты и руководящие публикации NEMA, одной из которых является документ, содержащийся в настоящем издании, разрабатываются в рамках добровольного процесса разработки стандартов на основе консенсуса. Этот процесс объединяет добровольцев и/или выявляет мнения лиц, заинтересованных в теме, охватываемой данной публикацией. Хотя NEMA управляет процессом и устанавливает правила для обеспечения справедливости при достижении консенсуса, она не пишет документ и не проводит независимое тестирование, оценку или проверку точности или полноты какой-либо информации или обоснованности каких-либо суждений, содержащихся в её стандартах и руководящих публикациях.
NEMA отказывается от ответственности за любые телесные повреждения, имущественный или иной ущерб любого характера, будь то специальный, косвенный, последующий или компенсаторный, прямо или косвенно вытекающий из публикации, использования, применения или reliance на данный документ. NEMA отказывается и не даёт никаких гарантий, явных или подразумеваемых, относительно точности или полноты любой информации, опубликованной в данном документе, и отказывается и не гарантирует, что информация в данном документе будет отвечать каким-либо конкретным целям или потребностям. NEMA не берёт на себя обязательств по гарантированию производительности продуктов или услуг любого отдельного производителя или продавца на основании данного стандарта или руководства.
Публикуя и предоставляя доступ к данному документу, NEMA не берёт на себя оказание профессиональных или иных услуг для какого-либо лица или организации или от их имени, а также NEMA не берёт на себя выполнение каких-либо обязанностей, возложенных на какое-либо лицо или организацию перед третьими лицами. Любой использующий данный документ должен полагаться на собственное независимое суждение или, в зависимости от обстоятельств, обращаться за консультацией к компетентному специалисту для определения меры разумной осторожности в любой данной ситуации. Информация и другие стандарты по теме, охватываемой данной публикацией, могут быть получены из других источников, которые пользователь может пожелать проконсультировать для получения дополнительных мнений или информации, не охваченных данной публикацией.
NEMA не имеет полномочий и не берёт на себя контроль за соблюдением или обеспечение соблюдения содержания данного документа. NEMA не сертифицирует, не тестирует и не инспектирует продукты, конструкции или установки в целях безопасности или охраны здоровья. Любая сертификация или иное заявление о соответствии любой информации, касающейся безопасности или здоровья, содержащейся в данном документе, не может быть приписано NEMA и является исключительно ответственностью лица, проводящего сертификацию или делающего заявление.
Настоящий стандарт DICOM был разработан в соответствии с процедурами Комитета по стандартам DICOM.
Стандарт DICOM структурирован как многочастный документ с использованием руководящих принципов, установленных в [ISO/IEC Directives, Part 2].
PS3.1 следует использовать в качестве базовой ссылки для текущих частей настоящего Стандарта.
DICOM® является зарегистрированным товарным знаком National Electrical Manufacturers Association для её стандартных публикаций, относящихся к цифровой передаче медицинской информации, все права защищены.
HL7® является зарегистрированным товарным знаком Health Level Seven International, все права защищены.
PS3.18 определяет веб-сервисы (с использованием семейства протоколов HTTP) для управления и распределения информационных объектов DICOM (Digital Imaging and Communications in Medicine), таких как медицинские изображения, аннотации, отчёты и т.д., медицинским организациям, поставщикам услуг и пациентам. Термин DICOMweb™ используется для обозначения описанных здесь RESTful веб-сервисов.
Вопросы безопасности, включая управление доступом, авторизацию и аудит, выходят за рамки области применения PS3.18. См. PS3.15.
Следующие нормативные документы содержат положения, которые посредством ссылки в настоящем тексте составляют положения данной части DICOM. Для датированных ссылок последующие поправки или пересмотры любых из этих публикаций не применяются. Однако сторонам соглашений, основанных на данной части DICOM, рекомендуется изучить возможность применения самых последних изданий нормативных документов, указанных ниже. Для недатированных ссылок применяется самое последнее издание нормативного документа, на который дается ссылка. Члены ISO и IEC ведут реестры действующих на сегодняшний день международных стандартов.
[ISO/IEC Directives, Part 2] 2021. 9.0. Rules for the structure and drafting of International Standards. http://www.iso.org/sites/directives/current/part2/index.xhtml .
[ISO 7498-1] 1994. Information Processing Systems - Open Systems Interconnection - Basic Reference Model.
[ISO/IEC 10918-1] 1994. JPEG Standard for digital compression and encoding of continuous-tone still images. Part 1 - Requirements and implementation guidelines.
[ISO/IEC 10646] 2003. Information Technology - Universal Multiple-Octet Coded Character Set (UCS). ISO/IEC 10646-2003 is the same as Unicode Version 4.0, available at http://unicode.org .
[ISO 15076-1] 2005. Image technology colour management - Architecture, profile format, and data structure. Also available as ICC.1:2004-10 (Profile version 4.2.0.0), International Color Consortium, available at http://www.color.org/v4spec.xalter .
[ISO 15948] 2003. Information technology -- Computer graphics and image processing -- Portable Network Graphics (PNG): Functional specification. A Joint ISO/IEC International Standard and W3C Recommendation. Also available at: https://www.w3.org/TR/2003/REC-PNG-20031110/ .
[ISO/IEC 18181-1] 2022. Information technology - JPEG XL Image Coding System - Part 1 Core Coding System.
[ISO 22028-2] 2013. Photography and graphic technology - Extended colour encodings for digital image storage, manipulation and interchange - Part 2: Reference output medium metric RGB colour image encoding (ROMM RGB). http://www.iso.org/iso/catalogue_detail.htm?csnumber=56591 .
[IANA Character Sets] . Character Sets. http://www.iana.org/assignments/character-sets/character-sets.xhtml .
[IANA HTTP Status Code Registry] . Hypertext Transfer Protocol (HTTP) Status Code Registry. http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml .
[IANA Media Types] . Media Types. http://www.iana.org/assignments/media-types/media-types.xhtml .
[RFC822] August 1982. Standard for ARPA Internet Text Messages. http://tools.ietf.org/html/rfc822 .
[RFC1945] May 1996. Hypertext Transfer Protocol Version 1.0 (HTTP/1.0) . http://tools.ietf.org/html/rfc1945 .
[RFC2045] November 1996. Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies. http://tools.ietf.org/html/rfc2045 .
[RFC2046] November 1996. Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types. http://tools.ietf.org/html/rfc2046 .
[RFC2387] August 1998. The MIME Multipart/Related Content-type. http://tools.ietf.org/html/rfc2387 .
[RFC2818] May 2000. HTTP Over TLS. http://tools.ietf.org/html/rfc2818 .
[RFC2978] October 2000. IANA Charset Registration Procedures. http://tools.ietf.org/html/rfc2978 .
[RFC3240] February 2002. Digital Imaging and Communications in Medicine (DICOM) - Application/dicom MIME Sub-type Registration. http://tools.ietf.org/html/rfc3240 .
[RFC3536] May 2003. Terminology Used in Internationalization in the IETF. http://tools.ietf.org/html/rfc3536 .
[RFC3745] April 2004. MIME Type Registrations for JPEG 2000 (ISO/IEC 15444). http://tools.ietf.org/html/rfc3745 .
[RFC3986] Uniform Resource Identifiers (URI): Generic Syntax. http://tools.ietf.org/html/rfc3986 .
[RFC4337] March 2006. MIME Type Registration for MPEG-4. http://tools.ietf.org/html/rfc4337 .
[RFC4648] October 2006. The Base16, Base32, and Base64 Data Encodings. http://tools.ietf.org/html/rfc4648 .
[RFC5234] January 2008. Augmented BNF for Syntax Specifications: ABNF. http://tools.ietf.org/html/rfc5234 .
[RFC6365] September 2011. Terminology Used in Internationalization in the IETF. http://tools.ietf.org/html/rfc6365 .
[RFC6338] August 2011. Definition of a Uniform Resource Name (URN) Namespace for the Schema for Academia (SCHAC). http://tools.ietf.org/html/rfc6338 .
[RFC6455] December 2011. The WebSocket Protocol. http://tools.ietf.org/html/rfc6455 .
[RFC6570] March 2012. URI Template. http://tools.ietf.org/html/rfc6570 .
[RFC6838] January 2013. Media Type Specifications and Registration Procedures. http://tools.ietf.org/html/rfc6838 .
[RFC7159] March 2014. The JavaScript Object Notation (JSON) Data Interchange Format. http://tools.ietf.org/html/rfc7159 .
[RFC7230] June 2014. Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing. http://tools.ietf.org/html/rfc7230 .
[RFC7231] June 2014. Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content. http://tools.ietf.org/html/rfc7231 .
[RFC7232] June 2014. Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests. http://tools.ietf.org/html/rfc7232 .
[RFC7233] June 2014. Hypertext Transfer Protocol (HTTP/1.1): Range Requests. http://tools.ietf.org/html/rfc7233 .
[RFC7234] June 2014. Hypertext Transfer Protocol (HTTP/1.1): Caching. http://tools.ietf.org/html/rfc7234 .
[RFC7235] June 2014. Hypertext Transfer Protocol (HTTP/1.1): Authentication. http://tools.ietf.org/html/rfc7235 .
[RFC7236] June 2014. Initial Hypertext Transfer Protocol (HTTP) Authentication Scheme Registrations. http://tools.ietf.org/html/rfc7236 .
[RFC7237] June 2014. Initial Hypertext Transfer Protocol (HTTP) Method Registrations. http://tools.ietf.org/html/rfc7237 .
[RFC7405] December 2014. Case-Sensitive String Support in ABNF. http://tools.ietf.org/html/rfc7405 .
[RFC7525] May 2015. TLS Recommendations. http://tools.ietf.org/html/rfc7525 .
[RFC7540] May 2015. Hypertext Transfer Protocol Version 2 (HTTP/2). http://tools.ietf.org/html/rfc7540 .
[RFC8259] December 2017. The JavaScript Object Notation (JSON) Data Interchange Format. http://tools.ietf.org/html/rfc8259 .
[RFC9110] June 2022. HTTP Semantics. http://tools.ietf.org/html/rfc9110 .
[Adobe RGB] 1998. 2005-05. Adobe RGB (1998) Color Image Encoding. http://www.adobe.com/digitalimag/pdfs/AdobeRGB1998.pdf .
[DCI DCSS] May 29, 2024. Digital Cinema System Specification. http://www.dcimovies.com/dci-specification .
[Display-P3] Display P3 Color Encoding. http://www.color.org/chardata/rgb/DisplayP3.xalter .
[Ekuan] Asynchronous Request-Reply pattern. 2022. http://learn.microsoft.com/en-us/azure/architecture/patterns/async-request-reply .
[Fielding] Architectural Styles and the Design of Network-based Software Architectures. 2000. http://www.ics.uci.edu/~fielding/pubs/dissertation/fielding_dissertation.pdf .
[FHIR Access Denied] . FHIR Security - Access Denied Response Handling. http://hl7.org/fhir/security.html#AccessDenied .
[IHE RAD TF-1] Integrating the Healthcare Enterprise Radiology Technical Framework Volume 1 Integration Profiles. http://www.ihe.net/uploadedFiles/Documents/Radiology/IHE_RAD_TF_Vol1.pdf .
[IHE RAD TF-2] Integrating the Healthcare Enterprise Radiology Technical Framework Volume 2 Transactions. http://www.ihe.net/uploadedFiles/Documents/Radiology/IHE_RAD_TF_Vol2.pdf .
[MNG] Multiple-image Network Graphics. http://www.libpng.org/pub/mng .
[ONC Privacy Security Guide] . Guide to Privacy and Security of Electronic Health Information. http://www.healthit.gov/sites/default/files/pdf/privacy/privacy-and-security-guide.pdf .
[OWASP Information Leakage] . Top 10 2007 - Information Leakage and Improper Error Handling. http://www.owasp.org/index.php/Top_10_2007-Information_Leakage_and_Improper_Error_Handling .
[SMPTE RP 431-2:2011] 2011. D-Cinema Quality — Reference Projector and Environment. http://pub.smpte.org/latest/rp431-2/rp0431-2-2011.pdf .
[WADL] 31 August 2009. . Member Submission - Web Application Description Language. http://www.w3.org/Submission/wadl/ .
[Wikipedia REST] . Representational State Transfer. http://en.wikipedia.org/wiki/Representational_state_transfer .
Для целей данной части DICOM применяются следующие термины и определения.
В данной части Стандарта используются следующие термины, определённые в [ISO 7498-1]:
См. [ISO 7498-1].
См. [ISO 7498-1].
В данной части Стандарта используются следующие термины, определённые в PS3.1:
В данной части Стандарта используются следующие термины, определённые в PS3.7:
В данной части Стандарта используются следующие термины, определённые в PS3.3:
В данной части Стандарта используются следующие термины, определённые в PS3.2:
В данной части Стандарта используются следующие термины, определённые в PS3.5:
В данной части Стандарта используются следующие термины, определённые в PS3.4:
В данной части Стандарта используются следующие термины, определённые в [RFC7230] Раздел 2.1 Client/Server Messaging:
Объект, содержащий октетный поток, включающий одно или несколько полей значений (обычно содержащих большие данные, такие как Pixel Data), извлечённых из набора данных DICOM. См. Metadata.
Октетный поток не включает тег атрибута, представление значения (Value Representation) или длину атрибута.
Для значения кадра атрибута Pixel Data, закодированного в инкапсулированном синтаксисе передачи (Encapsulated Transfer Syntax), он не включает таблицу базовых смещений (Basic Offset Table) и теги и длины элементов фрагмента потока Pixel Data Stream.
Унифицированный идентификатор ресурса (URI), ссылающийся на Bulk Data.
Экземпляр объекта данных, как определено в PS3.3, которому присвоен уникальный идентификатор в формате, указанном для SOP Instance UID в PS3.3, и который выбран как объект для безопасного сохранения в течение определённого периода времени. В стандарте DICOM объект DICOM обычно является экземпляром составного Service Object Pair (SOP).
Один или несколько объектов DICOM, на которые ссылается URL.
Исходный сервер (origin server), который отвечает на запросы веб-сервиса DICOM путём выполнения транзакций DIMSE на внутреннем сервере (backend server).
Набор данных, содержащий элементы, описывающие событие, произошедшее на исходном сервере (origin server). См. Раздел 11.12.
Набор данных DICOM, в котором ноль или более элементов (обычно содержащих большие данные, такие как Pixel Data) заменены на Bulk Data URI.
Метаданные не включают элементы данных файловой метаинформации Группы 0002 (Group 0002 File Meta Information Data Elements), которые описывают, но не являются частью набора данных, согласно Разделу 7.1 в PS3.10.
Веб-сервис является RESTful, если он реализован с использованием архитектуры и принципов REST. См. https://en.wikipedia.org/wiki/Representational_state_transfer.
При использовании в данной части Стандарта термин Service означает набор транзакций и ресурсов, к которым эти транзакции применяются.
Стандартное цветовое пространство RGB, определённое в [IEC 61966-2.1].
Отчёт о состоянии (Status Report) — это информация, содержащаяся в полезной нагрузке ответа (response payload), описывающая предупреждения или ошибки, связанные с запросом.
Создатель или владелец подписки (Subscription), обычно пользовательский агент (user agent).
URI, содержащийся в сообщении запроса. Он обозначает ресурс, являющийся целевым объектом запроса.
Изображение одного кадра (Frame), которое репрезентативно отражает содержимое исследования DICOM (Study), серии (Series), экземпляра (Instance) или кадра (Frame). Оно закодировано в формате Rendered Media Type. См. Раздел 8.7.4 и Раздел 10.4.4.
При использовании в данной части Стандарта термин Transaction означает пару сообщений HTTP/HTTPS запрос/ответ.
Набор символов Unicode UTF-8, определённый в [ISO/IEC 10646].
В данной части Стандарта используются следующие термины, определённые в PS3.10:
Следующие символы и сокращения используются в этой части Стандарта.
Create, Read, Update, Delete, List; базовые операции/действия над объектами
Служба Modality Performed Procedure Step. См. Приложение F документа PS3.4 .
Служба Modality Worklist; разговорное название службы Basic Worklist. См. Приложение K документа PS3.4 .
Запрос на идентификацию объектов DICOM с использованием RESTful-сервисов
Representational State Transfer, архитектура веб-сервисов. См. [Wikipedia REST] и [Fielding].
Служба Unified Procedure Step. См. Приложение CC документа PS3.4 .
Унифицированный идентификатор ресурса. См. [RFC3986].
Унифицированный указатель ресурса. См. [RFC3986].
Веб-доступ к объектам DICOM с использованием RESTful-сервисов
В этом разделе определяются соглашения, используемые на протяжении всей остальной части Стандарта.
Синтаксис сообщений запроса и ответа для Транзакций определяется с использованием грамматики ABNF, используемой в [RFC7230], которая основана на ABNF, определённой в [RFC5234]. Эта часть Стандарта также использует расширения ABNF из [RFC7405], которое определяет префикс '%s' для обозначения строк, чувствительных к регистру.
Правила синтаксиса, определённые здесь, действительны для набора символов US-ASCII или наборов символов, являющихся надмножествами US-ASCII, например, Unicode UTF-8.
В ABNF, используемой для определения синтаксиса сообщений, применяются следующие соглашения:
Терминальные правила записываются в верхнем регистре. Например, 'SP' обозначает литеральный символ пробела US-ASCII (0x20), а 'CRLF' обозначает литеральные символы возврата каретки ASCII (0xD) и перевода строки (0xA).
Имена полей заголовка записываются с заглавной буквы, а кавычки, обозначающие литеральные строки для имён полей заголовка, опускаются. Имена полей заголовка — единственные имена с заглавной буквой, используемые в грамматике. См. [RFC7231] Раздел 1.2. Например:
Accept: media-type CRLF
"Accept:" media-type CRLF
В этой части Стандарта, как и в HTTP в целом, ресурсы идентифицируются URI [RFC3986]. Каждый сервис определяет управляемые им ресурсы и шаблоны URI, используемые для определения структуры URI, которые на них ссылаются.
В RFC по HTTP правила ABNF для obs-text и obs-fold обозначают «устаревшие» грамматические правила, присутствующие по историческим причинам. Эти правила не используются в определениях синтаксиса веб-сервисов DICOM.
См. Приложение A для объединённой ABNF веб-сервисов DICOM.
Таблица 5.1-1 определяет синтаксис некоторых общих правил, используемых при определении значений данных в этой части Стандарта.
Таблица 5.1-1. ABNF для общих синтаксических значений
int |
= [+ / -] 1*DIGIT ; An integer |
uint |
= 1*DIGIT ; An unsigned integer |
non-zero-digit |
= %31-39 |
pos-int |
= non-zero-digit *DIGIT ; An integer greater than zero |
decimal |
=int ["." uint] [("E" / "e") int]
; a fixed- or floating-point number with at most 16 characters |
string |
= %s 1*QCHAR ; A case sensitive string |
base64 |
; Use base64 defined in [RFC4648] Section 5 |
uid |
= uid-root 1*("." uid-part)
|
uid-root |
= "0" / "1" / "2" |
uid-part |
= "0" / pos-int |
Синтаксис шаблонов URI [RFC6570] был расширен для поддержки имён переменных, чувствительных к регистру. Это было сделано путём изменения правила varchar (см. [RFC6570] Раздел 2.3) следующим образом:
varchar = %x20-21 / %x23-7E / pct-encoded
ABNF была расширена правилом списка, которое используется для определения списков, разделённых запятыми. Оно не допускает пустых списков, пустых элементов списка или устаревших правил списка, определённых в [RFC7230] Раздел 7.
1#element = element *(OWS "," OWS element)
#element = 1#element
<n>#<m>element = element <n-1>*<m-1> (OWS "," OWS element)
n >= 1 and m > n
Эта часть Стандарта организована так, что новые сервисы могут добавляться как новые пронумерованные разделы в конце документа.
Требования к полям заголовка запроса описываются с использованием таблиц следующего вида:
Столбец «Имя» содержит имя поля заголовка HTTP, как определено в [RFC7230, RFC7231].
Столбец «Значение» определяет либо тип значения, либо конкретное значение, содержащееся в поле заголовка.
Столбец «Использование пользовательским агентом» определяет требования к пользовательскому агенту по предоставлению поля заголовка в запросе.
Столбец «Использование исходным сервером» определяет требования к исходному серверу по поддержке поля заголовка.
Содержимое столбцов «Использование» может быть:
Столбец «Описание» для условных полей заголовка запроса определяет условие наличия поля заголовка.
«Должен присутствовать, если <условие>» означает, что если <условие> истинно, то поле заголовка должно присутствовать; в противном случае оно не должно присутствовать.
«Может присутствовать в противном случае» добавляется к описанию, если поле заголовка может присутствовать, даже если условие не является истинным.
Требования к полям заголовка ответа описываются с использованием таблиц следующего вида:
Для полей заголовка ответа столбец «Использование» определяет требования к исходному серверу по предоставлению поля заголовка.
Реализация, заявляющая о соответствии этой части Стандарта, должна функционировать в соответствии со всеми её обязательными разделами.
Веб-сервисы DICOM используются для передачи составных экземпляров SOP (Composite SOP Instances). Все передаваемые составные экземпляры SOP должны соответствовать требованиям, указанным в других частях Стандарта.
Реализация может соответствовать веб-сервисам DICOM, поддерживая роль исходного сервера или пользовательского агента, либо обе роли для любого из сервисов, определённых в этой части Стандарта. Структура Заявлений о соответствии описана в PS3.2.
Реализация должна описать в своём Заявлении о соответствии реальную деятельность (Real-World Activity), связанную с использованием веб-сервисов DICOM, включая любые функции прокси между веб-сервисом и эквивалентным сервисом DIMSE.
Реализация должна описать в своём Заявлении о соответствии механизмы безопасности, используемые реализацией. См. Раздел 8.11.
Рисунок 5-1 документа PS3.1 представляет общую модель коммуникации Стандарта DICOM, которая охватывает как сетевое (онлайн) взаимодействие, так и обмен через носители информации (офлайн). Прикладные сущности могут использовать любой из следующих механизмов передачи:
DICOM Message Service и Upper Layer Service, обеспечивающие независимость от конкретной физической сетевой поддержки и протоколов связи, таких как TCP/IP,
DICOM Web Service API и HTTP Service, позволяющие использовать общие гипертекстовые и связанные протоколы для передачи сервисов DICOM,
Basic DICOM File Service, обеспечивающий доступ к носителям хранения данных независимо от конкретных форматов физических носителей и файловых структур, или
DICOM Real-Time Communication, обеспечивающий передачу метаданных DICOM в реальном времени на основе SMPTE и RTP.
PS3.18 описывает веб-сервисы DICOM, которые используют протоколы HTTP и HTTPS в качестве среды передачи, как показано на Рисунке 7-1.
Эта часть Стандарта определяет веб-сервисы DICOM. Каждый сервис позволяет пользовательскому агенту взаимодействовать с исходным сервером для управления набором ресурсов DICOM. Каждый веб-сервис DICOM работает с набором ресурсов и определяет набор Транзакций, которые действуют на эти ресурсы. Все Транзакции определены в виде пар сообщений HTTP-запрос/ответ.
При использовании в этой части Стандарта термин HTTP относится к семейству протоколов HTTP, включая: HTTP/1.1, HTTPS/1.1, HTTP/2 и HTTPS/2, как определено соответствующими RFC IETF, но не включает HTTP/1.0 или HTTPS/1.0. Стандарты HTTP являются нормативными для всех аспектов формата и передачи HTTP-сообщений.
Существует два общих типа веб-сервисов DICOM: URI и RESTful. Это различие основано на типе протокола веб-сервиса, используемом для спецификации ресурсов и транзакций.
Веб-сервис URI извлекает представления своих ресурсов, которыми являются составные экземпляры SOP (Instance). Сервис URI определяет две Транзакции, которые извлекают экземпляры в различных типах мультимедиа. Все транзакции URI используют компонент запроса URI в сообщении запроса для спецификации Транзакции.
Функциональность Транзакций веб-сервиса URI аналогична, но более ограничена, чем Транзакция Retrieve веб-сервиса Studies.
Каждый RESTful веб-сервис определяет набор ресурсов и Транзакции, которые могут быть применены к этим ресурсам.
Определённые RESTful веб-сервисы:
Позволяет пользовательскому агенту управлять Исследованиями (Studies), хранящимися на исходном сервере.
Позволяет пользовательскому агенту управлять Рабочим списком (Worklist), содержащим рабочие элементы (Workitems), хранящиеся на исходном сервере.
Позволяет пользовательскому агенту управлять экземплярами, не относящимися к пациенту (Non-Patient Instances), например, цветовыми палитрами, хранящимися на исходном сервере.
Служба Storage Commitment позволяет пользовательскому агенту запрашивать безопасное хранение экземпляров на исходном сервере.
Служба Modality Scheduled Procedure Step позволяет пользовательскому агенту выполнять поиск запланированных этапов процедуры (Scheduled Procedure Steps).
Служба Modality Performed Procedure Step позволяет пользовательскому агенту сообщать о ходе выполнения этапов выполненной процедуры (Performed Procedure Steps).
В RESTful веб-сервисах ресурс — это абстрактный объект с типом, связанными данными, отношениями с другими ресурсами и набором методов, которые действуют на него. Ресурсы объединяются в коллекции. Коллекции сами также являются ресурсами. Каждая коллекция неупорядочена и содержит только один тип ресурса. Коллекции могут существовать глобально на верхнем уровне API, но также могут содержаться внутри ресурса. В последнем случае мы называем такие коллекции подколлекциями. Подколлекции обычно выражают отношение типа «содержится в».
Ресурсы DICOM, определённые в этой части Стандарта, обычно являются либо веб-сервисами DICOM, либо информационными объектами DICOM. Примеры включают Исследования (Studies), Серии (Series), Экземпляры (Instances), Рабочие списки (Worklists) и Рабочие элементы (Workitems).
Ресурсы DICOM группируются в коллекции и иерархии. Следующие ресурсы являются примерами коллекций:
Следующие ресурсы являются примерами иерархий:
Исходный сервер веб-сервиса DICOM управляет коллекцией ресурсов. Это может выполняться не напрямую; например, исходный сервер может действовать как прокси, преобразуя RESTful-запросы в DIMSE-запросы, а DIMSE-ответы в RESTful-ответы.
Ресурсы обычно создаются и/или доступны пользовательскими агентами.
Ресурс — это абстрактное понятие, которое конкретизируется посредством представления, представляющего собой объект данных, закодированный в виде потока октетов. Например, Исследование DICOM (абстрактное) может быть представлено последовательностью октетов, закодированных в выбранном типе мультимедиа. См. Раздел 8.7.3.
Тип мультимедиа (Media Type) описывает формат или кодировку представления. Примерами типов мультимедиа являются application/dicom, application/dicom+json, image/jpeg и text/html.
Ресурсы идентифицируются URI. Каждый сервис определяет управляемые им ресурсы и формат URI, используемых для ссылки на эти ресурсы. Формат URI определяется с использованием шаблонов URI. См. [RFC6570].
Этот раздел описывает детали и требования, общие для всех веб-сервисов, определённых в этой части Стандарта.
Пользовательский агент или исходный сервер, реализующий Сервис в этой части Стандарта, должен соответствовать Разделу 8, если иное не указано в спецификации этого Сервиса и его Транзакций.
Каждая Транзакция состоит из сообщения запроса и сообщения ответа, иногда называемых парой запрос/ответ. При использовании в этой части Стандарта термин «запрос» означает «сообщение запроса», а «ответ» означает «сообщение ответа», если явно не указано иное. Рисунок 8.1-1 представляет собой диаграмму взаимодействия, показывающую поток сообщений в Транзакции. При получении запроса исходный сервер обрабатывает его и возвращает ответ.
Запрос включает метод, URI целевого ресурса и поля заголовка. Он также может включать параметры запроса и полезную нагрузку.
Ответ включает код состояния, фразу причины, поля заголовка и может также включать полезную нагрузку.
Эта часть Стандарта использует ABNF, определённую в Разделе 5.1, для определения синтаксиса Транзакций.
Все сообщения запросов API веб-сервисов имеют следующий синтаксис:
method SP target-uri SP version CRLF
*(header-field CRLF)
CRLF
[payload]
method = "CONNECT" / "DELETE" / "GET" / "HEAD" / "OPTIONS" / "POST" / "PUT" |
|
SP= %x20 |
|
target-uri = "/" {/resource} {?parameters*}
|
Каждая Транзакция определяет шаблон URI для целевого ресурса. Шаблон определяет формат URI, которые ссылаются на целевой ресурс запроса. См. Раздел 8.1.1.2. |
version = ("HTTP" / "HTTPS") "/" ("1.1" / "2")
|
Версия протокола HTTP; одна из «HTTP/1.1», «HTTP/2», «HTTPS/1.1» или «HTTPS/2». |
CRLF = %x0D.0A |
Возврат каретки US-ASCII (%x0D), за которым следует перевод строки (%x0A). |
*(header-field CRLF) |
Ноль или более полей заголовка, каждое из которых завершается разделителем CRLF. |
[payload] = *OCTET / multipart-payload |
Необязательная полезная нагрузка, содержащая ноль или более 8-битных OCTET. |
method, SP, version, CRLF, header-field и payload — все это продукты HTTP из [RFC7230] и [RFC7231]. Определения воспроизведены здесь для удобства.
Метод запроса — один из методов HTTP, таких как CONNECT, DELETE, GET, HEAD, OPTIONS, POST, PUT. См. [RFC7230] Раздел 4.
Целевой ресурс запроса определяется целевым URI, содержащимся в сообщении запроса. См. Раздел 8.2.
Параметры запроса содержатся в компоненте запроса (см. [RFC3986]) URI. Пользовательский агент может использовать параметры запроса для передачи параметров в запрос. См. Раздел 8.3.
Поля заголовка запроса используются для указания метаданных для запроса. Большинство запросов имеют одно или более полей заголовка согласования содержимого (см. Раздел 8.4.1). Если запрос имеет полезную нагрузку, запрос будет содержать соответствующие поля заголовка представления содержимого (см. Раздел 8.4.2) и полезной нагрузки (см. Раздел 8.4.3).
Полезная нагрузка запроса — это поток октетов, содержащий содержимое сообщения. См. Раздел 8.6. Наличие полезной нагрузки в запросе сигнализируется полем заголовка Content-Length или Transfer-Encoding.
Синтаксис ответного сообщения следующий:
version SP status-code SP reason-phrase CRLF
*(header-field CRLF)
CRLF
[payload]
status-code = 3DIGIT |
|
reason-phrase = *(HTAB / SP / VCHAR) |
Понятная человеку фраза, соответствующая статусу. Реализация может определять собственные фразы-причины. Синтаксис reason-phrase слегка изменён по сравнению с [RFC7230]; настоящая Часть Стандарта не разрешает устаревший текст (obs-text) в reason-phrase. |
Продукция status-code взята из [RFC7230].
Исходный сервер должен всегда возвращать ответное сообщение.
Ответное сообщение должно всегда содержать допустимый трёхзначный код состояния. Раздел 8.5 определяет коды состояния, используемые Транзакциями. IANA ведёт реестр кодов состояния HTTP. См. [IANA HTTP Status Code Registry].
Поля заголовка ответа используются для указания метаданных ответа. Ответ будет содержать поля заголовка представления содержимого (см. Раздел 8.4.2) и полезной нагрузки (см. Раздел 8.4.3), соответствующие содержимому полезной нагрузки.
Полезная нагрузка ответа — это поток октетов, содержащий одно или несколько представлений. См. Раздел 8.6.
Транзакция обычно определяет два типа полезных нагрузок для ответного сообщения: полезную нагрузку успеха и полезную нагрузку отказа.
Полезная нагрузка ответа об отказе должна содержать отчёт о состоянии (Status Report), описывающий любые ошибки, предупреждения или другую полезную информацию.
Спецификации Транзакций определяют, какие типы ресурсов являются допустимыми Целевыми ресурсами для Транзакции, и определяют формат URI для Целевого ресурса (и Параметров запроса) с использованием шаблонов URI. URI Целевого ресурса называется Целевым URI. Спецификации Транзакций также определяют, какие типы ресурсов являются допустимыми ресурсами для ответа.
Целевой URI состоит из трёх компонентов: Базового URI, Пути целевого ресурса и Параметров запроса (которые часто являются необязательными).
Пробельные символы не допускаются в URI. Пробельные символы вокруг разрывов строк и сами разрывы строк следует удалить перед разбором URI. См. Приложение C в [RFC3986].
Наиболее общий шаблон Целевого URI:
target-uri = "/" {/resource} {?optional*}
или, если какие-либо Параметры запроса являются обязательными
target-uri = "/" {/resource} ?{required*}{&optional*}
"/" |
Символ косой черты ('/') используется для обозначения Базового URI. |
{/resource}
|
Шаблон URI для Пути целевого ресурса — относительного компонента пути, ссылающегося на Целевой ресурс. '/' в шаблоне указывает, что зарезервированные символы, такие как '/', могут использоваться в раскрытии шаблона. См. [RFC6570]. «/{/resource}» обозначает абсолютный URI Целевого ресурса на исходном сервере. |
{required*}
|
Шаблон URI для одного или нескольких обязательных параметров запроса. См. пример в Разделе 8.3.1. |
{&optional*}
|
Шаблон URI для нуля или более необязательных параметров запроса. См. пример в Разделе 8.3.1. |
Базовый URI Сервиса — это абсолютный URI, указывающий расположение исходного сервера, реализующего Сервис. Каждый Целевой URI, определённый настоящей Частью Стандарта, начинается с «/», что является сокращением, обозначающим Базовый URI Сервиса. Базовый URI может поддерживать более одного Сервиса.
Корневой путь Сервиса (Service Root Path) — это Базовый URI без компонентов Scheme и Authority.
Путь целевого ресурса — это относительный URI, указывающий путь к ресурсу от Базового URI Сервиса. Он задаётся шаблоном URI, использующим расширение пути {/var}, как определено в [RFC6570].
http://dicom.nema.org/service/studies/2.25.123456789/series/2.25.987654321
http://dicom.nema.org/service
/service
/studies/2.25.123456789/series/2.25.987654321
/studies/{study}/series/{series}
Параметры запроса указываются в компоненте запроса URI (см. [RFC3986] Раздел 3.4).
Компонент запроса URI запроса может использоваться только для указания одного или нескольких Параметров запроса. Эти параметры называются Параметрами запроса, чтобы отличать их от параметров полей заголовка или других типов параметров, которые могут содержаться в полезной нагрузке.
Параметры запроса задаются с использованием шаблона URI, использующего расширение формы запроса {?var} и стиль продолжения запроса {&var}, как определено в [RFC6570].
Если Целевой URI содержит «компонент запроса» (см. [RFC3986] Раздел 3.4), он должен содержать Параметры запроса, соответствующие синтаксису, определённому здесь.
Сервисы и Транзакции, определённые в других местах настоящей Части Стандарта, могут дополнительно уточнить правила qp-name и qp-value, определённые ниже.
[RFC3986] не допускает пустой компонент запроса, т.е. если в Целевом URI присутствует «?», то в URI должен быть хотя бы один Параметр запроса.
Исходный сервер может определять и поддерживать дополнительные Параметры запроса или дополнительные значения Параметров запроса для существующего Параметра запроса. Если исходный сервер определяет новые или расширяет существующие Параметры запроса, они должны быть задокументированы в Заявлении о соответствии (Conformance Statement) и, если сервис это поддерживает, в ответе Retrieve Capabilities.
Исходный сервер должен игнорировать любые неподдерживаемые Параметры запроса. Исходный сервер должен обработать запрос так, как если бы неподдерживаемые параметры отсутствовали, и может вернуть ответ, содержащий соответствующие предупреждения и/или сообщения об ошибках.
Если поддерживаемый Параметр запроса имеет недопустимое значение, исходный сервер должен вернуть ответ об ошибке 400 (Bad Request) и может включить полезную нагрузку, содержащую соответствующий Отчёт о состоянии.
Параметры запроса имеют следующий синтаксис:
query-parameters = "?" parameter *("&" parameter)
Каждый параметр после первого отделяется от следующего параметра символом «&». Каждый параметр имеет следующий синтаксис:
parameter = qp-name
/ qp-name "=" 1#qp-value
/ qp-name "=" 1#attribute
/ attribute
/ attribute "=" 1#qp-value
Имя qp-name чувствительно к регистру и начинается с буквенного символа или символа подчёркивания, за которым следует ноль или более буквенно-цифровых символов или символов подчёркивания «_»:
qp-name = %s 1*(ALPHA / "_") *(ALPHA / DIGIT / "_")
Имя qp-name само по себе (без значений) является допустимым Параметром запроса. За именем параметра qp-name может также следовать разделённый запятыми список одного или более значений qp-values или одного или более Атрибутов.
Значения qp-values чувствительны к регистру. Значение qp-value состоит из qp-символов, где qp-char — это множество допустимых символов компонента запроса, определённых [RFC3986], минус символы равенства («=»), амперсанда («&») и запятой («,»).
qp-value = %s DQUOTE 1*qp-char DQUOTE
qp-char = unreserved / pct-encoded / qp-special
qp-special = "!" / "$" / "'" / "(" / ")" / "*" / "+" / ";" /":" / "@" / "/" / "?"
Единственные видимые символы US-ASCII, не допускаемые в компоненте запроса стандартом [RFC3986] — это «#», «[», «]». Настоящая Часть Стандарта дополнительно запрещает «&», «=» и «,». Однако символы («#», «[», «]», «&», «=» и «,») могут быть включены в значения qp-values, если они закодированы в процентной кодировке.
Каждый Атрибут является либо simple-attribute, либо sequence-attribute:
attribute = simple-attribute / sequence-attribute
simple-attribute — это одиночный Тег элемента данных или Ключевое слово (см. Таблицу 6-1 «Реестр элементов данных DICOM» в PS3.6), которое не имеет VR типа SQ:
simple-attribute = keyword / tag keyword = %s DQUOTE 1*ALPHA *(ALPHA / DIGIT) DQUOTE tag = 8HEXDIG
Ключевые слова DICOM чувствительны к регистру; они должны начинаться с буквенного символа, за которым следует ноль или более буквенно-цифровых символов. См. PS3.6.
sequence-attribute — это два или более атрибута, разделённых символом точки («.»), при этом все атрибуты, кроме последнего, должны иметь VR типа SQ, а последний атрибут не должен иметь VR типа SQ.
sequence-attribute = (keyword / tag) *("." attribute)
Ниже приведены примеры допустимых значений attribute:
0020000D
StudyInstanceUID
00101002.00100020
OtherPatientIDsSequence.PatientID
00101002.00100024.00400032
OtherPatientIDsSequence.IssuerOfPatientIDQualifiersSequence.UniversalEntityID
Некоторые Параметры запроса имеют qp-name, являющийся атрибутом, и значение, представляющее собой разделённый запятыми список одного или более qp-values. Значения qp-values параметра-атрибута должны удовлетворять его Представлению значения (Value Representation) и Кратности значения (Value Multiplicity), как определено в PS3.5 и PS3.6, соответствующего атрибута.
В отличие от Представлений значений, определённых в PS3.5, Параметры запроса:
должны кодировать UID, как указано в PS3.5, за исключением того, что они не должны выравниваться до чётной длины
Синтаксис и семантика допустимых qp-names, qp-values и атрибутов определяются соответствующим Сервисом или Транзакцией; однако они должны соответствовать правилам данного Раздела.
Таблица 8.3.1-1 содержит собранный синтаксис Параметров запроса. Сервисы и Транзакции, определённые в других местах настоящей Части Стандарта, могут дополнительно уточнить правила qp-name, attribute и qp-value.
Все имена qp-names чувствительны к регистру.
Таблица 8.3.1-1. ABNF для параметра запроса
query-parameters |
= "?" parameter *("&" parameter)
|
parameter |
= qp-name; a name only / qp-name "=" 1#qp-value ; a name with one or more values / qp-name "=" 1#attribute; a name with one or more attributes / attribute; an attribute only / attribute "=" 1#qp-value ; an attribute with one or more values |
qp-name |
= %s (ALPHA / "_") *(ALPHA / DIGIT / "_") |
qp-value |
=int / uint / pos-int / decimal / float /string / base64 / uid / %s 1*qp-char/ %s DQUOTE 1*qp-special DQUOTE; See Раздел 5.1.1 |
qp-char |
= unreserved / pct-encoded |
qp-special |
= "!" / "$" / "'" / "(" / ") " / "*" / "+" / ";"/":" / "@" / "/" / "?"
|
simple-attribute |
= keyword / tag |
sequence-attribute |
= keyword *( "." attribute) / tag *( "." attribute ) |
keyword |
= %suppercase *( ALPHA / DIGIT ) |
uppercase |
=%x41-5A |
tag |
= 8HEXDIG |
Синтаксис qp-values определён в Разделе 5.1.1.
Правило qp-char (символы параметра запроса), определённое выше, является правилом query из [RFC3986], которое определяет допустимые символы для компонента запроса, минус знак равенства («=»), запятая («,») и амперсанд («&»). Таким образом, правило qp-char — это правило VCHAR минус «#», «[», «]», «=», «&» и «,».
Все ключевые слова DICOM чувствительны к регистру. См. PS3.6.
Поддержка Параметров запроса реализацией является либо Обязательной, либо Необязательной. Каждый раздел Параметров запроса содержит таблицу, определяющую ключи Параметров запроса, значения и требования к использованию пользовательским агентом и исходным сервером. Таблица 8.3.2-1 определяет символы использования, типы и определения.
Таблица 8.3.2-2 показывает пример таблицы Параметров запроса.
Столбцы использования указывают Параметры запроса, которые пользовательский агент должен предоставить, а исходный сервер должен поддерживать.
Параметры, определённые в этом разделе, в первую очередь предназначены для использования в гиперссылках, т.е. URI, встроенных в документы, где Поля заголовка согласования содержимого (см. Раздел 8.3.3) недоступны.
Параметр запроса Accept имеет следующий синтаксис:
accept = accept-name "=" 1#(media-type [weight]) accept-name = %s"accept"
Параметр запроса Accept имеет тот же синтаксис, что и поле заголовка Accept (см. Раздел 8.4.3), за исключением того, что он не должен содержать подстановочные знаки (<type>/* или */*). См. Раздел 8.7.
Обычное имя этого параметра — «accept»; однако URI-сервис использует accept-name «contentType». См. Раздел 9.1.2.2.1.
Префикс «%s» перед accept-name указывает, что это токен, чувствительный к регистру. См. [RFC7405].
Значение параметра — это разделённый запятыми список одного или более media-types.
Параметр запроса Accept не следует использовать, когда пользовательский агент может указать значения с помощью поля заголовка Accept.
Все Типы мультимедиа (Media Types), присутствующие в Параметре запроса Accept, должны быть совместимы с диапазоном медиа в поле заголовка Accept, явно или неявно через подстановочные знаки.
Например, наличие image/jpeg в Параметре запроса Accept потребует, чтобы поле заголовка Accept включало одно или несколько из следующих значений: image/jpeg, image/* или */*.
Если ни один из Приемлемых типов мультимедиа (см. Раздел 8.7.5) не поддерживается исходным сервером, ответ исходного сервера должен быть в Типе мультимедиа по умолчанию для Категории ресурсов Целевого ресурса. Если для Целевого ресурса не определён Тип мультимедиа по умолчанию, ответ исходного сервера должен быть 406 (Not Acceptable) и может включать полезную нагрузку, содержащую соответствующий Отчёт о состоянии.
Если присутствует Тип мультимедиа DICOM, Типы мультимедиа, не относящиеся к DICOM, не должны присутствовать. Если присутствуют как DICOM, так и не-DICOM Типы мультимедиа, ответ должен быть 400 (Bad Request) и может включать полезную нагрузку, содержащую соответствующий Отчёт о состоянии.
Параметр запроса Character Set имеет следующий синтаксис:
character-set = "charset" "=" 1#(charset [weight])
Значение Параметра запроса Character Set — это разделённый запятыми список одного или более идентификаторов наборов символов. Он аналогичен полю заголовка Accept-Charset, за исключением того, что он не должен содержать подстановочные знаки. См. Раздел 8.8.
Идентификаторы наборов символов, присутствующие в Параметре запроса character set, обычно имеют соответствующий идентификатор набора символов в поле заголовка Accept-Charset, явно или неявно через подстановочные знаки.
Если этот параметр имеет значение, которое не поддерживается, это значение должно быть проигнорировано.
Таблица 8.3.4-1 содержит синтаксис имён и значений параметров поиска, а также ссылку на раздел, где определено их значение. Поисковые Транзакции должны поддерживать эти параметры. ABNF для различных параметров поиска:
Таблица 8.3.4-1. Синтаксис параметров запроса
search |
= match / fuzzymatching / includefield / limit / offset / emptyvaluematching / multiplevaluematching |
|||
match |
; See attribute matching rules below |
|||
fuzzymatching |
= "fuzzymatching" "=" true / false |
|||
includefield |
= "includefield" "=" 1#attribute / "all" |
|||
limit |
= "limit" "=" uint ; Maximum number of results |
|||
offset |
= "offset" "=" uint ; Number of skipped results |
|||
emptyvaluematching |
= "emptyvaluematching" "=" true / false |
|||
multiplevaluematching |
= "multiplevaluematching" "=" true / false |
|||
Следующие разделы подробно описывают эти параметры.
Синтаксис Параметра запроса match должен быть следующим:
match = normal-match / uid-list-match
normal-match = 1*("&" attribute "=" value)
uid-list-match = 1*("&" attribute "=" 1#value)
attribute = (attribute-id) *("." attribute-id)
attribute-id = tag *("." tag) / keyword *("." keyword)
tag = 8HEXDIG
keyword= ;A keyword from Table 6-1 “Registry of DICOM Data Elements” in PS3.6.
Одна или несколько пар DICOM Атрибут/Значения задают критерии сопоставления для поиска.
Каждая поисковая Транзакция определяет, какие Атрибуты являются обязательными или разрешёнными.
Атрибуты DICOM не следует путать с атрибутами XML. Теги и Ключевые слова для Атрибутов DICOM определены в Таблице 6-1 «Реестр элементов данных DICOM» в PS3.6.
Пары DICOM Атрибут/Значения должны удовлетворять следующим требованиям:
Каждый attribute-id должен быть Тегом элемента данных или Ключевым словом.
Каждый атрибут в Параметре запроса должен иметь единственное значение, если только соответствующий Атрибут DICOM не допускает сопоставление списка UID (см. Раздел C.2.2.2.2 в PS3.4 ), в этом случае значение представляет собой разделённый запятыми список UID.
Если тег представляет собой Частный элемент данных (Private Data Element), запрос также должен включать соответствующий элемент Private Creator (см. Раздел 7.8.1 в PS3.5 ).
Допустимые значения определяются типами сопоставления, разрешёнными для C-FIND для соответствующего атрибута. См. Раздел C.2.2.2 в PS3.4 . Все символы в значениях, не являющиеся qp-chars, должны быть закодированы в процентной кодировке. Все символы, не относящиеся к ASCII, должны быть закодированы в процентной кодировке. См. [RFC3986] для подробностей.
Следующие символы US-ASCII «#», «[», «]», «&», «=» и «,» должны быть закодированы в процентной кодировке в любом Параметре запроса.
Параметр запроса match соответствует Ключам сопоставления DIMSE (DIMSE Matching Keys). См. Раздел K.2.2.1.1 в PS3.4 .
Семантика сопоставления для каждого атрибута определяется типами сопоставления, разрешёнными для C-FIND. См. Раздел C.2.2.2 «Сопоставление атрибутов» в PS3.4.
Результаты сопоставления должны генерироваться в соответствии с Иерархическим методом поиска, описанным в Раздел C.4.1.3.1.1 «Иерархический метод поиска» в PS3.4.
Комбинированное сопоставление даты и времени должно выполняться, как указано в Раздел C.2.2.2.5 «Сопоставление диапазона» в PS3.4.
Если исходный сервер действует как прокси для C-FIND SCP, который не поддерживает комбинированное сопоставление даты и времени, он должен выполнить запрос C-FIND, используя только дату, и отфильтровать любые результаты, выходящие за пределы диапазона времени, перед возвратом ответа.
Если Атрибут Timezone Offset From UTC (0008,0201) указан в запросе, даты и время в запросе должны интерпретироваться в указанном часовом поясе. См. Раздел C.4.1.1 в PS3.4 .
Единственный параметр указывает, следует ли выполнять нечёткое сопоставление имён персон.
Этот параметр является необязательным для пользовательского агента.
Этот параметр является необязательным для исходного сервера.
Если этот параметр отсутствует, его значение — «false».
fuzzymatching = "fuzzymatching" "=" ("true" / "false")
Если значение «false», поиск должен выполняться без нечёткого сопоставления.
Если значение «true» и исходный сервер поддерживает нечёткое сопоставление, поиск должен выполняться с нечётким сопоставлением Атрибутов имён персон, как указано в Раздел C.2.2.2.1.1 в PS3.4 и должен быть задокументирован в Заявлении о соответствии и, если сервис это поддерживает, в ответе Retrieve Capabilities.
Если значение «true» и исходный сервер не поддерживает нечёткое сопоставление, тогда:
Ответ должен содержать следующий заголовок HTTP Warning (см. [RFC7234] Раздел 5.5) :
Warning: 299 <service>: The fuzzymatching parameter is not supported. Only literal matching has been performed.
где <service> — это базовый URI для исходного сервера. Это может быть комбинация схемы, полномочий (authority) и пути.
Ответ может включать полезную нагрузку, содержащую соответствующий Отчёт о состоянии.
Параметр указывает Атрибуты, которые должны быть включены в ответ. Значение — либо разделённый запятыми список атрибутов, либо единственное ключевое слово «all», которое означает, что все доступные атрибуты объекта должны быть включены в ответ.
includefield = *("includefield" "=" (1#attribute / "all") )
Запрос может содержать один или несколько параметров include; однако, если присутствует параметр со значением «all», другие параметры includefield не должны присутствовать. Если атрибут является значением параметра includefield, это эквивалентно универсальному сопоставлению C-FIND (Universal matching) для этого атрибута. См. Раздел C.2.2.2.3 в PS3.4 .
Если параметр include представляет Частный элемент данных (Private Data Element), соответствующий элемент Private Creator должен быть указан как дополнительный параметр match (см. Раздел 7.8.1 в PS3.5 ).
Параметр запроса includefield соответствует Ключам возврата DIMSE (DIMSE Return Keys).
Следующие два параметра могут использоваться для разбиения на страницы ответа поиска, который может содержать больше совпадений, чем может быть удобно обработано.
offset = "offset" "=" uint
Единственный параметр указывает количество совпадений, которые исходный сервер должен пропустить перед первым возвращаемым совпадением. Значение параметра «offset» — это беззнаковое целое число (uint). Если этот Параметр запроса отсутствует, его значение по умолчанию равно 0.
limit = "limit" "=" uint
Единственный параметр указывает максимальное количество совпадений, которые исходный сервер должен вернуть в одном ответе. Значение параметра «limit» — это беззнаковое целое число. Если этот параметр отсутствует, его значение определяется, как указано в 8.3.4.4.1.
Запросы поиска должны быть идемпотентными, то есть два отдельных поисковых запроса с одним и тем же Целевым ресурсом, Параметрами запроса и Полями заголовка должны возвращать один и тот же упорядоченный список совпадений, если набор совпадений на исходном сервере не изменился.
Результаты, возвращённые в ответе, определяются следующим образом:
Если (results = 0), то совпадений нет, и должен быть возвращён ответ 200 (OK) с пустой полезной нагрузкой. Когда Приемлемый тип мультимедиа — application/dicom+json, пустая полезная нагрузка должна быть закодирована как пустой массив JSON ([]). Когда Приемлемый тип мультимедиа — application/dicom+xml, пустая полезная нагрузка должна быть закодирована как пустой корневой элемент NativeDicomModel.
В предыдущих версиях Стандарта при отсутствии совпадений указывался ответ 204 (No Content). Ответ 204 не имеет тела сообщения, тогда как ответ 200 (OK) включает тело сообщения (которое может быть пустым). Ответ 200 (OK) с пустой полезной нагрузкой согласуется с другими сервисами DICOMweb и с [RFC9110], который рекомендует использовать 200, когда представление ответа описывает результат, даже если представление имеет нулевую длину.
В противном случае должен быть возвращён ответ 200 (OK) с полезной нагрузкой, содержащей результаты.
Если (remaining > 0), ответ должен содержать Поле заголовка Warning (см. [RFC7234] Раздел 5.5) содержащее следующее:
Warning: 299 <service>: There are <remaining> additional results that can be requested
Ответ может включать полезную нагрузку, содержащую соответствующий Отчёт о состоянии.
Если набор совпадающих результатов изменился из-за изменений в содержимом исходного сервера, упорядоченный список результатов может отличаться для последующих Транзакций с идентичными запросами, и результаты использования параметров «offset» и «limit» могут быть несогласованными.
Единственный параметр указывает, следует ли выполнять сопоставление пустых значений.
Этот параметр является необязательным для пользовательского агента.
Этот параметр является необязательным для исходного сервера.
Если этот параметр отсутствует, его значение — «false».
emptyvaluematching = "emptyvaluematching" "=" ("true" / "false")
Если значение «false», поиск должен выполняться без сопоставления пустых значений.
Если значение «true» и исходный сервер поддерживает сопоставление пустых значений, поиск должен выполняться с сопоставлением пустых значений Атрибутов, как указано в Раздел C.2.2.2.7 «Сопоставление пустых значений» в PS3.4 и должен быть задокументирован в Заявлении о соответствии и, если сервис это поддерживает, в ответе Retrieve Capabilities.
Если значение «true» и исходный сервер не поддерживает сопоставление пустых значений, тогда:
Ответ должен содержать следующий заголовок HTTP Warning (см. [RFC7234] Раздел 5.5):
Warning: 299 <service>: The emptyvaluematching parameter is not supported. Empty Value Matching has not been performed.
где <service> — это базовый URI для исходного сервера. Это может быть комбинация схемы, полномочий (authority) и пути.
Ответ может включать полезную нагрузку, содержащую соответствующий Отчёт о состоянии.
Единственный параметр указывает, следует ли выполнять множественное сопоставление значений.
Этот параметр является необязательным для пользовательского агента.
Этот параметр является необязательным для исходного сервера.
Если этот параметр отсутствует, его значение — «false».
multiplevaluematching = "multiplevaluematching" "=" ("true" / "false")
Если значение «false», поиск должен выполняться без множественного сопоставления значений.
Если значение «true» и исходный сервер поддерживает множественное сопоставление значений, поиск должен выполняться с множественным сопоставлением значений Атрибутов, как указано в Раздел C.2.2.2.8 «Множественное сопоставление значений» в PS3.4 и должен быть задокументирован в Заявлении о соответствии и, если сервис это поддерживает, в ответе Retrieve Capabilities.
Если значение «true» и исходный сервер не поддерживает множественное сопоставление значений, тогда:
Поиск должен выполняться без множественного сопоставления значений.
Ответ должен содержать следующий заголовок HTTP Warning (см. [RFC7234] Раздел 5.5):
Warning: 299 <service>: The multiplevaluematching parameter is not supported. Multiple Value Matching has not been performed.
где <service> — это базовый URI для исходного сервера. Это может быть комбинация схемы, полномочий (authority) и пути.
Ответ может включать полезную нагрузку, содержащую соответствующий Отчёт о состоянии.
Этот раздел определяет синтаксис и поведение Параметров запроса для запросов получения Отрисованных типов мультимедиа (Rendered Media Types).
Все Транзакции получения для Отрисованных типов мультимедиа должны поддерживать эти параметры.
Параметры запроса, определённые в этом разделе, задают различные преобразования отрисовки, которые должны быть применены к DICOM-изображениям, видео и тексту, содержащимся в родительском DICOM-ресурсе.
Следующие правила относятся ко всем параметрам, определённым в этом разделе:
Все параметры являются необязательными для пользовательского агента.
Эти параметры применяются только к ресурсам Single Frame Image, Multi-Frame Image, Video и Text. См. Раздел 8.7.2.
Набор преобразований, заданных параметрами в этом разделе, должен быть применён к изображениям так, как если бы параметры были Состоянием представления (Presentation State). Исходный сервер определяет представление других объектов, управляющих отображением изображений, таких как Структурированные отчёты или Объекты сегментации.
Преобразования Состояния представления применяются с использованием соответствующего конвейера отрисовки, указанного в Раздел N.2 «Последовательность преобразования пикселей» в PS3.4. Любые параметры Source Image Region применяются после любых параметров Состояния представления. Любые параметры Viewport применяются после любых параметров Source Image Region.
Даже если выходные данные изображения определены в P-Values (значения в оттенках серого, предназначенные для отображения на устройстве, откалиброванном по DICOM Grayscale Standard Display Function PS3.14), или содержат ICC-профиль, оттенки серого или цветовое пространство для отрисованного изображения не определяются настоящим Стандартом.
Таблица 8.3.5-1 показывает Параметры запроса, которые могут использоваться при запросе Отрисованного представления.
Таблица 8.3.5-1. Параметры запроса для отрисованного получения
accept |
Rendered Media Type |
||
annotation |
"patient" and/or "technique" |
||
charset |
character set token |
||
quality |
uint |
||
viewport |
vw, vh [, sx, sy, sw, sh ] |
||
viewport |
vw, vh |
||
window |
center, width, shape |
||
iccprofile |
"no", "yes", "srgb", "adobergb", "rommrgb" or "displayp3" |
Этот параметр указывает, что визуализированные изображения или видео будут иметь аннотации. Его имя — «annotation», а его значение — разделённый запятыми список из одного или нескольких ключевых слов. Он имеет следующий синтаксис:
annotation = %s"annotation=" 1#( %s"patient" / %s"technique" )
Если этот параметр отсутствует, аннотации не должны применяться.
Конвейеры визуализации изображений, указанные в PS3.4, требуют, чтобы аннотации применялись после применения всех остальных параметров и визуализации изображения или видео. Точный характер и представление аннотаций определяются исходным сервером и «впечатываются» в визуализированное содержимое.
Исходный сервер может поддерживать дополнительные ключевые слова, которые должны быть документированы в Заявлении о соответствии и, если служба это поддерживает, в ответе Retrieve Capabilities.
Если какое-либо из значений параметра не является ключевым словом или значения параметра отсутствуют, исходный сервер должен вернуть ответ 400 (Bad Request) и может включить полезную нагрузку, содержащую соответствующее сообщение об ошибке.
Исходный сервер должен игнорировать любые неподдерживаемые значения параметра. Если присутствуют неподдерживаемые значения, исходный сервер должен включить следующее поле заголовка:
Warning 299 <service>: The following annotation values are not supported: <values>
и может включить полезную нагрузку, содержащую соответствующее предупреждение.
Точный характер и представление аннотации определяются исходным сервером. Аннотация впечатывается в пиксели визуализированного изображения.
Пользовательский агент, желающий большего контроля над аннотациями, может получить изображение, опуская параметр «annotation», отдельно получить метаданные и создать настраиваемые аннотации на изображении.
Пользовательский агент, желающий большего контроля над аннотациями, может получить изображение, опуская параметр «annotation», отдельно получить метаданные и создать настраиваемые аннотации на изображении.
Целевой ресурс уже может содержать «впечатанный» текст, который находится вне контроля этого параметра.
Параметр "quality" задаёт запрошенное качество визуализированных изображений или видео. Он имеет следующий синтаксис:
quality = %s"quality=" uint
Если значение этого параметра отсутствует или не является целым числом от 1 до 100 включительно, ответ должен быть 400 (Bad Request) и может включать полезную нагрузку, содержащую соответствующее сообщение об ошибке.
Параметр "quality" поддерживается только для типов носителей, допускающих сжатие с потерями.
Значение этого параметра определяется исходным сервером и должно быть документировано в Заявлении о соответствии и, если Служба это поддерживает, в ответе Retrieve Capabilities.
Декомпрессия и повторное сжатие могут ухудшить качество изображения, если исходное изображение уже было необратимо сжато. Если изображение уже было сжато с потерями в том же формате, который требуется (например, jpeg), оно может быть отправлено как есть без декомпрессии и повторного сжатия.
Исходный сервер может проигнорировать параметр quality, если результирующее качество изображения было бы слишком низким.
Параметр "viewport" задаёт прямоугольную область исходного изображения(ий) или видео для обрезки и прямоугольную область, соответствующую размеру области просмотра пользовательского агента, до которой должно быть масштабировано обрезанное изображение или видео.
Синтаксис этого параметра для экземпляра Presentation State или Thumbnail:
%s"viewport=" vw "," vh
%s"viewport=" vw "," vh ["," [sx] "," [sy] "," [sw] "," [sh] ]
Исходный сервер должен обрезать исходные изображения или видео до области, заданной параметрами sx, sy, sw и sh. Затем он должен масштабировать исходное содержимое, сохраняя пропорции обрезанной области, пока ширина или высота визуализированного содержимого не совпадёт с шириной или высотой области просмотра, в зависимости от того, что позволяет избежать усечения. Иными словами, масштабирование области просмотра делает изображение(я) максимально большим в пределах области просмотра без переполнения области просмотра и без искажения изображения.
Если какое-либо из необязательных значений параметра отсутствует, должно использоваться значение по умолчанию. Отдельные значения могут быть опущены, но запятые между значениями должны присутствовать. Например:
viewport=512,512,,,512,512
Отсутствующие значения параметров sx и sy по умолчанию равны 0.
Если конечные значения опущены, то и конечные запятые должны быть опущены. Например:
viewport=1024,1024
Отсутствующие sx, sy, sw, sh получат свои значения по умолчанию, т. е. изображение(я) не должны обрезаться, т. е. визуализируется полное изображение.
Если параметр viewport отсутствует, визуализированное изображение(я) или видео не должны масштабироваться, т. е. визуализированное изображение(я) должно содержать ту же матрицу пикселей, что и исходное DICOM-изображение.
Если верно любое из следующего:
то ответ должен быть 400 (Bad Request) и может включать полезную нагрузку, содержащую соответствующий отчёт о статусе.
Значения по умолчанию для sx и sy отличаются от значений по умолчанию в Specified Displayed Area в Presentation States, где используются целочисленные значения с верхним левым углом (1\1). См. Раздел C.10.4 в PS3.3 .
Параметр "window" управляет оконной обработкой изображений или видео, как определено в Раздел C.8.11.3.1.5 в PS3.3 . It has the following syntax:
%s"window=" center "," width "," function
Они соответствуют значениям VOI LUT Function (0028,1056), записанным с разным регистром и пунктуацией. См. Раздел C.11.2.1.2 в PS3.3 .
Все три параметра должны присутствовать с допустимыми значениями.
Если какое-либо из значений параметра отсутствует или имеет неверный формат, исходный сервер должен вернуть ответ 400 (Bad Request) и может включить полезную нагрузку, содержащую соответствующее сообщение об ошибке.
Если Целевой Ресурс является Presentation State, этот параметр не должен использоваться. Если этот параметр присутствует, когда Целевой Ресурс является Presentation State, исходный сервер должен вернуть 400 (Bad Request).
Параметр "iccprofile" задаёт цветовые характеристики и включение ICC-профиля в визуализированные изображения. Он имеет следующий синтаксис:
%s"iccprofile=" 1#( %s"no" / %s"yes" / %s"srgb" / %s"adobergb" / %s"rommrgb" / %s"displayp3" )
|
указывает, что ICC-профиль не должен присутствовать в визуализированном изображении в ответе. |
|
|
указывает, что ICC-профиль должен присутствовать в визуализированном изображении в ответе, описывая его цветовые характеристики, если Тип Носителя поддерживает встроенные ICC-профили. |
|
|
указывает, что ICC-профиль sRGB должен присутствовать в изображении, если Тип Носителя поддерживает встроенные ICC-профили, и что пиксели визуализированного изображения в ответе должны быть преобразованы из их исходного цветового пространства и закодированы в цветовом пространстве sRGB [IEC 61966-2.1]. |
|
|
указывает, что ICC-профиль Adobe RGB должен присутствовать в изображении, если Тип Носителя поддерживает встроенные ICC-профили, и что пиксели визуализированного изображения в ответе должны быть преобразованы из их исходного цветового пространства и закодированы в цветовом пространстве Adobe RGB [Adobe RGB]. |
|
|
указывает, что ICC-профиль ROMM RGB должен присутствовать в изображении, если Тип Носителя поддерживает встроенные ICC-профили, и что пиксели визуализированного изображения в ответе должны быть преобразованы из их исходного цветового пространства и закодированы в цветовом пространстве ROMM RGB [ISO 22028-2]. |
|
|
указывает, что ICC-профиль Display-P3 должен присутствовать в изображении, если Тип Носителя поддерживает встроенные ICC-профили, и что пиксели визуализированного изображения в ответе должны быть преобразованы из их исходного цветового пространства и закодированы в цветовом пространстве Display-P3 [Display-P3] |
Когда этот параметр отсутствует:
ICC-профиль в изображении в ответе должен быть:
ICC-профилем цветового пространства, явно указанного параметром,
иначе — ICC-профиль, закодированный в исходном атрибуте DICOM ICC Profile (0028,2000), если таковой имеется, подходящий для выбранного кадра,
иначе — ICC-профиль, если таковой имеется, встроенный в сохранённое сжатое представление выбранного кадра,
иначе — по усмотрению исходного сервера, ICC-профиль общеизвестного цветового пространства, перечисленного в Раздел C.11.15.1.2 «Color Space» в PS3.3, подходящего для типа и источника изображения.
Если Тип Носителя не поддерживает встроенные ICC-профили:
Этот параметр позволяет информации ICC-профиля присутствовать в изображении в ответе, чтобы пользовательский агент мог использовать её для локального управления цветом (например, браузер с поддержкой ICC-профилей может применять профиль при отображении визуализированного изображения в ответе).
Этот параметр предоставляет ограниченный механизм для запроса того, чтобы исходный сервер выполнил некоторое управление цветом. Он предоставляет названия общеизвестных цветовых пространств для визуализированного изображения в ответе. Он не предоставляет механизм для передачи произвольного ICC-профиля, такого как калибровочный профиль дисплея, поэтому он не освобождает пользовательский агент от необходимости выполнять собственную калибровку цвета и управление цветом.
ICC-профили теоретически могут быть велики по сравнению со сжатыми пиксельными данными одного кадра, поэтому пользовательский агент может указать значение параметра "no", получить значения атрибута DICOM ICC Profile (0028,2000), применимые к нескольким кадрам, из метаданных и объединить их самостоятельно.
ICC-профили встраиваются в визуализированные изображения типа image/jpeg в виде одного или нескольких блоков в сегментах маркеров APP2 с идентификатором "ICC_PROFILE", как определено в Приложении B [ISO 15076-1].
ICC-профили встраиваются в визуализированные изображения типа image/jp2 либо как профили JP2 Restricted, либо как JPX Full в соответствии с [ISO/IEC 15444-1] и [ISO/IEC 15444-2] соответственно; визуализированные изображения в ответе не подлежат запрету на включение JP2-блока в потоки сжатых данных JPEG 2000 в DICOM-изображениях.
ICC-профили встраиваются в визуализированные изображения типа image/png в блоке iCCP, как определено в [ISO 15948].
Если Целевой Ресурс является одиночным экземпляром Presentation State, этот экземпляр может содержать ссылки на одну или несколько Series, каждая из которых может содержать один или несколько Instances, каждый из которых может содержать один или несколько Кадров. Ответ должен вернуть визуализированные версии всех поддерживаемых Instances и Кадров, на которые ссылается экземпляр Presentation State.
Например, если экземпляр Presentation State
Если экземпляр Presentation State содержит Blending Sequence, то визуализированные изображения в ответе должны соответствовать кадрам входных данных, имеющим элемент Blending Sequence Item со значением Blending Position (0070,0405), равным UNDERLYING. См. Раздел C.11.14.1.1 «Blending Sequence» в PS3.3 .
Исходный сервер должен визуализировать все изображения, на которые ссылается Presentation State, в Допустимом Типе Носителя, используя конвейер визуализации, указанный в Раздел N.2 «Последовательность преобразования пикселей» в PS3.4.
Если в ответе более одного Кадра, они должны быть упорядочены по следующим критериям:
Если вышеизложенное не полностью определяет порядок кадров, исходный сервер должен устранить любую оставшуюся неоднозначность в порядке.
Если Целевой Ресурс является Presentation State и Если Presentation Size Mode равен SCALE TO FIT или TRUE SIZE, то отображаемая область, указанная в Presentation State, должна быть масштабирована с сохранением пропорций для соответствия размеру, заданному параметрами rows и columns, если они присутствуют; в противном случае отображаемая область, выбранная в состоянии представления, будет возвращена без масштабирования.
Намерение режима TRUE SIZE в состоянии представления не может быть удовлетворено, поскольку физический размер пикселей, отображаемых веб-браузером, вряд ли известен. Если Presentation Size Mode в состоянии представления — MAGNIFY, отображаемая область, указанная в представлении, должна быть увеличена (масштабирована), как указано в состоянии представления. Затем она будет обрезана в соответствии с размером, заданным параметрами viewport, если они присутствуют.
Любые аннотации, относительные к Displayed Area и указанные в состоянии представления, визуализируются относительно Specified Displayed Area в состоянии представления, а не относительно размера возвращённого изображения.
Хотя выходные данные состояния представления определены в DICOM как P-Values (значения в градациях серого, предназначенные для отображения на устройстве, откалиброванном по DICOM Grayscale Standard Display Function PS3.14), шкала серого или цветовое пространство для изображений, возвращаемых запросом, не определяется настоящим стандартом.
Если Presentation State содержит ICC Profile Module, изображение(я) в ответе должно включать ICC-профиль, как указано в Раздел 8.3.5.1.5.
Исходный сервер должен отклонить запрос, если верно любое из следующего:
и исходный сервер должен вернуть ответ 400 (Bad Request) и может включить полезную нагрузку, содержащую соответствующее сообщение об ошибке.
Таблица 8.3.5-2 показывает параметры запроса, которые могут использоваться при запросе представления эскиза (Thumbnail).
Таблица 8.3.5-2. Параметры запроса для эскизов
accept |
Rendered Media Type |
||
charset |
character set token |
||
viewport |
vw, vh |
Параметр Viewport имеет только значения ширины и высоты. Если параметр viewport не предоставлен, исходный сервер определит размер эскиза (Thumbnail).
Параметры запроса, определённые в этом разделе, управляют созданием новых 3D- или MPR-изображений на основе объёмных данных, пересчитанных из Целевого Ресурса.
Следующие правила относятся ко всем параметрам, определённым в этом разделе:
Набор преобразований, заданный параметрами в этом разделе, должен быть применён к изображениям, как если бы параметры были Volumetric Presentation State, то есть в порядке, указанном применимым конвейером визуализации изображений, указанным в Раздел FF.2 PS3.4.
Таблица 8.3.5-3, «Параметры запроса для получения визуализированного объёма» показывает параметры запроса, которые могут использоваться при запросе визуализированного представления объёма (Rendered Volume Representation).
Таблица 8.3.5-3. Параметры запроса для получения визуализированного объёма
volumeinputreference |
uid or frame |
||
match |
; See attribute matching rules in Section 8.3.4.1 |
||
renderingmethod |
"volume_rendered", "maximum_ip", "minimum_ip" or "average_ip" |
||
orientation |
"a", "p", "r", "l", "h" or "f" |
Изображение (однокадровое или многокадровое) или Состояния объёмного представления |
|
viewpointposition |
px, py, pz |
Изображение (однокадровое или многокадровое) или Состояния объёмного представления |
|
viewpointlookat |
lx, ly, lz |
Изображение (однокадровое или многокадровое) или Состояния объёмного представления |
|
viewpointup |
ux, uy, uz |
Изображение (однокадровое или многокадровое) или Состояния объёмного представления |
|
mprslab |
st |
||
swivelrange |
sr |
||
volumetriccurvepoint |
px, py, pz |
||
animationstepsize |
ss |
||
animationrate |
rt |
||
renderedvolumetricmetadata |
"yes" |
Ресурсы Rendered MPR Volume и Rendered 3D Volume имеют два взаимоисключающих варианта для определения начальной ориентации повторно дискретизированных объёмных данных:
При использовании параметров анимации начальный кадр определяется параметрами ориентации. Параметры "swivelrange", "volumetriccurvepoint" и "animationstepsize" определяют последующие кадры. При анимации нескольких наборов временно связанных, пространственно совмещённых объёмных данных (например, многофазного исследования) исходный сервер определяет отображаемую фазу начального кадра.
Не существует параметра для управления типом проекции, используемой при рендеринге. Исходный сервер должен использовать ортографическую проекцию для ресурсов Rendered 3D Volume. См. Раздел C.11.30.1 в PS3.3.
Не существует параметра для явного управления полем обзора рендеринга, высотой MPR-вида или шириной MPR-вида (см. Раздел C.11.30 в PS3.3 и Раздел C.11.26 в PS3.3). Параметр "viewport" может использоваться для масштабирования возвращаемых данных. См. Раздел 8.3.5.1.3.
Параметр "volumeinputreference" идентифицирует экземпляр или кадр внутри экземпляра, из которого исходный сервер должен извлечь характеристики и идентифицировать дополнительные экземпляры или кадры в целевом ресурсе с теми же значениями этих характеристик. Пользовательский агент использует этот параметр для идентификации желаемого подмножества, когда целевой ресурс является надмножеством предполагаемых объёмных данных. Исходный сервер должен идентифицировать подмножество, соответствующее требованиям к входным объёмным данным для ресурсов Rendered MPR Volume и Rendered 3D Volume (см. Раздел C.11.23.1 в PS3.3).
Синтаксис этого параметра для многокадрового изображения:
%s" volumeinputreference =" uid "," frame
В противном случае он имеет вид:
%s" volumeinputreference =" uid
uid
соответствует Referenced SOP Instance UID (0008,1155), а кадр соответствует Referenced Frame Number (0008,1160). См. Раздел 10.3 в PS3.3.
Исходный сервер должен создать объёмные данные из экземпляров или кадров, имеющих характеристики, идентичные ссылке на входные объёмные данные, на основе специфической для реализации логики.
Исходный сервер должен вернуть 400 (Bad Request) и может включить соответствующий отчёт о статусе, если верно любое из следующих условий:
Параметр "match" задаёт общие характеристики пар атрибут/значение DICOM для объёмных данных.
Когда пользовательский агент идентифицирует целевой ресурс, который является надмножеством предполагаемых объёмных данных, он может указать пары атрибут/значение, задающие критерии сопоставления для идентификации конкретных экземпляров или кадров в целевом ресурсе для повторной дискретизации в качестве объёмных данных. Результирующее подмножество должно соответствовать требованиям к входным объёмным данным для ресурсов Rendered MPR Volume и Rendered 3D Volume (см. Раздел C.11.23.1 в PS3.3).
См. Раздел 8.3.4.1 для синтаксиса этого параметра.
Пользовательский агент может включить следующие атрибуты в параметр:
Исходный сервер должен реконструировать объёмные данные, удовлетворяющие критериям входных объёмных данных.
Исходный сервер должен вернуть 400 (Bad Request) и может включить соответствующий отчёт о статусе, если верно любое из следующих условий:
Параметр "renderingmethod" задаёт алгоритм отображения, применяемый к объёмным данным.
%s"renderingmethod=" 1#( %s"volume_rendered" / %s"maximum_ip" / %s"minimum_ip" / %s"average_ip" )
Эти значения соответствуют значениям с различной капитализацией атрибута Rendering Method (0070,120D). См. Раздел C.11.23 в PS3.3 и Раздел C.11.30 в PS3.3.
Не существует параметра для управления типом проекции, используемой при рендеринге. Ресурсы Rendered 3D Volume используют ортографическую проекцию. См. Рисунок C.11.30-1 в PS3.3.
Для ресурсов Rendered MPR Volume этот параметр описывает алгоритм отображения, применяемый, когда толщина среза превышает один воксель. Значение этого параметра обычно — average_ip.
Если параметр "renderingmethod" отсутствует, исходный сервер может применить метод рендеринга по умолчанию в зависимости от ресурса или, в качестве альтернативы, вернуть 400 (Bad Request) и может включить соответствующий отчёт о статусе.
Если целевой ресурс является состоянием объёмного представления, исходный сервер должен вернуть 400 (Bad Request) и может включить соответствующий отчёт о статусе.
Параметр "orientation" задаёт ориентацию пациента с точки зрения камеры для текущего объёмного 3D- или MPR-представления.
%s"orientation =" 1#( %s"a" / %s"p" / %s"r" / %s"l" / %s"h" / %s"f" )
a |
|
p |
|
r |
|
l |
|
h |
|
f |
Эти значения соответствуют значениям с различной капитализацией атрибутов Patient Orientation (0020,0020) и Image Orientation (Patient) (0020,0037). См. Раздел C.7.6.1.1.1 в PS3.3 и Приложение A в PS3.17.
Если целевой ресурс является состоянием объёмного рендеринга и присутствуют любые параметры запроса ориентации, исходный сервер должен применить параметры запроса вместо атрибутов геометрии в Multi-Planar Reconstruction Geometry Module или Volume Render Geometry Module.
Это предназначено для того, чтобы позволить пользователю корректировать ориентацию после просмотра начальной ориентации, определённой в состоянии объёмного представления.
Ориентация используется для выбора желаемой стандартной анатомической позиции отрисованного объёма. Например, "a" задаёт направление отрисованного объёма, наиболее точно совпадающее с передней плоскостью пациента. Углы обзора, выходящие за пределы стандартных ортогональных анатомических позиций, управляются параметрами ориентации камеры (т.е. "viewpointposition", "viewpointlookat" или "viewpointup").
Исходный сервер должен определить Viewpoint Position (0070,1603), Viewpoint LookAt Point (0070,1604) и Viewpoint Up Direction (0070,1605) на основе значения параметра "orientation".
Если присутствуют как параметр "orientation", так и любой из параметров ориентации камеры, исходный сервер должен вернуть 400 (Bad Request) и может включить соответствующий отчёт о статусе.
Параметр "viewpointposition" задаёт положение камеры в системе координат точки наблюдения (VCS). См. Раздел C.11.30.1 в PS3.3.
%s"viewpointposition =" px "," py "," pz
Это соответствует атрибуту Viewpoint Position (0070,1603). См. Раздел C.11.30 в PS3.3.
Если целевой ресурс является состоянием объёмного представления и присутствуют любые параметры запроса ориентации, исходный сервер должен применить параметры запроса вместо атрибутов геометрии в Multi-Planar Reconstruction Geometry Module или Volume Render Geometry Module.
Любой или все параметры ориентации камеры могут быть включены. Если какой-либо из параметров запроса ориентации камеры отсутствует, исходный сервер может применить значение по умолчанию (например,
или вернуть 400 (Bad Request) и может включить соответствующий отчёт о статусе.
Параметр "viewpointlookat" задаёт точку, на которую смотрит камера, в системе координат точки наблюдения (VCS). См. Раздел C.11.30.1 в PS3.3.
%s"viewpointlookat =" lx "," ly "," lz
lx, ly and lz |
Точка направления взгляда точки наблюдения (т.е. точка, на которую смотрит камера). Точка (x,y,z) в VCS. |
Это соответствует атрибуту Viewpoint LookAt Point (0070,1604). См. Раздел C.11.30 в PS3.3.
Если целевой ресурс является состоянием объёмного представления и присутствуют любые параметры запроса ориентации, исходный сервер должен применить параметры запроса вместо атрибутов геометрии в Multi-Planar Reconstruction Geometry Module или Volume Render Geometry Module.
Параметр "viewpointup" задаёт вертикальную ориентацию камеры в системе координат точки наблюдения (VCS). См. Раздел C.11.30.1 в PS3.3.
%s"viewpointup =" ux "," uy "," uz
ux, uy and uz |
Направление вверх точки наблюдения (т.е. направление, в котором указывает верх камеры). Вектор (x,y,z) в VCS. |
Это соответствует атрибуту Viewpoint Up Direction (0070,1605). См. Раздел C.11.30 в PS3.3.
Если целевой ресурс является состоянием объёмного представления и присутствуют любые параметры запроса ориентации, исходный сервер должен применить параметры запроса вместо атрибутов геометрии в Multi-Planar Reconstruction Geometry Module или Volume Render Geometry Module.
Параметр "mprslab" задаёт толщину плоскости MPR. Этот параметр приводит к ортографическому рендерингу с заданной толщиной с использованием метода, определённого параметром "renderingmethod". См. Раздел C.11.26.1.1 в PS3.3 для получения дополнительной информации.
Синтаксис этого параметра для Rendered MPR Volume:
%s"mprslab =" st
Это соответствует атрибуту MPR Slab Thickness (0070,1503). См. Раздел C.11.26 в PS3.3.
Толщина среза возвращаемых данных может не совпадать с запрошенной толщиной из-за размера вокселей целевого ресурса.
Если параметр "renderingmethod" отсутствует, исходный сервер может применить метод рендеринга по умолчанию в зависимости от ресурса и/или толщины среза или, в качестве альтернативы, вернуть 400 (Bad Request) и может включить соответствующий отчёт о статусе.
Если целевой ресурс является состоянием объёмного представления, исходный сервер должен вернуть 400 (Bad Request) и может включить соответствующий отчёт о статусе.
Параметр "swivelrange" задаёт угловой диапазон, в пределах которого отрисованный объём вращается вокруг оси поворота, которая определяется как ось, параллельная "viewpointup" и проходящая через "viewpointlookat". Отрисованный объём вращается вперёд-назад.
%s"swivelrange =" sr
Это соответствует значению SWIVEL с различной капитализацией атрибута Presentation Animation Style (0070,1A01) и атрибуту Swivel Range (0070,1A06). См. Раздел C.11.29 в PS3.3 и Раздел FF.2.4.2 в PS3.4.
Исходный сервер должен создать анимацию с количеством кадров, равным значению Swivel Range, делённому на "animationstepsize".
Если параметр "swivelrange" присутствует, а параметр "animationrate" отсутствует, исходный сервер должен определить частоту анимации.
Если целевой ресурс является состоянием объёмного представления, исходный сервер должен вернуть 400 (Bad Request) и может включить соответствующий отчёт о статусе.
Параметр "volumetriccurvepoint" задаёт координаты точек на кривой анимации в опорной системе координат состояния объёмного представления, в мм. Для каждой точки кривой должна присутствовать одна тройка (x,y,z). Для анимации требуется как минимум две точки. См. Раздел C.11.29.1 в PS3.3.
%s"volumetriccurvepoint =" px "," py "," pz
Это соответствует атрибуту Volumetric Curve Points (0070,150D). См. Раздел C.11.29 в PS3.3.
Исходный сервер должен создать анимацию с количеством кадров, равным общей длине объёмной кривой, делённой на "animationstepsize".
Если параметры "volumetriccurvepoint" присутствуют, а параметр "animationrate" отсутствует, исходный сервер должен определить частоту анимации.
Если целевой ресурс является состоянием объёмного представления, исходный сервер должен вернуть 400 (Bad Request) и может включить соответствующий отчёт о статусе.
Параметр "animationstepsize" задаёт расстояние между шагами анимации или кадрами в анимации объёмного рендеринга.
Для анимации поворота расстояние между шагами измеряется в градусах. Для объёмной кривой расстояние между шагами измеряется в мм вдоль кривой анимации.
%s"animationstepsize=" ss
Это соответствует атрибуту Animation Step Size (0070,1A05). См. Раздел C.11.29 в PS3.3.
Исходный сервер должен создать анимацию с количеством кадров, равным одному из следующих значений:
Если параметр "animationstepsize" отсутствует и присутствует "swivelrange" или "volumetriccurvepoint", исходный сервер может применить размер шага анимации по умолчанию или, в качестве альтернативы, вернуть 400 (Bad Request) и может включить соответствующий отчёт о статусе.
Если целевой ресурс является состоянием объёмного представления, исходный сервер должен вернуть 400 (Bad Request) и может включить соответствующий отчёт о статусе.
Параметр "animationrate" задаёт частоту, с которой отображается анимированное 3D- или MPR-объёмное представление.
%s"animationrate=" rt
Это соответствует Recommended Animation Rate (0070,1A03) в Разделе C.11.29 в PS3.3 и Разделе FF.2.4.2 в PS3.4.
Воспроизведение возвращаемых данных на клиенте может как достигать, так и не достигать запрошенной частоты анимации.
Если параметр "animationrate" отсутствует и присутствуют другие параметры анимации (например, "swivelrange", "animationstepsize" или "volumetriccurvepoint"), исходный сервер может применить частоту анимации по умолчанию или, в качестве альтернативы, вернуть 400 (Bad Request) и может включить соответствующий отчёт о статусе.
Если целевой ресурс является состоянием объёмного представления, исходный сервер должен вернуть 400 (Bad Request) и может включить соответствующий отчёт о статусе.
Параметр "renderedvolumetricmetadata" указывает, что полезная нагрузка ответа содержит только модуль ответа отрисованного объёма (Rendered Volume Response Module) с параметрами, применёнными исходным сервером для генерации объёмного рендеринга.
%s"renderedvolumetricmetadata =" "yes"
yes |
Указывает, что в полезной нагрузке ответа должен присутствовать только Rendered Volume Response Module. |
Исходный сервер должен вернуть полезную нагрузку ответа, содержащую Rendered Volume Response Module, как указано в Приложении K.
Если этот параметр отсутствует, модуль ответа не запрашивается, и 2D-представление отрисованного объёма возвращается, как описано в Разделе 10.4.1.1.7 и Разделе 10.4.1.1.8.
Rendered Volume Response Module содержит полный набор параметров запроса, включая как те, что были указаны пользовательским агентом в запросе, так и те, что были определены исходным сервером.
Для любых двух запросов, у которых параметры запроса, целевой ресурс и поля заголовка идентичны, значения параметров запроса в модуле Rendered Volume Response Module, возвращаемом исходным сервером, должны быть идентичными.
При повторении запроса на рендеринг ожидается, что исходный сервер предоставит согласованный результат. Необязательно, чтобы он был абсолютно идентичным.
Если целевой ресурс является состоянием объёмного представления, исходный сервер должен вернуть 400 (Bad Request) и может включить соответствующий отчёт о статусе.
В следующих разделах описаны важные поля заголовка, некоторые из которых имеют более строгие требования, чем те, что указаны в стандарте HTTP.
HTTP использует поля заголовка Accept и Content-Type для согласования содержимого и типизации данных. Типы медиа в поле заголовка Accept запроса определяют типы медиа, которые пользовательский агент считает приемлемыми в ответе. Тип медиа в поле заголовка Content-Type сообщения или части полезной нагрузки описывает формат представления, содержащегося в полезной нагрузке сообщения или её части.
Поля заголовка согласования содержимого в запросах позволяют пользовательскому агенту указать приемлемые представления для ответа. Таблица 8.4.1-1 содержит список полей заголовка согласования содержимого. Значения в этих полях применяются к любому содержимому ответа, включая представления целевого ресурса, представления ошибок или статуса обработки, а также, возможно, к различным текстовым строкам, которые могут появляться в рамках протокола HTTP. См. [RFC7231] Раздел 5.3.
Таблица 8.4.1-1. Поля заголовка согласования содержимого
|
Все запросы, ожидающие получить ответ с полезной нагрузкой, должны содержать поле заголовка Accept. См. Раздел 8.4.1.1. |
|||
|
Поле заголовка Accept-Charset может быть отправлено пользовательским агентом для указания того, какие кодировки символов приемлемы в содержимом ответа. См. [RFC7231] Раздел 5.3.3. |
|||
|
Поле заголовка Accept-Encoding может использоваться для указания кодировок содержимого (см. [RFC7231] Раздел 3.1.2.1) acceptable in the response. See [RFC7231] Раздел 5.3.4. |
|||
|
Поле заголовка Accept-Language может использоваться пользовательскими агентами для указания набора естественных языков, предпочитаемых в ответе. См. [RFC7231] Раздел 5.3.5. |
Пользовательские агенты используют поле заголовка Accept для указания приемлемых типов медиа для полезной нагрузки ответа. Поле заголовка Accept может использоваться для указания того, что полезная нагрузка ответа специально ограничена набором желаемых типов медиа. Оно имеет следующий синтаксис:
Accept = "Accept:" #( media-range [accept-params] )
media-range = ("*/*"
/ (type "/" "*")
/ (type "/" subtype)
) *(OWS ";" OWS accept-params)
accept-params = weight *(accept-ext)
Большинство запросов имеют поле заголовка Accept, содержащее разделённый запятыми список одного или нескольких диапазонов медиа. Диапазон медиа расширяет тип медиа подстановочными знаками (*/* или type/*) и параметрами, которые не определены для типов медиа. См. [RFC7231] Раздел 5.3.2 for details.
Например, если пользовательский агент готов принять любой тип медиа в ответе, он должен включить */* в качестве значения поля заголовка Accept.
Многие поля заголовка согласования содержимого используют параметр веса, называемый "q" (без учёта регистра), для назначения относительного "веса" предпочтению для соответствующего типа содержимого.
Типам медиа в заголовке Accept можно задать приоритет с помощью весов.
weight = OWS ";" OWS "q=" qvalue
qvalue = ("0" ["." 0*3DIGIT])
/ ("1" ["." 0*3("0")])
Этот вес часто называют "значением качества" или "qvalue". См. [RFC7231] Раздел 5.3.1.
Все запросы, которые могут получить ответ, содержащий полезную нагрузку, должны предоставлять поле заголовка Accept.
См. Раздел 8.7.5 для получения информации о приемлемых типах медиа.
Многие типы медиа, особенно типы text/*, определяют параметр "charset", задающий кодировку символов для представления. См. [RFC7231] Раздел 3.1.1.2.
Типы медиа DICOM определяют параметр "charset". См. Раздел 8.7.3.5.3.
application/dicom; charset=ISO-8859-1
См. Раздел 8.8.1 для получения информации о приемлемых кодировках символов.
Тип медиа в поле заголовка Content-Type сообщения или части полезной нагрузки описывает формат представления, содержащегося в полезной нагрузке или её части.
Когда сообщение имеет полезную нагрузку, поля заголовка представления содержимого предоставляют метаданные, описывающие, как интерпретировать представление(я), содержащиеся в полезной нагрузке. Таблица 8.4.2-1 описывает поля заголовка представления содержимого и требования к использованию (обязательный, условный или необязательный) для случаев, когда они должны присутствовать.
Таблица 8.4.2-1. Поля заголовка представления содержимого
|
Задаёт тип медиа представления, содержащегося в полезной нагрузке. Если сообщение имеет полезную нагрузку, оно должно иметь поле заголовка Content-Type, задающее тип медиа полезной нагрузки. См. [RFC7231] Раздел 3.1.1.5. |
|||
|
Задаёт кодирования содержимого, применённые к представлению (помимо тех, что заложены в типе медиа), и, следовательно, какое декодирование необходимо применить для получения представления в типе медиа, указанном в Content-Type. См. [RFC7230] Раздел 3.1.2.2. Content-Encoding позволяет выполнять сжатие, шифрование и/или аутентификацию представлений. Должно присутствовать, если к представлению в полезной нагрузке было применено кодирование содержимого. |
|||
|
Задаёт естественный язык(и) целевой аудитории, используемый(ые) в представлении. См. [RFC7231] Раздел 3.1.3.2. |
|||
|
Содержит URL, ссылающийся на конкретный ресурс, соответствующий представлению в полезной нагрузке. Должно присутствовать, если полезная нагрузка содержит представление ресурса. |
Поля заголовка полезной нагрузки содержат метаданные, описывающие полезную нагрузку, а не представление, которое она содержит. Таблица 8.4.3-1 описывает поля заголовка полезной нагрузки и требования к использованию (обязательный, условный или необязательный) для случаев, когда они должны присутствовать.
Таблица 8.4.3-1. Поля заголовка полезной нагрузки
|
Задаёт десятичное число октетов в полезной нагрузке. Если ответное сообщение имеет полезную нагрузку и не имеет поля заголовка Transfer-Encoding, оно должно иметь поле заголовка Content-Length, задающее длину полезной нагрузки в октетах (байтах). Не должно присутствовать, если сообщение имеет поле заголовка Transfer-Encoding. В противном случае должно присутствовать, даже если размер полезной нагрузки равен нулю. |
|||
|
Задаёт диапазон частичного представления, содержащегося в полезной нагрузке. См. [RFC7233] Раздел 4.2. Поле заголовка Content-Range отправляется в однопартийном ответе 206 (Partial Content) для указания частичного диапазона выбранного представления, enclosed как полезная нагрузка сообщения. Оно отправляется в каждой части многопартийного ответа 206 для указания диапазона, заключённого в каждой части тела. Оно отправляется в ответах 416 (Range Not Satisfiable) для предоставления информации о выбранном представлении. |
|||
|
See [RFC7230] Раздел 3.3.1. Должно присутствовать, если к полезной нагрузке применены кодирования передачи (transfer-encodings). |
Каждое ответное сообщение содержит код состояния.
Наиболее часто используемые коды состояния HTTP перечислены в Таблице 8.5-1. Большинство этих кодов подробно описаны в [RFC7231]. IANA поддерживает реестр кодов состояния HTTP [IANA HTTP Status Code Registry], содержащий полный список зарегистрированных кодов состояния.
Таблица 8.5-1. Значения кодов состояния
|
Класс кодов состояния 2xx (Успешные) указывает на то, что запрос клиента был успешно получен, понят и принят. |
||
|
Все представления целевого ресурса содержатся в полезной нагрузке. См. [RFC7231] Раздел 6.3.1. |
||
|
Запрос выполнен, и в результате был создан один или несколько новых ресурсов. См. [RFC7231] Раздел 6.3.2. |
||
|
Запрос принят для обработки, но обработка не завершена. Полезная нагрузка этого ответа должна содержать отчёт о статусе. [RFC7231] Раздел 6.3.3. Пользовательский агент может проверить соответствующие ресурсы для определения статуса в более позднее время. |
||
|
Запрос был успешным, но вложенная полезная нагрузка была изменена из ответа 200 (OK) исходного сервера преобразующим прокси-сервером. См. [RFC7230] Раздел 5.7.2 and [RFC7230] [RFC7231] Раздел 6.3.4. |
||
|
Сервер успешно выполнил запрос, и нет дополнительного содержимого для отправки в теле полезной нагрузки ответа. Это должен быть ответ, когда содержимое успешно загружено и ответ не имеет полезной нагрузки. Например, этот код состояния используется в ответе на запрос условного извлечения (Conditional Retrieve), когда целевой ресурс не был изменён. См. [RFC7231] Раздел 6.3.5. |
||
|
Сервер выполнил запрос и желает, чтобы пользовательский агент сбросил "представление документа", которое вызвало отправку запроса, к его исходному состоянию, полученному от исходного сервера. |
||
|
Класс кодов состояния 3xx (Перенаправление) указывает на то, что пользовательскому агенту необходимо предпринять дальнейшие действия для выполнения запроса. |
||
|
Исходный сервер назначил целевому ресурсу новый постоянный URI, указанный в поле заголовка Location. Этот статус обычно требуется, когда ресурс был перемещён с одного сервиса на другой, например, во время миграции. |
||
|
Исходный сервер перенаправляет пользовательский агент на другой ресурс, указанный URI в поле заголовка Location, который предоставит ответ на исходный запрос. |
||
|
Исходный сервер получил условный запрос GET или HEAD, который привёл бы к ответу 200 (OK), если бы не тот факт, что условие оказалось ложным. |
||
|
Класс кодов состояния 4xx (Ошибка клиента) указывает на то, что пользовательский агент допустил ошибку. Для всех этих кодов ошибок исходный сервер должен вернуть полезную нагрузку, содержащую пояснение ошибки и информацию о том, является ли это временным или постоянным условием, за исключением ответа на запрос HEAD. |
||
|
Сервер не может или не будет обрабатывать запрос из-за того, что воспринимается как ошибка клиента (например, неправильный синтаксис запроса, недопустимый запрос). |
||
|
Запрос не был выполнен, так как не содержит действительных учётных данных аутентификации для сервиса или целевого ресурса. Сервер, формирующий ответ 401, должен отправить поле заголовка WWW-Authenticate ([RFC7235] Раздел 4.1) containing at least one challenge applicable to the server or Target Resource. |
||
|
Исходный сервер понял запрос, но отказался его авторизовать (например, авторизованный пользователь с недостаточными привилегиями). Если учётные данные аутентификации были предоставлены в запросе, сервер считает их недостаточными для предоставления доступа. Исходный сервер может ответить 404 (Not Found), если ему не разрешено использовать этот код состояния. |
||
|
Исходный сервер не нашёл представления для целевого ресурса или не желает раскрывать, что оно существует. Это может быть временным условием. Если исходный сервер знает, что ресурс был удалён, должен быть возвращён код состояния 410 (Gone) вместо 404. |
||
|
Метод в запросе известен исходному серверу, но не поддерживается целевым сервисом или ресурсом. Исходный сервер должен включить поле заголовка Allow в ответ 405, содержащее список методов, поддерживаемых в настоящее время целевым сервисом или ресурсом. |
||
|
Целевой ресурс не имеет представления, которое было бы приемлемо для пользовательского агента согласно полям заголовка согласования содержимого в запросе, и сервер не желает предоставлять представление по умолчанию. Исходный сервер должен возвращать полезные данные, перечисляющие доступные типы носителей и соответствующие идентификаторы ресурсов. |
||
|
Запрос не может быть выполнен из-за конфликта с текущим состоянием целевого ресурса. Этот код используется в ситуациях, когда пользовательский агент может разрешить конфликт и повторно отправить запрос. Исходный сервер должен возвращать полезные данные, содержащие достаточно информации, чтобы пользовательский агент мог распознать источник конфликта. В контексте DICOM этот код может означать, что исходный сервер не смог сохранить ни одного экземпляра из-за конфликта в запросе (например, неподдерживаемый SOP Class или несоответствие экземпляров). |
||
|
Доступ к целевому ресурсу больше недоступен на исходном сервере, и это состояние, вероятно, является постоянным. Если исходный сервер не знает или не имеет возможности определить, является ли состояние постоянным, вместо него следует использовать код состояния 404 (Not Found). |
||
|
Исходный сервер отказывается принять запрос, так как поле заголовка Content-Length не было указано. |
||
|
Сервер отказывается обрабатывать запрос, поскольку полезные данные запроса больше, чем сервер готов или способен обработать. |
||
|
Сервер отказывается обслуживать запрос, поскольку цель запроса (request-target) ([RFC7230] Раздел 5.3) длиннее, чем сервер готов интерпретировать. |
||
|
Исходный сервер не поддерживает Content-Type в полезных данных запроса. Эта ошибка обычно возникает, когда пользовательский агент пытается создать или обновить ресурс. Исходный сервер должен возвращать полезные данные, перечисляющие доступные типы носителей и соответствующие идентификаторы ресурсов. |
||
|
Класс кодов состояния 5xx (Server Error) указывает на то, что сервер знает об ошибке или не способен выполнить запрошенный метод. Для всех этих кодов ошибок сервер должен отправлять пояснение ситуации ошибки и того, является ли она временной или постоянной, за исключением ответов на запрос HEAD. |
||
|
Сервер столкнулся с непредвиденным состоянием, которое помешало ему выполнить запрос. |
||
|
Сервер не поддерживает функциональность, необходимую для выполнения запроса. В контексте DICOM этот код состояния должен использоваться для ошибок «SOP Class Not Supported». |
||
|
Исходный сервер в настоящее время не может обработать запрос из-за временной перегрузки или планового обслуживания, которые, вероятно, будут устранены после некоторой задержки. |
||
|
Исходный сервер не поддерживает или отказывается поддерживать основную версию HTTP, которая использовалась в сообщении запроса. |
||
Код состояния 206 ранее (ошибочно) использовался для указания того, что была сохранена лишь часть полезных данных, и ранее (ошибочно) использовался для запросов диапазона на уровне приложения.
Когда веб-сервер определяет, что пользовательский агент не должен получать определённую информацию, веб-сервер должен тщательно выбирать код состояния и содержимое отчёта о состоянии. Например, локальная политика может предписывать веб-службе возвращать код состояния 404 (Not Found), а не 401 (Unauthorized), чтобы не позволить пользовательскому агенту сделать вывод о существовании ресурса. Код состояния и полезные данные ответа должны контролироваться политикой и контекстом, что обеспечивает баланс между удобством использования возвращаемого результата и надлежащей защитой. См. также [FHIR Access Denied] и [OWASP Information Leakage].
Как сообщения запроса, так и сообщения ответа могут иметь тела сообщений. Тело сообщения (при его наличии) HTTP-сообщения используется для передачи полезных данных сообщения. Тело сообщения идентично полезным данным, если к ним не применено кодирование содержимого, как описано в [RFC7230] Разделе 3.3.1. В этой Части Стандарта термин «полезные данные» (payload) используется для обозначения тела сообщения до применения к нему какого-либо кодирования содержимого.
Сообщение может иметь или не иметь полезных данных. Полезные данные могут быть пустыми; то есть их длина равна нулю. Если сообщение не имеет полезных данных, то оно не должно содержать ни поля заголовка Transfer-Encoding, ни Content-Length. Если сообщение имеет полезные данные, к которым применено кодирование передачи (transfer-coding), то оно должно содержать поле заголовка Transfer-Encoding. Если сообщение имеет полезные данные, к которым не применено кодирование передачи, то оно должно содержать поле заголовка Content-Length.
Любое сообщение, содержащее полезные данные, должно иметь соответствующее представление содержимого (Content Representation) [RFC7231] Раздел 3.1 и поля заголовка полезных данных (Payload Header Fields) [RFC7231] Раздел 3.3.
Полезные данные содержат представления. Полезные данные могут быть односоставными (single part) или многосоставными (multipart).
Поле заголовка Content-Type сообщения содержит тип носителя, включающий multipart/related, если полезные данные являются многосоставными, в противном случае полезные данные являются односоставными.
Сообщение с односоставными полезными данными содержит одно представление, которое описывается полями заголовка представления содержимого (см. Раздел 8.4.3), содержащимися в заголовке сообщения.
Сообщение с односоставными полезными данными должно содержать поле заголовка Content-Type с односоставным типом носителя (см. Раздел 8.7.3).
Односоставные полезные данные могут быть запрошены с помощью HTTP-запроса Range [RFC7233]. Если это поддерживается сервером, ответ должен соответствовать стандартному ответу HTTP Range [RFC7233].
Односоставные полезные данные применимы только для запросов, возвращающих ровно один элемент. Такие ответы могут быть также закодированы как многосоставные полезные данные с одним элементом, как определено в Таблице 10.4.4-1.
Сообщение с многосоставными полезными данными содержит ноль или более представлений. Каждое представление помещается в отдельную часть.
Сообщение с многосоставными полезными данными должно содержать поле заголовка Content-Type с многосоставным типом носителя.
Тип носителя корневого представления (см. [RFC2387]) может быть задан полем заголовка Content-Type сообщения. Если параметр root не указан, корневым представлением является первое представление в полезных данных.
Каждая часть в многосоставных полезных данных должна начинаться с разделительной строки (boundary), за которой следует поле заголовка Content-Type с односоставным типом носителя (см. Раздел 8.7.3), а затем другие поля, как указано в Таблице 8.6.1-1. См. также Рисунок 8.6-1. Могут быть включены и другие поля заголовка.
Понимание природы закодированного ресурса Bulk Data может зависеть от соответствующей ссылки Metadata на bulkdataURI и не обязательно неявно следует из поля заголовка Content-Type.
An HTTP Range [RFC7233] request may be used with Multipart payloads, but the range applies to the entire response, including the multipart markers. In order for the response to be valid across requests, the ordering of items and the choice of multipart separator must remain the same.
Content-Location используется для идентификации конкретного ресурса (например, вплоть до уровня конкретного кадра, экземпляра или URI Bulk Data), представленного в этой части. Это позволяет получателю полезных данных различать части, например, когда каждая часть содержит разный кадр запрошенного многостраничного экземпляра.
Table 8.6.1-1. Multipart Header Fields
|
Должен присутствовать, если полезные данные ответа не имеют кодирования передачи (transfer encoding) |
|||
|
Должен присутствовать, если полезные данные ответа содержат представление ресурса. См. [RFC7231] Раздел 3.1.4.2. |
|||
|
See [RFC7231] Раздел 7.1.2. |
См. Раздел 8.7.1 и [RFC7231].
Ниже приведён пример шаблона многосоставного сообщения запроса или ответа, содержащего многосоставные полезные данные:
request-line / response-line
Content-Type: multipart-media-type CRLF
Content-Location: "/" {/url} CRLF
*(header-field CRLF)
CRLF
multipart-payload
Поле заголовка Content-Type должно иметь многосоставный тип носителя (multipart media-type). Например:
Content-Type: multipart/related; type=DQUOTE root-media-type DQUOTE; boundary="---boundary---"
multipart-media-type |
— это тип носителя, определённый в [RFC2387]. |
root-media-type |
— это односоставный тип носителя, задающий тип носителя корня (root), обычно первой части, в полезных данных. Если значение параметра type и content-type корневой части тела различаются, поведение пользовательского агента не определено. |
boundary |
задаёт строку, выступающую в качестве границы между частями сообщения. |
Если многосоставные полезные данные содержат представления Metadata (см. Раздел 8.7.3.3.1) и Bulk Data (см. Раздел 8.7.3.3.2), то все части сообщения Metadata, ссылающиеся на часть Bulk Data, должны предшествовать указанной части Bulk Data. Content-Location части Bulk Data должен содержать соответствующий BulkDataURI, используемый в ссылающихся Metadata.
Рисунок 8.6-1 показывает соответствие между представлением IOD и многосоставными полезными данными.
Синтаксис многосоставных полезных данных:
multipart-payload = 1*(DASH boundary CRLF part CRLF) DASH boundary DASH
DASH = "--"
boundary = 0*69(bchar / SP) bchar
bchar = DIGIT / ALPHA / "'" / "(" / ")" / "+" / "_" ; The legal boundary characters
/ "," / "-" / "." / "/" / ":" / "=" / "?"
part = Content-Type: media-type CRLF
Content-Location: url CRLF
(Content-Length: uint CRLF / Transfer-Encoding: encoding CRLF)
[Content-Description: text CRLF]
*(header-field CRLF)
CRLF
part-payload
part-payload = *OCTET
Например, если разделителем (boundary) является «++++», то полезные данные сообщения, содержащие три части, будут структурированы следующим образом:
--++++CRLF
Content-Type: media-type CRLF
Content-Location: url CRLF
(Content-Length: uint CRLF / Transfer-Encoding: encoding CRLF)
[Content-Description: {description} CRLF]
CRLF
payload CRLF
--++++CRLF
Content-Type: media-type CRLF
. . .
payload CRLF
--++++CRLF
Content-Type: media-type CRLF
. . .
payload CRLF
--++++--
Все объекты DICOM определяются Определениями информационных объектов (Information Object Definitions, IOD). См. PS3.3. Представления ресурсов DICOM — это кодирования информационных объектов DICOM в октетные потоки.
Каждый IOD имеет связанный набор атрибутов, которые определяют семантические понятия. Каждый атрибут имеет:
ключевое слово (Keyword), идентифицирующее атрибут с помощью токена
тип (Type), указывающий, является ли атрибут обязательным или необязательным
представление значения (Value Representation), определяющее тип данных значения(ий) атрибута
мультипликативность значения (Value Multiplicity), задающая количество значений, которые может иметь атрибут
Элемент данных (Data Element) — это конкретное представление атрибута. См. PS3.5. Каждый элемент данных имеет:
Каждый экземпляр содержит элементы данных (Data Elements), представляющие атрибуты уровней пациента, исследования, серии и экземпляра IOD. Например, если ресурс серии содержит 12 экземпляров, то транзакция, извлекающая эту серию, будет содержать представление серии и её 12 экземпляров в определённом типе носителя, и каждый экземпляр будет иметь атрибуты уровней пациента, исследования, серии и экземпляра.
В этой Части Стандарта определяются три различных представления ресурсов DICOM, которые могут быть закодированы в типы носителей DICOM: экземпляры (Instances), Metadata и Bulk Data.
Типы носителей DICOM и соответствующие им представления определены в Разделе 8.7.3. Другие типы носителей, используемые в этой Части Стандарта, определены в Разделе 8.7.4.
Веб-службы DICOM поддерживают только представления с явными представлениями значений (Explicit Value Representations). Неявные представления значений (Implicit Value Representations) (см. Раздел 7.1.3 «Data Element Structure with Implicit VR» в PS3.5) не должны использоваться.
Отчёт о состоянии (Status Report) — это описание предупреждений или ошибок, с которыми столкнулся исходный сервер при обработке запроса. Содержимое должно быть ясным и кратким. Если запрос не включает допустимый тип носителя (Acceptable Media Type), отчёт о состоянии должен использовать тип носителя по умолчанию для категории текстовых ресурсов (Text Resource Category) — text/html.
Типы носителей являются основой как для согласования содержимого, так и для типизации данных полезных данных сообщений. Каждая служба PS3.18 и/или транзакция определяет типы носителей и связанные с ними представления, которые являются типами по умолчанию, обязательными и необязательными.
Тип носителя также указывает, содержат ли полезные данные одно представление (односоставные) или несколько представлений (многосоставные). Многосоставные полезные данные определены только для RESTful API. См. Раздел 8.6.1.2 и Раздел 10.4.3.
Типы носителей — это идентификаторы, используемые для определения формата данных представления. HTTP использует типы носителей в полях заголовка Content-Type и Accept для обеспечения открытой и расширяемой типизации данных и согласования типов. Синтаксис типов носителей:
media-type = type "/" subtype *(OWS ";" OWS mt-parameter)
type = token subtype = token mt-parameter = mtp-name "=" mtp-value mtp-name = token mtp-value = (token / quoted-string)
За 'type/subtype' могут следовать параметры в виде пар «имя "=" значение».
Токены type, subtype и mtp-name нечувствительны к регистру, однако чувствительность к регистру значений параметров зависит от семантики имени параметра. Наличие или отсутствие параметра может иметь значение для обработки типа носителя в зависимости от его определения в реестре типов носителей.
mtp-value может передаваться как токен или как строка в кавычках (quoted-string). Значения в кавычках и без кавычек эквивалентны.
Типы носителей определены в [RFC7231] Разделе 3.1.1.1.
IANA ведёт реестр типов носителей [IANA Media Types].
Многие типы носителей задают параметр кодировки символов (character set).
Термин «MIME Type» не является синонимом «Media Type». Типы MIME определены в Multipurpose Internet Mail Extensions [RFC2045] и используются почтовыми программами. Типы носителей (Media Types) определены в Media Type Specifications and Registration Procedures [RFC6838].
Некоторые службы, определённые в этой Части Стандарта, поддерживают многосоставные типы носителей [RFC2387]. Синтаксис:
multipart-media-type = "multipart" "/" subtype *(OWS ";" OWS parameter)
Тип носителя application/multipart-related используется RESTful-службами. Его синтаксис:
multipart-related = "multipart/related"
OWS ";" OWS "type" "=" (media-type / DQUOTE media-type DQUOTE)
OWS ";" OWS "boundary" "=" boundary
[related-parameters]
boundary ; See Section 8.6.1.2.1
bchar = bchar-nospace / SP
bchar-nospace = DIGIT / ALPHA / "'" / "(" / ")" / "+" / "_" / "," / "-"
/ "." / "/" / ":" / "=" / "?" "/" / ":" / "=" / "?"
related-parameters = [";" "start" "=" cid]
[";" "start-info" "=" cid-list]
cid-list = cid cid-list
cid = token / quoted-string
Параметр «type» является обязательным. Он содержит тип носителя «корневой» (root) части тела. Согласно [RFC2387] он не должен содержать кавычек, однако в целях исторической совместимости и для соответствия примерам [RFC2387] он может содержать кавычки.
Наблюдалось, что некоторые исходные серверы дают сбой при наличии кавычек, а другие могут давать сбой при их отсутствии, поэтому пользовательские агенты могут обрабатывать такие сбои, пробуя альтернативный шаблон.
cid — это идентификатор содержимого. Он должен быть уникальным для каждой части многосоставного сообщения.
Обычно параметры «start» и «start-info» не указываются, а «корневым» (root) является первая часть тела.
Таблица 8.7.2-1 определяет категории ресурсов, соответствующие различным SOP Class. В следующих разделах каждая категория ресурсов сопоставляется с соответствующими типами носителей DICOM и визуализированными типами носителей.
Table 8.7.2-1. Resource Categories
|
Эта категория включает все ресурсы, которые:
|
|
|
Эта категория включает все ресурсы, которые являются экземплярами SOP Class хранения многостраничных изображений (Multi-frame image storage SOP Class), не относятся к видео и содержат более одного кадра. |
|
|
Эта категория включает все ресурсы, которые содержат более одного кадра и: |
|
|
Эта категория включает все ресурсы, которые содержат:
|
|
|
Эта категория включает все ресурсы, не вошедшие в вышеперечисленные категории, например сигналы (waveforms). |
Категория ресурса не зависит от синтаксиса передачи (Transfer Syntax), используемого для собственного кодирования или возврата ресурса. В частности, если синтаксис передачи является одним из синтаксисов передачи JPIP (для которых данные пикселей не включаются в возвращаемые объекты, а вместо этого URL-адрес провайдера JPIP для получения данных пикселей присутствует в Metadata), категория ресурса всё равно будет «Однокадровое изображение» (Single Frame Image) или «Многокадровое изображение» (Multi-Frame Image), а не «Текст» (Text) или «Другое» (Other).
В этом разделе определяются типы носителей, используемые для представления экземпляров DICOM, Metadata и Bulk Data. Он описывает:
Параметры типа носителя и синтаксиса передачи для экземпляров DICOM PS3.10
Параметры типов носителей и синтаксисов передачи для Bulk Data
Синтаксис типов носителей DICOM, включая их параметры синтаксиса передачи (Transfer Syntax) и кодировки символов
Значение допустимых синтаксисов передачи (Acceptable Transfer Syntaxes) и выбранного синтаксиса передачи (Selected Transfer Syntax)
Типы носителей, определённые в этом разделе, отличаются от тех, в которые могут быть визуализированы экземпляры DICOM (они определены в Разделе 8.7.4); некоторые из тех же типов носителей используются как для визуализированного содержимого, так и для Bulk Data.
В зависимости от службы типы носителей могут быть односоставными или многосоставными и могут иметь обязательные или необязательные параметры синтаксиса передачи и/или кодировки символов.
Синтаксисы передачи Implicit VR Little Endian (1.2.840.10008.1.2) и Explicit VR Big Endian (1.2.840.10008.1.2.2 — Retired) не должны использоваться с веб-службами.
Если параметр синтаксиса передачи для типа носителя DICOM не указан в запросе или ответе, синтаксис передачи в ответе должен быть тем, который указан как значение по умолчанию для комбинации категории ресурса и типа носителя в Таблице 8.7.3-2, Таблице 8.7.3-4 или Таблице 8.7.3-5, если только исходный сервер не имеет доступа к данным пикселей только в форме сжатия с потерями либо в форме сжатия без потерь или инкапсулированного несжатого вида такой длины, что они не могут быть закодированы в синтаксисе передачи Explicit VR Little Endian.
Table 8.7.3-1 specifies the definition of Media Type requirement terms used in the tables in this section.
Table 8.7.3-1. Definition of Media Type Requirement
|
Исходный сервер должен возвращать этот тип носителя, если ни один из допустимых типов носителей (см. Раздел 8.7.5) не поддерживается. Исходный сервер должен поддерживать этот тип носителя. |
||
Таблица 8.7.3-2, Таблица 8.7.3-3, Таблица 8.7.3-4 и Таблица 8.7.3-5 определяют типы носителей, используемые для кодирования различных представлений экземпляров DICOM. Эти типы носителей применяются ко всем категориям ресурсов и имеют кодирования по умолчанию для элементов данных изображений и видео, содержащихся в экземплярах.
Тип носителя application/dicom задаёт представление экземпляров, закодированных в формате файлов DICOM, указанном в Разделе 7 «DICOM File Format» в PS3.10.
Исходный сервер может заполнить файловую метаинформацию (File Meta Information) PS3.10 идентификацией исходного, отправляющего и принимающего AE-заголовков и адресами представления (Presentation Addresses), как описано в Разделе 7.1 в PS3.10 , или эти атрибуты могут остаться неизменными с момента получения объектов исходным сервером. Пользовательский агент, сохраняющий объекты, полученные в ответе, может заполнить или принудительно изменить эти атрибуты на основе собственных сведений об оконечных точках, участвующих в транзакции, чтобы они точно идентифицировали последнюю транзакцию хранения.
Таблица 8.7.3-2 определяет комбинации UID синтаксиса передачи по умолчанию и необязательные для каждой категории ресурсов DICOM (см. Таблицу 8.7.2-1). Тип носителя по умолчанию для категории ресурса должен возвращаться, когда исходный сервер не поддерживает ни один из допустимых типов носителей, если только исходный сервер не имеет доступа к данным пикселей только в форме сжатия с потерями либо в форме сжатия без потерь или инкапсулированного несжатого вида такой длины, что они не могут быть закодированы в синтаксисе передачи Explicit VR Little Endian.
Table 8.7.3-2. Transfer Syntax UIDs for application/dicom Media Types
Таблица 8.7.3-3 определяет типы носителей (Media Types), которые могут использоваться для кодирования представлений метаданных для служб URI и RESTful. Только службы RESTful поддерживают представления метаданных.
Таблица 8.7.3-3. Типы носителей для метаданных
|
Кодирует экземпляры как XML Infosets, определённые в Native DICOM Model, описанной в PS3.19. |
|||
|
Кодирует экземпляры в формате JSON, определённом в Приложении F. |
Представления bulk data поддерживаются только службами RESTful. Существует две категории bulk data: несжатые и сжатые.
Выбранный тип носителя (Selected Media Type) будет типом носителя по умолчанию для категории ресурса, когда исходный сервер не поддерживает ни один из допустимых типов носителей, как описано в Разделе 8.7.8, за исключением случая, когда исходный сервер имеет доступ к пиксельным данным только в форме сжатия с потерями или к пиксельным данным в форме сжатия без потерь или инкапсулированного несжатого формата, имеющего такую длину, что они не могут быть закодированы в синтаксисе передачи Explicit VR Little Endian.
Исходный сервер может поддерживать дополнительные синтаксисы передачи.
Если параметр синтаксиса передачи типа носителя не указан, должен использоваться синтаксис передачи Explicit VR Little Endian "1.2.840.10008.1.2.1", за исключением случая, когда исходный сервер имеет доступ к пиксельным данным только в форме сжатия с потерями или к пиксельным данным в форме сжатия без потерь или инкапсулированного несжатого формата, имеющего такую длину, что они не могут быть закодированы в синтаксисе передачи Explicit VR Little Endian.
В таблицах этого раздела нет записей для службы URI, поскольку они не поддерживают отдельное получение bulk data.
В зависимости от выбранного типа носителя, пиксельные данные ресурса в категории Single Frame Image кодируются в:
В зависимости от выбранного типа носителя, пиксельные данные ресурса в категории Multi-Frame Image кодируются в:
В зависимости от выбранного типа носителя, пиксельные данные ресурса в категории Video кодируются в:
Таблица 8.7.3-4 определяет тип носителя по умолчанию и UID синтаксисов передачи по категориям ресурсов (см. Таблицу 8.7.2-1), которые могут использоваться с несжатыми bulk data для служб RESTful. Несжатые bulk data кодируются как поток несжатых байтов (октетов) в порядке байтов Little Endian.
Это то же кодирование, что определено в PS3.19 для возвращаемого значения вызова getData() для несжатых bulk data.
В много кадровом изображении (Multi-Frame Image) со значением Bits Allocated (0028,0100), равным 1, которое не сжато, отдельные кадры не выравниваются (не дополняются), поэтому последовательные биты упаковываются в байты или слова в формате Native, как описано в Разделе 8.2 «Кодирование в формате Native или Encapsulated» в PS3.5. Это означает, что если в ответе должны быть закодированы только выбранные кадры много кадрового изображения, каждый кадр должен быть извлечён из пиксельных данных много кадрового изображения и последовательно объединён в ответе без выравнивания в начале первого байта ответа и без выравнивания между последовательными закодированными кадрами в ответе. Т.е. все потоки битов, специфичные для кадров, кодируются последовательно без выравнивания в начале или между ними.
Только несжатые bulk data могут быть возвращены с типом носителя application/octet-stream. Специфические типы носителей, отличные от application/octet-stream, определены для каждого вида сжатых bulk data в Разделе 8.7.3.3.2. Это означает, что если параметр шаблона синтаксиса передачи ("transfer-syntax=*") включён с типом носителя в запросе, он применяется только к несжатым синтаксисам передачи.
Несмотря на то, что синтаксисом передачи является Explicit VR Little Endian, представление значения (Value Representation) фактически не кодируется в начале потока октетов. Представление значения содержится в метаданных, которые ссылаются на bulk data. По этой причине синтаксис передачи Implicit VR Little Endian не указан в этой таблице.
Если поддерживается Encapsulated Uncompressed Explicit VR Little Endian, ответ включает поток октетов без разделителей фрагментов. Т.е. поток октетов декапсулируется перед передачей.
Сжатые bulk data содержат только сжатый поток октетов без разделителей фрагментов.
Таблица 8.7.3-5 определяет комбинации типов носителей и UID синтаксисов передачи по умолчанию и дополнительных для каждой категории ресурсов (см. Таблицу 8.7.2-1) сжатых bulk data для служб RESTful.
Некоторые имена синтаксисов передачи включают текст о синтаксисе передачи по умолчанию (Default Transfer Syntax), однако это относится к их роли в транзакциях DIMSE, а не к значению по умолчанию для служб RESTful (которое указано в столбце RESTful таблицы).
Столбец типа носителя отражает кодирование данных, но не включает расширенные дескрипторы типа носителя, такие как "multipart/related", которые описывают дополнительную упаковку закодированных данных.
Эти типы носителей могут использоваться для получения bulk data, таких как изображения или видео, закодированных в определённом синтаксисе передачи.
Эти типы носителей не используются для несжатых bulk data, для которых использование application/octet-stream указано в Разделе 8.7.3.3.1. Сжатые bulk data никогда не передаются с использованием application/octet-stream.
Если параметр шаблона синтаксиса передачи ("transfer-syntax=*") включён с типом носителя в запросе, он применяется только к сжатым синтаксисам передачи, соответствующим указанному типу носителя.
Если запрашивается специфичный для изображений шаблонный тип носителя "image/*", то исходный сервер не получает информации для принятия решения о том, какое сжатое кодирование (если таковое имеется) следует вернуть.
Подробная информация об упаковке сжатых bulk data в полезные нагрузки однопоточные (single part) или составные (multipart) приведена в Разделе 8.6.1.
Таблица 8.7.3-5. Типы носителей и UID синтаксисов передачи для сжатых bulk data
Исходный сервер может поддерживать дополнительные синтаксисы передачи.
Для типов носителя image/jpeg и синтаксисов передачи изображение может как включать, так и не включать сегмент маркера JFIF. Изображение может как включать, так и не включать сегменты маркеров APP2 с идентификатором "ICC_PROFILE". От исходного сервера не требуется добавлять сегмент маркера JFIF или копировать значение атрибута ICC Profile (0028,2000), если оно присутствует, в сегменты маркеров APP2 в потоке сжатых данных. См. Раздел 8.2.1 «Сжатие изображений JPEG» в PS3.5.
Для типов носителя image/jp2 и image/jpx и синтаксисов передачи изображение не включает сегмент маркера jp2. См. Раздел 8.2.4 «Сжатие изображений JPEG 2000» в PS3.5 и Раздел A.4.4 «Сжатие изображений JPEG 2000» в PS3.5
Сжатые пиксельные данные много кадрового изображения кодируются как отдельные кадры. Например, каждый кадр много кадрового изображения JPEG 2000 будет закодирован отдельно как представление image/jp2, а не как единое представление video/mj2 ([RFC3745]) или application/octet-stream. См. Раздел 8.6.1.2 для получения подробной информации о том, как несколько представлений могут быть упакованы в составную полезную нагрузку.
Пиксельные данные видео кодируются как единое представление видео. Например, все кадры видео MPEG-4 будут закодированы как единое представление video/mp4 ([RFC4337]).
Ресурс на исходном сервере может быть закодирован в синтаксисе передачи Deflated Explicit VR Little Endian (1.2.840.10008.1.2.1.99). В этом случае исходный сервер может распаковать его (inflate), а затем преобразовать в допустимый синтаксис передачи (Acceptable Transfer Syntax). Заголовок Content-Encoding со значением 'deflate' не может использоваться для передачи дефлированных байтов без изменений, поскольку требуемая File Meta Information из PS3.10 не включена в дефлированные байты, а Content-Encoding применяется ко всему multipart-потоку, а не к каждой его части отдельно.
Ресурс на исходном сервере может быть закодирован в синтаксисе передачи Deflated Image Frame Compression (1.2.840.10008.1.2.8.1). В этом случае исходный сервер может вернуть сжатый поток битов, если это допустимый синтаксис передачи, или исходный сервер может распаковать его (inflate), а затем преобразовать в допустимый синтаксис передачи. Кроме того, если пользовательский агент допускает заголовок Content-Encoding со значением 'deflate', то дефлированные байты для ответа с одной частью (single part) могут быть переданы после добавления контейнера zlib в соответствии с [RFC7230] Раздел 4.2.2, но параметр синтаксиса передачи в ответе должен быть Explicit VR Little Endian Transfer Syntax.
Многие типы носителей, используемые для сжатых пиксельных данных (Pixel Data), передаваемых как значения bulk data, также используются как типы носителей потребительских форматов. Веб-браузер может не иметь возможности отображать закодированные данные напрямую, даже если некоторые из этих же типов носителей также используются для кодирования отрендеренных пиксельных данных. См. Раздел 8.7.4.
Например, типом носителя для значений bulk data без потерь 16-битных JPEG [ISO/IEC 10918-1] закодированных пиксельных данных является "image/jpeg" — тот же тип носителя, что может использоваться для 8-битных JPEG [ISO/IEC 10918-1] закодированных пиксельных данных, независимо от того, извлечены ли они как bulk data или отрендерены. Параметр синтаксиса передачи в заголовке Content-Type полезен для индикации различия.
Ранее были определены экспериментальные типы носителей "image/x-dicom-rle" и "image/x-jls", поэтому исходным серверам и пользовательским агентам следует учитывать это при взаимодействии со старыми реализациями. Они были заменены стандартными типами носителей "image/dicom-rle" и "image/jls" соответственно.
Синтаксис передачи по умолчанию для объектов DICOM, содержащихся в полезной нагрузке, должен быть Explicit VR Little Endian Uncompressed "1.2.840.10008.1.2.1". Если синтаксис передачи не указан в сообщении, должен использоваться синтаксис передачи по умолчанию, за исключением случая, когда исходный сервер имеет доступ к пиксельным данным только в форме сжатия с потерями или к пиксельным данным в форме сжатия без потерь или инкапсулированного несжатого формата, имеющего такую длину, что они не могут быть закодированы в синтаксисе передачи Explicit VR Little Endian.
Это отличается от синтаксиса передачи по умолчанию, определённого в Разделе 10.1 «Синтаксис передачи DICOM по умолчанию» в PS3.5, которым является Implicit VR Little Endian.
Каждый исходный сервер обязан иметь возможность преобразовать любой набор данных (Data Set), который он собирается вернуть, в синтаксис передачи Explicit VR Little Endian, независимо от формы, в которой он изначально получил или сохранил набор данных, за исключением случаев, когда декомпрессированные пиксельные данные слишком велики для кодирования в синтаксисе передачи Explicit VR Little Endian или были получены в форме сжатия с потерями. В случае пиксельных данных со сжатием с потерями исходному серверу разрешается возвращать синтаксис передачи со сжатием с потерями, соответствующий полученной форме с потерями. В случае пиксельных данных со сжатием без потерь или инкапсулированных несжатых пиксельных данных, которые слишком велики для кодирования в синтаксисе передачи Explicit VR Little Endian, исходному серверу разрешается возвращать любой соответствующий синтаксис передачи со сжатием без потерь или инкапсулированный несжатый синтаксис передачи, не обязательно тот, в котором изображение было получено, в качестве альтернативы синтаксису передачи Explicit VR Little Endian.
При перекодировании в синтаксис передачи Explicit VR Little Endian для кодирования элементов данных (Data Elements) с явным VR, значение длины которых превышает 65534 (216-2) (FFFEH, наибольшее чётное беззнаковое 16-битное число), но которые определены как имеющие 16-битное поле длины явного VR, может потребоваться VR типа UN. См. Раздел 6.2.2 в PS3.5 .
Implicit VR Little Endian или Explicit VR Big Endian не должны использоваться.
Требования к кодированию полезной нагрузки ответа определены в Разделе 8.7.8.
Синтаксисом передачи может быть один из синтаксисов передачи JPIP; в этом случае возвращаемые объекты будут содержать URL поставщика JPIP для получения пиксельных данных.
Исходный сервер может поддерживать дополнительные синтаксисы передачи.
Синтаксис использования типов носителей в DICOM:
dicom-media-type = (dcm-singlepart / dcm-multipart) [dcm-parameters]
dcm-singlepart = dcm-mt-name
dcm-multipart ;see Section 8.7.3.5.1
dcm-parameters = transfer-syntax-mtp ;see Section 8.7.3.5.2
/ charset-mtp;see Section 8.7.3.5.3
dcm-mt-name = dicom / dicom-metadata / bulkdata / pixeldata ;DICOM Media Type name
dicom = "application/dicom"
dicom-metadata = dicom-xml / dicom-json
dicom-xml = "application/dicom+xml"
dicom-json = "application/dicom+json"
bulkdata = octet-stream / pixeldata
octet-stream = "application/octet-stream"
pixeldata = image-pixel / video-pixel
rendered = image-pixel / video-pixel
image-pixel = "image/jpeg" / "image/dicom-rle" / "image/jls" / "image/jp2" / "image/jpx" / "image/jphc" / "image/jxl"
video-pixel = "video/mpeg" / "video/mp4" / "video/H265"
Все типы носителей, используемые в DICOM, могут иметь параметр синтаксиса передачи, но его использование может быть ограничено службой, для которой они используются.
Типы носителей application/dicom+xml и application/dicom+json могут иметь параметр синтаксиса передачи для указания кодирования данных base64.
Все типы носителей, используемые в DICOM, могут иметь параметр набора символов, но его использование может быть ограничено службой, для которой они используются.
Синтаксис multipart-типов носителей:
dcm-multipart = "multipart/related"
OWS ";" OWS "type" "=" dcm-mp-mt-name
OWS ";" OWS "boundary=" boundary
[dcm-parameters]
[related-parameters]
dcm-mp-mt-name = dicom-mt-name / rendered
См. Раздел 8.6.1.2.1 для определения boundary и related-parameters.
Каждый multipart-тип носителя должен включать параметр "type", который определяет тип носителя частей, и должен также включать параметр "boundary", который задаёт строку границы, используемую для разделения частей. Например:
Accept: multipart/related; type="application/octet-stream",
multipart/related; type="image/*"; boundary=**,
multipart/related; type="video/*"; boundary=**
Для заданного типа носителя DICOM может быть указано одно значение параметра синтаксиса передачи, но его использование может быть ограничено службой, для которой оно используется.
RESTful исходные серверы должны поддерживать параметр синтаксиса передачи.
Параметры типа носителя синтаксиса передачи запрещены в запросах и ответах службы URI.
transfer-syntax-mtp = OWS ";" OWS %s"transfer-syntax=" ts-value
ts-value = transfer-syntax-uid / "*"
transfer-syntax-uid ; a UID from Table A-1 “UID Values” in PS3.6 with a UID Type of Transfer Syntax
Значением параметра синтаксиса передачи может быть либо UID синтаксиса передачи, либо токен "*".
Например, чтобы указать, что 1.2.840.10008.1.2.4.50 является допустимым синтаксисом передачи, заголовок Accept может быть:
Accept: application/dicom; transfer-syntax=1.2.840.10008.1.2.4.50
Тип носителя DICOM может иметь только один параметр синтаксиса передачи, и он должен иметь только одно значение.
Согласно [RFC6838] Спецификациям типов носителей и процедурам регистрации, указание конкретного параметра более одного раза является ошибкой. Если приемлемо несколько синтаксисов передачи, в заголовке Accept может быть указано более одного типа носителя с различными значениями параметра q для выражения предпочтения. Например, чтобы указать, что 1.2.840.10008.1.2.4.50 и 1.2.840.10008.1.2.4.57 являются допустимыми, но 1.2.840.10008.1.2.4.50 предпочтительнее, заголовок Accept может быть:
Accept: multipart/related; type="application/dicom";transfer-syntax=1.2.840.10008.1.2.4.50;boundary=**,
multipart/related; type="application/dicom";transfer-syntax=1.2.840.10008.1.2.4.57;q=0.5;boundary=**
Шаблонное значение "*" указывает, что пользовательский агент принимает любой синтаксис передачи. Это позволяет, например, исходному серверу ответить без необходимости перекодирования существующего представления в новый синтаксис передачи или ответить синтаксисом передачи Explicit VR Little Endian независимо от сохранённого синтаксиса передачи, за исключением случая, когда исходный сервер имеет доступ к пиксельным данным только в форме сжатия с потерями или к пиксельным данным в форме сжатия без потерь, имеющим такую длину, что они не могут быть закодированы в синтаксисе передачи Explicit VR Little Endian.
Шаблонное значение применяется только к тем синтаксисам передачи, которые соответствуют указанному типу носителя. Например, только несжатые синтаксисы передачи входят в область применения для application/octet-stream, и только соответствующие сжатые синтаксисы передачи входят в область применения для image/* или более специфичных подтипов типа носителя image.
Если исходный сервер поддерживает параметр синтаксиса передачи, он должен поддерживать шаблонное значение.
Исходные серверы, поддерживающие параметр синтаксиса передачи, должны указать в своём заявлении о соответствии (Conformance Statement) те значения параметра синтаксиса передачи, которые поддерживаются в ответе.
Пользовательские агенты, поддерживающие параметр синтаксиса передачи, должны указать в своём заявлении о соответствии те значения параметра синтаксиса передачи, которые могут быть предоставлены в запросе.
Все типы носителей DICOM могут иметь один параметр набора символов, который должен иметь только одно значение, определяющее допустимый набор символов для ответа.
charset-mtp = OWS ";" OWS %s"charset" "=" charset
Все типы носителей DICOM имеют набор символов по умолчанию — UTF-8. См. Раздел 8.8 для подробной информации о наборах символов.
Параметр запроса Transfer Syntax (Transfer Syntax Query Parameter) задаёт разделённый запятыми список из одного или нескольких UID синтаксисов передачи, как определено в PS3.6.
transfer-syntax-qp = %s"transferSyntax" "=" (1#transfer-syntax-uid / "*")
Этот параметр запроса используется только службой URI.
Службы RESTful указывают синтаксис передачи в параметре запроса "accept" (см. Раздел 8.3.3.1) и не используют параметр запроса Transfer Syntax.
Каждый тип носителя DICOM в Acceptable Media Types имеет допустимый синтаксис передачи (Acceptable Transfer Syntax), который явно указан или имеет значение по умолчанию.
В зависимости от службы, допустимый синтаксис передачи для типа носителя DICOM может быть указан в:
Параметре типа носителя Transfer Syntax, содержащемся в параметре запроса Accept (см. Раздел 8.3.3.1)
Параметре типа носителя Transfer Syntax, содержащемся в заголовке Accept
Параметре запроса Transfer Syntax (см. Раздел 8.7.3.5)
Экземпляры DICOM (DICOM Instances) могут быть преобразованы процессом рендеринга в типы носителей, не являющиеся типами DICOM. Это может быть полезно для их отображения или обработки с помощью программ, не поддерживающих DICOM, таких как браузеры.
Например, экземпляр, содержащий:
изображение, может быть преобразован в типы носителей image/jpeg, image/jph, image/jxl, image/png или image/gif.
много кадровое изображение (Multi-frame Image) в синтаксисе передачи без потерь может быть преобразовано в типы носителей video/mpeg, video/mp4, video/H265 или image/jxl.
структурированный отчёт (Structured Report) может быть преобразован в типы носителей text/html, text/plain или application/pdf.
Отрендеренные типы носителей (Rendered Media Types) обычно являются типами носителей потребительских форматов. Некоторые из тех же типов носителей, не являющихся типами DICOM, также используются как типы носителей bulk data, т.е. для кодирования bulk data, извлечённых из инкапсулированных пиксельных данных (Encapsulated Pixel Data) (используемых со сжатыми синтаксисами передачи), без применения процесса рендеринга. См. Раздел 8.7.3.3.
Рендеринг состояний представления (Presentation States) описан в Разделе 8.3.5.1.
Исходные серверы должны поддерживать рендеринг экземпляров различных категорий ресурсов в отрендеренные типы носителей, как указано в Таблице 8.7.4-1.
Когда возвращается тип носителя image/jpeg, изображение должно быть закодировано с использованием процесса кодирования JPEG baseline lossy 8-bit Huffman non-hierarchical non-sequential, определённого в [ISO/IEC 10918-1].
Когда возвращается тип носителя image/jph, изображение должно быть закодировано с наличием JP2 box.
Это представление отличается от хранимых HTJ2K синтаксисов передачи, которые не содержат JP2 box.
Исходный сервер может поддерживать дополнительные отрендеренные типы носителей, которые должны быть документированы в заявлении о соответствии (Conformance Statement) и, если служба это поддерживает, в ответе Retrieve Capabilities.
Параметр типа носителя Transfer Syntax не разрешён для отрендеренных типов носителей.
Термин «допустимые типы носителей» (Acceptable Media Types) обозначает типы носителей, которые приемлемы для пользовательского агента в ответе. Допустимые типы носителей — это те, что указаны в:
Ответом на запрос без заголовка Accept должен быть 406 (Not Acceptable). Наличие параметра запроса Accept не устраняет необходимости в заголовке Accept. Подробности см. в Разделе 8.3.3.1.
Допустимые типы носителей должны быть либо типами носителей DICOM, либо отрендеренными типами носителей, но не обоими одновременно. Если допустимые типы носителей содержат как типы DICOM, так и отрендеренные типы, исходный сервер должен вернуть 400 (Bad Request).
Пользовательский агент может указать относительную степень предпочтения типов носителей, будь то в параметре запроса Accept или в заголовке Accept, используя параметр веса (weight). См. [RFC7231] Раздел 5.3.1.
weight = OWS ";" OWS "q=" qvalue
qvalue = ("0" ["." 0*3DIGIT]) / ("1" ["." 0*3("0") ])
Если параметр "q" отсутствует, значение qvalue по умолчанию равно 1.
Параметр запроса Accept может использоваться для указания допустимых типов носителей. См. Раздел 8.7.5.
Заголовок Accept используется для указания типов носителей, приемлемых для пользовательского агента. Он имеет следующий синтаксис:
Accept = 1#(media-range [weight])
Значение заголовка Accept должно быть разделённым запятыми списком из одного или нескольких диапазонов носителей (media ranges), приемлемых в ответе. См. [RFC7231] Раздел 5.3.2.
Диапазон носителей (media range) — это либо тип носителя, либо шаблон (wildcard). Шаблоны используют звёздочку ("*") для группировки типов носителей в диапазоны, при этом <type>/* обозначает все подтипы данного типа, а */* обозначает все типы носителей. Например, диапазон носителей image/* соответствует image/jpeg, который является типом носителя по умолчанию для категории ресурсов Single Frame Image, а text/* соответствует text/html, который является типом носителя по умолчанию для категории ресурсов Text. DICOM указывает, что диапазон носителей */* соответствует типу носителя по умолчанию для категории ресурсов целевого объекта. Если для категории ресурсов не определён тип носителя по умолчанию, приемлем любой тип носителя из этой категории ресурсов.
Если ответ может содержать полезную нагрузку, заголовок Accept должен присутствовать в запросе.
Если исходный сервер получает запрос без заголовка Accept, но ответ может содержать полезную нагрузку, он должен вернуть 406 (Not Acceptable).
Любые значения заголовка Accept, включая параметры типа носителя, которые являются недопустимыми или не поддерживаются, должны игнорироваться исходным сервером.
Выбор типа носителя и синтаксиса передачи исходным сервером взаимосвязаны.
Выбранный тип носителя (Selected Media Type) — это тип носителя, выбранный исходным сервером для представления в полезной нагрузке ответа. Типы носителей в параметре запроса Accept и диапазоны носителей в заголовке Accept должны быть отдельно приоритизированы в соответствии с правилами, определёнными в [RFC7231] Разделе 5.3.1.
Для составных полезных нагрузок (multipart payloads) выбранный тип носителя определяется независимо для каждой части сообщения в ответе.
Выбранный тип носителя каждой части сообщения зависит от категории ресурсов экземпляра и допустимых типов носителей для этой категории ресурсов.
Выбранный тип носителя определяется следующим образом:
Выбрать представление с типом носителя наивысшего приоритета, поддерживаемым для этой категории в параметре запроса Accept.
Если ни один тип носителя в параметре запроса Accept не поддерживается, выбрать тип носителя наивысшего приоритета, поддерживаемый для этой категории в заголовке Accept, если таковой имеется.
В противном случае выбрать тип носителя по умолчанию для категории, если заголовок Accept содержит диапазон носителей-шаблон, соответствующий категории, если таковой имеется.
Если выбранный тип носителя — Explicit VR Little Endian, а пиксельные данные сжаты и при распаковке имеют такую длину, что не могут быть помещены в Value Field, исходный сервер ответит 406 (Not Acceptable), и пользовательский агент может повторить запрос с другим набором допустимых типов носителей.
При перекодировании в синтаксис передачи Explicit VR Little Endian для кодирования элементов данных (Data Elements) с явным VR, значение длины которых превышает 65534 (216-2) (FFFEH, наибольшее чётное беззнаковое 16-битное число), но которые определены как имеющие 16-битное поле длины явного VR, может потребоваться VR типа UN. См. Раздел 6.2.2 «Представление значения Unknown (UN)» в PS3.5.
Для набора типов носителей в параметре запроса Accept (шаг 2 выше) или для набора диапазонов носителей в заголовке Accept (шаг 3 выше) тип носителя наивысшего приоритета определяется следующим образом:
Присвоить qvalue, равный 1, любому элементу набора, у которого его нет.
Присвоить каждому представлению, поддерживаемому исходным сервером, qvalue наиболее специфичного типа носителя, которому оно соответствует.
Выбрать представление с наивысшим qvalue. При равенстве исходный сервер определяет, какое из них возвращается.
Например, рассмотрим исходный сервер, который получает запрос со следующим заголовком Accept:
Accept: text/*; q=0.5, text/html; q=0.4, text/html; level=1, text/html; level=2; q=0.7,
image/png, */*; q=0.4
Предположим, что для ресурса, указанного в запросе, исходный сервер поддерживает представления для следующих типов носителей:
text/html (regular, level 1 and level 2)
text/rtf
text/plain
text/x-latex
Этим типам носителей присвоены следующие значения qvalue на основе указанных выше диапазонов носителей:
Хотя "image/png" было присвоено значение qvalue по умолчанию 1.0, оно не входит в число поддерживаемых типов носителей для этого ресурса и поэтому не указано.
Выбранный тип носителя — 'text/html; level=1', поскольку это поддерживаемый тип носителя в категории Text с наивысшим qvalue.
Выбранный синтаксис передачи (Selected Transfer Syntax) — это синтаксис передачи, выбранный исходным сервером для кодирования отдельной части сообщения в ответе.
Исходный сервер должен сначала определить выбранный тип носителя, как определено в Разделе 8.7.8, а затем определить выбранный синтаксис передачи.
Если выбранный тип носителя был указан в параметре запроса Accept, выбранный синтаксис передачи определяется следующим образом:
Выбрать значение параметра Transfer Syntax выбранного типа носителя, если таковое имеется;
В противном случае выбрать значение Transfer Syntax в параметре запроса Transfer Syntax, если таковое имеется;
В противном случае выбрать синтаксис передачи по умолчанию (см. Таблицу 8.7.3-2, Таблицу 8.7.3-4 или Таблицу 8.7.3-5) для выбранного типа носителя.
Если выбранный тип носителя был указан в заголовке Accept, выбранный синтаксис передачи определяется следующим образом:
Заголовок Content-Type указывает тип носителя полезной нагрузки. Он должен присутствовать только при наличии полезной нагрузки, а любые параметры типа носителя должны указывать кодирование соответствующей части сообщения.
В частности, тип носителя DICOM, используемый в качестве значения заголовка Content-Type, должен иметь ноль или один параметр Transfer Syntax (см. Раздел 8.7.3.5.2), и ноль или один параметр charset (см. Раздел 8.7.3.5.3), который соответствует кодировке символов соответствующей части сообщения.
Content-Type: dicom-media-type +transfer-syntax-mtp +charset-mtp
Если возникает конфликт между синтаксисом передачи, указанным в типе носителя, и синтаксисом передачи, указанным в атрибуте File Meta Information Transfer Syntax UID (0002,0010), последний имеет приоритет.
HTTP использует имена наборов символов для указания или согласования кодировки символов текстового содержимого в представлениях [RFC6365] Раздел 3.3.
Наборы символов могут быть идентифицированы с использованием значения из столбца IANA Preferred MIME Name в [IANA Character Sets].
Наборы символов также могут быть идентифицированы с использованием определённых терминов DICOM (DICOM Defined Terms) для набора символов (см. Приложение D, Раздел C.12.1.1.2 в PS3.3 и Раздел 6.1.2.3 «Кодирование наборов символов» в PS3.5), которые должны быть строками в кавычках, поскольку они содержат символ пробела (' ').
charset = token / defined-term / DQUOTE defined-term DQUOTE
token |
Нечувствительное к регистру имя набора символов из Preferred MIME Name в реестре IANA Character Set Registry. |
defined-term |
Исходный сервер должен поддерживать имя набора символов "UTF-8" для транзакции RESTful Retrieve Rendered, но не обязан поддерживать определённый термин DICOM "ISO_IR 192". Некоторые определённые термины DICOM для наборов символов содержат символы пробела и должны заключаться в двойные кавычки в заголовках HTTP и кодироваться процентами (percent encoded) в URI.
Заявление о соответствии (Conformance Statement) должно документировать все поддерживаемые наборы символов. Ответ Retrieve Capabilities для всех служб RESTful также должен документировать все поддерживаемые наборы символов.
Запрос без параметра запроса Character Set или заголовка Accept-Charset означает, что пользовательский агент принимает любой набор символов в ответе.
Приложение D содержит сопоставление некоторых определённых терминов (Defined Terms) атрибута Specific Character Set (0008,0005) с токенами наборов символов IANA.
Термин «допустимые наборы символов» (Acceptable Character Sets) обозначает наборы символов, которые приемлемы для пользовательского агента в ответе. Допустимые наборы символов — это те, что указаны в:
Когда допустимые наборы символов содержат список из одного или нескольких определённых терминов (Defined Terms), они должны быть упорядочены пользовательским агентом, как указано в Разделе C.12.1.1.2 «Specific Character Set» в PS3.3 и Разделе 6.1.2.3 «Кодирование наборов символов» в PS3.5. Это особенно важно для наборов символов ISO 2022.
Любые значения charset, которые являются недопустимыми или не поддерживаются, должны игнорироваться исходным сервером.
См. Раздел 8.3.3.2 .
Типы носителей DICOM принимают параметры набора символов (charset). См. Раздел 8.7.3.5.3.
Многие другие типы носителей также принимают параметры набора символов (charset). См. [IANA Media Types].
Поле заголовка Accept-Charset имеет следующий синтаксис:
Accept-Charset = 1#(charset [weight]) / ("*" [weight])
Пользовательский агент может предоставить список приемлемых наборов символов (Acceptable Character Sets) в поле заголовка Accept-Charset запроса. Его значение представляет собой разделенный запятыми список одного или нескольких наборов символов и/или подстановочного значения ("*").
Значения поля заголовка Accept-Charset упорядочиваются по приоритету с помощью параметра weight.
Если подстановочный знак ("*") отсутствует, то любые наборы символов, явно не упомянутые в поле заголовка, считаются "неприемлемыми" для клиента.
Если тип мультимедиа (Media Type) определяет параметр "charset", он должен включаться вместе с типом мультимедиа в поле заголовка Accept, а не в поле заголовка Accept-Charset.
Исходный сервер должен определить выбранный набор символов (Selected Character Set) следующим образом:
Выбрать первый поддерживаемый набор символов из параметра(ов) "charset" выбранного типа мультимедиа.
В противном случае выбрать поддерживаемый набор символов с наивысшим приоритетом из параметра запроса character-set.
В противном случае выбрать поддерживаемый набор символов с наивысшим приоритетом из поля заголовка Accept-Charset.
В противном случае, если выбранный тип мультимедиа имеет поддерживаемый набор символов по умолчанию, выбрать его.
Визуализированные представления (rendered representations), возвращаемые в ответе, должны содержать все строки в выбранном наборе символов.
Если набор символов, в котором закодирован целевой ресурс (Target Resource), не совпадает с выбранным набором символов:
Если пользовательский агент предпочитает выполнить преобразование самостоятельно, а не поручать его исходному серверу:
Пользовательский агент может опустить поле заголовка Accept-Charset или отправить подстановочный знак "*"
Пользовательский агент может перекодировать набор символов, заменяя все неизвестные символы соответствующим заменителем. Например:
Вопросительный знак ("?") или другой аналогичный символ, указывающий на неизвестный символ.
Соответствующую кодовую точку Unicode для символа, представленную как "U+xxxx".
Четыре символа "\nnn", где "nnn" — это 3-значное восьмеричное представление каждого байта (см. Раздел 6.1.2.3 «Кодирование репертуаров символов» в PS3.5).
Эта транзакция извлекает описание возможностей (Capabilities Description) (см. Приложение H), которое представляет собой машиночитаемое описание служб(ы), реализованных исходным сервером. Все RESTful-службы, определенные в этой части стандарта, должны реализовывать эту транзакцию.
Целевым ресурсом (Target Resource) для этой транзакции является исходный сервер. Ответ содержит описание возможностей (Capabilities Description), которое описывает транзакции, ресурсы, представления и т. д., поддерживаемые службой(ами).
Запрос должен иметь следующий синтаксис:
OPTIONS SP / SP version CRLF
Accept: 1#media-type CRLF
*(header-field CRLF)
CRLF
Целевым ресурсом для этой транзакции является базовый URI ("/") для службы. См. Раздел 8.2.
Исходный сервер должен вернуть описание возможностей (Capabilities Description), как определено в Приложении H, в приемлемом типе мультимедиа.
version SP status-code SP reason-phrase CRLF
[Content-Type: media-type CRLF]
[(Content-Length: uint) / (Transfer-Encoding: encoding) CRLF]
*(header-field CRLF)
CRLF
[payload / status-report]
Таблица 8.9.3-1 показывает некоторые общие коды состояния, соответствующие этой транзакции. См. также Раздел 8.5 для получения дополнительных кодов состояния.
Таблица 8.9.3-1. Значение кодов состояния
Таблица 8.9.3-2. Поля заголовка ответа
См. также Раздел 8.4.
Ответ об успехе должен содержать полезную нагрузку с описанием возможностей (Capabilities Description) в выбранном типе мультимедиа. Описание возможностей должно соответствовать требованиям и структуре, определенным в Приложении H.
Полезная нагрузка ответа о сбое может содержать отчет о состоянии (Status Report), описывающий любые сбои, предупреждения или другую полезную информацию.
Реализация должна документировать в Заявлении о соответствии (Conformance Statement), поддерживает ли она уведомления или нет. Если служба поддерживает уведомления, она должна описать, как открываются соединения WebSocket.
Любая служба, поддерживающая уведомления (Notifications), должна поддерживать следующие транзакции:
Таблица 8.10.3-1. Транзакции подсистемы уведомлений
Эта транзакция создает соединение между пользовательским агентом и исходным сервером, по которому исходный сервер может отправлять отчеты о событиях (Event Reports) пользовательскому агенту.
Исходный сервер может играть роль пользовательского агента при обмене данными с другим исходным сервером.
Соединение использует протокол WebSocket. Соединение может использовать тот же TCP-порт, что и HTTP-соединение, но это отдельные соединения.
См. [RFC6455] для получения подробной информации о протоколе WebSocket.
Существует более одного способа установить соединение WebSocket. Исходный сервер, соответствующий [RFC6455] и поддерживающий подписки на уведомления RESTful-служб, должен как минимум поддерживать запросы на открытие WebSocket через HTTP-соединения, имеющие следующий синтаксис:
GET SP / subscribers/{requester} SP version CRLF
Host: host CRLF
Upgrade: "WebSocket" CRLF
Connection: "Upgrade" CRLF
Origin: url CRLF
Sec-WebSocket-Key: nonce CRLF
Sec-WebSocket-Protocol: protocols CRLF
Sec-WebSocket-Version: "13" CRLF
*(<header-field> CRLF)
CRLF
Исходный сервер может поддерживать другие методы открытия соединения WebSocket, которые следует включить в Заявление о соответствии и ответ Retrieve Capabilities.
Исходный сервер должен поддерживать ресурсы, перечисленные в Таблице 8.10.4-1a.
Таблица 8.10.4-1 показывает использование полей заголовка запроса для открытия соединения WebSocket через http/https.
Подробные сведения о значениях полей заголовка запроса и других методах открытия соединения WebSocket см. в [RFC6455].
При получении этого запроса исходный сервер должен открыть и поддерживать соединение для уведомлений WebSocket между собой и пользовательским агентом, и использовать его для отправки уведомлений в виде отчетов о событиях (Event Report) для подписок, связанных с {requester}.
Если соединение в какой-либо момент прерывается, пользовательский агент может восстановить его, повторив эту транзакцию.
Ответ должен иметь следующий синтаксис:
version SP status-code SP reason-phrase CRLF
Upgrade: "WebSocket" CRLF
Connection: "Upgrade" CRLF
Sec-WebSocket-Accept: response-key CRLF
Sec-WebSocket-Protocol: protocol CRLF
*(header-field CRLF)
CRLF
Таблица 8.10.4-2 показывает некоторые общие коды состояния, соответствующие этой транзакции. См. также Раздел 8.5 для получения дополнительных кодов состояния.
Исходный сервер использует эту транзакцию для уведомления пользовательского агента о событиях (Events).
Эта транзакция отправляет уведомление, содержащее отчет о событии (Event Report), через установленное соединение для уведомлений от исходного сервера пользовательскому агенту. В отличие от большинства транзакций, эта транзакция инициируется исходным сервером.
Эта транзакция соответствует действию DIMSE N-EVENT-REPORT.
Каждая служба может определять события (Events) и соответствующие сообщения отчетов о событиях и их содержимое, связанные с ее ресурсами.
Запрос должен использовать протокол передачи кадров данных WebSocket.
Кадры данных должны иметь код операции (opcode) "%x1" (текст).
Данные полезной нагрузки кадра данных должны представлять собой DICOM JSON Data Set, содержащий атрибуты отчета о событии (Event Report).
Протокол WebSocket в настоящее время не поддерживает согласование содержимого, поэтому невозможно одновременно поддерживать как XML-, так и JSON-кодирование сообщений отчета о событии.
Если отчеты о событиях проксируются в DIMSE N-EVENT-отчеты, идентификатор сообщения Message ID (0000,0110) должен управляться прокси-сервером.
Весьма вероятно, что DICOM-объекты содержат защищенную медицинскую информацию (Protected Health Information). Правила конфиденциальности в США (HIPAA), Европе (GDPR) и других регионах требуют, чтобы персональные идентификационные данные оставались конфиденциальными. Ответственность за соблюдение применимых нормативных требований к безопасности и конфиденциальности несут лица, реализующие и развертывающие стандарт DICOM.
См., например, [ONC Privacy Security Guide].
Некоторые типы изображений, такие как визуализированные объемы (rendered volumes) или исходные срезы, из которых они создаются, могут содержать распознаваемые визуальные признаки.
Формат файлов DICOM PS3.10 имеет аспекты безопасности, которые применяются при каждом использовании формата файлов DICOM PS3.10. См. Раздел 7.5 в PS3.10 .
Служба URI, также известная как WADO-URI, позволяет пользовательскому агенту извлекать представления Экземпляров с использованием HTTP.
Служба URI не определяет ресурсы в форме пути целевого ресурса, такого как {/resource}. Целевой URI каждой Транзакции является ссылкой на базовый URI ("/"), а целевой ресурс идентифицируется с использованием значений параметров запроса. Ресурсами для Службы URI являются Экземпляры Составных SOP-классов хранения, определенных в PS3.4.
Параметры запроса, указанные в этом Разделе, могут использоваться с Транзакциями Retrieve DICOM Instance или Retrieve Rendered Instance и применяются ко всем поддерживаемым SOP-классам.
Исходный сервер должен поддерживать параметры запроса, как требуется в Таблице 9.1.2-1.
Пользовательский агент должен предоставлять в запросе параметры запроса, как требуется в Таблице 9.1.2-1.
Параметры запроса могут располагаться в любом порядке.
См. Раздел 8.3.
Для идентификации SOP-экземпляра требуется только SOP Instance UID, поскольку любой UID является глобально уникальным. Однако Стандарт требует, чтобы UID более высоких уровней в информационной модели DICOM (т.е. Series и Study) были указаны, чтобы поддерживать использование DICOM-устройств, которые поддерживают только базовую иерархическую (а не расширенную реляционную) модель Query/Retrieve, требующую определения Study Instance UID и Series Instance UID при извлечении Экземпляра, как определено в PS3.4.
requestType = %s"requestType=" token
token = "WADO"
Этот параметр указывает, что это запрос службы URI. Имя параметра должно быть "requestType", а значение должно быть "WADO".
Если значение отличается от "WADO" и исходный сервер не поддерживает это значение, ответ должен быть 400 (Bad Request) и может включать полезную нагрузку, содержащую соответствующее сообщение об ошибке.
study = %s"studyUID=" uid
series = %s"seriesUID=" uid
Параметры, определенные в этом разделе, являются необязательными для всех URI-запросов.
См. Раздел 8.3.
Параметр запроса Accept указывает приемлемые типы носителей для полезной нагрузки ответа. См. Раздел 8.7.5. Чувствительное к регистру имя параметра — "contentType". Его синтаксис:
accept = %s"contentType=" dicom / 1#rendered-media-type
Значение этого параметра, если оно присутствует, должно быть либо application/dicom, либо одним или несколькими из типов визуализированных носителей.
Параметры типа носителя DICOM transfer-syntax и набора символов запрещены в запросе. Если какой-либо из них присутствует, ответ должен быть 400 (Bad Request) и может включать полезную нагрузку, содержащую соответствующее сообщение об ошибке.
См. Раздел 8.7.5 относительно других ошибок, связанных с этим параметром.
charset-qp = %s"charset=" 1#(charset [weight])
Значением этого параметра является разделенный запятыми список одного или нескольких идентификаторов наборов символов. См. Раздел 8.8.1.
Исходный сервер должен поддерживать тип носителя application/dicom, как описано в Разделе 8.7.3.1, и визуализированные типы носителей, как описано в Разделе 8.7.4.
Поддержка параметров типа носителя Transfer Syntax и Character Set запрещена для служб URI.
Реализация, соответствующая службе URI, должна поддерживать извлечение одного или нескольких информационных объектов, указанных для Storage Service Class, как определено в Разделе B.5 в PS3.4 .
Декларация о соответствии реализации должна документировать информационные объекты, поддерживаемые для службы URI, а также то, выступает ли она в роли исходного сервера или пользовательского агента, либо обеих ролей.
Служба URI состоит из следующих Транзакций:
Эти две Транзакции имеют один и тот же тип "requestType", но различаются выбранным типом носителя.
Если параметр запроса "contentType" отсутствует и поле заголовка Accept равно '*/*', то выбранный тип носителя по умолчанию принимается равным типу носителя 'image/jpeg', а Транзакция по умолчанию — Retrieve Rendered Instance.
Эта Транзакция извлекает один Экземпляр в типе носителя application/dicom. См. Раздел 8.7.3.
Запрос должен иметь следующий синтаксис:
GET SP / ?{requestType}&{study}&{series}&{instance}
{&accept}
{&charset}
{&anonymize}
{&transferSyntax}
SP HTTP/1.1 CRLF
Accept: uri-media-type CRLF
*(header-field CRLF)
CRLF
Целевой ресурс должен быть Экземпляром составного SOP-класса хранения, определенного в PS3.4.
Исходный сервер должен поддерживать параметры запроса, как требуется в Таблице 9.4.1-1 .
Пользовательский агент должен предоставлять в запросе параметры запроса, как требуется в Таблице 9.4.1-1 .
anonymize = %s"anonymize=" token
token = "yes"
Этот параметр указывает, что возвращаемые представления должны иметь всю индивидуально идентифицирующую информацию (III), удаленную в соответствии с Приложением E «Профили конфиденциальности атрибутов (Нормативное)» в PS3.15, Базовый профиль с опцией Clean Pixel Data. Его имя — "anonymize", а значение — токен. Определенным токеном является "yes". Если этот параметр отсутствует, анонимизация не запрашивается.
annotation = 1#( %s"patient" / %s"technique" )
Этот параметр указывает, что визуализированные изображения должны быть снабжены аннотациями с информацией о пациенте и/или о процедуре. Его значение — разделенный запятыми список одного или нескольких ключевых слов.
Исходный сервер может поддерживать дополнительные ключевые слова, которые следует включить в Декларацию о соответствии и ответ Retrieve Capabilities.
transfer-syntax = %s"transferSyntax" "=" transfer-syntax-uid
Этот параметр указывает UID синтаксиса передачи. Его имя — "transferSyntax", а значение — единичный UID синтаксиса передачи. Он является необязательным как для пользовательского агента, так и для исходного сервера. Подробности см. в Разделе 8.7.3.5.
Исходный сервер должен поддерживать поля заголовка, как требуется в Таблице 9.4.1-2, в запросе.
Пользовательский агент должен предоставлять поля заголовка запроса, как требуется в Таблице 9.4.1-2.
См. также Раздел 8.4.
Успешный ответ должен содержать целевой ресурс в приемлемом типе носителя DICOM. См. Раздел 8.7.5.
Если параметр запроса отсутствует; или если он присутствует со значением, отличным от "WADO", и исходный сервер не поддерживает это значение, то исходный сервер должен вернуть ответ 400 (Bad Request) и может включить полезную нагрузку, содержащую соответствующее сообщение об ошибке.
Если параметры запроса UID исследования, серии или экземпляра отсутствуют, исходный сервер должен вернуть ответ 400 (Bad Request) и может включить полезную нагрузку, содержащую соответствующее сообщение об ошибке.
Если параметр запроса поддерживается и присутствует, а также если верно любое из следующих условий:
то исходный сервер должен вернуть ответ 400 (Bad Request) и может включить полезную нагрузку, содержащую соответствующее сообщение об ошибке.
Если целевой ресурс еще не был деидентифицирован, возвращаемый Экземпляр должен иметь новый SOP Instance UID.
Если исходный сервер не может или отказывается анонимизировать целевой ресурс, он может вернуть ответ об ошибке.
Если этот параметр запроса поддерживается и присутствует со значением, которое является допустимым UID синтаксиса передачи, полезная нагрузка ответа должна быть закодирована в указанном синтаксисе передачи.
Если он отсутствует, полезная нагрузка ответа должна быть закодирована в синтаксисе передачи по умолчанию для веб-служб DICOM, который является Explicit VR Little Endian Uncompressed.
Если параметр запроса поддерживается и присутствует, а также если верно любое из следующих условий:
то исходный сервер должен вернуть ответ 400 (Bad Request) и может включить полезную нагрузку, содержащую соответствующее сообщение об ошибке.
Если значение параметра является допустимым UID синтаксиса передачи, но не поддерживается исходным сервером, ответ должен быть 406 (Not Acceptable) и может включать полезную нагрузку, содержащую список синтаксисов передачи, поддерживаемых исходным сервером.
Ответ должен иметь следующий синтаксис:
version SP status-code SP reason-phrase CRLF
[Content-Type: media-type CRLF]
[(Content-Length: uint / Transfer-Encoding: encoding) CRLF]
Content-Location: url CRLF
*(header-field CRLF)
CRLF
[payload]
Таблица 9.4.3-1 показывает некоторые общие коды состояния, соответствующие этой Транзакции. См. также Раздел 8.5 для дополнительных кодов состояния.
Таблица 9.4.3-1. Значение кода состояния
Исходный сервер должен поддерживать поля заголовка, как требуется в Таблице 9.4.3-2.
Таблица 9.4.3-2. Поля заголовка ответа
См. Раздел 8.4.
Эта Транзакция возвращает один Экземпляр в визуализированном типе носителя. См. Раздел 8.7.4.
Приемлемый тип носителя не должен быть application/dicom. Если это так, ответом должен быть 406 (Not Acceptable).
Запрос должен иметь следующий синтаксис:
GET SP /?{requestType}&{study}&{series}&{instance}{&frameNumber}
{&accept}
{&charset}
{&annotation}
{&rows}
{&columns}
{®ion}
{&windowCenter}
{&windowWidth}
{&imageQuality}
{&annotation}
{&presentationSeriesUID}
{&presentationUID}
SP HTTP/1.1 CRLF
Accept: 1#media-type CRLF
*(header-field CRLF)
CRLF
Целевой ресурс должен быть Экземпляром составного SOP-класса, как определено в PS3.3.
Параметры запроса в этом разделе должны включаться в запрос только в том случае, если категория DICOM целевого ресурса — Single Frame, Multi-Frame или Video, как определено в Разделе 8.7.2.
Исходный сервер должен поддерживать параметры запроса, как требуется в Таблице 9.5.1-1.
Пользовательский агент должен предоставлять в запросе параметры запроса, как требуется в Таблице 9.5.1-1.
frame-number = %s"frameNumber" "=" uint
Этот параметр указывает один кадр в экземпляре много кадров изображения, как определено в PS3.3, который должен быть возвращен. Его имя — "frameNumber", а значение должно быть положительным целым числом (т.е. начинается с 1, а не с 0).
См. Раздел 8.3.5.1.1.
См. Раздел 8.3.5.1.2.
Параметры запроса области просмотра указывают размеры области просмотра пользовательского агента. Параметры строк и столбцов области просмотра указывают высоту и ширину возвращаемого изображения в пикселях. Если присутствует хотя бы один параметр, оба должны присутствовать.
Синтаксис параметров области просмотра в этом Разделе имеет приоритет над описанным в Разделе 8.3.5.1.3; однако поведение масштабирования, описанное в этом разделе, по-прежнему применяется.
rows = %s"rows" "=" uint
Этот параметр указывает количество строк пикселей в возвращаемом изображении. Он соответствует высоте в пикселях области просмотра пользовательского агента. Его имя — "rows", а значение должно быть положительным целым числом.
region = %s"region" "=" xmin "," ymin "," xmax "," ymax
xmin = decimal
ymin = decimal
xmax = decimal
ymax = decimal
Этот параметр указывает прямоугольную область целевого ресурса. Его имя — "region", а значения должны быть разделенным запятыми списком четырех положительных десятичных чисел:
Область указывается с использованием нормализованной системы координат относительно размера исходной матрицы изображения, измеряемой в строках и столбцах. Где
Этот параметр при использовании в сочетании с одним из параметров области просмотра позволяет пользовательскому агенту отобразить выбранную область исходного изображения в свою область просмотра.
Параметры оконной обработки (Центр окна и Ширина окна) являются необязательными; однако, если присутствует хотя бы один, оба должны присутствовать. Если присутствует только один, исходный сервер должен вернуть ответ 400 (Bad Request) и может включить полезную нагрузку, содержащую соответствующее сообщение об ошибке.
Служба URI не поддерживает параметр запроса "function", который описан в Разделе 8.3.5.1.4.
Параметры оконной обработки и состояния представления не должны присутствовать в одном запросе. Если присутствуют оба, исходный сервер должен вернуть ответ 400 (Bad Request) и может включить полезную нагрузку, содержащую соответствующее сообщение об ошибке.
Параметры оконной обработки не должны присутствовать, если contentType равен application/dicom; если присутствует хотя бы один, исходный сервер должен вернуть ответ 400 (Bad Request) и может включить полезную нагрузку, содержащую соответствующее сообщение об ошибке.
window-center = %s"windowCenter" "=" decimal
Этот параметр указывает центр окна возвращаемого изображения, как определено в PS3.3. Его имя — "windowCenter", а значение должно быть десятичным числом.
window-width = %s"windowWidth" "=" decimal
Этот параметр указывает ширину окна возвращаемого изображения, как определено в PS3.3. Его имя — "windowWidth", а значение должно быть десятичным числом.
Приведенные ниже параметры указывают UID серии и SOP-экземпляра состояния представления. Они являются необязательными. Однако, если присутствует один, оба должны присутствовать.
Если присутствуют параметры состояния представления, то единственными другими необязательными параметрами, которые могут присутствовать, являются Аннотирование, Качество изображения, Область и Область просмотра.
Исходный сервер должен поддерживать поля заголовка, как требуется в Таблице 9.5.1-2.
Пользовательский агент должен предоставлять поля заголовка запроса, как требуется в Таблице 9.5.1-2.
Приемлемые типы носителей должны содержать только визуализированные типы носителей. См. Раздел 8.7.4.
Целевой ресурс должен быть отрисован, как указано в Разделе 8.3.5.1.
Успешный ответ должен содержать целевой ресурс в приемлемом визуализированном типе носителя. См. Раздел 8.7.4.
Если этот параметр запроса поддерживается и присутствует в запросе, исходный сервер должен использовать указанный кадр в качестве целевого ресурса.
Однако, если верно любое из следующих условий:
исходный сервер должен вернуть ответ 400 (Bad Request) и может включить полезную нагрузку, содержащую соответствующее сообщение об ошибке.
Если эти параметры запроса поддерживаются и присутствуют в запросе, исходный сервер должен использовать их, как описано в Разделе 8.3.5.1.4.
Однако, если верно любое из следующих условий:
то исходный сервер должен вернуть ответ 400 (Bad Request) и может включить полезную нагрузку, содержащую соответствующее сообщение об ошибке.
См. Раздел 8.3.5.1.6.
Если этот параметр запроса поддерживается и присутствует:
Матрица изображения, соответствующая области, указанной Source Image Region, должна быть возвращена с размером, соответствующим указанным нормализованным значениям координат.
Если присутствует параметр Presentation UID, область должна быть выбрана после применения соответствующего состояния представления к изображениям.
Однако, если верно любое из следующих условий:
параметр запроса указывает некорректно определенную область,
присутствует больше или меньше четырех значений параметра, или
любой из параметров не соответствует требованиям, указанным в Разделе 9.5.1.2.5
исходный сервер должен вернуть ответ 400 (Bad Request) и может включить полезную нагрузку, содержащую соответствующее сообщение об ошибке.
Параметры области просмотра применяются к области, указанной состоянием представления и/или областью исходного изображения, если они присутствуют; в противном случае параметры запроса области просмотра применяются к полному исходному изображению.
Если указаны оба параметра запроса rows и columns, то каждый должен интерпретироваться как максимум, и для возвращаемого изображения будет выбран размер в пределах этих ограничений с сохранением соотношения сторон выбранной области.
Если параметр запроса rows отсутствует, а параметр запроса columns присутствует, количество строк в возвращаемом изображении должно быть выбрано для сохранения соотношения сторон выбранной области.
Если параметр запроса columns отсутствует, а параметр запроса rows присутствует, количество столбцов в возвращаемом изображении должно быть выбрано для сохранения соотношения сторон выбранной области.
Если оба параметра запроса отсутствуют, изображение (или выбранная область) возвращается с исходным размером (или с размером состояния представления, примененного к изображению), что дает один пиксель в возвращаемом изображении для каждого пикселя в исходном изображении.
Ответ должен иметь следующий синтаксис:
version SP status-code SP reason-phrase CRLF
[Content-Type: rendered-media-type CRLF]
[(Content-Length: uint / Transfer-Encoding: encoding) CRLF]
[Content-Location: url CRLF]
*(header-field CRLF)
CRLF
[payload]
Таблица 9.5.3-1 показывает некоторые общие коды состояния, соответствующие этой Транзакции. См. также Раздел 8.5 для дополнительных кодов состояния.
Исходный сервер должен поддерживать поля заголовка, как требуется в Таблице 9.5.3-2.
Таблица 9.5.3-2. Поля заголовка ответа
|
Должен присутствовать, если ответ содержит полезную нагрузку. См. Раздел 8.4.3. |
|||
|
Должен присутствовать, если полезная нагрузка ответа не имеет кодирования передачи. См. Раздел 8.4.3. |
|||
|
Должен присутствовать, если полезная нагрузка ответа имеет кодирование передачи. См. Раздел 8.4.3. |
|||
|
Должен присутствовать, если ответ имеет полезную нагрузку, содержащую ресурс. См. Раздел 8.4.3. |
См. также Раздел 8.4.
Ресурс Studies позволяет пользовательскому агенту сохранять, извлекать, обновлять и выполнять поиск на исходном сервере DICOM-исследований (Studies), серий (Series) и экземпляров (Instances), а также их варианты /metadata, /rendered и /thumbnail; а также кадры (Frames) и большие данные (Bulk Data).
Транзакция Retrieve (извлечение) данного Сервиса также известна как WADO-RS. Транзакция Store (сохранение) данного Сервиса также известна как STOW-RS. Транзакция Search (поиск) данного Сервиса также известна как QIDO-RS. См. Раздел 10.3.
Сервис Studies управляет набором ресурсов DICOM-исследований (Study). Каждое исследование организовано в иерархию подресурсов, соответствующих информационной модели DICOM. См. Раздел 7 «DICOM Model of the Real World» в PS3.3.
Существует три ресурса верхнего уровня:
Следующие переменные шаблона URI используются в определениях ресурсов в данном Разделе.
Сервис Studies определяет следующие ресурсы:
Таблица 10.1-1. Ресурсы и описания
Исходный сервер должен поддерживать параметры запроса, как требуется в Таблице 10.1.2-1.
Пользовательский агент должен предоставлять параметры запроса в запросе, как требуется в Таблице 10.1.2-1.
Требования к типам мультимедиа (Media Type) исходного сервера определены в каждой транзакции данного Сервиса.
Исходный сервер должен поддерживать параметры Transfer Syntax и Character Set для типов мультимедиа. См. Раздел 8.7.3.5.2 и Раздел 8.7.3.5.3.
Исходный сервер, заявляющий о соответствии транзакции Retrieve сервиса Studies:
должен поддерживать транзакцию Retrieve Capabilities (см. Раздел 8.9.1);
должен поддерживать транзакцию Retrieve для всех обязательных ресурсов в Таблице 10.3-2.
Исходный сервер, заявляющий о соответствии транзакции Store сервиса Studies:
должен поддерживать транзакцию Retrieve Capabilities (см. Раздел 8.9.1);
должен поддерживать транзакцию Store для всех обязательных ресурсов в Таблице 10.3-2.
Исходный сервер, заявляющий о соответствии транзакции Search сервиса Studies:
должен поддерживать транзакцию Retrieve Capabilities (см. Раздел 8.9.1);
должен поддерживать транзакцию Search для всех обязательных ресурсов в Таблице 10.3-2.
Пользовательский агент может поддерживать любую из транзакций для любого из соответствующих ресурсов в Таблице 10.3-2.
Сервис Studies состоит из транзакций, перечисленных в Таблице 10.3-1.
Таблица 10.3-1. Транзакции сервиса Studies
В Таблице 10.3-2 целевые ресурсы, разрешённые для каждой транзакции, помечены символом M, если поддержка обязательна для исходного сервера, и O, если она необязательна. Пустая ячейка означает, что ресурс не разрешён в данной транзакции.
Эта транзакция использует метод GET для извлечения целевого ресурса. Тип мультимедиа в полезной нагрузке ответа будет зависеть от целевого URI и параметров запроса; например, экземпляры как application/dicom, метаданные как application/dicom+json или визуализированные экземпляры как изображения application/jpeg.
Запрос должен иметь следующий синтаксис:
GET SP "/" {/resource} {?parameter*} SP version CRLF
Accept: 1#media-type CRLF
*(header-field CRLF)
CRLF
Где parameter — один из параметров запроса, определённых для целевого ресурса в Разделе 10.4.1.2.
Ресурсы экземпляров (определены в Таблице 10.4.1-1) используются для извлечения экземпляров.
Извлечение ресурса Series Instances извлекает все отдельные экземпляры, содержащиеся в серии. Извлечение ресурса Study Instances извлекает все отдельные экземпляры, содержащиеся во всех сериях исследования.
Bulk Data и Frames ранее были указаны в этой таблице. Bulk Data рассматривается в Разделе 10.4.1.1.5, а данные Frames — в Разделе 10.4.1.1.6.
Ресурсы метаданных (определены в Таблице 10.4.1-2) используются для извлечения метаданных экземпляров без извлечения больших данных.
Извлечение ресурса Series Metadata извлекает все метаданные для всех отдельных экземпляров, содержащихся в серии. Извлечение ресурса Study Metadata извлекает все метаданные для всех отдельных экземпляров, содержащихся во всех сериях.
Реализация, заинтересованная только в метаданных уровня исследования или уровня серии, а не в метаданных уровня экземпляра для всех экземпляров, будет лучше обслуживаться использованием транзакции Search на ресурсах All Studies или Study's Series с сопоставлением по Study Instance UID и использованием &includefield для указания нужных метаданных (см. Раздел 10.6.1.2).
Метаданные описывают соответствующий ресурс, а не какое-либо его представление, которое может быть извлечено отдельно, поэтому включают только набор данных DICOM (без больших данных) и, в частности, не включают никаких элементов данных файловой метаинформации группы 0002.
Некоторые атрибуты набора данных DICOM могут зависеть от представления, а не от ресурса, особенно те, которые описывают пиксельные данные, поэтому они могут отличаться от закодированных в конкретном извлечённом представлении. Например, Photometric Interpretation (0028,0004) может различаться в зависимости от Transfer Syntax.
Информация, связанная с Transfer Syntax UID (0002,0010) в файловой метаинформации, которая, как можно было бы ожидать, может представлять интерес для извлечения представления ресурса в определённом типе мультимедиа, может быть доступна с использованием Available Transfer Syntax UID (0008,3002) в транзакции Search.
Ресурсы визуализированных представлений (определены в Таблице 10.4.1-3) используются для извлечения представлений DICOM-ресурса, визуализированных в виде соответствующих изображений, видео, текстовых документов или других представлений. Их основное назначение — предоставить пользовательским агентам простое средство отображения медицинских изображений и связанных документов без необходимости глубокого знания структур данных и кодирования DICOM.
Ресурс визуализированного представления предоставляет одно или несколько визуализированных представлений, т.е. в визуализированном типе мультимедиа (Rendered Media Type), своего родительского DICOM-ресурса.
Ресурсы миниатюр (определены в Таблице 10.4.1-4) используются для извлечения визуализированного представления, подходящего для представления родительского DICOM-ресурса.
Если исходный сервер поддерживает любой из ресурсов миниатюр, он должен поддерживать их все.
Ресурсы больших данных (определены в Таблице 10.4.1.5-1) используются для извлечения элементов данных (обычно содержащих большие объёмы данных, такие как пиксельные данные), извлечённых из DICOM-экземпляров.
Ресурсы больших данных, содержащие пиксельные данные, могут быть эквивалентно извлечены, как описано в Разделе 10.4.1.1.6.
См. Раздел 10.4.1.1.6 для шаблонов URI больших данных, состоящих из пиксельных данных кадров.
Ресурсы пиксельных данных (определены в Таблице 10.4.1.6-1) используются для извлечения элементов данных, содержащих пиксельные данные верхнего уровня, из DICOM-экземпляров.
Пиксельные данные являются подмножеством больших данных. Ресурсы пиксельных данных предоставляют удобный метод доступа к этому конкретному подмножеству.
Пиксельные данные кадров по своей природе являются пиксельными данными, поэтому подресурс /pixeldata не требуется в шаблоне URI.
Ресурс Frame Pixel Data изначально был указан в Таблице 10.4.1-1.
Ресурсы визуализированных MPR-объёмов (определены в Таблице 10.4.1.7-1) используются для извлечения представлений DICOM-ресурса после выполнения мультипланарной переформатизации. Переформатизация представляет срез объёма данных срезов как евклидову плоскость в соответствии с принципами, установленными для Planar MPR Volumetric Presentation States (см. Раздел FF.2.1.1 в PS3.4). Визуализированные изображения возвращаются как допустимые типы мультимедиа в полезной нагрузке ответа.
Эти ресурсы обеспечивают единообразие клиентских запросов и достаточно согласованные результаты визуализации. Из-за неотъемлемых различий в реализациях алгоритмов идентичное совпадение результатов визуализации между различными реализациями не гарантируется.
Целевой ресурс должен быть одним из следующих:
совокупность экземпляров изображений или кадров в экземплярах изображений, которые соответствуют требованиям Volume Input Requirements для ресурсов визуализированных MPR-объёмов (см. Раздел C.11.23.1 в PS3.3)
совокупность экземпляров изображений или кадров в экземплярах изображений, уточнённая с использованием одного из параметров запроса, определённых в Разделе 8.3.5.3, для удовлетворения требований Volume Input Requirements для ресурсов визуализированных MPR-объёмов (см. Раздел C.11.23.1 в PS3.3).
Таблица 10.4.1.7-1. Ресурсы визуализированных MPR-объёмов транзакции Retrieve
/studies/{study}/renderedmpr
|
|
/studies/{study}/series/{series}/renderedmpr
|
|
/studies/{study}/series/{series}/instances/{instance}/renderedmpr
|
|
/studies/{study}/series/{series}/instances/{instance}/frames/{frames}/renderedmpr
|
Ресурсы визуализированных 3D-объёмов (определены в Таблице 10.4.1.8-1) используются для извлечения представлений DICOM-ресурса, визуализированных после выполнения 3D-визуализации в соответствии с принципами, установленными для Volume Rendering Volumetric Presentation States (см. Раздел FF.2.1.2 в PS3.4), путём применения пороговой обработки, трассировки лучей, объёмной визуализации или других методов для отображения объёма данных срезов в виде трёхмерной проекции. Визуализированные изображения возвращаются как допустимые типы мультимедиа в полезной нагрузке ответа.
Эти ресурсы обеспечивают единообразие клиентских запросов и достаточно согласованные результаты визуализации. Из-за неотъемлемых различий в реализациях алгоритмов идентичное совпадение результатов визуализации между различными реализациями не гарантируется.
Целевой ресурс должен быть одним из следующих:
совокупность экземпляров изображений или кадров в экземплярах изображений, которые соответствуют требованиям Volume Input Requirements для ресурсов визуализированных 3D-объёмов (см. Раздел C.11.23.1 в PS3.3)
совокупность экземпляров изображений или кадров в экземплярах изображений, уточнённая с использованием одного из параметров запроса, определённых в Разделе 8.3.5.3, для удовлетворения требований Volume Input Requirements для ресурсов визуализированных 3D-объёмов (см. Раздел C.11.23.1 в PS3.3).
Таблица 10.4.1.8-1. Ресурсы визуализированных 3D-объёмов транзакции Retrieve
/studies/{study}/series/rendered3d
|
|
/studies/{study}/series/{series}/rendered3d
|
|
/studies/{study}/series/{series}/instances/{instance}/rendered3d
|
|
/studies/{study}/series/{series}/instances/{instance}/frames/{frames}/rendered3d
|
Для типов ресурсов, перечисленных в столбце "Resources", исходный сервер должен поддерживать соответствующие параметры запроса, как требуется в Таблице 10.4.1-5.
Для каждого поддерживаемого типа ресурса, перечисленного в столбце "Resources", пользовательский агент должен предоставлять параметры запроса в соответствующем запросе, как указано в Таблице 10.4.1-5.
Исходный сервер должен поддерживать поля заголовка запроса, как требуется в Таблице 10.4.1-6.
Пользовательский агент должен предоставлять поля заголовка запроса, как требуется в Таблице 10.4.1-6.
Таблица 10.4.1-6. Поля заголовка запроса
|
Допустимые типы мультимедиа полезной нагрузки ответа См. Раздел 10.4.4 для типов мультимедиа, соответствующих каждому набору целевых ресурсов, определённых в Разделе 10.4.1.1. |
||||
См. также Раздел 8.4.
Исходный сервер должен подготовить представление(я) целевого ресурса в выбранном типе мультимедиа. См. Раздел 8.7.4.
Ответ должен иметь следующий синтаксис:
version SP status-code SP reason-phrase CRLF
[Content-Type: media-type CRLF]
[(Content-Length: uint / Transfer-Encoding: encoding) CRLF]
[Content-Location: url CRLF]
*(header-field CRLF)
CRLF
payload
Таблица 10.4.3-1 показывает некоторые общие коды состояния, соответствующие этой транзакции. См. также Раздел 8.5 для дополнительных кодов состояния.
Таблица 10.4.3-1. Значение кодов состояния
Исходный сервер должен предоставлять поля заголовка, как требуется Таблицей 10.4.3-2.
См. также Раздел 8.4.
Успешный ответ должен иметь полезную нагрузку, содержащую одно или несколько представлений целевого ресурса в выбранном типе мультимедиа (см. Раздел 8.7.8.1 и Раздел 10.4.4). Полезная нагрузка должна соответствовать Разделу 8.6.
Полезная нагрузка ответа о сбое должна содержать отчёт о состоянии, описывающий любые сбои, предупреждения или другую полезную информацию.
Полезная нагрузка для ресурса экземпляра (см. Раздел 10.4.1.1.1) должна содержать соответствующие экземпляры.
Полезная нагрузка для ресурса метаданных (см. Раздел 10.4.1.1.2) должна содержать все атрибуты в ресурсе. Для элементов данных с представлением значения (VR) DS, FL, FD, IS, LT, OB, OD, OF, OL, OV, OW, SL, SS, ST, SV, UC, UL, UN, US, UT и UV исходному серверу разрешается заменять поле значения элемента данных на Bulk Data URI. Пользовательский агент может использовать Bulk Data URI для извлечения больших данных в их исходной форме.
Полезная нагрузка для ресурса визуализированного представления (см. Раздел 10.4.1.1.3) должна содержать визуализацию всех действительных экземпляров составных SOP-классов, для которых заявлено соответствие, например, исходный сервер должен быть способен визуализировать все Photometric Interpretation, определённые в IOD для этого SOP-класса. Тип содержимого полезной нагрузки ответа должен быть визуализированным типом мультимедиа (Rendered Media Type), как указано в Разделе 8.3.5.1.
Полезная нагрузка для ресурса миниатюры (см. Раздел 10.4.1.1.4) должна содержать значимое представление в визуализированном типе мультимедиа. Исходный сервер определяет, что составляет значимое представление. Миниатюра не должна содержать никакой идентифицирующей информации о пациенте. Должно быть возвращено только одно изображение.
Исходный сервер может вернуть ответ перенаправления (HTTP-код состояния 302) на ресурс визуализированного представления вместо возврата визуализированного изображения.
Нет требования, чтобы представление было связано с любой Icon Image Sequence (0088,0200), закодированной в экземплярах или возвращённой в ответах на запросы.
Полезная нагрузка для ресурса больших данных (см. Раздел 10.4.1.1.5) должна содержать все большие данные для ресурса. Если ресурс представляет собой единый Bulk Data URI, полезная нагрузка будет содержать единственный соответствующий элемент. Если ресурс представляет собой Study, Series или Instance Bulk Data, полезная нагрузка будет содержать все большие данные соответствующего экземпляра(ов). Большие данные в составном (multipart) ответе должны иметь поле заголовка Content-Location, соответствующее URI, содержащемуся в соответствующем элементе метаданных.
Полезная нагрузка для ресурса пиксельных данных (см. Раздел 10.4.1.1.6) должна содержать все пиксельные данные ресурса. Пиксельные данные в составном (multipart) ответе должны иметь поле заголовка Content-Location, соответствующее URI, содержащемуся в соответствующем элементе метаданных. Пиксельные данные — это содержимое элемента данных Pixel Data (7FE0,0010), Float Pixel Data (7FE0,0008) или Double Float Pixel (7FE0,0009) в наборе данных верхнего уровня, как определено в PS3.5, соответствующего экземпляра(ов).
Полезная нагрузка для ресурса визуализированного 3D-объёма (см. Раздел 10.4.1.1.8) или ресурса визуализированного MPR-объёма (см. Раздел 10.4.1.1.7) должна содержать:
2D-представление визуализированного объёма в соответствии с параметрами алгоритма отображения, или
Rendered Volume Resources Response Module (см. Приложение K), соответствующий запросу. См. Раздел B.32 для примера.
Полезная нагрузка ответа о сбое может содержать отчёт о состоянии, описывающий любые сбои, предупреждения или другую полезную информацию.
Исходный сервер должен поддерживать типы мультимедиа, указанные как тип по умолчанию или обязательные в Таблице 10.4.4-1.
Тип мультимедиа application/dicom (без префикса "multipart/related; type="" ) определяет единый закодированный объект и должен использоваться только для отдельных ресурсов экземпляров.
Исходный сервер должен поддерживать параметры Transfer Syntax и Character Set для типов мультимедиа. См. Раздел 8.7.3.5.2 и Раздел 8.7.3.5.3.
Дополнительные сведения о каждом целевом ресурсе см. в Разделе 10.4.1.1.
Дополнительные сведения о каждом типе мультимедиа и связанных синтаксисах передачи см. в Разделе в столбце "Ссылка на тип мультимедиа".
Таблица 10.4.4-1. Типы мультимедиа по умолчанию, обязательные и необязательные
The Media Type for application/dicom+json does not include “multipart/related” because, per Section F.2.1, JSON Metadata for multiple Instances is encoded in a single top-level array of JSON objects, rather than multiple parts with top-level arrays containing single JSON objects. This is also true when the Media Type compresses the JSON in a zip container.
Requesting Instance Resources (Study, Series, или Instance) with a Media Type of multipart/related; type="application/octet-stream" is retained for historical reasons. Such a request is equivalent to requesting the corresponding Bulk Data Resource (Study, Series, Instance).
Использование одночастичного типа мультимедиа разрешено для ресурсов, являющихся одиночным элементом ответа. Ожидается, что исходный сервер будет игнорировать одночастичные типы мультимедиа для других ресурсов, и если это означает, что не остаётся типов мультимедиа, он вернёт ошибку 406 (Not Acceptable), согласно Section 8.7.8.1. Например, если пользовательский агент запрашивает ресурс визуализированного исследования и указывает только одночастичные типы мультимедиа в заголовке Accept, он должен ожидать ошибку, даже если исследование случайно содержит только один однокадровый экземпляр.
Эта транзакция использует метод POST для сохранения представлений исследований, серий и экземпляров, содержащихся в полезной нагрузке запроса.
Транзакция сохранения поддерживает только DICOM-ресурсы. Ресурс может быть предоставлен как отдельный экземпляр или как отдельные метаданные и большие данные.
Запрос должен иметь следующий синтаксис:
POST SP "/" {/resource} SP version CRLF
Accept: 1#media-type CRLF
Content-Type: dicom-media-type CRLF
(Content-Length: uint / Transfer-Encoding: encoding) CRLF
*(header-field CRLF)
CRLF
payload
Table 10.5.1-1 определяет ресурсы, используемые для сохранения экземпляров.
Table 10.5.1-1. Store Transaction DICOM Resources
Исходный сервер должен поддерживать заголовочные поля, как требуется в Table 10.5.1-2.
Пользовательский агент должен предоставлять в запросе заголовочные поля, как требуется в Table 10.5.1-2.
Table 10.5.1-2. Request Header Fields
См. также Раздел 8.4.
Полезная нагрузка запроса должна присутствовать и содержать одно или несколько представлений, согласованных с заголовочным полем Content-Type. Представления должны соответствовать типам мультимедиа, описанным в Section 8.7.3 Наборы типов мультимедиа DICOM. Полезная нагрузка должна соответствовать Section 8.6 Полезные нагрузки.
Полезная нагрузка может содержать представления экземпляров SOP из более чем одного исследования, если UID экземпляра исследования не указан в целевом URI.
Полезная нагрузка запроса должна состоять из:
PS3.10 представлений экземпляров SOP, или
PS3.10 представления экземпляров SOP должны быть закодированы по одному представлению на каждый DICOM-экземпляр.
Представления метаданных и больших данных экземпляров SOP должны быть закодированы следующим образом (см. Figure 8.6-1 Mapping between IOD and HTTP message parts):
XML-представления метаданных должны быть закодированы, как описано в Native DICOM Model, определённой в PS3.19 с одним представлением на каждый XML-объект.
JSON-представления метаданных должны быть закодированы как массив объектов DICOM JSON Model, определённых в Приложение F в одном представлении.
Представления метаданных могут опускать атрибуты макроса описания пикселей изображения для ссылочных пиксельных данных, представление которых закодировано в одном из типов мультимедиа, указанных в Table 10.5.2-1.
Метаданные должны включать только набор DICOM-данных (без больших данных) и, в частности, не должны содержать элементы данных метоинформации файла группы 0002. Исходный сервер должен создать соответствующую метаинформацию файла в зависимости от типа мультимедиа предоставленных сжатых пиксельных данных, если он сохраняет набор данных во внутренней памяти в файле PS3.10 File.
Несжатые большие данные (включая пиксельные данные, за исключением элемента Encapsulated Document (0042,0011)) должны быть закодированы как application/octet-stream с одним представлением на каждый элемент больших данных.
Сжатые пиксельные данные для однокадрового изображения должны быть закодированы как одно сжатое представление больших данных.
Сжатые пиксельные данные для многокадрового изображения должны быть закодированы как несколько сжатых представлений больших данных однокадрового изображения.
Сжатые пиксельные данные для видео должны быть закодированы как одно сжатое представление больших данных.
Элемент больших данных Encapsulated Document (0042,0011) должен быть закодирован с использованием типа мультимедиа из атрибута MIME Type of the Encapsulated Document (0042,0012) с одним представлением на каждый документ.
Исходный сервер сохраняет экземпляры из представлений, содержащихся в полезной нагрузке запроса.
Сохранённые экземпляры должны полностью соответствовать требованиям IOD и кодирования PS3.3 and PS3.5 соответственно.
Эта транзакция сохраняет один или несколько новых экземпляров и добавляет их в новые или существующие серии и исследования.
При создании ресурсов из представлений исходный сервер может корректировать или заменять значения элементов данных. Например, имя пациента, ID пациента и номер заявки могут быть скорректированы при импорте носителей из внешнего учреждения, сверке экземпляров с главным индексом пациентов или сверке с заказом на процедуру визуализации. Исходный сервер может также исправлять некорректные значения, такие как имя пациента или ID пациента; например, из-за выбора неверного элемента списка работ или ошибки ввода оператора.
Если какой-либо атрибут был скорректирован или исправлен, Original Attribute Sequence (0400,0561) должна быть включена в DICOM-объект, который сохраняется, и может быть включена в модуль ответа сохранённых экземпляров (см. Приложение I) в ответе.
Дополнительную информацию о заполнении Original Attribute Sequence см. Раздел C.12.1 “SOP Common Module” in PS3.3.
Исходный сервер должен инкапсулировать или преобразовать любые сжатые пиксельные данные, полученные как большие данные, в соответствующий DICOM-синтаксис передачи, как определено в Table 10.5.2-1.
Если сообщение запроса содержит сжатые большие данные с Content Type, который является одним из типов мультимедиа, указанных в Table 10.5.2-1, запрос может опускать атрибуты макроса описания пикселей изображения, и исходный сервер выведет их из сжатого потока октетов. Некоторые типы мультимедиа не соответствуют напрямую DICOM-синтаксису передачи, и исходный сервер преобразует полученный поток битов в несжатый или сжатый без потерь (обратимо) синтаксис передачи.
Это позволяет пользовательскому агенту использовать потребительские типы мультимедиа для кодирования пиксельных данных, даже если он может не иметь:
Если предоставленный сжатый поток битов имеет формат без потерь (обратимый), цель состоит в том, чтобы обеспечить извлечение распакованных пикселей с полной точностью, а не в том формате, в котором он был отправлен.
Исходный сервер должен инкапсулировать или преобразовать любые сжатые пиксельные данные, полученные как большие данные, в соответствующий DICOM-синтаксис передачи, как определено в Table 10.5.2-1.
Если предоставленный сжатый поток октетов имеет формат с потерями (необратимый), будет существовать соответствующий DICOM-синтаксис передачи, и не ожидается, что исходный сервер будет повторно сжимать его, вызывая дополнительные потери. Table 10.5.2-1 содержит список типов мультимедиа, содержащих сжатые пиксельные данные, из которых исходный сервер должен иметь возможность вывести значения атрибутов макроса описания пиксельных данных изображения.
Требования указаны в Table 10.5.2-1 следующим образом:
DICOM-синтаксис передачи не существует; должен быть преобразован исходным сервером в несжатый или сжатый без потерь синтаксис передачи (выбор которого остаётся на усмотрение исходного сервера).
Должен быть инкапсулирован в соответствующий DICOM-синтаксис передачи без дальнейшего сжатия с потерями.
В случае пиксельных данных, предоставленных как image/gif или image/png, исходный сервер может преобразовать цветовое представление из индексированного цвета в истинный цвет (RGB) при необходимости соответствия любым ограничениям фотометрической интерпретации, указанным IOD (т.е. если PALETTE COLOR не разрешён); такое преобразование считается выполняемым без потерь.
Если количество битов на канал файла image/png не поддерживается IOD, преобразование без потерь не может быть выполнено.
Анимированный image/gif будет преобразован в многокадровое изображение путём преобразования дельт кадров в полностью декодированные кадры; image/png не поддерживает анимацию, и Multiple-image Network Graphics (MNG) не включён в Table 10.5.2-1.
Любая информация о прозрачности, присутствующая в файле image/gif или image/png, будет отброшена, поскольку DICOM не поддерживает концепцию прозрачности. Фактическое значение пикселя, используемое для замены прозрачных пикселей (например, чёрный или белый), остаётся на усмотрение реализации, но если используемое значение не встречается в другом месте изображения, может быть полезно записать его в Pixel Padding Value (0028,0120).
Если альфа-канал предоставлен в файле image/png, альфа-канал будет отброшен (т.е. будет считаться состоящим из всех непрозрачных значений, в соответствии с политикой отбрасывания любой информации о прозрачности).
В случае пиксельных данных, содержащих один канал при отсутствии метаданных, описывающих интерпретацию значений пикселей, исходный сервер может предположить, что фотометрическая интерпретация — MONOCHROME2 (ноль интерпретируется как чёрный).
Ответ должен иметь следующий синтаксис:
version SP status-code SP reason-phrase CRLF
[Content-Type: media-type CRLF]
[(Content-Length: uint CRLF / Transfer-Encoding: encoding CRLF) ]
*(header-field CRLF)
CRLF
payload
Ответ должен содержать соответствующий код состояния.
Если какой-либо элемент был скорректирован или исправлен, Original Attribute Sequence (0400,0561) должна быть включена в сохраняемый DICOM-объект и может быть включена в модуль ответа сохранённых экземпляров (см. Приложение I) в ответе.
Table 10.5.3-1 shows some common status codes corresponding to this Transaction. См. также Раздел 8.5 для дополнительных кодов состояния.
Table 10.5.3-1. Status Code Meaning
Исходный сервер должен поддерживать заголовочные поля, как требуется в Table 10.5.3-2.
Table 10.5.3-2. Response Header Fields
|
Тип мультимедиа полезной нагрузки ответа, если она присутствует. |
|||
|
Должен присутствовать, если полезная нагрузка ответа не имеет кодирования передачи. См. Раздел 8.4.3. |
|||
|
Должен присутствовать, если полезная нагрузка ответа имеет кодирование передачи. См. Раздел 8.4.3. |
|||
|
Должен присутствовать, если был создан новый ресурс. Значение — это URL представления, содержащегося в полезной нагрузке запроса. |
|||
|
Должен присутствовать, если был создан новый ресурс. Значение — это URL созданного ресурса. |
Все успешные ответы должны также содержать представление содержимого (см. Раздел 8.4.2) и заголовочные поля полезной нагрузки (см. Раздел 8.4.3) с соответствующими значениями.
Рекомендуется, чтобы текст, возвращаемый в заголовочном поле Warning (см. [RFC7234] Раздел 5.5) содержал код состояния DICOM (см. PS3.4 and Приложение C “Status Type Encoding (Normative)” in PS3.7) и описательную причину. Например:
Warning: A700 <service>: Out of memory
См. также Раздел 8.4.
Полезная нагрузка успешного ответа должна содержать модуль ответа сохранённых экземпляров. См. Приложение I.
Полезная нагрузка ответа об ошибке может содержать отчёт о состоянии, описывающий любые ошибки, предупреждения или другую полезную информацию.
Исходный сервер должен поддерживать типы мультимедиа по умолчанию и обязательные, как указано в Table 10.5.4-1.
Реализация, соответствующая транзакции сохранения, должна поддерживать ресурсы и типы мультимедиа, указанные в Section 10.5.
Реализация должна объявить в своём Заявлении о соответствии классы SOP, поддерживаемые для транзакции сохранения, а также роль исходного сервера или пользовательского агента, или обе.
Специфичные для реализации коды предупреждений и ошибок должны быть включены в Заявление о соответствии.
Эта транзакция использует метод GET для поиска исследований, серий и экземпляров, управляемых исходным сервером.
Запрос должен иметь следующий синтаксис:
GET SP "/" {/resource} {?search*} SP version CRLF
Accept: 1#search-media-type CRLF
*(header-field CRLF)
CRLF
search-media-type = multipart/related; type="application/dicom+xml"
search-media-type = "application/dicom+json"
См. также the syntax of dicom-xml and dicom-json defined in Section 8.7.3.5 Синтаксис типов мультимедиа.
Компонент пути целевого ресурса целевого URI указывает коллекцию ресурсов, являющуюся целью поиска.
Исходный сервер, являющийся собственной реализацией, должен поддерживать все обязательные (M) ресурсы, указанные в столбце Native в Table 10.6.1-1.
Исходный сервер, являющийся реализацией DIMSE-прокси, должен поддерживать все обязательные (M) ресурсы, указанные в столбце Proxy в Table 10.6.1-1.
Table 10.6.1-1. Search Transaction Resources
/studies{?search*}
|
||||
/studies/{study}/series{?search*}
|
||||
/studies/{study}/instances{?search*}
|
||||
/series{?search*}
|
||||
/studies/{study}/series/{series}/instances{?search*}
|
||||
/instances{?search*}
|
Дополнительную информацию об иерархических запросах см. Раздел C.4.1.3.1.1 «Иерархический метод поиска» в PS3.4. Дополнительную информацию о реляционных запросах см. Раздел C.4.1.2.2.1 “Relational-Queries” in PS3.4 and Раздел C.4.1.3.2.1 “Relational-Queries” in PS3.4.
Table 10.6.1-2 shows the resources supported by the Search Transaction along with a description of the search performed and the results returned.
Table 10.6.1-2. Search Resource Descriptions
Исходный сервер должен поддерживать параметры запроса, как требуется в Table 8.3.4-1.
Пользовательский агент должен предоставлять параметры запроса, как требуется в Table 8.3.4-1.
Пары DICOM атрибут/значение, включённые как параметры запроса в запросе, должны удовлетворять требованиям в Section 8.3.4.1.
Пользовательский агент может включить следующие атрибуты в запрос:
Атрибуты IE пациента (см. Section 10.6.1.2.3)
Атрибуты IE исследования (разрешены только если ресурс — все исследования, все серии, все экземпляры)
Series IE Attributes (only allowed if the resource is Study's Series, All Series, Study's Instances, или All Instances)
Composite Instance IE Attributes (only allowed if the resource is Study's Instances, Study Series' Instances, или All Instances)
Additional Query/Retrieve Attributes (see Section C.3.4 in PS3.4 )
Private Data Element Tags and their corresponding Private Creator Element Tags
Ниже приведены примеры URI поиска с допустимыми парами атрибут/значение:
/studies?PatientID=11235813
/studies?PatientID=11235813&StudyDate=20130509
/studies?00100010=SMITH*&00101002.00100020=11235813&limit=25
/studies?00100010=SMITH*&OtherPatientIDsSequence.00100020=11235813
/studies?PatientID=11235813&includefield=00081048,00081049,00081060
/studies?PatientID=11235813&includefield=00081048&includefield=00081049&includefield=00081060
/studies?PatientID=11235813&StudyDate=20130509-20130510
/studies?StudyInstanceUID=1.2.392.200036.9116.2.2.2.2162893313.1029997326.94587,1.2.392.200036.9116.2.2.2.2162893313.1029997326.94583
/studies?00230010=AcmeCompany&includefield=00231002&includefield=00231003
/studies?00230010=AcmeCompany&00231001=001239&includefield=00231002&includefield=00231003
Исходный сервер должен поддерживать уровни IE, указанные в Table 10.6.1-4.
Исходный сервер должен поддерживать атрибуты сопоставления, указанные в Table 10.6.1-5 для каждого поддерживаемого уровня IE.
Хотя некоторые из элементов данных в Table 10.6.1-5 являются необязательными в Section C.6.2.1 in PS3.4 , the above list is consistent with those required for IHE RAD-14. See [IHE RAD TF-2] Table 4.14-1.
Исходный сервер может поддерживать сопоставляемые атрибуты запроса репозитория в Table 10.6.1.2.4-1 (see Section C.6.4.2 in PS3.4 ).
Исходный сервер должен поддерживать заголовочные поля, как требуется в Table 10.6.1-6 в запросе.
Пользовательский агент должен предоставлять в заголовочных полях запроса, как требуется в Table 10.6.1-6.
См. также Раздел 8.4.
Исходный сервер должен выполнить поиск, указанный запросом, используя правила сопоставления в Section 8.3.4.
Ответ должен иметь следующий синтаксис:
version SP status-code SP reason-phrase CRLF
[Content-Type: media-type CRLF]
[Content-Location: url CRLF]
[(Content-Length: uint / Transfer-Encoding: encoding) CRLF]
*(header-field CRLF)
CRLF
[payload]
Table 10.6.3-1 shows some common status codes corresponding to this Transaction. См. также Раздел 8.5 для дополнительных кодов состояния.
Table 10.6.3-1. Status Code Meaning
Исходный сервер должен поддерживать заголовочные поля, как требуется в Table 10.6.3-2.
Table 10.6.3-2. Response Header Fields
Успешный ответ должен содержать список соответствующих результатов в приемлемом типе мультимедиа. См. Section 8.7.5.
Если (results = 0), то совпадений нет, и должен быть возвращён ответ 200 (OK) с пустой полезной нагрузкой. The empty payload shall be formatted as specified in Section 8.3.4.4.1.
Полезная нагрузка ответа об ошибке может содержать отчёт о состоянии, описывающий любые ошибки, предупреждения или другую полезную информацию.
Для каждого соответствующего исследования ответ исходного сервера должен содержать атрибуты в соответствии с Table 10.6.3-3. Столбец "Тип" в приведённой ниже таблице относится к типам атрибутов Query/Retrieve, определённым в Раздел C.2.2.1 “Attribute Types” in PS3.4. Уникальным ключом для ответа поиска ресурса исследования является Study Instance UID (0020,000D).
Table 10.6.3-3. Study Resource Search Response Payload
Хотя некоторые из вышеуказанных атрибутов являются необязательными в Таблица C.6-1 “Patient Level Attributes for the Patient Root Query/Retrieve Information Model” in PS3.4, Таблица C.6-2 “Study Level Keys for the Patient Root Query/Retrieve Information Model” in PS3.4, and Таблица C.6-5 “Study Level Keys for the Study Root Query/Retrieve Information Model” in PS3.4, они согласуются с требованиями [IHE RAD TF-2] Table 4.14-1.
If either Prior Record Key (0008,041C) или Record Key (0008,041B) is present in the request and the Origin Server supports these attributes, then the responses are ordered as defined in Раздел C.6.4 “Repository Query SOP Class” in PS3.4.
Кроме того, ответ должен содержать:
All other Study level Attributes passed as match или includefield parameters in the request которые поддерживаются исходным сервером.
Если параметр includefield был указан в запросе и его значение "all", все атрибуты уровня исследования, указанные как Необязательные ключи in Раздел C.6.1.1.2 “Patient Level” in PS3.4, Раздел C.6.1.1.3 “Study Level” in PS3.4, and Раздел C.6.2.1.2 “Study Level” in PS3.4 которые поддерживаются исходным сервером.
If a Private Data Element has been specified as an include parameter and it is supported by the origin server, the Private Data Element and its corresponding Private Creator Element.
Series или Атрибуты уровня экземпляра, содержащиеся в параметрах includefield, не должны возвращаться.
Для каждой соответствующей серии исходный сервер должен вернуть все атрибуты, перечисленные в Table 10.6.3-4. Столбец "Тип" в приведённой ниже таблице относится к типам атрибутов Query/Retrieve, определённым в Раздел C.2.2.1 “Attribute Types” in PS3.4. Уникальным ключом для ответа поиска ресурса серии является Series Instance UID (0020,000E).
Table 10.6.3-4. Series Resources Search Response Payload
Хотя некоторые из вышеуказанных атрибутов являются необязательными в Таблица C.6-3 “Series Level Attributes for the Patient Root Query/Retrieve Information Model” in PS3.4, они согласуются с теми, что требуются в [IHE RAD TF-2] Table 4.14-1.
If either Prior Record Key (0008,041C) или Record Key (0008,041B) is present in the request and the origin server supports these attributes, then the responses are ordered as defined in Раздел C.6.4 “Repository Query SOP Class” in PS3.4.
Кроме того, ответ должен содержать:
All other Series Level Attributes passed as match Query Parameters, или Series или Study Level Attributes passed as includefield parameters in the request которые поддерживаются исходным сервером.
If the "includefield" parameter has been specified in the request and its value is "all", include all Series Level Attributes specified as Необязательные ключи in Раздел C.6.1.1.4 “Series Level” in PS3.4 которые поддерживаются исходным сервером.
Если целевой ресурс — все серии, включить все атрибуты уровня исследования, указанные в Section 10.6.3.3.1.
If a Private Data Element has been specified as an include parameter and it is supported by the origin server, the Private Data Element and its corresponding Private Creator Element.
Атрибуты уровня экземпляра, содержащиеся в параметрах includefield, не должны возвращаться.
Для каждого соответствующего экземпляра исходный сервер должен вернуть все атрибуты, перечисленные в Table 10.6.3-5, если они присутствуют в экземпляре. Столбец Тип в приведённой ниже таблице относится к типам атрибутов Query/Retrieve, определённым в Раздел C.2.2.1 “Attribute Types” in PS3.4. Уникальным ключом для ответа поиска ресурса экземпляра является SOP Instance UID (0008,0018).
Table 10.6.3-5. Instance Resources Search Response Payload
Хотя некоторые из вышеуказанных атрибутов являются необязательными в Таблица C.6-4 “Composite Object Instance Level Keys for the Patient Root Query/Retrieve Information Model” in PS3.4, они согласуются с теми, что требуются в [IHE RAD TF-2] Table 4.14-1.
If either Prior Record Key (0008,041C) или Record Key (0008,041B) is present in the request and the origin server supports these attributes, then the responses are ordered as defined in Раздел C.6.4 “Repository Query SOP Class” in PS3.4.
Кроме того, ответ должен содержать:
All other Instance Level Attributes passed as match parameters, или Study, Series, или Instance Level Attributes passed as includefield parameters которые поддерживаются исходным сервером.
If the "includefield" parameter has been specified in the request and its value is "all", Attribute include all Instance Level Attributes specified as Необязательные ключи in Раздел C.6.1.1.5 “Composite Object Instance Level” in PS3.4 которые поддерживаются исходным сервером.
Если целевой ресурс — все экземпляры, включить все атрибуты уровня исследования, указанные в Section 10.6.3.3.1.
If the Target Resource is All Instances или Study's Instances, then include all Series level Attributes specified in Section 10.6.3.3.2.
If a Private Data Element has been specified as an include parameter and it is supported by the origin server, the Private Data Element and its corresponding Private Creator Element.
Ответ может дополнительно включать:
the Available Transfer Syntax UID (0008,3002) to describe the Transfer Syntaxes that the origin server can assure will be supported for retrieval of the SOP Instance. See Section C.6.1.1.5.2 in PS3.4 .
Исходный сервер должен поддерживать типы мультимедиа по умолчанию и обязательные, как указано в Table 10.6.4-1.
Реализация должна объявить в своём Заявлении о соответствии, какую роль она играет — исходного сервера или пользовательского агента, или обе.
Реализация, выполняющая роль исходного сервера, должна объявить максимальное количество совпадений, поддерживаемое для одного запроса.
Реализация, выполняющая роль исходного сервера, должна объявить о поддержке следующего в своём Заявлении о соответствии:
Сервис Worklist, также известный как UPS-RS, определяет RESTful интерфейс к SOP-классам сервиса Unified Procedure Step, определённым в Раздел B.26 «Unified Procedure Step IOD» в PS3.3 и Раздел CC «Unified Procedure Step Service and SOP Classes» в PS3.4, где указано поведение UPS.
Сервис Worklist управляет единым списком работ (Worklist), содержащим один или несколько рабочих элементов (Workitem). Каждый рабочий элемент представляет шаг процедуры. Пользовательские агенты и исходные серверы могут создавать, получать, обновлять, искать и изменять состояние рабочих элементов. См. Раздел GGG «Unified Worklist and Procedure Step - UPS (Informative)» в PS3.17 для обзора списков работ и рабочих элементов (экземпляров UPS).
Данный сервис определяет три ресурса:
|
Набор данных (Data Set), содержащий атрибуты, указанные в Раздел CC.2.5.1.3 «UPS Attribute Service Requirements» в PS3.4. |
|
|
Ресурс, указывающий подписчика (Subscriber), которому должны направляться уведомления об изменениях состояния ресурса. |
В сервисе Worklist рабочий элемент идентифицируется по UID рабочего элемента (Workitem UID), который соответствует Affected SOP Instance UID и Requested SOP Instance UID, используемым в UPS-сервисе PS3.4.
Следующие переменные шаблона URI используются в определениях ресурсов на протяжении всего Раздела 11.
Сервис Worklist управляет списком работ UPS и его рабочими элементами. Шаблоны URI, определённые данным сервисом, указаны в Таблице 11.1.1-1.
Таблица 11.1.1-1. Ресурсы, шаблоны URI и описания
Рабочий элемент — это то, что в Приложении CC «Unified Procedure Step Service and SOP Classes» в PS3.4 называется шагом процедуры (procedure step).
Рабочие элементы представляют различные шаги, такие как: обработка изображений, контроль качества, автоматическое обнаружение (Computer Aided Detection), интерпретация, транскрипция, проверка отчёта или печать. Эти шаги могут как формально планироваться, так и нет.
Исходный сервер должен поддерживать параметры запроса в соответствии с требованиями Таблицы 11.1.2-1.
Пользовательский агент должен предоставлять в запросе параметры запроса в соответствии с требованиями Таблицы 11.1.2-1.
См. также Раздел 8.4.
Исходный сервер должен поддерживать типы мультимедиа, перечисленные как «По умолчанию» или «Обязательные» в Таблице 11.1.3-1.
Указывает, что полезная нагрузка представляет собой multipart-тело сообщения, в котором каждая часть является XML-инфоуказателем (Infoset) собственной DICOM-модели PS3.19, содержащим соответствующие атрибуты рабочего элемента. См. Раздел A.1 в PS3.19 .
Указывает, что полезная нагрузка представляет собой JSON-массив, содержащий рабочие элементы, и каждый рабочий элемент содержит соответствующие атрибуты. См. Раздел F.2.
Транзакции не должны поддерживать объекты метаданных или массовых данных (Bulk Data).
Исходный сервер должен поддерживать наборы транзакций данного сервиса, соответствующие одному или нескольким SOP-классам UPS (группам DIMSE-сервисов). См. Раздел CC.2 в PS3.4 . Дополнительные требования к исходному серверу, который также является SCP Unified Worklist and Procedure Step, описаны в Разделе CC.1 в PS3.4 .
Пользовательский агент или исходный сервер, реализующий сервис Worklist, должен соблюдать все требования, предъявляемые к SCU или SCP соответственно, для соответствующих сервисов в Приложении CC «Unified Procedure Step Service and SOP Classes» в PS3.4, включая требования Заявления о соответствии.
Реализация, поддерживающая сервис Worklist, должна описать свою поддержку в Заявлении о соответствии и в ответе на транзакцию Retrieve Capabilities, а также указать, выступает ли она в роли исходного сервера, пользовательского агента или обоих.
Сервис Worklist состоит из транзакций, перечисленных в Таблице 11.3-1.
Таблица 11.3-1. Методы сервиса Worklist и шаблоны ресурсов
Подробные сведения обо всех требованиях к переходам между состояниями можно найти в Разделе CC.1.1 «Unified Procedure Step States» в PS3.4.
Транзакция Request Cancellation не выполняет фактического перехода между состояниями, но может вызвать такой переход.
При создании нового рабочего элемента для передачи UID рабочего элемента, который должен быть назначен, DIMSE использует Affected SOP Instance UID в заголовке DIMSE. В веб-сервисах UID рабочего элемента включается как параметр запроса в запрос Create. Все атрибуты в полезных нагрузках HTTP-транзакций те же, что и в полезной нагрузке DIMSE.
Эта транзакция создаёт рабочий элемент в целевом списке работ. Она соответствует операции UPS DIMSE N-CREATE.
Запрос должен иметь следующий синтаксис:
POST SP /workitems ?{workitem} SP version CRLF
Accept: dicom-media-type CRLF
Content-Type: dicom-media-type CRLF
(Content-Length: uint / Transfer-Encoding: encoding) CRLF
*(header-field CRLF)
CRLF
payload
Пользовательский агент должен соответствовать поведению SCU, указанному в Разделе CC.2.5.2 «Service Class User Behavior» в PS3.4.
Целевым ресурсом является либо список работ (Worklist), либо рабочий элемент (Workitem).
Если целевым ресурсом является список работ, то набор данных рабочего элемента в полезной нагрузке должен содержать UID рабочего элемента
Значение параметра запроса workitem — это UID рабочего элемента, который соответствует Affected SOP Instance UID операции UPS DIMSE N-CREATE.
Исходный сервер должен поддерживать параметры запроса в соответствии с требованиями Раздела 11.1.2.
Пользовательский агент должен предоставлять в запросе параметры запроса в соответствии с требованиями Раздела 11.1.2.
Исходный сервер должен поддерживать заголовки в соответствии с требованиями Таблицы 11.4.1-3.
Пользовательский агент должен предоставлять заголовки запроса, как определено в Таблице 11.4.1-3.
Таблица 11.4.1-3. Заголовки запроса
См. также Раздел 8.4.
Полезная нагрузка должна состоять из одной части, содержащей рабочий элемент, закодированный в типе мультимедиа, указанном в заголовке Content-Type. Полезная нагрузка должна содержать все элементы данных, подлежащие сохранению. Affected SOP Instance UID не должен присутствовать в наборе данных рабочего элемента.
Рабочий элемент в полезной нагрузке должен соответствовать всем требованиям к экземплярам из столбца Req. Type N-CREATE в Таблице CC.2.5-3 «UPS SOP Class N-CREATE/N-SET/N-GET/C-FIND Attributes» в PS3.4.
Исходный сервер должен создать новый рабочий элемент в состоянии SCHEDULED и вернуть URL-ссылку на созданный рабочий элемент в заголовке Location ответа. Рабочий элемент будет добавлен в список работ только один раз.
Исходный сервер должен создавать и поддерживать рабочий элемент в соответствии с поведением SCP, определённым в Разделе CC.2.5.3 в PS3.4 .
Ответ должен иметь следующий синтаксис:
version SP status-code SP reason-phrase CRLF
Content-Location: representation CRLF
Location: resource CRLF
*(header-field CRLF)
CRLF
[payload]
Таблица 11.4.3-1 показывает некоторые типичные коды состояния, соответствующие данной транзакции. См. также Раздел 8.5 для получения дополнительных кодов состояния.
Таблица 11.4.3-1. Значение кодов состояния
|
Целевой рабочий элемент был успешно добавлен в список работ. |
||
|
Возникла проблема с запросом. Например, полезная нагрузка запроса не удовлетворяла требованиям столбца Req. Type N-CREATE в Таблице CC.2.5-3 «UPS SOP Class N-CREATE/N-SET/N-GET/C-FIND Attributes» в PS3.4. |
||
Исходный сервер должен поддерживать заголовки в соответствии с требованиями Таблицы 11.4.3-2.
Таблица 11.4.3-2. Заголовки ответа
|
Должен присутствовать, если к полезной нагрузке не применено кодирование передачи |
|||
|
Должен присутствовать, если к полезной нагрузке применено кодирование передачи |
|||
|
Должен присутствовать, если ответ имеет полезную нагрузку, содержащую ресурс. См. Раздел 8.4.3. |
|||
|
URL-ссылка на созданный рабочий элемент. Должен присутствовать, если рабочий элемент был создан. Может присутствовать, если полезная нагрузка содержит ресурс |
|||
|
Должен присутствовать, если целевой рабочий элемент был изменён исходным сервером, и должен включать следующее предупреждение |
Если целевой рабочий элемент был изменён исходным сервером, ответ должен также содержать следующий заголовок Warning:
Warning: 299 <service>: The Workitem was created with modifications.CRLF
См. также Раздел 8.4.
Эта транзакция получает рабочий элемент. Она соответствует операции UPS DIMSE N-GET.
Требование к исходному серверу отвечать на запросы Retrieve Workitem для экземпляров UPS, перешедших в состояние COMPLETED или CANCELED, ограничено. См. Раздел CC.2.1.3 в PS3.4 .
Запрос должен иметь следующий синтаксис:
GET SP /workitems/{workitem} SP version CRLF
Accept dicom-media-type CRLF
[Cache-Control: no-cache CRLF]
*(header-field CRLF)
CRLF
Пользовательский агент должен соответствовать поведению SCU, указанному в Разделе CC.2.7.2 «Service Class User Behavior» в PS3.4.
Пользовательский агент должен предоставлять, а исходный сервер должен поддерживать общие параметры запроса из Раздела 11.1.2.
Исходный сервер должен поддерживать заголовки в соответствии с требованиями Таблицы 11.5.1-1.
Пользовательский агент должен предоставлять заголовки запроса, как определено в Таблице 11.5.1-1.
См. также Раздел 8.4.
Если рабочий элемент существует на исходном сервере, он должен быть возвращён в приемлемом типе мультимедиа (см. Раздел 8.7.4); однако исходный сервер может отправить ответ об ошибке на запросы для рабочих элементов, перешедших в состояние COMPLETED или CANCELED. См. Раздел CC.2.1.3 в PS3.4 .
Возвращённый рабочий элемент не должен содержать атрибут Transaction UID (0008,1195). Это необходимо для сохранения роли данного атрибута как блокировки доступа.
Ответ должен иметь следующий синтаксис:
version SP status-code SP reason-phrase CRLF
[Content-Type: dicom-media-type CRLF]
[(Content-Length: uint / Transfer-Encoding: encoding) CRLF]
[Content-Location: url CRLF]
*(header-field CRLF)
CRLF
[payload]
Таблица 11.5.3-1 показывает некоторые типичные коды состояния, соответствующие данной транзакции. См. также Раздел 8.5 для получения дополнительных кодов состояния.
Таблица 11.5.3-1. Значение кодов состояния
|
Исходный сервер не знает о целевом рабочем элементе. См. Раздел CC.2.1.3 «Service Class Provider Behavior» в PS3.4. |
||
|
Исходный сервер знает, что целевой рабочий элемент существовал, но был удалён. |
Исходный сервер должен поддерживать заголовки в соответствии с требованиями Таблицы 11.5.3-2.
Таблица 11.5.3-2. Заголовки ответа
|
Тип мультимедиа целевого рабочего элемента или отчёта о состоянии в полезной нагрузке |
|||
|
Должен присутствовать, если ответ имеет полезную нагрузку, содержащую ресурс. См. Раздел 8.4.3. |
|||
|
Должен присутствовать, если к полезной нагрузке не применено кодирование передачи |
|||
|
Должен присутствовать, если к полезной нагрузке применено кодирование передачи |
См. также Раздел 8.4.
Ответ при успехе имеет однопартийную полезную нагрузку, содержащую запрошенный рабочий элемент в выбранном типе мультимедиа. Рабочий элемент в полезной нагрузке должен соответствовать всем требованиям к экземплярам из столбца Req. Type N-GET в Таблице CC.2.5-3 «UPS SOP Class N-CREATE/N-SET/N-GET/C-FIND Attributes» в PS3.4.
Если рабочий элемент находится в состоянии IN PROGRESS, возвращённый рабочий элемент не должен содержать атрибут Transaction UID (0008,1195), так как он должен быть известен только владельцу.
Полезная нагрузка ответа об ошибке может содержать отчёт о состоянии, описывающий любые ошибки, предупреждения или другую полезную информацию.
Эта транзакция изменяет атрибуты существующего рабочего элемента. Она соответствует операции UPS DIMSE N-SET.
Запрос должен иметь следующий синтаксис:
POST SP /workitems/{workitem}?{Transaction-uid} SP version CRLF
Content-Type: dicom-media-type CRLF
(Content-Length: uint / Transfer-Encoding: encoding) CRLF
Content-Location: url CRLF
*(header-field CRLF)
CRLF
payload
Пользовательский агент должен соответствовать поведению SCU, указанному в Разделе CC.2.6.2 «Service Class User Behavior» в PS3.4.
Исходный сервер и пользовательский агент должны предоставлять общие параметры запроса из Раздела 11.1.2.
Исходный сервер должен также поддерживать параметр запроса Transaction UID, который указывает Transaction UID рабочего элемента, подлежащего обновлению.
Исходный сервер должен поддерживать заголовки в соответствии с требованиями Таблицы 11.6.1-1.
Пользовательский агент должен предоставлять заголовки запроса, как определено в Таблице 11.6.1-1.
Таблица 11.6.1-1. Заголовки запроса
См. также Раздел 8.4.
Полезная нагрузка запроса содержит набор данных с изменениями целевого рабочего элемента. Набор данных должен включать все элементы, подлежащие изменению. Все изменения рабочего элемента должны соответствовать всем требованиям, описанным в Раздел CC.2.6.2 в PS3.4 .
Исходный сервер должен изменить целевой рабочий элемент, как указано в запросе, и в соответствии с поведением SCP, указанным в Раздел CC.2.6.3 в PS3.4 .
Если рабочий элемент находится в состоянии COMPLETED или CANCELED, ответом должен быть ответ об ошибке 400 (Bad Request).
Ответ должен иметь следующий синтаксис:
version SP status-code SP reason-phrase CRLF
[Content-Type: media-type CRLF]
[(Content-Length: uint / Transfer-Encoding: encoding) CRLF]
[Content-Location: workitem CRLF
*(header-field CRLF)
CRLF
[payload]
Ответ должен содержать соответствующий код состояния.
Таблица 11.6.3-1 показывает некоторые типичные коды состояния, соответствующие данной транзакции. См. также Раздел 8.5 для получения дополнительных кодов состояния.
Таблица 11.6.3-1. Значение кодов состояния
Исходный сервер должен поддерживать заголовки в соответствии с требованиями Таблицы 11.6.3-2.
Таблица 11.6.3-2. Заголовки ответа
|
Должен присутствовать, если к полезной нагрузке не применено кодирование передачи |
|||
|
Должен присутствовать, если к полезной нагрузке применено кодирование передачи |
|||
|
Должен присутствовать, если ответ имеет полезную нагрузку, содержащую ресурс. См. Раздел 8.4.3. |
|||
|
Если целевой рабочий элемент был изменён исходным сервером, он должен включить одно из полей заголовка Warning, указанных ниже. |
Если рабочий элемент был успешно обновлён, но с изменениями, внесёнными исходным сервером, ответ должен включать следующее в поле заголовка Warning:
Warning: 299 <service>: The Workitem was updated with modifications.
Если необязательные атрибуты были отклонены, ответ должен включать следующее поле заголовка Warning:
Warning: 299 <service>: Requested optional Attributes are not supported.
Если запрос был отклонён с кодом состояния ошибки, ответ должен включать поле заголовка Warning с одним из следующих сообщений, наиболее точно описывающих характер конфликта:
Warning: 299 <service>: The Target URI did not reference a claimed Workitem.
Warning: 299 <service>: The submitted request is inconsistent with the current state of the Workitem.
См. также Раздел 8.4.
Эта транзакция используется для изменения состояния рабочего элемента. Она соответствует операции UPS DIMSE N-ACTION «Change UPS State». Изменения состояния используются для получения прав собственности, завершения или отмены рабочего элемента.
Запрос должен иметь следующий синтаксис:
PUT SP /workitems/{workitem}/state?requester={aetitle} SP version CRLF
Content-Type: dicom-media-type
(Content-Length: uint / Transfer-Encoding: encoding) CRLF
*(header-field CRLF)
CRLF
payload
Пользовательский агент должен соответствовать поведению SCU, указанному в Раздел CC.2.1.2 «Service Class User Behavior» в PS3.4.
Пользовательский агент должен предоставлять, а исходный сервер должен поддерживать общие параметры запроса из Раздела 11.1.2.
Исходный сервер должен поддерживать параметры запроса в соответствии с требованиями Таблицы 11.7.2.1-1.
Пользовательский агент должен предоставлять в запросе параметры запроса в соответствии с требованиями Таблицы 11.7.2.1-1.
Параметр requester имеет следующий синтаксис:
requester = "requester=" aetitle
Если параметр присутствует, его значением должен быть заголовок Application Entity (AE Title) запрашивающего пользовательского агента. Если параметр requester присутствует, исходный сервер должен использовать предоставленный AE Title в качестве значения атрибута Requesting AE (0074,1236) в отчётах о событиях UPS, формируемых для операции с рабочим элементом, как указано в Раздел CC.2.4.1 в PS3.4 .
Если параметр requester отсутствует, исходный сервер должен определять AE Title запрашивающей стороны специфичными для реализации средствами (например, HTTP-аутентификация, сертификаты клиента или другие механизмы).
Исходный сервер должен поддерживать заголовки в соответствии с требованиями Таблицы 11.7.1-1.
Пользовательский агент должен предоставлять заголовки запроса, как определено в Таблице 11.7.1-1.
Таблица 11.7.1-1. Заголовки запроса
См. также Раздел 8.4.
Полезная нагрузка запроса должна содержать элементы данных Change UPS State, как указано в Таблица CC.2.1-1 «Change UPS State - Action Information» в PS3.4. Этими элементами данных являются:
Полезная нагрузка запроса должна включать UID транзакции (Transaction UID). Пользовательский агент создаёт UID транзакции при запросе перехода в состояние IN PROGRESS для данного рабочего элемента. Пользовательский агент предоставляет этот UID транзакции в последующих транзакциях с этим рабочим элементом.
Допустимые значения соответствуют запрашиваемому переходу состояния. Это: «IN PROGRESS», «COMPLETED» или «CANCELED».
Исходный сервер должен поддерживать изменения состояния рабочего элемента, указанные в запросе, как описано в поведении SCP в Раздел CC.2.1.3 «Service Class Provider Behavior» в PS3.4.
Ответ должен иметь следующий синтаксис:
version SP status-code SP reason-phrase CRLF
[Content-Type: dicom-media-type CRLF]
[(Content-Length: uint / Transfer-Encoding: encoding) CRLF]
*(header-field CRLF) CRLF
[payload]
Таблица 11.7.3-1 показывает некоторые типичные коды состояния, соответствующие данной транзакции. См. также Раздел 8.5 для получения дополнительных кодов состояния.
Таблица 11.7.3-1. Значение кодов состояния
Исходный сервер должен поддерживать заголовки в соответствии с требованиями Таблицы 11.7.3-2.
Таблица 11.7.3-2. Заголовки ответа
|
Должен присутствовать, если к полезной нагрузке не применено кодирование передачи. |
|||
|
Должен присутствовать, если к полезной нагрузке применено кодирование передачи. |
|||
|
Должен присутствовать, если ответ имеет полезную нагрузку, содержащую ресурс. См. Раздел 8.4.3. |
|||
Если пользовательский агент указывает атрибут Procedure Step State (0074,1000) со значением «CANCELED», и рабочий элемент уже находится в этом состоянии, ответное сообщение должно включать следующее поле заголовка HTTP Warning:
Warning: 299 <service>: The UPS is already in the requested state of CANCELED.
Если пользовательский агент указывает атрибут Procedure Step State (0074,1000) со значением «COMPLETED», и экземпляр UPS уже находится в этом состоянии, ответное сообщение должно включать следующее поле заголовка HTTP Warning:
Warning: 299 <service>: The UPS is already in the requested state of COMPLETED.
Если запрос был отклонён с кодом состояния ошибки, ответное сообщение должно включать одно из следующих сообщений в поле заголовка HTTP Warning, описывающих характер конфликта:
Warning: 299 <service>: The Transaction UID is missing.
Warning: 299 <service>: The Transaction UID is incorrect.
Warning: 299 <service>: The submitted request is inconsistent with the state of the UPS Instance.
См. также Раздел 8.4.
Эта транзакция позволяет пользовательскому агенту, не являющемуся владельцем рабочего элемента, запросить его отмену. Она соответствует операции UPS DIMSE N-ACTION «Request UPS Cancel». См. Раздел CC.2.2 в PS3.4 .
Чтобы отменить рабочий элемент, принадлежащий пользовательскому агенту, т.е. находящийся в состоянии IN PROGRESS, пользовательский агент использует транзакцию Change Workitem State, как описано в Разделе 11.7.
Запрос должен иметь следующий синтаксис:
POST SP /workitems/{workitem}/cancelrequest?requester={aetitle} SP version CRLF
Content-Type: dicom-media-type
(Content-Length: uint / Transfer-Encoding: encoding) CRLF
*(header-field CRLF)
CRLF
[payload]
Пользовательский агент должен соответствовать поведению SCU, указанному в Раздел CC.2.2.2 «Service Class User Behavior» в PS3.4.
Пользовательский агент должен предоставлять, а исходный сервер должен поддерживать общие параметры запроса из Раздела 11.1.2.
Исходный сервер должен поддерживать параметры запроса в соответствии с требованиями Таблицы 11.7.2.1-1.
Пользовательский агент должен предоставлять в запросе параметры запроса в соответствии с требованиями Таблицы 11.7.2.1-1.
Исходный сервер должен поддерживать заголовки в соответствии с требованиями Таблицы 11.8.1-1.
Пользовательский агент должен предоставлять заголовки запроса, как определено в Таблице 11.8.1-1.
Таблица 11.8.1-1. Заголовки запроса
См. также Раздел 8.4.
Полезная нагрузка запроса, если она присутствует, может описывать причину запроса отмены рабочего элемента, отображаемое имя контактного лица (Contact Display Name) и/или URI контактного лица (Contact URI) для обсуждения запроса на отмену.
Информация для действия Request UPS Cancel указана в Таблица CC.2.2-1 «Request UPS Cancel - Action Information» в PS3.4.
Исходный сервер должен обработать запрос, как описано в поведении SCP в Раздел CC.2.2.3 «Service Class Provider Behavior» в PS3.4.
Ответ должен иметь следующий синтаксис:
version SP status-code SP reason-phrase CRLF
[Content-Type dicom-media-type CRLF]
[Content-Type: dicom-media-type CRLF]
[(Content-Length: uint / Transfer-Encoding: encoding) CRLF]
[Content-Location: url CRLF]
*(header-field CRLF) CRLF
[payload]
Таблица 11.8.3-1 показывает некоторые типичные коды состояния, соответствующие данной транзакции. См. также Раздел 8.5 для получения дополнительных кодов состояния.
Исходный сервер должен поддерживать заголовки в соответствии с требованиями Таблицы 11.8.3-2.
Таблица 11.8.3-2. Заголовки ответа
Если экземпляр рабочего элемента уже находится в отменённом состоянии, ответное сообщение должно включать следующее поле заголовка HTTP Warning:
Warning: 299 <service>: The UPS is already in the requested state of CANCELED.
Если запрос был отклонён с кодом состояния ошибки, ответное сообщение должно включать одно из следующих сообщений в поле заголовка HTTP Warning, описывающих характер конфликта:
Warning: <service>: The UPS is already COMPLETED.
Warning: <service>: Performer chooses not to cancel.
Warning: <service>: The performer cannot be contacted.
См. также Раздел 8.4.
Эта транзакция выполняет поиск в списке работ рабочих элементов, соответствующих указанным параметрам запроса, и возвращает список совпадающих рабочих элементов. Каждый рабочий элемент в возвращённом списке включает возвращаемые атрибуты, указанные в запросе. Транзакция соответствует операции UPS DIMSE C-FIND.
Запрос должен иметь следующий синтаксис:
GET SP /workitems?{&match*}{&includefield}{&fuzzymatching}{&offset}{&limit} SP version CRLF
Accept: dicom-media-types CRLF
*(header-field CRLF)
CRLF
Пользовательский агент должен соответствовать поведению SCU, указанному в Разделе CC.2.8.2 «Поведение пользователя класса службы» в PS3.4.
Исходный сервер должен поддерживать параметры запроса, как требуется в Таблице 8.3.4-1.
Пользовательский агент должен предоставлять в запросе параметры запроса, как требуется в Таблице 8.3.4-1.
Исходный сервер должен поддерживать поля заголовка, как требуется в Таблице 11.9.1-1.
Пользовательский агент должен предоставлять поля заголовка запроса, как определено в Таблице 11.9.1-1.
См. также Раздел 8.4.
Исходный сервер должен выполнять поиск в соответствии с требованиями, указанными в Разделе 8.3.4.
Для каждого соответствующего Рабочего элемента исходный сервер должен включить в результаты:
Все атрибуты экземпляра Unified Procedure Step в Таблице CC.2.5-3 “UPS SOP Class N-CREATE/N-SET/N-GET/C-FIND Attributes” в PS3.4 с типом возвращаемого ключа 1 или 2.
Все атрибуты экземпляра Unified Procedure Step в Таблице CC.2.5-3 “UPS SOP Class N-CREATE/N-SET/N-GET/C-FIND Attributes” в PS3.4 с типом возвращаемого ключа 1C или 2C, для которых выполняются условные требования.
Все остальные атрибуты Рабочего элемента, переданные в качестве параметров сопоставления, которые поддерживаются исходным сервером в качестве атрибутов сопоставления или возврата.
Все остальные атрибуты Рабочего элемента, переданные в качестве значений параметра includefield, которые поддерживаются исходным сервером в качестве атрибутов возврата.
Ответ должен иметь следующий синтаксис:
version SP status-code SP reason-phrase CRLF
[Content-Type: dicom-media-type CRLF]
[(Content-Length: uint / Transfer-Encoding: encoding) CRLF]
[Content-Location: url CRLF]
*(header-field CRLF)
CRLF
[payload]
Таблица 11.9.3-1 показывает некоторые общие коды состояния, соответствующие этой Транзакции. См. также Раздел 8.5 для получения дополнительных кодов состояния.
Table 11.9.3-1. Status Code Meaning
Исходный сервер должен поддерживать поля заголовка, как указано в Таблице 11.9.3-2.
Table 11.9.3-2. Response Header Fields
|
Должен присутствовать, если кодирование передачи не применено к полезной нагрузке. |
|||
|
Должен присутствовать, если кодирование передачи применено к полезной нагрузке. |
|||
|
Должно присутствовать, если ответ содержит полезную нагрузку с ресурсом. См. Раздел 8.4.3. |
См. также Раздел 8.4.
Полезная нагрузка ответа при успехе должна содержать результаты поиска в приемлемом типе медиа. См. Раздел 8.7.5. Если (results = 0), то совпадений нет и должен быть возвращён ответ 200 (OK) с пустой полезной нагрузкой. Пустая полезная нагрузка должна быть отформатирована, как указано в Разделе 8.3.4.4.1. См. Раздел 8.6.
Каждый результат поиска в полезной нагрузке должен соответствовать всем требованиям в столбцах Matching Key Type и Return Key Type из Таблицы CC.2.5-3 «Атрибуты N-CREATE/N-SET/N-GET/C-FIND класса SOP UPS» в PS3.4.
Полезная нагрузка ответа об ошибке может содержать Отчёт о состоянии, описывающий любые ошибки, предупреждения или другую полезную информацию.
Эта Транзакция создаёт подписку на ресурс Рабочего списка или Рабочего элемента. Она соответствует операции UPS DIMSE N-ACTION «Subscribe to Receive UPS Event Reports».
После создания подписки пользовательский агент будет получать уведомления, содержащие Отчёты о событиях для событий, связанных с ресурсом подписки. Чтобы получать уведомления, генерируемые подписками, пользовательский агент должен сначала открыть Соединение уведомлений между собой и исходным сервером с помощью Транзакции открытия соединения уведомлений; см. Раздел 8.10.4.
Запрос должен иметь следующий синтаксис:
POST SP /workitems/{resource}/subscribers/{subscriber}{?deletionlock}{&filter} SP version CRLF
*(header-field CRLF)
CRLF
Пользовательский агент должен соответствовать поведению SCU, указанному в Разделе CC.2.3.2 «Поведение пользователя класса службы» в PS3.4.
Исходный сервер должен поддерживать ресурсы, указанные в Таблице 11.10.1-1.
Исходный сервер должен поддерживать параметры запроса, как указано в Таблице 11.10.1-2.
Пользовательский агент должен указать в параметрах запроса, как требуется в Таблице 11.10.1-2.
Table 11.10.1-2. Query Parameters by Resource
Параметр запроса Deletion Lock имеет следующий синтаксис:
deletionlock = "deletionlock=" true / false
Если присутствует со значением true, подписка будет создана с блокировкой удаления (см. Раздел CC.2.3.1 «Информация о действии» в PS3.4).
Параметр запроса Filter имеет следующий синтаксис:
filter = 1#(attribute "=" value)
Это разделённый запятыми список из одного или нескольких ключей сопоставления (пар атрибут/значение). Подписка на Рабочий элемент будет создана для любого существующего и будущего Рабочего элемента, который соответствует парам атрибут/значение фильтра. Допустимые атрибуты для этого параметра запроса определяются IOD UPS (см. Раздел B.26.2 «Модули IOD» в PS3.3).
См. Раздел 8.3.4.1 для синтаксиса ключей сопоставления.
Запрос не имеет обязательных полей заголовка. See Разделе 8.4.
Исходный сервер должен создать подписку на целевой ресурс и управлять ею для пользовательского агента. Исходный сервер должен соответствовать поведению SCP, указанному в Разделе CC.2.3.3 «Поведение поставщика класса службы» в PS3.4.
Ответ должен иметь следующий синтаксис:
version SP status-code SP reason-phrase CRLF
[Content-Type: media-type CRLF]
[(Content-Length: uint / Transfer-Encoding: encoding) CRLF]
[Content-Location: url CRLF]
*(header-field CRLF)
CRLF
[payload]
Таблица 11.10.3-1 показывает некоторые общие коды состояния, соответствующие этой Транзакции. См. также Раздел 8.5 для получения дополнительных кодов состояния.
Table 11.10.3-1. Status Code Meaning
Исходный сервер должен поддерживать поля заголовка, как указано в Таблице 11.10.3-2.
Table 11.10.3-2. Response Header Fields
Если запрос на создание подписки был принят, но Блокировка удаления — нет, ответ должен включать следующее поле заголовка Warning:
Warning: 299 <service>: Deletion Lock not granted.
и может содержать Отчёт о состоянии.
Если запрос был отклонён с кодом состояния 403, поскольку подписка на отфильтрованный Рабочий список не поддерживается, ответ должен включать следующее поле заголовка Warning:
Warning: 299 <service>: Filtered Worklist Subscriptions are not supported.
См. также Раздел 8.4.
Эта Транзакция используется для остановки отправки исходным сервером новых Отчётов о событиях пользовательскому агенту и может также остановить подписку пользовательского агента на новые Рабочие элементы.
Запрос должен иметь следующий синтаксис:
DELETE SP {/resource} SP version CRLF
*(header-field CRLF)
CRLF
Исходный сервер должен поддерживать ресурсы, указанные в Таблице 11.11.1-1.
При получении запроса отписки исходный сервер должен попытаться удалить подписку на Рабочий элемент, подписку на Рабочий список или подписку на отфильтрованный Рабочий список указанной Application Entity относительно указанного UID Рабочего элемента, UID Рабочего списка или UID отфильтрованного Рабочего списка, как описано в Разделе CC.2.3.3 в PS3.4 and then return an appropriate response.
Для ресурса Рабочего элемента это соответствует операции UPS DIMSE N-ACTION «Unsubscribe from Receiving UPS Event Reports».
Для ресурса Рабочего списка или отфильтрованного Рабочего списка эта Транзакция соответствует операции UPS DIMSE N-ACTION «Unsubscribe from Receiving UPS Event Reports» для глобальной подписки, идентифицируемой известным UID.
Ответ должен иметь следующий синтаксис:
version SP status-code SP reason-phrase CRLF
[Content-Type: media-type CRLF]
[(Content-Length: uint / Transfer-Encoding: encoding) CRLF]
[Content-Location: url CRLF]
*(header-field CRLF)
CRLF
[payload]
Таблица 11.11.3-1 показывает некоторые общие коды состояния, соответствующие этой Транзакции. См. также Раздел 8.5 для получения дополнительных кодов состояния.
Исходный сервер должен поддерживать поля заголовка, как указано в Таблице 11.11.3-2.
Table 11.11.3-2. Response Header Fields
См. также Раздел 8.4.
Эта Транзакция используется для остановки автоматической подписки пользовательского агента исходным сервером на новые Рабочие элементы. Это не удаляет существующие подписки на конкретные Рабочие элементы.
Запрос должен иметь следующий синтаксис:
POST SP {/resource} SP version CRLF
*(header-field CRLF)
CRLF
Исходный сервер должен поддерживать ресурсы, указанные в Таблице 11.12.1-1.
При получении запроса приостановки исходный сервер должен попытаться удалить подписку на Рабочий список или подписку на отфильтрованный Рабочий список указанной Application Entity относительно указанного UID Рабочего списка или UID отфильтрованного Рабочего списка, как описано в Разделе CC.2.3.3 в PS3.4 and then return an appropriate response.
Эта Транзакция соответствует операции UPS DIMSE N-ACTION «Suspend Global Subscription»
Ответ должен иметь следующий синтаксис:
version SP status-code SP reason-phrase CRLF
[Content-Type: media-type CRLF]
[(Content-Length: uint / Transfer-Encoding: encoding) CRLF]
[Content-Location: url CRLF]
*(header-field CRLF)
CRLF
[payload]
Таблица 11.12.3-1 показывает некоторые общие коды состояния, соответствующие этой Транзакции. См. также Раздел 8.5 для получения дополнительных кодов состояния.
Исходный сервер должен поддерживать поля заголовка, как указано в Таблице 11.12.3-2.
Table 11.12.3-2. Response Header Fields
См. также Раздел 8.4.
Исходный сервер использует Транзакцию отправки отчёта о событии (см. Раздел 8.10.5) для отправки Отчёта о событии Рабочего элемента, содержащего подробности любого изменения состояния Рабочего элемента пользовательскому агенту.
Исходный сервер должен отправлять Отчёты о событиях Рабочих элементов, как описано в Разделе CC.2.4.3 в PS3.4 .
Отчёт о событии должен содержать все обязательные атрибуты, описанные в Таблице CC.2.4-1 «Отчёт об изменении статуса UPS — информация отчёта о событии» в PS3.4 и Таблице 10.3-2 «Поля сообщения N-EVENT-REPORT-RSP» в PS3.7.
Ниже приведён пример полезной нагрузки Отчёта о событии Рабочего элемента в формате application/dicom+json:
{
"00000002": {"vr": "UI", "Value": ["1.2.840.10008.5.1.4.34.6.4"] },
"00000110": {"vr": "US", "Value": [23] },
"00001000": {"vr": "UI", "Value": ["2.25.13834239247872462607454213026820645668"] },
"00001002": {"vr": "US", "Value": [1] },
"00404041": {"vr": "US", "Value": ["READY"] },
"00741000": {"vr": "LT", "Value": ["SCHEDULED"] }
} CRLF
Сервис хранения экземпляров, не связанных с пациентом (NPI), позволяет пользовательскому агенту извлекать, сохранять и выполнять поиск на исходном сервере для экземпляров, не связанных с отдельным пациентом.
Экземпляры, не связанные с пациентом, подчиняются информационной модели IOD составного экземпляра, которая не имеет в своём корне информационной сущности пациента, представляющей отдельного пациента.
«Не связанный с пациентом» не означает, что в экземплярах нет связанной с пациентом идентифицируемой информации. Например, IOD Inventory включает атрибуты пациента, но не имеет IE пациента в корне своей информационной модели.
Служба хранилища NPI управляет коллекцией ресурсов, относящихся к категориям, указанным в Таблице 12.1.1-1.
Все исходные серверы сервиса хранения NPI должны поддерживать транзакции Retrieve Capabilities, Retrieve и Search. Поддержка транзакции Store необязательна. Все пользовательские агенты сервиса хранения NPI поддерживают одну или несколько из транзакций Retrieve Capabilities, Retrieve, Store или Search.
Сервис NPI управляет ресурсами из одной категории NPI. Целевые URI имеют следующие шаблоны:
/{npi-name}
/{npi-name}/{uid}
npi-name = "color-palettes"
/ "defined-procedure-protocols"
/ "hanging-protocols"
/ "implant-templates"
/ "inventories"
/ "protocol-approvals"
uid ; is the Unique Identifier of an NPI Instance
Таблице 12.1.1-1 contains the templates for the NPI Resource Categories.
Table 12.1.1-1. Resource Categories, URI Templates and Descriptions
/color-palettes{/uid}
|
Section GG “Non-Patient Object Storage Service Class” в PS3.4 |
|||
/defined-procedure-protocols{/uid}
|
Section GG “Non-Patient Object Storage Service Class” в PS3.4 |
|||
/hanging-protocols{/uid}
|
Section GG “Non-Patient Object Storage Service Class” в PS3.4 |
|||
/implant-templates{/uid}
|
Section GG “Non-Patient Object Storage Service Class” в PS3.4 |
|||
/inventories{/uid}
|
Section GG “Non-Patient Object Storage Service Class” в PS3.4 |
|||
/protocol-approvals{/uid}
|
Section GG “Non-Patient Object Storage Service Class” в PS3.4 |
Классы SOP NPI перечислены в Таблице GG.3-1 «Стандартные классы SOP» в PS3.4.
Исходный сервер должен поддерживать параметры запроса, как указано в Таблице 12.1.2-1.
Пользовательский агент должен указать в параметрах запроса, как требуется в Таблице 12.1.2-1.
См. также Раздел 8.4.
Исходный сервер должен поддерживать типы мультимедиа, указанные как обязательные или по умолчанию в Таблице 12.1.3-1 для всех транзакций NPI.
Исходный сервер, соответствующий сервису NPI, должен реализовать Транзакцию Retrieve Capabilities (см. Раздел 8.9.1).
Исходный сервер должен поддерживать транзакции, указанные как обязательные в Таблице 12.2-1.
Реализации должны указать в своём Заявлении о соответствии (см. PS3.2) и Транзакции Retrieve Capabilities (см. Раздел 8.9 и Приложение H):
Кроме того, для каждой поддерживаемой Транзакции они должны указать:
Служба NPI состоит из транзакций, перечисленных в Таблице 12.3-1.
Table 12.3-1. NPI Service Transactions
Параметр npi-name указывает тип ресурса(ов), содержащегося в полезной нагрузке.
Таблице 12.3-2 summarizes the Target Resources permitted for each Transaction.
Транзакция извлечения извлекает целевой ресурс NPI в типе медиа DICOM.
Запрос должен иметь следующий синтаксис:
GET SP /{npi-name}/{uid} SP version CRLF
Accept: 1#dicom-media-type CRLF
*(header-field CRLF)
CRLF
Целевой URI должен ссылаться на один из ресурсов, показанных в Таблице 12.4.1-1.
Исходный сервер должен указать все поддерживаемые npi-names в своём Заявлении о соответствии и в ответе на Транзакцию Retrieve Capabilities.
Пользовательский агент должен предоставлять, а исходный сервер должен поддерживать общие параметры запроса из Раздела 12.1.2.
Исходный сервер должен поддерживать поля заголовка, как указано в Таблице 12.4.1-2.
Пользовательский агент должен указать в полях заголовка запроса, как определено в Таблице 12.4.1-2.
См. также Раздел 8.4.
Исходный сервер должен попытаться найти целевой ресурс и, если он найден, вернуть его в допустимом типе мультимедиа DICOM. См. Раздел 8.7.5.
Полезная нагрузка ответа об ошибке может содержать Отчёт о состоянии, описывающий любые ошибки, предупреждения или другую полезную информацию.
Ответ должен иметь следующий синтаксис:
version SP status-code SP reason-phrase CRLF
[Content-Type: dicom-media-type CRLF]
[(Content-Length: uint / Transfer-Encoding: encoding) CRLF]
[Content-Location: url CRLF]
*(header-field CRLF
CRLF
[payload]
Таблица 12.4.3-1 показывает некоторые общие коды состояния, соответствующие этой Транзакции. См. также Раздел 8.5 для получения дополнительных кодов состояния.
Table 12.4.3-1. Status Code Meaning
Table 12.4.3-2. Response Header Fields
См. также Раздел 8.4.
Эта Транзакция запрашивает у исходного сервера сохранение представлений NPI, содержащихся в полезной нагрузке запроса, чтобы они могли быть извлечены в будущем с использованием UID экземпляров SOP.
Запрос должен иметь следующий синтаксис:
POST SP /{npi-name} {/uid} SP version CRLF
Content-Type: dicom-media-type CRLF
(Content-Length: uint / Transfer-Encoding: encoding) CRLF
CRLF
payload
Целевой URI должен ссылаться на один из ресурсов, показанных в Таблице 12.5.1-1.
Исходный сервер должен указать все поддерживаемые npi-names в своём Заявлении о соответствии и в ответе на Транзакцию Retrieve Capabilities.
Пользовательский агент должен предоставлять, а исходный сервер должен поддерживать общие параметры запроса из Раздела 12.1.2.
Table 12.5.1-2. Request Header Fields
См. также Раздел 8.4.
Исходный сервер сохраняет представления, содержащиеся в полезной нагрузке запроса, чтобы они могли быть извлечены позже с помощью Транзакции извлечения.
Перед сохранением представлений исходный сервер может скорректировать элементы данных.
Если какой-либо элемент скорректирован, Original Attribute Sequence (0400,0561) (см. Раздел C.12.1 «Общий модуль SOP» в PS3.3) должен быть включён в сохранённые экземпляры DICOM. Как Original Attribute Sequence, так и ответ должны описывать изменения.
Ответ должен иметь следующий синтаксис:
version SP status-code SP reason-phrase CRLF
[Content-Type: media-type CRLF]
[(Content-Length: uint / Transfer-Encoding: encoding) CRLF]
[Content-Location: url CRLF]
*(header-field CRLF)
CRLF
[payload]
Таблица 12.5.3-1 показывает некоторые общие коды состояния, соответствующие этой Транзакции. См. также Раздел 8.5 для получения дополнительных кодов состояния.
Table 12.5.3-1. Status Code Meaning
Table 12.5.3-2. Response Header Fields
См. также Раздел 8.4.
Если исходному серверу не удалось сохранить или он изменил какие-либо представления в полезной нагрузке запроса, полезная нагрузка ответа должна содержать Отчёт о состоянии, описывающий любые добавления, изменения или удаления сохранённых представлений. Отчёт о состоянии может также описывать любые предупреждения или другую полезную информацию.
Транзакция поиска выполняет поиск в коллекции экземпляров NPI, содержащихся в целевом ресурсе. Критерии поиска указываются в параметрах запроса. Каждое совпадение включает атрибуты по умолчанию и запрошенные атрибуты из соответствующего экземпляра. Успешный ответ возвращает список, описывающий соответствующие экземпляры.
Запрос должен иметь следующий синтаксис:
GET SP /{npi-name} {?parameter*} SP version CRLF
Accept: 1#dicom-media-type CRLF
*(header-field CRLF)
CRLF
Целевой URI должен ссылаться на один из ресурсов, показанных в Таблице 12.6.1-1.
Исходный сервер должен указать все поддерживаемые npi-names в своём Заявлении о соответствии и в ответе на Транзакцию Retrieve Capabilities.
Пользовательский агент должен предоставлять, а исходный сервер должен поддерживать общие параметры запроса из Раздела 12.1.2.
Исходный сервер должен поддерживать параметры запроса, как требуется в Таблице 8.3.4-1.
Пользовательский агент должен предоставлять в запросе параметры запроса, как требуется в Таблице 8.3.4-1.
Для каждой категории ресурсов, поддерживаемой исходным сервером, он должен поддерживать поведение и ключевые атрибуты сопоставления, указанные в соответствующих разделах в Таблице 12.6.1-2.
Table 12.6.1-2. NPI Resource Search Attributes
Исходный сервер должен поддерживать поля заголовка, как указано в Таблице 12.6.1-3.
Пользовательский агент должен указать в полях заголовка запроса, как определено в Таблице 12.6.1-3.
См. также Раздел 8.4.
Исходный сервер должен выполнить поиск, указанный в запросе, используя поведение сопоставления, указанное в Разделе 8.3.4.1.1 и в соответствующих разделах в Таблице 8.3.4-1.
Правила для результатов поиска указаны в Разделе 8.3.4.
Ответ должен иметь следующий синтаксис:
version SP status-code SP reason-phrase CRLF
[Content-Type: dicom-media-type CRLF]
[(Content-Length: uint / Transfer-Encoding: encoding) CRLF]
[Content-Location: url CRLF]
*(header-field CRLF
CRLF
[payload]
Таблица 12.6.3-1 показывает некоторые общие коды состояния, соответствующие этой Транзакции. См. также Раздел 8.5 для получения дополнительных кодов состояния.
Table 12.6.3-1. Status Code Meaning
Table 12.6.3-2. Response Header Fields
См. также Раздел 8.4.
Успешный ответ должен содержать результаты поиска в допустимом типе мультимедиа. См. Раздел 8.7.5.
Полезная нагрузка ответа об ошибке может содержать Отчёт о состоянии, описывающий любые ошибки, предупреждения или другую полезную информацию.
Служба подтверждения сохранения (Storage Commitment Service) позволяет пользовательскому агенту запрашивать надежное сохранение экземпляров на исходном сервере. Она соответствует классу службы DIMSE Storage Commitment, определенному в Разделе J «Класс службы подтверждения сохранения» в PS3.4, и имеет ту же семантику.
Поскольку подтверждение сохранения экземпляров часто является длительной операцией на исходном сервере, использование этой службы может быть разделено на две транзакции по усмотрению исходного сервера: 1) запрос подтверждения и — когда исходный сервер еще не может вернуть результат — 2) проверка результата, в соответствии с шаблоном Asynchronous Request-Reply (ARR) [Ekuan].
PACS может задерживать ответ на запрос подтверждения сохранения, который он получает, например, до тех пор, пока используемая им VNA для долгосрочного хранения не даст подтверждение для указанных экземпляров.
Рисунок 13.1-1 показывает возможные сценарии запроса подтверждения сохранения.
Процесс начинается, когда пользовательский агент отправляет запрос исходному серверу. Этот запрос требует от исходного сервера подтверждения надежного сохранения набора SOP-экземпляров, определенных соответствующими UID.
В случае, если исходный сервер отвечает на запрос статусом Done, он ведет себя синхронно и возвращает для каждого экземпляра, подтверждает ли он надежное сохранение этого экземпляра или нет. Пользовательский агент может обработать этот результат соответствующим образом, например, удалив локальные копии экземпляров, которые теперь надежно сохранены на исходном сервере.
В случае, если исходный сервер отвечает на запрос статусом Working, он ведет себя асинхронно и продолжает обработку запроса. В этом случае пользовательскому агенту необходимо через некоторое время выполнить проверку результата. При выполнении такой проверки исходный сервер может ответить статусом Done и предоставит результат того же типа, что и в синхронном случае, который пользовательский агент может обработать тем же образом. Исходный сервер также может ответить на проверку результата статусом Working, что заставит пользовательского агента повторить проверку результата. Этот процесс продолжается до тех пор, пока исходный сервер не ответит статусом Done, завершая процесс.
Как для запроса, так и для проверки результата возможно, что исходный сервер вернет ошибку, и это также должно быть соответствующим образом обработано пользовательским агентом; см. Таблицу 13.4.3-1 и Таблицу 13.5.3-1 для получения более подробной информации.
Эта служба определяет один ресурс:
Исходный сервер должен поддерживать параметры запроса, как требуется в Таблице 13.1.2-1.
Пользовательский агент должен предоставлять в запросе параметры запроса, как требуется в Таблице 13.1.2-1.
См. также Раздел 8.4.
Исходный сервер должен поддерживать типы носителей, указанные как По умолчанию или Обязательные в Таблице 13.1.3-1.
Реализации, соответствующие службе подтверждения сохранения, должны поддерживать транзакции, указанные как Обязательные в Таблице 13.2-1.
Реализации, соответствующие службе подтверждения сохранения, должны указывать свою роль в Заявлении о соответствии (см. PS3.2): исходный сервер, пользовательский агент или оба варианта.
Кроме того, для каждой поддерживаемой транзакции они должны указывать:
Исходный сервер, соответствующий службе подтверждения сохранения, должен реализовать транзакцию Retrieve Capabilities, указав свою роль (см. Раздел 8.9 и Приложение H).
Специфичные для реализации коды предупреждений и ошибок должны быть включены в Заявление о соответствии.
Реализация исходного сервера определяет, как она обеспечивает подтверждение сохранения. Некоторые исходные серверы могут подтверждать постоянное хранение SOP-экземпляров (например, система архивирования), тогда как другие исходные серверы могут подтверждать хранение SOP-экземпляров в течение ограниченного времени. Исходный сервер должен документировать в своем Заявлении о соответствии характер своего подтверждения сохранения (например, длительность хранения, возможности извлечения и задержка, емкость).
После того как исходный сервер подтвердил сохранение SOP-экземпляров, пользовательский агент может решить, что целесообразно удалить свои копии SOP-экземпляров. Поведение такого рода выходит за рамки настоящего Стандарта; тем не менее пользовательский агент должен документировать типы поведения, которые он может обеспечить, в своем Заявлении о соответствии.
Реализация исходного сервера должна указать в своем Заявлении о соответствии, как долго результат запроса будет доступен для пользовательского агента.
Служба подтверждения сохранения состоит из транзакций, перечисленных в Таблице 13.3-1.
Таблица 13.3-1. Транзакции службы подтверждения сохранения
Эти транзакции используют один и тот же ресурс (/commitment-requests/{TransactionUID}), но различаются своим методом.
Эта транзакция позволяет пользовательскому агенту запросить исходный сервер подтвердить надежное сохранение набора экземпляров.
Запрос должен иметь следующий синтаксис:
POST SP /commitment-requests/{TransactionUID} SP version CRLF
Accept: 1#media-type CRLF
*(header-field CRLF)
CRLF
payload
Целевым ресурсом этой транзакции является индивидуальный запрос подтверждения сохранения, идентифицируемый своим Transaction UID.
В DIMSE результаты могут возвращаться асинхронно, и SCU использует атрибут Transaction UID, возвращаемый SCP в результате, для сопоставления его с соответствующим запросом. В DICOMweb каждый запрос, содержащий Transaction UID в пути ресурса, синхронно связывается с ответом, поэтому Transaction UID не кодируется в ответе.
Исходный сервер должен поддерживать заголовки запроса, как требуется в Таблице 13.4.1-2.
Пользовательский агент должен предоставлять заголовки запроса, как требуется в Таблице 13.4.1-2.
См. также Раздел 8.4.
Полезная нагрузка запроса должна присутствовать и должна содержать одно представление, согласованное с заголовком Content-Type. Представление должно соответствовать типам носителей, описанным в Разделе 8.7.3 Наборы типов носителей DICOM. Полезная нагрузка должна соответствовать Разделу 8.6 Полезные нагрузки.
Полезная нагрузка запроса должна содержать Referenced SOP Instance UIDs, для которых пользовательский агент запрашивает у исходного сервера подтверждение сохранения.
Полезная нагрузка запроса должна содержать Модуль запроса подтверждения сохранения. См. Раздел J.1.
Исходный сервер должен обработать запрос подтверждения сохранения. Ответ при успехе либо возвращает:
Код успешного завершения 200 (OK) следует понимать только в том смысле, что запрос был успешно разобран и исходный сервер вернул ответ подтверждения сохранения. Ответ подтверждения сохранения может указывать на то, что подтверждение сохранения не удалось для некоторых или даже для всех указанных SOP-экземпляров.
Ответ должен иметь следующий синтаксис:
version SP status-code SP reason-phrase CRLF
[retry-after CRLF]
CRLF
[payload]
Таблица 13.4.3-1 показывает некоторые общие коды состояния, соответствующие этой транзакции. См. также Раздел 8.5 для получения дополнительных кодов состояния.
Таблица 13.4.3-1. Значение кода состояния
|
Исходный сервер завершил обработку запроса подтверждения сохранения; полезная нагрузка подробно описывает, какие указанные SOP-экземпляры были приняты для надежного сохранения, а какие — нет. |
||
|
Исходный сервер еще не завершил обработку запроса подтверждения сохранения; полезная нагрузка отсутствует. Ожидается, что пользовательский агент продолжит взаимодействие с помощью транзакции проверки результата, как описано в Разделе 13.5, чтобы получить результат запроса подтверждения сохранения. |
||
|
Исходный сервер не может обработать запрос подтверждения сохранения из-за ошибок в заголовках или параметрах запроса. |
||
|
Исходный сервер не может обработать запрос подтверждения сохранения, поскольку предоставленный Transaction UID уже используется. |
||
|
Исходный сервер не может обработать запрос подтверждения сохранения; это может быть временным или постоянным состоянием. |
Исходный сервер должен поддерживать заголовки, как требуется в Таблице 13.4.3-2.
Таблица 13.4.3-2. Заголовки ответа
|
См. Раздел 8.4.2. |
|||
|
См. Раздел 8.4.2. |
|||
|
См. Раздел 8.4.3. |
|||
|
Количество секунд, в течение которых пользовательскому агенту предлагается подождать до (следующей) проверки результата или повторного выполнения запроса. |
Все ответы при успехе должны также содержать Заголовки представления содержимого (см. Раздел 8.4.2) и заголовки полезной нагрузки (см. Раздел 8.4.3) с соответствующими значениями.
Рекомендуется, чтобы текст, возвращаемый в заголовке Warning (см. [RFC7234] Раздел 5.5), содержал код состояния DICOM (см. PS3.4 и Приложение C «Кодирование типов состояния (нормативное)» в PS3.7) и описательную причину. Например:
Warning: A700 <service>: Out of memory
Полезная нагрузка успешного ответа 200 (OK) должна содержать Модуль ответа подтверждения сохранения. См. Раздел J.2.
Успешный ответ 202 (Accepted) не будет содержать полезной нагрузки.
Полезная нагрузка ответа при ошибке может содержать отчет о состоянии, описывающий ошибки, предупреждения или другую полезную информацию.
Эта транзакция позволяет пользовательскому агенту запросить исходный сервер предоставить результат более раннего запроса.
Пользовательский агент использует эту транзакцию, когда исходный сервер ответил кодом состояния 202 (Accepted) либо на запрос, либо на транзакцию проверки результата.
Запрос должен иметь следующий синтаксис:
GET SP /commitment-requests/{TransactionUID} SP version CRLF
Accept: 1#media-type CRLF
*(header-field CRLF)
CRLF
Целевым ресурсом этой транзакции является индивидуальный запрос подтверждения сохранения, идентифицируемый своим Transaction UID.
Исходный сервер должен поддерживать заголовки проверки результата, как требуется в Таблице 13.5.1-2.
Пользовательский агент должен предоставлять заголовки проверки результата, как требуется в Таблице 13.5.1-2.
Наличие и значения заголовков проверки результата подтверждения сохранения должны быть теми же, что и у заголовков запроса подтверждения сохранения.
См. также Раздел 8.4.
Если результат, идентифицированный Transaction UID, доступен на исходном сервере, этот результат возвращается в допустимом типе носителя (см. Раздел 8.7.4); результат подробно описывает, какие указанные SOP-экземпляры были приняты для надежного сохранения, а какие — нет.
Если этот результат еще не доступен, сервер вернет сообщение о том, что он все еще обрабатывает запрос подтверждения сохранения.
Ответ должен иметь следующий синтаксис:
version SP status-code SP reason-phrase CRLF
[retry-after CRLF]
CRLF
[payload]
Таблица 13.5.3-1 показывает некоторые общие коды состояния, соответствующие этой транзакции. См. также Раздел 8.5 для получения дополнительных кодов состояния.
Таблица 13.5.3-1. Значение кода состояния
|
Исходный сервер завершил обработку транзакции запроса, идентифицированной предоставленным Transaction UID (см. Раздел 13.4); полезная нагрузка содержит результат. |
||
|
Исходный сервер еще не завершил обработку транзакции запроса, идентифицированной предоставленным Transaction UID; полезная нагрузка отсутствует. Ожидается, что пользовательский агент снова продолжит взаимодействие с помощью транзакции проверки результата, чтобы получить результат запроса подтверждения сохранения. |
||
|
Исходный сервер не может найти результат запроса подтверждения сохранения, идентифицированный предоставленным Transaction UID. |
||
|
Исходный сервер больше не может предоставить результат запроса подтверждения сохранения, идентифицированный предоставленным Transaction UID. |
||
|
Исходный сервер не может обработать запрос проверки результата; это может быть временным или постоянным состоянием. |
Код состояния 404 (Not Found) может быть вызван неправильным Transaction UID, предоставленным пользовательским агентом, либо исходный сервер мог удалить соответствующий результат.
Код состояния 410 (Gone) может быть вызван удалением исходным сервером соответствующего результата, при этом у него все еще есть запись о Transaction UID.
При возврате кода состояния 404 (Not Found) или 410 (Gone) пользовательский агент может инициировать новый запрос подтверждения сохранения. При возврате кода состояния 503 (Service Unavailable) пользовательский агент может повторить попытку позже с помощью другой транзакции проверки результата.
См. Раздел 13.4.3.2.
См. Раздел 13.4.3.3.
Служба запланированных этапов процедуры модальности позволяет пользовательскому агенту выполнять поиск запланированных этапов процедуры и сущностей, связанных с этими этапами, предназначенных для выполнения на модальности визуализации. Она соответствует службе DIMSE Modality Worklist (MWL), определенной в Приложении K к PS3.4 , и имеет ту же семантику.
Служба запланированных этапов процедуры модальности обеспечивает доступ к коллекции запланированных этапов процедуры модальности, определенной как ресурс в Таблице 14.1.1-1.
Исходный сервер должен поддерживать параметры запроса, как требуется в Таблице 14.1.2-1.
Пользовательский агент должен предоставлять в запросе параметры запроса, как требуется в Таблице 14.1.2-1.
Исходный сервер должен поддерживать типы носителей, указанные как По умолчанию или Обязательные в Таблице 14.1.3-1.
Исходный сервер, соответствующий службе запланированных этапов процедуры модальности, должен поддерживать транзакцию Retrieve Capabilities (см. Раздел 8.9.1).
Исходный сервер, соответствующий службе запланированных этапов процедуры модальности, должен поддерживать транзакции, указанные как Обязательные в Таблице 14.2-1, и может поддерживать транзакции, указанные как Необязательные.
Реализации должны указывать в своем Заявлении о соответствии (см. PS3.2) и в транзакции Retrieve Capabilities поддерживаемые транзакции и роль реализаций: исходный сервер, пользовательский агент или оба варианта.
Кроме того, для каждой поддерживаемой транзакции они должны указывать:
Служба запланированных этапов процедуры модальности состоит из транзакций, перечисленных в Таблице 14.3-1.
Таблица 14.3-1. Транзакции службы запланированных этапов процедуры модальности
|
Набор данных согласно Таблице K.6-1 в PS3.4 |
Выполняет поиск запланированных этапов процедуры модальности |
|||
Таблица 14.3-2 перечисляет транзакции службы запланированных этапов процедуры модальности и соответствующие им операции DIMSE, используемые в MWL.
Таблица 14.3-2. Соответствие транзакций службы запланированных этапов процедуры модальности и операций DIMSE
Как и в DIMSE, эти транзакции не предоставляют полный интерфейс CRUDL для соответствующего ресурса. Например, невозможно создать запланированные этапы процедуры модальности с использованием DICOM — ни с помощью DIMSE, ни с помощью DICOMweb. То, что DICOM предоставляет, — это доступ к запланированным этапам процедуры на уровне, необходимом для модальностей.
Эта транзакция выполняет поиск запланированных этапов процедуры модальности для тех этапов, которые соответствуют указанным параметрам запроса, и возвращает список подходящих запланированных этапов процедуры. Каждый запланированный этап процедуры в возвращаемом списке включает возвращаемые атрибуты, указанные в запросе. Эта транзакция соответствует операции DIMSE MWL C-FIND (см. Раздел K.4.1 в PS3.4 ).
Запрос должен иметь следующий синтаксис:
GET SP /modality-scheduled-procedure-steps?{&match*}{&includefield}{&fuzzymatching}{&offset}{&limit} SP version CRLF
Accept: 1#media-type CRLF
*(header-field CRLF)
CRLF
Пользовательский агент должен соответствовать поведению SCU, указанному в Разделе K.2.2 «Определение атрибутов» в PS3.4 .
Исходный сервер должен поддерживать параметры запроса, как требуется в Таблице 8.3.4-1.
Пользовательский агент должен предоставлять в запросе параметры запроса, как требуется в Таблице 8.3.4-1.
Исходный сервер должен поддерживать заголовки, как требуется в Таблице 14.4.1-1.
Пользовательский агент должен предоставлять в запросе заголовки, как определено в Таблице 14.4.1-1.
См. также Раздел 8.4.
Исходный сервер должен выполнять поиск в соответствии с требованиями, указанными в Разделе 8.3.4.
Для каждого совпадающего запланированного этапа процедуры модальности исходный сервер должен включить в результаты:
Все атрибуты из Таблицы K.6-1 «Атрибуты для информационной модели списка работ модальности» в PS3.4 с типом ключа возврата 1 или 2.
Все атрибуты из Таблицы K.6-1 «Атрибуты для информационной модели списка работ модальности» в PS3.4 с типом ключа возврата 1C или 2C, для которых выполнены условные требования.
Все остальные атрибуты, переданные как параметры сопоставления, которые поддерживаются исходным сервером в качестве атрибутов сопоставления или возврата.
Все остальные атрибуты, переданные как значения параметра includefield, которые поддерживаются исходным сервером в качестве атрибутов возврата.
Ответ должен иметь следующий синтаксис:
version SP status-code SP reason-phrase CRLF
*(header-field CRLF)
CRLF
[payload]
Таблица 14.4.3-1 показывает некоторые общие коды состояния, соответствующие этой транзакции. См. также Раздел 8.5 для получения дополнительных кодов состояния.
Таблица 14.4.3-1. Значение кода состояния
Исходный сервер должен поддерживать поля заголовка, как требуется в Таблице 14.4.3-2.
Все ответы об успехе должны также содержать поля заголовка представления содержимого (см. Раздел 8.4.2) и полезной нагрузки (см. Раздел 8.4.3) с соответствующими значениями.
Ответ об успехе должен содержать набор данных согласно Таблице K.6-1 в PS3.4 , предоставленный в допустимом типе носителя. См. Раздел 8.7.5.
Если (results = 0), то совпадений нет, и должен быть возвращён ответ 200 (OK) с пустой полезной нагрузкой. Пустая полезная нагрузка должна быть отформатирована, как указано в Разделе 8.3.4.4.1.
Полезная нагрузка ответа об ошибке может содержать отчёт о состоянии, описывающий любые ошибки, предупреждения или другую полезную информацию.
Служба выполненного этапа процедуры модальности позволяет пользовательскому агенту сообщать о ходе выполнения этапов процедуры, выполняемых модальностями визуализации. Эта служба соответствует службе DIMSE Modality Performed Procedure Step (MPPS), определённой в Приложении F к PS3.4 , и имеет ту же семантику. Однако уведомления (Notifications), определённые в Разделе F.9 в PS3.4, не поддерживаются этой службой.
Для достижения поведения, подобного уведомлению, предлагается имитировать подход, принятый в профиле интеграции Scheduled Workflow IHE [IHE RAD TF-1], где актор Performed Procedure Step Manager передает создание и обновление выполненных этапов процедуры модальности другим заинтересованным акторам.
Эта служба определяет один ресурс:
Набор данных, содержащий атрибуты, указанные в Таблице F.7.2-1 «Атрибуты N-CREATE, N-SET и атрибуты конечного состояния класса SOP выполненного этапа процедуры модальности» в PS3.4.
В службе выполненного этапа процедуры модальности MPPS идентифицируется по MPPS UID, который соответствует UID экземпляра SOP, используемому в службе MPPS PS3.4; см., напр., Раздел F.7.2.1.2 в PS3.4.
Следующие переменные шаблона URI используются в определениях ресурсов на протяжении всего Раздела 15.
Служба выполненного этапа процедуры модальности управляет рядом объектов MPPS; её ресурсы приведены в Таблице 15.1.1-1.
Исходный сервер должен поддерживать параметры запроса, как требуется в Таблице 15.1.2-1.
Пользовательский агент должен предоставлять в запросе параметры запроса, как требуется в Таблице 15.1.2-1.
Исходный сервер должен поддерживать типы носителей, указанные как Default или Required в Таблице 15.1.3-1.
Исходный сервер, соответствующий службе выполненного этапа процедуры модальности, должен поддерживать транзакцию Retrieve Capabilities (см. Раздел 8.9.1). Кроме того, он должен поддерживать транзакции, указанные как Required в Таблице 15.2-1, и может поддерживать транзакции, указанные как Optional.
Реализации должны указывать в своём Заявлении о соответствии (см. PS3.2) и в транзакции Retrieve Capabilities поддерживаемые транзакции и роль реализаций: исходный сервер, пользовательский агент или обе роли.
Кроме того, для каждой поддерживаемой транзакции они должны указать:
Служба выполненного этапа процедуры модальности состоит из транзакций, перечисленных в Таблице 15.3-1.
Таблица 15.3-1. Транзакции службы выполненного этапа процедуры модальности
|
Набор данных согласно Таблице F.7.2-1 в PS3.4 (N-CREATE) |
||||
|
Набор данных согласно Таблице F.7.2-1 в PS3.4 (N-SET) |
||||
|
Набор данных согласно Таблице F.8.2-1 в PS3.4 |
||||
В Таблице 15.3-2 целевые ресурсы, разрешённые для каждой транзакции, помечены буквой M, если поддержка обязательна для исходного сервера, и буквой O, если она необязательна. Пустая ячейка указывает, что ресурс не разрешён в транзакции.
Таблица 15.3-3 перечисляет транзакции службы выполненного этапа процедуры модальности, имеющие соответствующую операцию DIMSE в DIMSE MPPS.
Таблица 15.3-3. Соответствие транзакций службы выполненного этапа процедуры модальности и операций DIMSE
Как и в DIMSE, транзакции не предоставляют полный интерфейс CRUDL для соответствующих ресурсов. Например, невозможно перечислить все выполненные этапы процедур модальности с использованием DICOM — ни через DIMSE, ни через DICOMweb. DICOM предоставляет доступ к выполненным этапам процедур на уровне, требуемом для модальностей.
Эта транзакция создаёт выполненный этап процедуры модальности с заданными атрибутами. Она соответствует операции DIMSE MPPS N-CREATE (см. Раздел F.7.2.1 в PS3.4 ).
Запрос должен иметь следующий синтаксис:
POST SP /modality-performed-procedure-steps/{mppsUID} SP version CRLF
Accept: 1#media-type CRLF
*(header-field CRLF)
CRLF
payload
Целевой ресурс этой транзакции — отдельный выполненный этап процедуры модальности, идентифицированный своим MPPS UID.
Исходный сервер должен поддерживать поля заголовка запроса, как требуется в Таблице 15.4.1-1.
Пользовательский агент должен предоставлять поля заголовка запроса, как требуется в Таблице 15.4.1-1.
См. также Раздел 8.4.
Полезная нагрузка запроса должна присутствовать и содержать одно представление, согласованное с полем заголовка Content-Type. Представление должно соответствовать типам носителей, описанным в Разделе 8.7.3 DICOM Media Type Sets. Полезная нагрузка должна соответствовать Разделу 8.6 Payloads.
Атрибуты выполненного этапа процедуры модальности в полезной нагрузке должны соответствовать требованиям SCU в столбце Usage N-CREATE (SCU/SCP) Таблицы F.7.2-1 «Атрибуты N-CREATE, N-SET и атрибуты конечного состояния класса SOP выполненного этапа процедуры модальности» в PS3.4 .
Исходный сервер должен создать выполненный этап процедуры модальности, идентифицированный предоставленным MPPS UID, и заполнить его предоставленными атрибутами в полезной нагрузке. Исходный сервер должен создавать и поддерживать выполненный этап процедуры модальности, как указано в поведении SCP, определённом в Разделе F.7.2.1 в PS3.4 .
Ответ должен иметь следующий синтаксис:
version SP status-code SP reason-phrase CRLF
*(header-field CRLF)
CRLF
[payload]
Таблица 15.4.3-1 показывает некоторые общие коды состояния, соответствующие этой транзакции. См. также Раздел 8.5 для получения дополнительных кодов состояния.
Таблица 15.4.3-1. Значение кода состояния
Исходный сервер должен поддерживать поля заголовка, как требуется в Таблице 15.4.3-2.
Все ответы об успехе должны также содержать поля заголовка представления содержимого (см. Раздел 8.4.2) и полезной нагрузки (см. Раздел 8.4.3) с соответствующими значениями.
Эта транзакция устанавливает атрибуты существующего выполненного этапа процедуры модальности. Она соответствует операции DIMSE MPPS N-SET (см. Раздел F.7.2.2 в PS3.4 ).
Запрос должен иметь следующий синтаксис:
POST SP /modality-performed-procedure-steps/{mppsUID}?update SP version CRLF
Accept: 1#media-type CRLF
*(header-field CRLF)
CRLF
payload
Целевой ресурс этой транзакции — отдельный выполненный этап процедуры модальности, идентифицированный предоставленным MPPS UID.
Исходный сервер должен поддерживать параметры запроса, как требуется в Таблице 15.5.1.2-1.
Пользовательский агент должен предоставлять в запросе параметры запроса, как требуется в Таблице 15.5.1.2-1.
Параметр «update» указывает, что это обновление существующего выполненного этапа процедуры модальности, идентифицированного предоставленным MPPS UID, и отличает транзакцию обновления от транзакции создания.
Исходный сервер должен поддерживать поля заголовка запроса, как требуется в Таблице 15.5.1-1.
Пользовательский агент должен предоставлять поля заголовка запроса, как требуется в Таблице 15.5.1-1.
См. также Раздел 8.4.
Полезная нагрузка запроса должна присутствовать и содержать одно представление, согласованное с полем заголовка Content-Type. Представление должно соответствовать типам носителей, описанным в Разделе 8.7.3 DICOM Media Type Sets. Полезная нагрузка должна соответствовать Разделу 8.6 Payloads.
Атрибуты выполненного этапа процедуры модальности в полезной нагрузке должны соответствовать требованиям SCU в столбце Usage N-SET (SCU/SCP) Таблицы F.7.2-1 «Атрибуты N-CREATE, N-SET и атрибуты конечного состояния класса SOP выполненного этапа процедуры модальности» в PS3.4 .
Исходный сервер должен обновить выполненный этап процедуры модальности, идентифицированный предоставленным MPPS UID, предоставленными атрибутами в полезной нагрузке. Исходный сервер должен обновлять и поддерживать выполненный этап процедуры модальности, как указано в поведении SCP, определённом в Разделе F.7.2.2 в PS3.4 .
Ответ должен иметь следующий синтаксис:
version SP status-code SP reason-phrase CRLF
*(header-field CRLF)
CRLF
[payload]
Таблица 15.5.3-1 показывает некоторые общие коды состояния, соответствующие этой транзакции. См. также Раздел 8.5 для получения дополнительных кодов состояния.
Таблица 15.5.3-1. Значение кода состояния
Когда запрашивается обновление атрибутов, которые не были предоставлены во время создания, может быть возвращён код 409 (Conflict); это имеет место, когда Таблица F.7.2-1 в PS3.4 указывает, что эти атрибуты должны были быть предоставлены во время создания.
Исходный сервер должен поддерживать поля заголовка, как требуется в Таблице 15.5.3-2.
Все ответы об успехе должны также содержать поля заголовка представления содержимого (см. Раздел 8.4.2) и полезной нагрузки (см. Раздел 8.4.3) с соответствующими значениями.
Эта транзакция извлекает существующий выполненный этап процедуры модальности. Она соответствует операции DIMSE MPPS N-GET (см. Раздел F.8.2.1 в PS3.4 ).
Запрос должен иметь следующий синтаксис:
GET SP /modality-performed-procedure-steps/{mppsUID}{?includefield*} SP version CRLF
Accept: 1#media-type CRLF
*(header-field CRLF)
CRLF
Целевой ресурс этой транзакции — отдельный выполненный этап процедуры модальности, идентифицированный своим MPPS UID.
Исходный сервер должен поддерживать параметр запроса includefield. Он указывает атрибуты, которые должны быть включены в ответ. Значением является либо разделённый запятыми список атрибутов, либо единственное ключевое слово «all», которое означает, что все доступные атрибуты объекта должны быть включены в ответ.
includefield = *("includefield" "=" (1#attribute / "all") )
Может быть один или несколько параметров includefield; однако, если присутствует параметр со значением «all», то другие параметры includefield не должны присутствовать.
Параметр includefield соответствует Таблице F.8.2-1 «Modality Performed Procedure Step Retrieve SOP Class N-GET Attributes» в PS3.4 DIMSE.
Пользовательский агент может предоставлять параметры запроса includefield, как описано выше.
Исходный сервер должен поддерживать поля заголовка запроса, как требуется в Таблице 15.6.1-1.
Пользовательский агент должен предоставлять поля заголовка запроса, как требуется в Таблице 15.6.1-1.
См. также Раздел 8.4.
Если выполненный этап процедуры модальности существует на исходном сервере, его атрибуты, указанные в параметре includefield, должны быть возвращены в допустимом типе носителя (см. Раздел 8.7.4). Если параметр includefield отсутствует, должны быть возвращены все атрибуты. Исходный сервер должен вернуть выполненный этап процедуры модальности, как указано в поведении SCP, определённом в Разделе F.8.2 в PS3.4 .
Ответ должен иметь следующий синтаксис:
version SP status-code SP reason-phrase CRLF
*(header-field CRLF)
CRLF
[payload]
Таблица 15.6.3-1 показывает некоторые общие коды состояния, соответствующие этой транзакции. См. также Раздел 8.5 для получения дополнительных кодов состояния.
Таблица 15.6.3-1. Значение кода состояния
Исходный сервер должен поддерживать поля заголовка, как требуется в Таблице 15.6.3-2.
Все ответы об успехе должны также содержать поля заголовка представления содержимого (см. Раздел 8.4.2) и полезной нагрузки (см. Раздел 8.4.3) с соответствующими значениями.
Ответ об успехе содержит полезную нагрузку с запрошенным выполненным этапом процедуры модальности в выбранном типе носителя. Атрибуты выполненного этапа процедуры модальности в полезной нагрузке должны соответствовать требованиям SCP в столбце Usage N-GET (SCU/SCP) Таблицы F.8.2-1 «Атрибуты N-GET класса SOP извлечения выполненного этапа процедуры модальности» в PS3.4 .
Полезная нагрузка ответа об ошибке может содержать отчёт о состоянии, описывающий любые ошибки, предупреждения или другую полезную информацию.
A machine readable collected ABNF for the syntax defined in this Part of the Standard can be found at ftp://medical.nema.org/medical/dicom/ABNF/part18_abnf.txt
http://www.hospital-stmarco/radiology/wado.php?requestType=WADO &studyUID=1.2.250.1.59.40211.12345678.678910 &seriesUID=1.2.250.1.59.40211.789001276.14556172.67789 &objectUID=1.2.250.1.59.40211.2678810.87991027.899772.2
http://server234/script678.asp?requestType=WADO &studyUID=1.2.250.1.59.40211.12345678.678910 &seriesUID=1.2.250.1.59.40211.789001276.14556172.67789 &objectUID=1.2.250.1.59.40211.2678810.87991027.899772.2 &charset=UTF-8
Получение фрагмента DICOM-изображения, при возможности преобразованного в JPEG2000, с вшитыми в изображение аннотациями, содержащими имя пациента и техническую информацию, и приведённого к заданному размеру изображения:
https://aspradio/imageaccess.js?requestType=WADO &studyUID=1.2.250.1.59.40211.12345678.678910 &seriesUID=1.2.250.1.59.40211.789001276.14556172.67789 &objectUID=1.2.250.1.59.40211.2678810.87991027.899772.2 &contentType=image%2Fjp2;level=1,image%2Fjpeg;q=0.5 &annotation=patient,technique &columns=400 &rows=300 ®ion=0.3,0.4,0.5,0.5 &windowCenter=-1000 &windowWidth=2500
Получение объекта DICOM-изображения с использованием базового 8-битного JPEG Transfer Syntax с потерями и деидентифицированного:
http://www.medical-webservice.st/RetrieveDocument?requestType=WADO &studyUID=1.2.250.1.59.40211.12345678.678910 &seriesUID=1.2.250.1.59.40211.789001276.14556172.67789 &objectUID=1.2.250.1.59.40211.2678810.87991027.899772.2 &contentType=application%2Fdicom &anonymize=yes &transferSyntax=1.2.840.10008.1.2.4.50
GET /radiology/studies?00080020=20000817&limit=20&offset=0&includefield=all HTTP/1.1
Host: www.hospital-stmarco
Accept: application/dicom+json
HTTP/1.1 200 OK
Content-Length: 1191
Content-Type: application/dicom+json; charset=utf-8
[
{
"00080005": {
"vr": "CS",
"Value": [
"ISO_IR192"
]
},
…
"00081190": {
"vr": "UT",
"Value": [
"https://www.hospital-stmarco/radiology/studies/1.2.250.1.59.40211.12345678.678910"
]
}
}
…
]
GET /radiology/studies/1.3.12.2.1107.5.99.3.30000013043011165912900000002/series?includefield=all HTTP/1.1 Host: www.hospital-stmarco Accept: application/dicom+json
GET /radiology/studies/1.3.12.2.1107.5.99.3.30000013043011165912900000002
/series/1.3.12.2.1107.5.99.3.30000013043011165912900000003/instances HTTP/1.1
Host: www.hospital-stmarco
Accept: multipart/related; type="application/dicom+xml"
HTTP/1.1 200 OK
Content-Length: 2887
Content-Type: multipart/related; boundary="DICOM DATA BOUNDARY"; type="application/dicom+xml"
…
--DICOM DATA BOUNDARY
Content-Type: application/dicom+xml
<?xml version="1.0" encoding="utf-8"?>
<NativeDicomModel>
<DicomAttribute keyword="TransferSyntaxUID" tag="00020010" vr="UI">
<Value number="1">1.2.840.10008.1.2.1</Value>
</DicomAttribute>
<DicomAttribute keyword="SOPClassUID" tag="00080016" vr="UI">
<Value number="1">1.2.840.10008.5.1.4.1.1.4</Value>
</DicomAttribute>
<DicomAttribute keyword="StudyInstanceUID" tag="0020000D" vr="UI">
<Value number="1">1.3.12.2.1107.5.99.3.30000013043011165912900000002</Value>
</DicomAttribute>
<DicomAttribute keyword="SeriesInstanceUID" tag="0020000E" vr="UI">
<Value number="1">1.3.12.2.1107.5.99.3.30000013043011165912900000003</Value>
</DicomAttribute>
<DicomAttribute keyword="SOPInstanceUID" tag="00080018" vr="UI">
<Value number="1">1.3.12.2.1107.5.99.3.99.30000009101512360337100000243</Value>
</DicomAttribute>
…
</NativeDicomModel>
--DICOM DATA BOUNDARY
Content-Type: application/dicom+xml
<?xml version="1.0" encoding="utf-8"?>
<NativeDicomModel>
<DicomAttribute keyword="TransferSyntaxUID" tag="00020010" vr="UI">
<Value number="1">1.2.840.10008.1.2.1</Value>
</DicomAttribute>
<DicomAttribute keyword="SOPClassUID" tag="00080016" vr="UI">
<Value number="1">1.2.840.10008.5.1.4.1.1.4</Value>
</DicomAttribute>
<DicomAttribute keyword="StudyInstanceUID" tag="0020000D" vr="UI">
<Value number="1">1.3.12.2.1107.5.99.3.30000013043011165912900000002</Value>
</DicomAttribute>
<DicomAttribute keyword="SeriesInstanceUID" tag="0020000E" vr="UI">
<Value number="1">1.3.12.2.1107.5.99.3.30000013043011165912900000003</Value>
</DicomAttribute>
<DicomAttribute keyword="SOPInstanceUID" tag="00080018" vr="UI">
<Value number="1">1.3.12.2.1107.5.99.3.99.30000009101512360337100000232</Value>
</DicomAttribute>
…
</NativeDicomModel>
--DICOM DATA BOUNDARY--
GET /radiology/studies/1.2.250.1.59.40211.12345678.678910 /series/1.2.250.1.59.40211.789001276.14556172.67789/instances/1.2.250.1.59.40211.2678810.87991027.899772.2 HTTP/1.1 Host: www.hospital-stmarco Accept: multipart/related; type="application/dicom" HTTP/1.1 200 OK Content-Length: 383203 Content-Type: multipart/related; boundary="DICOM DATA BOUNDARY"; type="application/dicom" … --DICOM DATA BOUNDARY Content-Type: application/dicom <BINARY DICOM DATA> --DICOM DATA BOUNDARY
GET /radiology/studies/1.2.250.1.59.40211.12345678.678910 /series/1.2.250.1.59.40211.789001276.14556172.67789 /instances/1.2.250.1.59.40211.2678810.87991027.899772.2/rendered HTTP/1.1 Host: www.hospital-stmarco Accept: image/jpeg HTTP/1.1 200 OK Content-Length: 79323 Content-Type: image/jpeg <BINARY JPEG DATA>
Предположим, что ответ с метаданными содержит BulkDataURI "/radiology/studies/…/bulkdata/00091010" с исходным значением в бинарном потоке DICOM Raw, тогда запрос:
GET /radiology/studies/1.2.250.1.59.40211.12345678.678910 /series/1.2.250.1.59.40211.789001276.14556172.67789 /instances/1.2.250.1.59.40211.2678810.87991027.899772.2 HTTP/1.1 Host: www.hospital-stmarco Accept: multipart/related; type="application/octet-stream"
HTTP/1.1 200 OK Content-Length: 6374971 Content-Type: multipart/related; boundary="bcd8711f-1384-4a49-adcf-ae9b9ddc2d35"; type="application/octet-stream" … --bcd8711f-1384-4a49-adcf-ae9b9ddc2d35 Content-Location: /radiology/studies/…/bulkdata/00091010 Content-Type: application/octet-stream Raw binary stream --bcd8711f-1384-4a49-adcf-ae9b9ddc2d35
GET /radiology/studies/1.2.250.1.59.40211.12345678.678910 /series/1.2.250.1.59.40211.789001276.14556172.67789 /instances/1.2.250.1.59.40211.2678810.87991027.899772.2 HTTP/1.1 Host: www.hospital-stmarco Accept: multipart/related; type="application/dicom"; transfer- syntax=1.2.840.10008.1.2.4.50 HTTP/1.1 200 OK Transfer-Encoding: chunked Content-Type: multipart/related; boundary="5e3c723b-ad24-42f9-88e0-10d29d87115c" … 22\r\n --5e3c723b-ad24-42f9-88e0-10d29d87115c\r\n 22A1\r\n Content-Type: application/dicom; transfer-syntax="1.2.840.10008.1.2.4.50" <BINARY DICOM DATA in multipart boundaries> \r\n
GET /radiology/studies/1.2.250.1.59.40211.12345678.678910 /series/1.2.250.1.59.40211.789001276.14556172.67789 /instances/1.2.250.1.59.40211.2678810.87991027.899772.2 /rendered?annotation=patient,technique&viewport=1024,1024,0,0,512,512&window=200,600,linear HTTP/1.1 Host: www.hospital-stmarco Accept: image/jp2;level=1,image/jpeg;q=0.5
GET /radiology/studies/1.2.250.1.59.40211.12345678.678910 /series/1.2.250.1.59.40211.789001276.14556172.67789 /instances/1.2.250.1.59.40211.2678810.87991027.899772.2/rendered?charset=UTF-8 HTTP/1.1 Host: www.hospital-stmarco Accept: text/html
GET /radiology/studies/1.2.250.1.59.40211.12345678.678910 /series/1.2.250.1.59.40211.789001276.14556172.67789 /instances/1.2.250.1.59.40211.2678810.87991027.899772.2/metadata?charset=UTF-8 HTTP/1.1 Host: www.hospital-stmarco Accept: application/dicom+json
OPTIONS http://www.hospital-stmarco/radiology/studies/1.2.250.1.59.40211.12345678.678910 /series/1.2.250.1.59.40211.789001276.14556172.67789 /instances/1.2.250.1.59.40211.2678810.87991027.899772.2/metadata HTTP/1.1 Host: www.hospital-stmarco Accept: multipart/related; type="application/dicom+xml" Origin: http://localhost:65232 … HTTP/1.1 200 OK …
GET http://www.hospital-stmarco/radiology/studies/1.2.250.1.59.40211.12345678.678910 /series/1.2.250.1.59.40211.789001276.14556172.67789/instances/1.2.250.1.59.40211.2678810.87991027.899772.2 /metadata?charset=UTF-8&accept=multipart/related;type=%22application/dicom+xml%22 HTTP/1.1
GET /radiology/studies/1.2.250.1.59.40211.12345678.678910 /series/1.2.250.1.59.40211.789001276.14556172.67789 /instances/1.2.250.1.59.40211.2678810.87991027.899772.2/frames/22,23,24 HTTP/1.1 Host: www.hospital-stmarco Accept: multipart/related; type="application/octet-stream"
GET /radiology/studies/1.2.250.1.59.40211.12345678.678910 /series/1.2.250.1.59.40211.789001276.14556172.67789 /instances/1.2.250.1.59.40211.2678810.87991027.899772.2/frames/40,41,42,43,44 /rendered?annotation=patient&viewport=1024,1024&window=40,40,linear&accept=image/gif HTTP/1.1 Host: www.hospital-stmarco
GET /radiology/studies/1.2.250.1.59.40211.12345678.678910 /series/1.2.250.1.59.40211.789001276.14556172.67789/thumbnail?viewport=100,100 HTTP/1.1 Host: www.hospital-stmarco Accept: image/jpeg
GET /radiology/studies/1.2.250.1.59.40211.12345678.678910 /series/1.2.250.1.59.40211.789001276.14556172.67789/instances/1.2.250.1.59.40211.2678810.87991027.899772.2/frames/40 /thumbnail?viewport=100,100 HTTP/1.1 Host: www.hospital-stmarco Accept: image/png
POST /radiology/studies/1.2.250.1.59.40211.12345678.678910 HTTP/1.1
Host: www.hospital-stmarco
Content-Type: application/dicom
<BINARY DICOM DATA>
HTTP/1.1 200 OK
Content-Length: 826
Content-Type: application/dicom+json; charset=utf-8
…
{
"00020010": {
"vr": "UI",
"Value": [
"1.2.840.10008.1.2.1"
]
},
"00081199": {
"vr": "SQ",
"Value": [
{
"00080016": {
"vr": "UI",
"Value": [
"1.2.840.10008.5.1.4.1.1.4"
]
},
"00080018": {
"vr": "UI",
"Value": [
"1.3.12.2.1107.5.99.3.30000012031310075961300000059"
]
},
…
}
POST /radiology/studies/1.2.250.1.59.40211.12345678.678910 HTTP/1.1 Host: www.hospital-stmarco Content-Type: multipart/related; type="application/dicom"; boundary=MESSAGEBOUNDARY --MESSAGEBOUNDARY Content-Type: application/dicom < BINARY DICOM DATA for instance 1 > --MESSAGEBOUNDARY Content-Type: application/dicom < BINARY DICOM DATA for instance 2 > … --MESSAGEBOUNDARY
POST /radiology/studies/1.2.250.1.59.40211.12345678.678910 HTTP/1.1 Host: www.hospital-stmarco Content-Type: multipart/related; type="application/dicom+xml"; boundary=MESSAGEBOUNDARY --MESSAGEBOUNDARY Content-Type: application/dicom+xml <?xml version="1.0" encoding="UTF-8"?> <NativeDicomModel> <DicomAttribute Tag="00080020" VR="DT" Keyword="StudyDate"> <Value number="1">20130409</value> … <DicomAttribute Tag="0020000D" VR="UI" Keyword="StudyInstanceUID"> <Value number="1">1.2.250.1.59.40211.12345678.678910</value> </DicomAttribute> <DicomAttribute Tag="0020000E" VR="UI" Keyword="SeriesInstanceUID"> <Value number="1">1.2.250.1.59.40211.789001276.14556172.67789</value> </DicomAttribute> <DicomAttribute Tag="00080018" VR="UI" Keyword="SOPInstanceUID"> <Value number="1">1.2.250.1.59.40211.2678810.87991027.899772.2</value> </DicomAttribute> <DicomAttribute tag="00081150" vr="UI" keyword="ReferencedSOPClassUID"> <Value number="1">1.2.840.10008.1.2.4.50</Value> </DicomAttribute> <DicomAttribute Tag="7FE00010" VR="OB" Keyword="PixelData"> <Value number="1">jpeg-image</value> </DicomAttribute> </NativeDicomModel> --MESSAGEBOUNDARY Content-Type: image/jpeg Content-Location: jpeg-image <<BINARY JPEG DATA> --MESSAGEBOUNDARY-- … HTTP/1.1 200 OK Content-Length: 826 Content-Type: multipart/related; type="application/dicom+xml" … <?xml version="1.0" encoding="UTF-8"?> <NativeDicomModel> <DicomAttribute Tag="00081199" VR="SQ" keyword="ReferencedSOPSequence"> <Item number="1"> <DicomAttribute tag="00081150" vr="UI" keyword="ReferencedSOPClassUID"> <Value number="1">1.2.840.10008.1.2.4.50</Value> </DicomAttribute> <DicomAttribute tag="00081155" vr="UI" keyword="ReferencedSOPInstanceUID"> <Value number="1">1.2.250.1.59.40211.2678810.87991027.899772.2</Value> </DicomAttribute> <DicomAttribute tag="00081190" vr="UT" keyword="RetrieveURL"> <Value number="1">https://www.hospital-stmarco/radiology/studies/1.2.250.1.59.40211.12345678.678910 /series/1.2.250.1.59.40211.789001276.14556172.67789/instances/1.2.250.1.59.40211.2678810.87991027.899772.2</Value> </DicomAttribute> </Item> </DicomAttribute> <DicomAttribute Tag="00081190" VR="UT" Keyword="RetrieveURL"> <Value number="1">https://www.hospital-stmarco/radiology/studies/1.2.250.1.59.40211.12345678.67891</value> </DicomAttribute> </NativeDicomModel>
GET /radiology/workitems HTTP/1.1 Host: www.hospital-stmarco Accept: application/dicom+json
POST /radiology/workitems/1.2.840.10008.5.1.4.34.5/cancelrequest HTTP/1.1 Host: www.hospital-stmarco Accept: application/dicom+json
<method id="searchForStudies" name="GET"> <request> <param default="multipart/related; type=application/dicom+xml" name="Accept" style="header"> <option value="multipart/related; type=application/dicom+xml"/> <option value="application/json"/> </param> <param name="limit" style="query" type="xs:int"> <doc>maximum number of records</doc> </param> <param name="offset" style="query" type="xs:int"> <doc>skipped results</doc> </param> <param name="StudyDate" style="query"/> <param name="00080020" style="query"/> <param name="StudyTime" style="query"/> <param name="00080030" style="query"/> <param name="AccessionNumber" style="query"/> <param name="00080050" style="query"/> <param name="ModalitiesInStudy" style="query"/> <param name="00080061" style="query"/> <param name="ReferringPhysicianName" style="query"/> <param name="00080090" style="query"/> <param name="PatientName" style="query"/> <param name="00100010" style="query"/> <param name="PatientID" style="query"/> <param name="00100020" style="query"/> <param name="StudyInstanceUID" repeating="true" style="query"/> <param name="0020000D" repeating="true" style="query"/> <param name="StudyID" style="query"/> <param name="00200010" style="query"/> <param name="includefield" repeating="true" style="query" type="xs:string"> <option value="all"/> <doc>include fields</doc> </param> <param name="fuzzymatching" style="query" type="xs:boolean"> <option value="true"/> <option value="false"/> <doc>additional fuzzy semantic matching</doc> </param> <param name="emptyvaluematching" style="query" type="xs:boolean"> <option value="true"/> <option value="false"/> <doc>additional fuzzy semantic matching</doc> </param> <param name="multiplevaluematching" style="query" type="xs:boolean"> <option value="true"/> <option value="false"/> <doc>additional fuzzy semantic matching</doc> </param> </request> <response status="200 204 299"> <representation mediaType="multipart/related; type=application/dicom+xml"/> <representation mediaType="application/json"/> </response> <response status="400 403 500 503"/> </method>
Этот пример показывает поток сообщений между пользовательским агентом и исходным сервером для сценария, в котором 1) пользовательский агент запрашивает подтверждение хранения двух SOP-экземпляров в формате JSON, 2) исходный сервер сообщает пользовательскому агенту, что следует проверить результат этого запроса позднее, 3) пользовательский агент проверяет результат, и 4) результат, предоставленный исходным сервером, показывает, что он обязуется безопасно хранить один из экземпляров, тогда как он не обязуется безопасно хранить другой экземпляр.
Шаг 1 этого сценария включает отправку пользовательским агентом POST-запроса для двух экземпляров с Transaction UID 1.1.99999.20220901 в HTTP-заголовке:
POST/radiology/commitment-requests/1.1.99999.20220901 HTTP/1.1
Host: www.hospital-stmarco
Content-Type: application/dicom+json
…
{
"00081199": {
"vr": "SQ",
"Value": [{
"00081150": {
"vr": "UI",
"Value": [
"1.2.840.10008.5.1.4.1.1.2"
]
},
"00081155": {
"vr": "UI",
"Value": [
"1.3.12.2.1107.5.99.3.30000012031310075961300000059"
]
}
},
{
"00081150": {
"vr": "UI",
"Value": [
"1.2.840.10008.5.1.4.1.1.2"
]
},
"00081155": {
"vr": "UI",
"Value": [
"1.3.12.2.1107.5.99.3.30000012031310075961300000060"
]
}
}]
}
}
Здесь ссылки на соответствующие SOP-экземпляры находятся в Referenced SOP Sequence (0008,1199); см. Таблицу J.1-1 для возможных структур запроса подтверждения хранения. SOP Class UID обоих экземпляров — CT Image (для обоих экземпляров Referenced SOP Class UID (0008,1150) имеет значение 1.2.840.10008.5.1.4.1.1.2), а соответствующие экземпляры идентифицируются по их соответствующим SOP Instance UID (значения Referenced SOP Instance UID (0008,1155) — 1.3.12.2.1107.5.99.3.30000012031310075961300000059 и …00060 соответственно).
На шаге 2 исходный сервер возвращает ответ на запрос. В этом сценарии имеет место асинхронный случай, когда немедленный результат отсутствует (код возврата 202 Accepted), и сервер также уведомляет пользовательский агент о том, что ему следует подождать не менее 300 секунд перед выполнением повторного запроса результата; в случае синхронного ответа шаги 2 и 3 были бы пропущены, и выполнение продолжилось бы с шага 4.
HTTP/1.1 202 Accepted Retry-After: 300 …
На шаге 3, после ожидания в течение предложенного периода времени, пользовательский агент выполняет GET-запрос статуса запроса с использованием того же Transaction UID, что был указан в исходном запросе:
GET /radiology/commitment-requests/1.1.99999.20220901 HTTP/1.1 Host: www.hospital-stmarco Content-Type: application/dicom+json …
Шаг 4 этого сценария включает возврат исходным сервером результата запроса подтверждения хранения. В данном случае это ответ на проверку результата, как показано на шаге 3. Следует отметить, что в случае, если сервер первоначально отвечает на POST-запрос шага 1 кодом состояния HTTP-ответа 200 (синхронный случай), будет возвращён тот же результат:
HTTP/1.1 200 OK
Content-Length: 842
Content-Type: application/dicom+json; charset=utf-8
{
"00081199": {
"vr": "SQ",
"Value": [{
"00081150": {
"vr": "UI",
"Value": [
"1.2.840.10008.5.1.4.1.1.2"
]
},
"00081155": {
"vr": "UI",
"Value": [
"1.3.12.2.1107.5.99.3.30000012031310075961300000059"
]
}
}]
},
"00081198": {
"vr": "SQ",
"Value": [{
"00081150": {
"vr": "UI",
"Value": [
"1.2.840.10008.5.1.4.1.1.2"
]
},
"00081155": {
"vr": "UI",
"Value": [
"1.3.12.2.1107.5.99.3.30000012031310075961300000060"
]
},
"00081197": {
"vr": "US",
"Value": [ 274 ]
}
}]
}
}
Исходный сервер предоставил значение 274 для Failure Reason (0008,1197). Это 0112H и означает "No such object Instance" (см. Раздел C.14.1.1 в PS3.3 ). Очевидно, что SOP-экземпляр, идентифицируемый SOP Instance UID 1.3.12.2.1107.5.99.3.30000012031310075961300000060, отсутствует на исходном сервере.
Цель этого примера та же, что и в Разделе B.27, а именно — сценарий запроса подтверждения хранения двух SOP-экземпляров, где для одного он завершается успешно, а для другого — с ошибкой. Различия заключаются в синхронности (в данном случае она синхронная), синтаксисе (в данном случае используется XML) и структуре (в данном случае используется иерархическая структура исследование-серия-SOP Class-экземпляр, начинающаяся с Referenced Study Sequence (0008,1110); см. Таблицу J.1-1 для получения дополнительных сведений об этой структуре).
POST /radiology/commitment-requests/1.1.99999.20220901 HTTP/1.1
Host: www.hospital-stmarco
Content-Type: application/dicom+xml
<?xml version="1.0" encoding="UTF-8"?>
<NativeDicomModel>
<DicomAttribute Tag="00081110" VR="SQ" Keyword="ReferencedStudySequence">
<Item number="1">
<DicomAttribute Tag="0020000D" VR="UI" Keyword="StudyInstanceUID">
<Value number="1">1.2.250.1.59.40211.12345678.678910</Value>
</DicomAttribute>
<DicomAttribute Tag="00081115" VR="SQ" Keyword="ReferencedSeriesSequence">
<Item number="1">
<DicomAttribute Tag="0020000E" VR="UI" Keyword="SeriesInstanceUID">
<Value number="1">1.2.250.1.59.40211.789001276.14556172.67789</Value>
</DicomAttribute>
<DicomAttribute Tag="00081112" VR="SQ" Keyword="ReferencedInstancesBySOPClassSequence">
<Item number="1">
<DicomAttribute Tag="00081150" VR="UI" Keyword="ReferencedSOPClassUID">
<Value number="1">1.2.840.10008.5.1.4.1.1.2</Value>
</DicomAttribute>
<DicomAttribute Tag="0008114A" VR="SQ" Keyword="ReferencedInstanceSequence">
<Item number="1">
<DicomAttribute Tag="00081155" VR="UI" Keyword="ReferencedSOPInstanceUID">
<Value number="1">1.3.12.2.1107.5.99.3.30000012031310075961300000059</Value>
</DicomAttribute>
</Item>
<Item number="2">
<DicomAttribute Tag="00081155" VR="UI" Keyword="ReferencedSOPInstanceUID">
<Value number="1">1.3.12.2.1107.5.99.3.30000012031310075961300000060</Value>
</DicomAttribute>
</Item>
</DicomAttribute>
</Item>
</DicomAttribute>
</Item>
</DicomAttribute>
</Item>
</DicomAttribute>
</NativeDicomModel>
В представленном выше применимое Исследование идентифицируется по его Study Instance UID (0020,000D) со значением 1.2.250.1.59.40211.12345678.678910. Применимая Серия идентифицируется по её Series Instance UID (0020,000E) со значением 1.2.250.1.59.40211.789001276.14556172.67789. SOP Class UID и SOP Instance UID совпадают с примером, приведённым в Разделе B.27.
HTTP/1.1 200 OK
Content-Length: 2910
Content-Type: application/dicom+xml
<?xml version="1.0" encoding="UTF-8"?>
<NativeDicomModel>
<DicomAttribute Tag="00081110" VR="SQ" Keyword="ReferencedStudySequence">
<Item number="1">
<DicomAttribute Tag="0020000D" VR="UI" Keyword="StudyInstanceUID">
<Value number="1">1.2.250.1.59.40211.12345678.678910</Value>
</DicomAttribute>
<DicomAttribute Tag="00081115" VR="SQ" Keyword="ReferencedSeriesSequence">
<Item number="1">
<DicomAttribute Tag="0020000E" VR="UI" Keyword="SeriesInstanceUID">
<Value number="1">1.2.250.1.59.40211.789001276.14556172.67789</Value>
</DicomAttribute>
<DicomAttribute Tag="00081112" VR="SQ" Keyword="ReferencedInstancesBySOPClassSequence">
<Item number="1">
<DicomAttribute Tag="00081150" VR="UI" Keyword="ReferencedSOPClassUID">
<Value number="1">1.2.840.10008.5.1.4.1.1.2</Value>
</DicomAttribute>
<DicomAttribute Tag="0008114A" VR="SQ" Keyword="ReferencedInstanceSequence">
<Item number="1">
<DicomAttribute Tag="00081155" VR="UI" Keyword="ReferencedSOPInstanceUID">
<Value number="1">1.3.12.2.1107.5.99.3.30000012031310075961300000059</Value>
</DicomAttribute>
</Item>
</DicomAttribute>
</Item>
</DicomAttribute>
</Item>
</DicomAttribute>
</Item>
</DicomAttribute>
<DicomAttribute Tag="0008119B" VR="SQ" Keyword="FailedStudySequence">
<Item number="1">
<DicomAttribute Tag="0020000D" VR="UI" Keyword="StudyInstanceUID">
<Value number="1">1.2.250.1.59.40211.12345678.678910</Value>
</DicomAttribute>
<DicomAttribute Tag="00081115" VR="SQ" Keyword="ReferencedSeriesSequence">
<Item number="1">
<DicomAttribute Tag="0020000E" VR="UI" Keyword="SeriesInstanceUID">
<Value number="1">1.2.250.1.59.40211.789001276.14556172.67789</Value>
</DicomAttribute>
<DicomAttribute Tag="00081112" VR="SQ" Keyword="ReferencedInstancesBySOPClassSequence">
<Item number="1">
<DicomAttribute Tag="00081150" VR="UI" Keyword="ReferencedSOPClassUID">
<Value number="1">1.2.840.10008.5.1.4.1.1.2</Value>
</DicomAttribute>
<DicomAttribute Tag="0008114A" VR="SQ" Keyword="ReferencedInstanceSequence">
<Item number="1">
<DicomAttribute Tag="00081155" VR="UI" Keyword="ReferencedSOPInstanceUID">
<Value number="1">1.3.12.2.1107.5.99.3.30000012031310075961300000060</Value>
</DicomAttribute>
<DicomAttribute Tag="00081197" VR="UI" Keyword="FailureReason">
<Value number="1">274</Value>
</DicomAttribute>
</Item>
</DicomAttribute>
</Item>
</DicomAttribute>
</Item>
</DicomAttribute>
</Item>
</DicomAttribute>
</NativeDicomModel>
Failed Study Sequence (0008,119B) имеет ту же структуру, что и Referenced Study Sequence, за исключением того, что она добавляет Failure Reason (0008,1197) к каждому Referenced SOP Instance UID, указывая причину, по которой исходный сервер не смог гарантировать безопасное хранение этого связанного SOP-экземпляра.
Этот пример имеет ту же цель, что и Раздел B.28, но отличается наличием составного запроса (multipart) и тем, что SOP-экземпляры принадлежат разным исследованиям.
POST /radiology/commitment-requests/1.1.99999.20220901 HTTP/1.1
Host: www.hospital-stmarco
Content-Type: multipart/related; type="application/dicom+xml"; boundary=MESSAGEBOUNDARY
--MESSAGEBOUNDARY
<?xml version="1.0" encoding="UTF-8"?>
<NativeDicomModel>
<DicomAttribute Tag="00081110" VR="SQ" Keyword="ReferencedStudySequence">
<Item number="1">
<DicomAttribute Tag="0020000D" VR="UI" Keyword="StudyInstanceUID">
<Value number="1">1.2.250.1.59.40211.12345678.678910</Value>
</DicomAttribute>
<DicomAttribute Tag="00081115" VR="SQ" Keyword="ReferencedSeriesSequence">
<Item number="1">
<DicomAttribute Tag="0020000E" VR="UI" Keyword="SeriesInstanceUID">
<Value number="1">1.2.250.1.59.40211.789001276.14556172.67789</Value>
</DicomAttribute>
<DicomAttribute Tag="00081112" VR="SQ" Keyword="ReferencedInstancesBySOPClassSequence">
<Item number="1">
<DicomAttribute Tag="00081150" VR="UI" Keyword="ReferencedSOPClassUID">
<Value number="1">1.2.840.10008.5.1.4.1.1.2</Value>
</DicomAttribute>
<DicomAttribute Tag="0008114A" VR="SQ" Keyword="ReferencedInstanceSequence">
<Item number="1">
<DicomAttribute Tag="00081155" VR="UI" Keyword="ReferencedSOPInstanceUID">
<Value number="1">1.3.12.2.1107.5.99.3.30000012031310075961300000059</Value>
</DicomAttribute>
</Item>
</DicomAttribute>
</Item>
</DicomAttribute>
</Item>
</DicomAttribute>
</Item>
</DicomAttribute>
</NativeDicomModel>
--MESSAGEBOUNDARY
<?xml version="1.0" encoding="UTF-8"?>
<NativeDicomModel>
<DicomAttribute Tag="00081110" VR="SQ" Keyword="ReferencedStudySequence">
<Item number="1">
<DicomAttribute Tag="0020000D" VR="UI" Keyword="StudyInstanceUID">
<Value number="1">1.2.250.1.59.40211.12345678.678911</Value>
</DicomAttribute>
<DicomAttribute Tag="00081115" VR="SQ" Keyword="ReferencedSeriesSequence">
<Item number="1">
<DicomAttribute Tag="0020000E" VR="UI" Keyword="SeriesInstanceUID">
<Value number="1">1.2.250.1.59.40211.789001276.14556172.68856</Value>
</DicomAttribute>
<DicomAttribute Tag="00081112" VR="SQ" Keyword="ReferencedInstancesBySOPClassSequence">
<Item number="1">
<DicomAttribute Tag="00081150" VR="UI" Keyword="ReferencedSOPClassUID">
<Value number="1">1.2.840.10008.5.1.4.1.1.2</Value>
</DicomAttribute>
<DicomAttribute Tag="0008114A" VR="SQ" Keyword="ReferencedInstanceSequence">
<Item number="1">
<DicomAttribute Tag="00081155" VR="UI" Keyword="ReferencedSOPInstanceUID">
<Value number="1">1.3.12.2.1107.5.99.3.30000012031310075961300000060</Value>
</DicomAttribute>
</Item>
</DicomAttribute>
</Item>
</DicomAttribute>
</Item>
</DicomAttribute>
</Item>
</DicomAttribute>
</NativeDicomModel>
--MESSAGEBOUNDARY
HTTP/1.1 200 OK
Content-Length: 2917
Content-Type: application/dicom+xml
<?xml version="1.0" encoding="UTF-8"?>
<NativeDicomModel>
<DicomAttribute Tag="00081110" VR="SQ" Keyword="ReferencedStudySequence">
<Item number="1">
<DicomAttribute Tag="0020000D" VR="UI" Keyword="StudyInstanceUID">
<Value number="1">1.2.250.1.59.40211.12345678.678910</Value>
</DicomAttribute>
<DicomAttribute Tag="00081115" VR="SQ" Keyword="ReferencedSeriesSequence">
<Item number="1">
<DicomAttribute Tag="0020000E" VR="UI" Keyword="SeriesInstanceUID">
<Value number="1">1.2.250.1.59.40211.789001276.14556172.67789</Value>
</DicomAttribute>
<DicomAttribute Tag="00081112" VR="SQ" Keyword="ReferencedInstancesBySOPClassSequence">
<Item number="1">
<DicomAttribute Tag="00081150" VR="UI" Keyword="ReferencedSOPClassUID">
<Value number="1">1.2.840.10008.5.1.4.1.1.2</Value>
</DicomAttribute>
<DicomAttribute Tag="0008114A" VR="SQ" Keyword="ReferencedInstanceSequence">
<Item number="1">
<DicomAttribute Tag="00081155" VR="UI" Keyword="ReferencedSOPInstanceUID">
<Value number="1">1.3.12.2.1107.5.99.3.30000012031310075961300000059</Value>
</DicomAttribute>
</Item>
</DicomAttribute>
</Item>
</DicomAttribute>
</Item>
</DicomAttribute>
</Item>
</DicomAttribute>
<DicomAttribute Tag="0008119B" VR="SQ" Keyword="FailedStudySequence">
<Item number="1">
<DicomAttribute Tag="0020000D" VR="UI" Keyword="StudyInstanceUID">
<Value number="1">1.2.250.1.59.40211.12345678.678911</Value>
</DicomAttribute>
<DicomAttribute Tag="00081115" VR="SQ" Keyword="ReferencedSeriesSequence">
<Item number="1">
<DicomAttribute Tag="0020000E" VR="UI" Keyword="SeriesInstanceUID">
<Value number="1">1.2.250.1.59.40211.789001276.14556172.68856</Value>
</DicomAttribute>
<DicomAttribute Tag="00081112" VR="SQ" Keyword="ReferencedInstancesBySOPClassSequence">
<Item number="1">
<DicomAttribute Tag="00081150" VR="UI" Keyword="Referenced SOP Class UID">
<Value number="1">1.2.840.10008.5.1.4.1.1.2</Value>
</DicomAttribute>
<DicomAttribute Tag="0008114A" VR="SQ" Keyword="ReferencedInstanceSequence">
<Item number="1">
<DicomAttribute Tag="00081155" VR="UI" Keyword="ReferencedSOPInstanceUID">
<Value number="1">1.3.12.2.1107.5.99.3.30000012031310075961300000060</Value>
</DicomAttribute>
<DicomAttribute Tag="00081197" VR="UI" Keyword="FailureReason">
<Value number="2">274</Value>
</DicomAttribute>
</Item>
</DicomAttribute>
</Item>
</DicomAttribute>
</Item>
</DicomAttribute>
</Item>
</DicomAttribute>
</NativeDicomModel>
Служба подтверждения хранения DICOMweb Storage Commitment может быть развёрнута в гибридной среде, т.е. в среде, в которой используются как DICOMweb, так и DIMSE. В такой гибридной среде прокси-сервер может обеспечивать взаимодействие транзакций между службами, позволяя исходному серверу DICOMweb или DIMSE SCP поддерживать подтверждение хранения для смешанного набора пользовательских агентов DICOMweb и DIMSE SCU.
DICOM не требует реализации прокси-серверов; однако, поскольку они были бы очень полезны в гибридной среде, примеры в этом разделе показывают, как это можно сделать. Ответственность за согласование возможно асинхронного поведения DIMSE с поведением опроса DICOMweb, например, управление Transaction UID, лежит на разработчике.
Рисунок B.30-1 показывает, как прокси-сервер может облегчить запрос подтверждения хранения от DIMSE SCU к исходному серверу DICOMweb.
Рисунок B.30-2 показывает, как прокси-сервер может облегчить запрос подтверждения хранения от пользовательского агента DICOMweb к DIMSE SCP. При проксировании в этом направлении прокси-сервер получит от SCP информацию, которую он не сможет немедленно передать пользовательскому агенту.
Этот пример иллюстрирует запрос на визуализацию серии в виде трёхмерного объёма, результат которого возвращается как JPEG-изображение. Серия содержит унаследованные экземпляры. Поскольку другие параметры не указаны, они определяются исходным сервером.
GET /radiology /studies/1.2.250.1.59.40211.12345678.678910 /series/1.2.250.1.59.40211.789001276.14556172.67789 /rendered3D?renderingmethod=volume_rendered HTTP/1.1 Host: www.hospital-stmarco Accept: image/jpeg HTTP/1.1 200 OK Content-Length: 79323 Content-Type: image/jpeg <BINARY JPEG DATA>
Этот пример иллюстрирует запрос Rendered Volume Response Module, представляющего визуализацию многокадрового изображения в виде трёхмерного объёма, возвращаемого в виде видео MPEG4 с анимацией начального вида, ориентированного со стороны передней поверхности пациента (anterior), повёрнутого на 180 градусов со скоростью 20 кадров в секунду. Поскольку ориентация указана как anterior, сервер определяет эквиваленты ориентации камеры. Ось поворота выровнена с Viewpoint Up Direction (0070,1605), которая ориентирована к верхней части пациента (superior), пересекая Viewpoint LookAt Point (0070,1604), направленный от передней поверхности к задней (posterior), что приводит к повороту вокруг оси superior-inferior. Поскольку размер шага анимации не указан, он определяется исходным сервером и включается в запрошенные объёмные метаданные в Rendered Volume Response Module.
Запрос кодирует ориентацию как "Anterior". Rendered Volume Response Module кодирует ориентацию камеры, как описано в Разделе 8.3.5.3.
GET /radiology
/studies/1.2.250.1.59.40211.12345678.678910
/series/1.2.250.1.59.40211.789001276.14556172.67789
/instances/1.2.250.1.59.40211.2678810.87991027.899772.2
/rendered3D?renderingmethod=volume_rendered
&orientation=a
&swivelrange=180
&animationrate=20
&renderedvolumetricmetadata=yes
HTTP/1.1
Host: www.hospital-stmarco
Accept: application/dicom+json
HTTP/1.1 200 OK
Content-Length: 369
Content-Type: application/dicom+json
{
"00720510": {
"vr": "CS",
"Value": ["3D_RENDERING"]
},
"0070120D": {
"vr": "CS",
"Value": ["VOLUME_RENDERED"]
},
"00701603": {
"vr": "FD",
"Value": [100,101,200]
},
"00701604": {
"vr": "FD",
"Value": [100,100,200]
},
"00701605": {
"vr": "FD",
"Value": [0,0,1]
},
"00701A06": {
"vr": "FD",
"Value": [180]
},
"00701A05": {
"vr": "FD",
"Value": [1.8]
},
"00701A03": {
"vr": "FD",
"Value": [20]
}
}
Этот пример иллюстрирует запрос на визуализацию исследования в режиме MPR, результат которого возвращается в виде видео MPEG4 со скоростью 30 кадров в секунду с анимацией косой (Oblique) ориентации (заданной с использованием параметров точки обзора). В запросе также указывается ширина окна 400 и центр 40, а также метод визуализации — проекция средней интенсивности (average intensity projection). Пользовательский агент указывает, что визуализированные экземпляры должны состоять из кадров многофазной сердечной acquisition для интервала R-R от 140 до 260 миллисекунд.
См. Раздел C.2.2.2 в PS3.4 для сопоставления атрибутов.
Исходному серверу потребуется идентифицировать соответствующие экземпляры в исследовании (на основе наличия Cardiac R-R Interval Specified (0018,9070) с совпадающими значениями). Поскольку размер шага анимации не указан, а диапазон времени указан (для интервала R-R сердца), исходный сервер понимает, что запрашивается временная анимация нескольких серий, каждая из которых содержит одну фазу. Поскольку толщина среза MPR не указана, сервер выполняет визуализацию тонкого MPR, что означает минимально толстый срез неуказанной толщины.
GET /radiology
/studies/1.2.250.1.59.40211.12345678.678910/renderedmpr?CardiacRRIntervalSpecified=140-260
&renderingmethod=average_ip
&viewpointposition=532,38,126
&viewpointlookat=-532,-76,-154
&viewpointup=0,0,0
&animationrate=30
&window=400,40,linear
HTTP/1.1
Host: www.hospital-stmarco
Accept: video/mp4
HTTP/1.1 200 OK
Content-Length: 3145728
Content-Type: video/mp4
<BINARY MPEG-4 DATA>
Этот пример иллюстрирует запрос на статическую MPR-визуализацию одной фазы многофазной серии. Ссылка на входной объём (volume input reference) предоставляется для идентификации нужной фазы. Корональная ориентация задаётся с использованием параметров ориентации камеры. MPR MIP имеет толщину 20 мм и окно шириной 700 с центром 100. Возвращаемое JPEG-изображение масштабировано до размера матрицы 256 на 256.
GET /radiology
/studies/1.2.250.1.59.40211.12345678.678910
/series/1.2.250.1.59.40211.789001276.14556172.67789/renderedmpr?
volumeinputreference=1.2.250.1.59.40211.2678810.87991027.899772.2
&renderingmethod=maximum_ip
&mprslab=20
&viewpointposition=100,101,200
&viewpointlookat=100,100,200
&viewpointup=0,0,1
&viewport=256,256
&window=700,100,linear
HTTP/1.1
Host: www.hospital-stmarco
Accept: image/jpeg
HTTP/1.1 200 OK
Content-Length: 79323
Content-Type: image/jpeg
<BINARY JPEG DATA>
Этот пример иллюстрирует запрос на визуализацию экземпляра Volume Rendering Volumetric Presentation State как JPEG-изображения. Исходный сервер извлекает экземпляр, соответствующий указанному UID, получает объёмные параметры визуализации из экземпляра Volume Rendering Volumetric Presentation State и извлекает изображения, указанные в Referenced Image Sequence.
Поскольку в самом запросе не предоставлены дополнительные параметры, сервер применяет объёмные параметры визуализации из экземпляра Volume Rendering Volumetric Presentation State, включая методы визуализации, затенения и цветового оформления, для создания визуализированного JPEG-изображения.
Сервер выполняет визуализацию и возвращает результат в запрошенном типе носителя.
GET /radiology
/studies/1.2.250.1.59.40211.12345678.678910
/series/1.2.250.1.59.40211.981472893.33567182.83456
/instances/1.2.250.1.59.40211.2678810.76391234.455673.3
/rendered3D
HTTP/1.1
Host: www.hospital-stmarco
Accept: image/jpeg
HTTP/1.1 200 OK
Content-Length: 78,643
Content-Type: image/jpeg
<BINARY JPEG DATA>
Этот пример иллюстрирует запрос на получение запланированных этапов процедуры для запланированной станции: CTSCANNER, даты начала: 20250101 и модальности: CT, где результаты должны быть возвращены в формате JSON. Кроме того, количество возвращаемых результатов ограничено 20, и запрошено, чтобы результаты содержали все доступные теги. Смещение возвращаемых результатов установлено в 0.
GET /radiology/modality-scheduled-procedure-steps/
?00400100.00400010=CTSCANNER&00400100.00400002=20250101&00400100.00080060=CT
&limit=20&offset=0&includefield=all HTTP/1.1
Host: www.hospital-stmarco
Accept: application/dicom+json
Пример успешного ответа на приведённый выше запрос представлен ниже:
HTTP/1.1 200 OKContent-Length: 1191
Content-Type: application/dicom+json; charset=utf-8
…
[ {
…,
"00100010": { "vr": "PN", "Value": [{ "Alphabetic": "Doe^Sally" }] },
"0020000D": { "vr": "UI", "Value": ["1.2.250.1.59.40211.30000008090412501082300000004"] },
"00401001": { "vr": "SH", "Value": ["P-ID-22"] },
…,
"00400100": { "vr": "SQ", "Value":
[
{
"00400002": { "vr": "DA", "Value": ["20250101"] },
"00400007": { "vr": "LO", "Value": ["Specials^04a_HeadCTA"] },
"00400009": { "vr": "SH", "Value": ["PS-ID-23"] },
"00400010": { "vr": "SH", "Value": ["CTSCANNER"] },
…
},
{
"00400002": { "vr": "DA", "Value": ["20250101"] },
"00400007": { "vr": "LO", "Value": ["Specials^04a_SpineCTA"] },
"00400009": { "vr": "SH", "Value": ["PS-ID-24"] },
"00400010": { "vr": "SH", "Value": ["CTSCANNER"] },
…
},
…
]
},
…
}, … ]
Ответ возвращает два запланированных этапа процедуры для Sally Doe — один для головы и один для позвоночника. Атрибуты соответствуют Таблице K.6-1 в PS3.4 :
Этот пример иллюстрирует запрос на создание выполненного этапа процедуры модальности с использованием JSON. Намерение состоит в том, чтобы перевести его в состояние: "IN PROGRESS". Это продолжение предыдущего примера, приведённого в Разделе B.36, где Patient's Name (0010,0010), Study Instance UID (0020,000D), Scheduled Procedure Step Description (0040,0007) и Requested Procedure ID (0040,1001) переняты из полученного запланированного этапа процедуры модальности, а Performed Procedure Step Status (0040,0252), Performed Procedure Step ID (0040,0253), Accession Number (0008,0050) и Scheduled Procedure Step ID (0040,0009) добавлены как "IN PROGRESS", 1.2.250.1.59.40211.12345678.987654, 1 и "PS-ID-23" соответственно, некоторые из них — в Scheduled Step Attributes Sequence (0040,0270).
POST /radiology/modality-performed-procedure-steps/1.2.250.1.59.40211.12345678.987654 HTTP/1.1
Host: www.hospital-stmarco
Content-Type: application/dicom+json
…
{
…,
"00100010": { "vr": "PN", "Value": [{ "Alphabetic": "Doe^Sally" }] },
"00400242": { "vr": "SH", "Value": ["CTSCANNER"] },
"00400252": { "vr": "CS", "Value": ["IN PROGRESS"] },
"00400253": { "vr": "SH", "Value": ["1.2.250.1.59.40211.12345678.987654"] },
…,
"00400270": { "vr": "SQ", "Value":
[
{
"00080050": { "vr": "SH", "Value": ["1"] },
"0020000D": { "vr": "UI", "Value": ["1.2.250.1.59.40211.30000008090412501082300000004"] },
"00400007": { "vr": "LO", "Value": ["Specials^04a_HeadCTA"] },
"00400009": { "vr": "SH", "Value": ["PS-ID-23"] },
"00401001": { "vr": "SH", "Value": ["P-ID-22"] },
…
},
…
]
},
…
}
Успешный ответ на запрос будет следующим:
HTTP/1.1 200 OK
Этот пример иллюстрирует HTTP-запрос на обновление выполненного этапа процедуры модальности с использованием JSON. Намерение состоит в том, чтобы записать вновь созданные экземпляры как часть Referenced Image Sequence (0008,1140) во время текущего сбора изображений на модальности.
Этот пример является продолжением предыдущего примера, приведённого в Разделе B.37, и работает с тем же MPPS с UID 1.2.250.1.59.40211.12345678.987654. Он добавляет Performed Series Sequence (0040,0340), которая содержит:
описание серии (Series Description (0008,103E)) со значением "Head 1.50 Hr64 ax";
Грегори Хаус в качестве выполняющего врача (Performing Physician's Name (0008,1050));
Referenced Image Sequence (0008,1140) с двумя элементами, имеющими одинаковый Referenced SOP Class UID (0008,1150), а именно "1.2.840.10008.5.1.4.1.1.2", который является CT Image, и различными Referenced SOP Instance UID (0008,1155);
имя протокола (Protocol Name (0018,1030)) со значением "Special^99a_HeadCTA";
Series Instance UID (0020,000E): "1.2.250.1.59.40211.197132.30000020040718322840300000007".
POST /radiology/modality-performed-procedure-steps/1.2.250.1.59.40211.12345678.987654/update HTTP/1.1
Host: www.hospital-stmarco
Content-Type: application/dicom+json
…
{
…,
"00400340": { "vr": "SQ", "Value":
[
{
"0008103E": { "vr": "LO", "Value": ["Head 1.50 Hr64 ax"] },
"00081050": { "vr": "PN", "Value": [{ "Alphabetic": "House^Gregory" }] },
"00081140": { "vr": "SQ", "Value":
[
{
"00081150": { "vr": "UI", "Value": ["1.2.840.10008.5.1.4.1.1.2"] },
"00081155": { "vr": "UI", "Value": ["1.2.250.1.59.40211.197132.3000002004071832284030000520"] },
…
},
{
"00081150": { "vr": "UI", "Value": ["1.2.840.10008.5.1.4.1.1.2"] },
"00081155": { "vr": "UI", "Value": ["1.2.250.1.59.40211.197132.3000002004071832284030000521"] },
…
},
…
]
},
… ,
"00181030": { "vr": "LO", "Value": ["Special^99a_HeadCTA"] },
"0020000E": { "vr": "UI", "Value": ["1.2.250.1.59.40211.197132.30000020040718322840300000007"] },
…
},
…
]
},
…
}
…
Успешный ответ на запрос будет следующим:
HTTP/1.1 200 OK
Обновление последовательностей в рамках Modality Performed Procedure Step, таких как Performed Series Sequence (0040,0340) и Referenced Image Sequence (0008,0140), возможно только путём их предоставления целиком, как требуется в DIMSE. Обновление последовательностей путём предоставления только изменений невозможно. См. Раздел F.7.2.2.2 в PS3.4 . Если исходный сервер обнаруживает, что содержимое последовательности в Modality Performed Procedure Step не расширено, т.е. не все элементы её текущего представления присутствуют в представлении транзакции обновления, он может выдать предупреждающее сообщение. Это не обязательно должно быть ошибкой, так как такое поведение может быть намеренным, например, исправлением ранее допущенной ошибки.
Этот пример иллюстрирует пример HTTP-запроса на завершение выполненного этапа процедуры модальности. Это продолжение предыдущего примера, приведённого в Разделе B.38, работающего с тем же MPPS с UID 1.2.250.1.59.40211.12345678.987654. Здесь добавляются обязательные Performed Procedure Step End Date (0040,0250) и Performed Procedure Step End Time (0040,0251), а Performed Procedure Step Status (0040,0252) устанавливается в "COMPLETED".
POST /radiology/modality-performed-procedure-steps/1.2.250.1.59.40211.12345678.987654/update HTTP/1.1
Host: www.hospital-stmarco
Content-Type: application/dicom+json
…
{
…,
"00400250": { "vr": "DA", "Value": ["20200101"] },
"00400251": { "vr": "TM", "Value": ["1300"] },
"00400252": { "vr": "CS", "Value": ["COMPLETED"] },
…
}
…
Успешный ответ на запрос будет следующим:
HTTP/1.1 200 OK
Здесь представлены два примера: первый возвращает все доступные атрибуты, а второй — указанный набор атрибутов.
Этот пример иллюстрирует запрос на получение существующего выполненного этапа процедуры модальности в формате JSON со возвратом всех атрибутов. Он является culmination предыдущих примеров, приведённых в Разделе B.37, Разделе B.38 и Разделе B.39, в котором все добавленные атрибуты возвращаются здесь.
GET /radiology/modality-performed-procedure-steps/1.2.250.1.59.40211.12345678.987654?includefield=all HTTP/1.1
Host: www.hospital-stmarco
Accept: application/dicom+json
A successful response to the request will be:
HTTP/1.1 200 OK
Content-Length: 2191
Content-Type: application/dicom+json; charset=utf-8
…
[
{
…
"00100010": { "vr": "PN", "Value": [{ "Alphabetic": "Doe^Sally" }] },
"00400242": { "vr": "SH", "Value": ["CTSCANNER"] },
"00400252": { "vr": "CS", "Value": ["COMPLETED"] },
"00400253": { "vr": "SH", "Value": ["1.2.250.1.59.40211.12345678.987654"] },
…,
"00400270": { "vr": "SQ", "Value":
[
{
"00080050": { "vr": "SH", "Value": ["1"] },
"0020000D": { "vr": "UI", "Value": ["1.2.250.1.59.40211..30000008090412501082300000004"] },
"00400007": { "vr": "LO", "Value": ["Specials^04a_HeadCTA"] },
"00400009": { "vr": "SH", "Value": ["PS-ID-23"] },
"00401001": { "vr": "SH", "Value": ["P-ID-22"] },
…
},
…
]
},
…,
"00400340": { "vr": "SQ", "Value":
[
{
"0008103E": { "vr": "LO", "Value": ["Head 1.50 Hr64 ax"] },
"00081050": { "vr": "PN", "Value": [{ "Alphabetic": "House^Gregory" }] },
"00081140": { "vr": "SQ", "Value":
[
{
"00081150": { "vr": "UI", "Value": ["1.2.840.10008.5.1.4.1.1.2"] },
"00081155": { "vr": "UI", "Value": ["1.2.250.1.59.40211.197132.3000002004071832284030000520"] },
…
},
{
"00081150": { "vr": "UI", "Value": ["1.2.840.10008.5.1.4.1.1.2"] },
"00081155": { "vr": "UI", "Value": ["1.2.250.1.59.40211.197132.3000002004071832284030000521"] },
…
},
…
]
},
…,
"00181030": { "vr": "LO", "Value": ["Special^99a_HeadCTA"] },
"0020000E": { "vr": "UI", "Value": ["1.2.250.1.59.40211.197132.30000020040718322840300000007"] },
…
},
…
]
},
…
}
]
Атрибуты соответствуют Разделу F.8 в PS3.4 .
Этот пример иллюстрирует запрос на получение существующего выполненного этапа процедуры модальности в формате JSON с возвратом только определённых атрибутов, в данном случае Patient's Name (0010,0010), Performed Procedure Step Status (0040,0252) и Performed Station Name (0040,0242).
GET /radiology/modality-performed-procedure-steps/1.2.250.1.59.40211.12345678.987654?includefield=00100010,00400252,00400242 HTTP/1.1 Host: www.hospital-stmarco Accept: application/dicom+json
Успешный ответ на запрос будет следующим:
HTTP/1.1 200 OK
Content-Length: 289
Content-Type: application/dicom+json; charset=utf-8
[
{
"00100010": { "vr": "PN", "Value": [{ "Alphabetic": "Doe^Sally" }] },
"00400242": { "vr": "SH", "Value": ["CTSCANNER"] },
"00400252": { "vr": "CS", "Value": ["COMPLETED"] }
}
]
Порядок атрибутов в результате отличается от порядка в запросе, поскольку результат в JSON должен предоставлять атрибуты в порядке возрастания (см. Раздел F.2.2). Такое упорядочивание не требуется для параметров запроса.
Служба DICOMweb Modality Scheduled Procedure Step Service может быть развёрнута в гибридной среде, т.е. в среде, в которой используются как DICOMweb, так и DIMSE. В такой гибридной среде прокси-сервер может обеспечивать взаимодействие транзакций между службами, позволяя исходному серверу DICOMweb или DIMSE SCP поддерживать примитивы рабочего процесса для смешанного набора пользовательских агентов DICOMweb и DIMSE SCU.
DICOM не требует реализации прокси-серверов; однако, поскольку они были бы очень полезны в гибридной среде, примеры в этом разделе показывают, как это можно сделать.
Рисунок B.41-1 показывает, как прокси-сервер может облегчить запрос на поиск модальности запланированных этапов процедуры от DIMSE SCU к исходному серверу DICOMweb.
|
|
Рисунок B.41-1. DIMSE-прокси модальности запланированных этапов процедуры для исходного сервера DICOMweb
Рисунок B.41-2 показывает, как прокси-сервер может облегчить запрос на поиск модальности запланированных этапов процедуры от пользовательского агента DICOMweb к DIMSE SCP.
Служба DICOMweb Modality Performed Procedure Step Service может быть развёрнута в гибридной среде, т.е. в среде, в которой используются как DICOMweb, так и DIMSE. В такой гибридной среде прокси-сервер может обеспечивать взаимодействие транзакций между службами, позволяя исходному серверу DICOMweb или DIMSE SCP поддерживать примитивы рабочего процесса для смешанного набора пользовательских агентов DICOMweb и DIMSE SCU.
DICOM не требует реализации прокси-серверов; однако, поскольку они были бы очень полезны в гибридной среде, примеры в этом разделе показывают, как это можно сделать.
Рисунок B.42.1-1 показывает, как прокси-сервер может облегчить запрос на создание выполненного этапа процедуры модальности от DIMSE SCU к исходному серверу DICOMweb.
Рисунок B.42.1-2 показывает, как прокси-сервер может облегчить запрос на создание выполненного этапа процедуры модальности от пользовательского агента DICOMweb к DIMSE SCP.
Рисунок B.42.2-1 показывает, как прокси-сервер может облегчить запрос на обновление выполненного этапа процедуры модальности от DIMSE SCU к исходному серверу DICOMweb.
Рисунок B.42.2-2 показывает, как прокси-сервер может облегчить запрос на обновление выполненного этапа процедуры модальности от пользовательского агента DICOMweb к DIMSE SCP.
Рисунок B.42.3-1 показывает, как прокси-сервер может облегчить запрос на получение выполненного этапа процедуры модальности от DIMSE SCU к исходному серверу DICOMweb.
Рисунок B.42.3-2 показывает, как прокси-сервер может облегчить запрос на получение выполненного этапа процедуры модальности от пользовательского агента DICOMweb к DIMSE SCP.
Таблица D-1 предоставляет сопоставление некоторых предпочтительных MIME-имён из Реестра наборов символов IANA с определёнными терминами DICOM Specific Character Set.
Таблица D-1. Преобразование наборов символов IANA
JSON — это текстовый открытый стандарт, производный от JavaScript, для представления структур данных и связанных с ними массивов. Он является независимым от языка и в основном используется для сериализации и передачи лёгких структурированных данных по сетевому соединению. Он подробно описан Internet Engineering Task Force (IETF) в [RFC8259].
Модель DICOM JSON дополняет основанную на XML нативную модель DICOM (Native DICOM Model), предоставляя компактное представление данных, возвращаемых веб-службами DICOM. Хотя это представление может использоваться для кодирования любого типа набора данных DICOM, ожидается, что оно будет применяться клиентскими приложениями, особенно мобильными клиентами, как описано в вариантах использования QIDO-RS (см. Приложение HHH «Переход от WADO к RESTful-службам (Информативное)» в PS3.17).
За исключением выравнивания до чётной длины в байтах, источник данных, создающий новый экземпляр модели DICOM JSON, должен следовать правилам кодирования DICOM при создании значений для атрибутов DICOM в экземпляре модели DICOM JSON. Значения атрибутов, закодированные в модели DICOM JSON, не обязаны выравниваться до чётной длины в байтах.
Получатель данных, преобразующий данные из экземпляра модели DICOM JSON обратно в бинарно закодированный DICOM-объект, должен скорректировать выравнивание до чётной длины в байтах по мере необходимости для соответствия правилам кодирования, указанным в PS3.5.
Модель DICOM JSON очень близко следует нативной модели DICOM для XML (Native DICOM Model), так что системы могут использовать оба формата без значительной переработки. Тип носителя для DICOM JSON — application/dicom+json. Репертуар символов по умолчанию должен быть UTF-8 / ISO_IR 192.
Множественные результаты, возвращаемые в JSON, организованы как один массив объектов JSON верхнего уровня. Это отличается от нативной модели DICOM, которая возвращает несколько результатов как составную коллекцию одиночных XML-документов.
<?xml version="1.0" encoding="UTF-8" xml:space="preserve" ?>
<NativeDicomModel>
<DicomAttribute tag="0020000D" vr="UI" keyword="StudyInstanceUID">
<Value number="1">1.2.392.200036.9116.2.2.2.1762893313.1029997326.945873</Value>
</DicomAttribute>
</NativeDicomModel>
…
<?xml version="1.0" encoding="UTF-8" xml:space="preserve" ?>
<NativeDicomModel>
<DicomAttribute tag="0020000D" vr="UI" keyword="StudyInstanceUID">
<Value number="1">1.2.444.200036.9116.2.2.2.1762893313.1029997326.945876</Value>
</DicomAttribute>
</NativeDicomModel>
Объект модели DICOM JSON является представлением набора данных DICOM.
Внутренняя структура объекта модели DICOM JSON представляет собой последовательность объектов, представляющих атрибуты в наборе данных DICOM.
Объекты атрибутов в объекте модели DICOM JSON должны быть упорядочены по имени свойства в порядке возрастания лексикографического (алфавитного) порядка.
Атрибуты Group Length (gggg,0000) не должны включаться в объект модели DICOM JSON.
Каждый объект атрибута содержит следующие именованные дочерние объекты:
vr: строка, кодирующая представление значения DICOM (DICOM Value Representation). Соответствие между представлениями значений DICOM и представлениями значений JSON описано в Разделе F.2.3.
Value: массив, содержащий один из следующих элементов:
Элементы поля значений атрибута DICOM с VR, отличным от PN, SQ, OB, OD, OF, OL, OV, OW или UN (описано в Разделе F.2.4)
Кодирование пустых элементов поля значений описано в Разделе F.2.5
Элементы поля значений атрибута DICOM с VR PN. Непустые компоненты имени каждого элемента кодируются как строки JSON со следующими именами:
Объекты модели DICOM JSON, соответствующие элементам последовательности атрибута с VR SQ
Пустые элементы последовательности представляются пустыми объектами
BulkDataURI: строка, кодирующая URL WADO-RS значения объемных данных (Bulk Data Value), описывающая поле значений объемлющего атрибута с VR DS, FL, FD, IS, LT, OB, OD, OF, OL, OV, OW, SL, SS, ST, SV, UC, UL, UN, US, UT или UV (описано в Разделе F.2.6)
InlineBinary: строка base64, кодирующая поле значений объемлющего атрибута с VR OB, OD, OF, OL, OV, OW или UN (описано в Разделе F.2.7)
For Private Data Elements, the group and element numbers will follow the rules specified in Раздел 7.8.1 в PS3.5
Представление имени лица более тесно согласовано с представлением элемента данных DICOM, чем с XML-представлением DICOM PS3.19.
Атрибут Specific Character Set (0008,0005), если он присутствует, отражает кодировку символов исходного набора данных DICOM и не указывает кодировку символов представления JSON, которая является UTF-8 согласно [RFC8259]. Этот атрибут сохраняется как метаданные и может использоваться для реконструкции исходной бинарной кодировки DICOM. См. Раздел C.12.1.1.2 в PS3.3 для получения дополнительных сведений.
При преобразовании BulkData с VR, зависящими от набора символов (SH, LO, ST, PN, LT, UC или UT), в представление JSON кодировка будет UTF-8, как указано в [RFC8259]. Для InlineBinary и BulkData с VR UN исходная байтовая кодировка сохраняется без преобразования набора символов.
Если InlineBinary или BulkData с VR UN интерпретируется как содержащее строковое содержимое, для определения кодировки символов используется Specific Character Set (0008,0005) исходного набора данных DICOM.
DICOM Value Representation (VR) включается в каждый объект атрибута модели DICOM JSON и именуется "vr". Например:
"vr": "CS"
Кодирование JSON атрибута должно использовать тип данных JSON, соответствующий представлениям значений DICOM в Таблице F.2.3-1. Кодировки JSON должны соответствовать определению, набору символов (если применимо) и длине значения, указанным для данного представления значения DICOM (см. Раздел 6.2 «Value Representation (VR)» в PS3.5 ) со следующими исключениями:
Таблица F.2.3-1. Сопоставление VR DICOM с типом данных JSON
|
Object containing Person Name component groups as strings (see Section F.2.2) |
||
|
Universal Resource Identifier or Universal Resource Locator (URI/URL) |
||
Для IS, DS, SV и UV может использоваться строковое представление JSON для сохранения исходного формата при преобразовании представления или, при необходимости, во избежание потери точности десятичной строки.
Хотя данные, такие как даты, представляются в модели DICOM JSON в виде строк, ожидается, что они будут обрабатываться так же, как исходный атрибут, определенный в Главе 6 в PS3.6 .
Значение или значения заданного атрибута DICOM приводятся в массиве "Value". Кратность значения (VM) не содержится в объекте DICOM JSON.
"Value": [ "bar", "foo" ]
"Value": [ "bar" ]
Для тех VR, указанных в PS3.5 как зависящих от Specific Character Set (0008,0005) и допускающих несколько строковых значений, разделенных разделителем, т.е. SH, LO, PN и UC, битовая комбинация 05/12 (0x5C) используется для разделения значений в массиве “Value”, независимо от того, является ли графический символ, представленный комбинацией 05/12, ОБРАТНОЙ КОСОЙ ЧЕРТОЙ (BACKSLASH) (как в наборе символов по умолчанию) или ЗНАКОМ ИЕНЫ (YEN SIGN) (как в [JIS X 0201]). См. Раздел 6.1.2.3 «Encoding of Character Repertoires» в PS3.5. Ожидаемое поведение при перекодировании из JSON в другие представления и наоборот заключается в сохранении семантики нескольких отдельных значений, независимо от того, закодированы ли они как многозначный массив в JSON или как поток символов с разделителями в представлениях PS3.5.
Графические символы, совпадающие с разделителем, заданным для набора символов многозначных VR, не могут быть представлены как значения в некоторых наборах символов при кодировании в представлениях PS3.5. Соответственно, не рекомендуется использовать графический символ в значении JSON для VR SH, LO, PN и UC, такой как ОБРАТНАЯ КОСАЯ ЧЕРТА (BACKSLASH) или ЗНАК ИЕНЫ (YEN SIGN), который будет представлен как 05/12 в наборе символов по умолчанию или [JIS X 0201], поскольку при перекодировании в представление PS3.5, из-за отсутствия определенного механизма экранирования, они могут ошибочно интерпретироваться как разделители, разбивая значение. Например, пути в стиле DOS, использующие ОБРАТНУЮ КОСУЮ ЧЕРТУ в качестве разделителя компонентов файла, не могут быть закодированы в одном значении одного из затронутых VR.
Если атрибут присутствует в DICOM, но пуст (т.е. длина значения равна 0), он должен быть сохранен в объекте атрибута DICOM JSON, не содержащем "Value", "BulkDataURI" или "InlineBinary".
Если многозначный атрибут имеет одно или несколько пустых значений, они представляются как элементы массива "null". Например:
"Value": [ "bar", null, "foo" ]
Если последовательность содержит пустые элементы, они представляются как пустые объекты JSON в массиве.
"Value": [ { … }, { }, { … } ]
Если атрибут содержит "BulkDataURI" , это поле содержит URI значения элемента BulkData, как определено в Таблице A.1.5-2 в PS3.19 .
Если атрибут содержит "InlineBinary", это поле содержит кодировку base64 поля значений объемлющего атрибута, как определено в Таблице A.1.5-2 в PS3.19 .
Преобразование между XML нативной модели DICOM и моделью DICOM JSON не может быть выполнено с помощью универсальных преобразователей XML - JSON.
Сопоставление между двумя форматами приведено ниже (см. также Таблицу F.3.1-1):
XML-элемент "NativeDicomModel" сопоставляется с объектом модели DICOM JSON
Каждый элемент "DicomAttribute" сопоставляется с объектом атрибута в объекте модели DICOM JSON
Атрибут "tag" сопоставляется с именем объекта JSON
XML нативной модели DICOM допускает дублирование значений Tag, а модель DICOM JSON — нет. Для разрешения этой проблемы значения Tag частных атрибутов должны быть переназначены в соответствии с правилами предотвращения конфликтов, указанными в Разделе 7.8.1 «Private Data Element Tags» в PS3.5 .
Элементы "Value" сопоставляются с членами дочернего массива "Value"
Элементы "PersonName" сопоставляются с объектами в массиве "Value". Для элемента "PersonName" с атрибутом "number=n":
Элементы "Item" сопоставляются с членами дочернего массива "Value"
Атрибут "uri" элемента "BulkData" сопоставляется со строкой "BulkDataURI"
Элемент "InlineBinary" сопоставляется со строкой "InlineBinary"
Таблица F.3.1-1. Сопоставление XML с JSON
|
DICOM PS3.19 XML |
|
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// The following example is a QIDO-RS SearchForStudies response consisting
// of two matching studies, corresponding to the example QIDO-RS request:
// GET http://qido.nema.org/studies?PatientID=12345&includefield=all&limit=2
[
{ // Result 1
"00080005": {
"vr": "CS",
"Value": [ "ISO_IR 192" ]
},
"00080020": {
"vr": "DA",
"Value": [ "20130409" ]
},
"00080030": {
"vr": "TM",
"Value": [ "131600.0000" ]
},
"00080050": {
"vr": "SH",
"Value": [ "11235813" ]
},
"00080056": {
"vr": "CS",
"Value": [ "ONLINE" ]
},
"00080061": {
"vr": "CS",
"Value": [
"CT",
"PET"
]
},
"00080090": {
"vr": "PN",
"Value": [
{
"Alphabetic": "^Bob^^Dr."
}
]
},
"00081190": {
"vr": "UR",
"Value": [ "http://wado.nema.org/studies/
1.2.392.200036.9116.2.2.2.1762893313.1029997326.945873" ]
},
"00090010": {
"vr": "LO",
"Value": [ "Vendor A" ]
},
"00091002": {
"vr": "UN",
"InlineBinary": "z0x9c8v7"
},
"00100010": {
"vr": "PN",
"Value": [
{
"Alphabetic": "Wang^XiaoDong",
"Ideographic": "王^小東"
}
]
},
"00100020": {
"vr": "LO",
"Value": [ "12345" ]
},
"00100021": {
"vr": "LO",
"Value": [ "Hospital A" ]
},
"00100030": {
"vr": "DA",
"Value": [ "19670701" ]
},
"00100040": {
"vr": "CS",
"Value": [ "M" ]
},
"00101002": {
"vr": "SQ",
"Value": [
{
"00100020": {
"vr": "LO",
"Value": [ "54321" ]
},
"00100021": {
"vr": "LO",
"Value": [ "Hospital B" ]
}
},
{
"00100020": {
"vr": "LO",
"Value": [ "24680" ]
},
"00100021": {
"vr": "LO",
"Value": [ "Hospital C" ]
}
}
]
},
"0020000D": {
"vr": "UI",
"Value": [ "1.2.392.200036.9116.2.2.2.1762893313.1029997326.945873" ]
},
"00200010": {
"vr": "SH",
"Value": [ "11235813" ]
},
"00201206": {
"vr": "IS",
"Value": [ 4 ]
},
"00201208": {
"vr": "IS",
"Value": [ 942 ]
}
},
{ // Result 2
"00080005": {
"vr": "CS",
"Value": [ "ISO_IR 192" ]
},
"00080020": {
"vr": "DT",
"Value": [ "20130309" ]
},
"00080030": {
"vr": "TM",
"Value": [ "111900.0000" ]
},
"00080050": {
"vr": "SH",
"Value": [ "11235821" ]
},
"00080056": {
"vr": "CS",
"Value": [ "ONLINE" ]
},
"00080061": {
"vr": "CS",
"Value": [
"CT",
"PET"
]
},
"00080090": {
"vr": "PN",
"Value": [
{
"Alphabetic": "^Bob^^Dr."
}
]
},
"00081190": {
"vr": "UR",
"Value": [ "http://wado.nema.org/studies/
1.2.392.200036.9116.2.2.2.2162893313.1029997326.945876" ]
},
"00090010": {
"vr": "LO",
"Value": [ "Vendor A" ]
},
"00091002": {
"vr": "UN",
"InlineBinary": "z0x9c8v7"
},
"00100010": {
"vr": "PN",
"Value": [
{
"Alphabetic": "Wang^XiaoDong",
"Ideographic": "王^小東"
}
]
},
"00100020": {
"vr": "LO",
"Value": [ "12345" ]
},
"00100021": {
"vr": "LO",
"Value": [ "Hospital A" ]
},
"00100030": {
"vr": "DA",
"Value": [ "19670701" ]
},
"00100040": {
"vr": "CS",
"Value": [ "M" ]
},
"00101002": {
"vr": "SQ",
"Value": [
{
"00100020": {
"vr": "LO",
"Value": [ "54321" ]
},
"00100021": {
"vr": "LO",
"Value": [ "Hospital B" ]
}
},
{
"00100020": {
"vr": "LO",
"Value": [ "24680" ]
},
"00100021": {
"vr": "LO",
"Value": [ "Hospital C" ]
}
}
]
},
"0020000D": {
"vr": "UI",
"Value": [ "1.2.392.200036.9116.2.2.2.2162893313.1029997326.945876" ]
},
"00200010": {
"vr": "SH",
"Value": [ "11235821" ]
},
"00201206": {
"vr": "IS",
"Value": [ 5 ]
},
"00201208": {
"vr": "IS",
"Value": [ 1123 ]
}
}
]
Хотя спецификация WADL определяет только XML-кодирование для полезной нагрузки WADL, структуру данных можно легко представить с использованием JSON. Кроме того, преобразование из XML в JSON и наоборот может быть выполнено без потерь.
JSON-кодирование XML-элементов WADL зависит от того, является ли элемент:
Элемент "doc" представляется в виде массива объектов, где каждый объект может содержать:
"doc": [
{
"@xml:lang": "en",
"value": "Granular cell tumor"
},
{
"@xml:lang": "ja",
"value": "顆粒細胞腫"
},
{
"@xml:lang": "fr",
"value": "Tumeur à cellules granuleuses"
}
]
Все уникальные XML-элементы WADL представляются как объект, имя которого является именем XML-элемента, и где каждый член может содержать:
"request": {
"param": [ ... ],
"representation": [ ... ]
}
Описание возможностей представляет собой документ WADL. См. [WADL].
Ресурс описания возможностей напрямую и однозначно следует из RESTful-ресурсов, определённых в Разделе 10, Разделе 11, Разделе 12, Разделе 13, Разделе 14 и Разделе 15.
Документ WADL должен содержать один элемент верхнего уровня "application".
Элемент "application" должен содержать один элемент "resources", значение атрибута "base" которого является базовым URL-адресом для службы. Это может быть комбинация протокола (http или https), хоста, порта и приложения.
Кроме того, содержимое WADL должно включать элемент "resource" для целевого ресурса, указанного в запросе, описывающий все методы и дочерние ресурсы для указанного ресурса и каждого из его потомков.
Полное дерево ресурсов и методы, определённые для каждого ресурса, описаны в Таблице H-1.
Транзакция получения возможностей (Retrieve Capabilities Transaction) исключена из Таблицы H-1, поскольку эта транзакция используется для получения данного документа, а WADL не является самоописываемым.
Таблица H-1. Ресурсы и методы
|
Исследования (Studies) (см. Раздел 10.1.1) |
|||
|
Список работ (Worklist) (см. Раздел 11.1.1) |
|||
|
Объекты, не связанные с пациентом (Non-Patient Instance) (см. Раздел 12.1.1) |
|||
|
Запросы подтверждения сохранения (Storage Commitment requests) (см. Раздел 13.1.1) |
|||
|
Служба запланированных этапов процедуры модальности (Modality Scheduled Procedure Step Service) (см. Раздел 14.1.1) |
|||
|
Служба выполненных этапов процедуры модальности (Modality Performed Procedure Step Service) (см. Раздел 15.1.1) |
|||
Таблица I.1-1 определяет атрибуты для ссылок на SOP-экземпляры, содержащиеся в модуле ответа Store Instances в теле ответного сообщения.
Таблица I.1-1. Атрибуты модуля ответа Store Instances
|
URL-адрес, по которому исследование доступно для получения через транзакцию получения исследований (Studies Retrieve Transaction) (Раздел 10.4). |
|||
|
Последовательность элементов, где каждый элемент ссылается на один SOP-экземпляр, для которого не удалось обеспечить сохранение. Обязательно, если один или несколько SOP-экземпляров не удалось сохранить. |
|||
|
>Таблица 10-11 “SOP Instance Reference Macro Attributes” в PS3.3 |
|||
|
Причина, по которой не удалось обеспечить сохранение для данного SOP-экземпляра. См. Раздел I.2.2. |
|||
|
Последовательность элементов, где каждый элемент ссылается на один SOP-экземпляр, который был успешно сохранён. Обязательно, если один или несколько SOP-экземпляров были успешно сохранены. |
|||
|
>Таблица 10-11 “SOP Instance Reference Macro Attributes” в PS3.3 |
|||
|
URL-адрес, по которому SOP-экземпляр доступен для получения через транзакцию получения исследований (Studies Retrieve Transaction) (Раздел 10.4). |
|||
|
Причина, по которой данный SOP-экземпляр был принят с предупреждениями. Обязательно, если для данного SOP-экземпляра было выдано предупреждение. См. Раздел I.2.1. |
|||
|
Последовательность элементов, содержащая все атрибуты, которые были удалены или заменены другими значениями. В этой последовательности допускается один или несколько элементов. |
|||
|
Идентификация системы, которая удалила и/или заменила атрибуты. |
|||
|
Определённые термины
|
|||
|
Последовательность, содержащая все атрибуты с их предыдущими значениями, которые были изменены или удалены из основного набора данных. В этой последовательности должен быть включён только один элемент. |
|||
|
>>Любой атрибут из основного набора данных, который был изменён или удалён; может включать атрибуты-последовательности и их элементы. |
|||
|
Причины, не связанные с конкретным SOP-экземпляром, по которым не удалось обеспечить сохранение. Каждый элемент ссылается на одну ошибку сохранения. Обязательно, если есть одна или несколько ошибок, не связанных с конкретным SOP-экземпляром. |
|||
|
Причина, по которой не удалось обеспечить сохранение для данного элемента сообщения. См. Раздел I.2.2. |
|||
Таблица I.2-1 определяет семантику, для которой соответствующее значение должно использоваться для причины предупреждения (Warning Reason) (0008,1196):
Таблица I.2-1. Значения причины предупреждения ответа Store Instances
|
Транзакция сохранения исследований (Studies Store Transaction) (Раздел 10.5) изменила один или несколько элементов данных во время сохранения экземпляра. См. Раздел 10.5.3. |
|||
|
Транзакция сохранения исследований (Studies Store Transaction) (Раздел 10.5) отбросила некоторые элементы данных во время сохранения экземпляра. См. Раздел 10.5.3. |
|||
|
Транзакция сохранения исследований (Studies Store Transaction) (Раздел 10.5) обнаружила, что набор данных не соответствует ограничениям SOP Class во время сохранения экземпляра. |
Дополнительные коды могут использоваться для причины предупреждения (Warning Reason) (0008,1196) для отражения семантики других проблем.
В случае если могут применяться несколько кодов, должен использоваться один наиболее подходящий код.
Таблица I.2-2 определяет семантику, для которой соответствующее значение должно использоваться для причины ошибки (Failure Reason) (0008,1197). Специфичные для реализации коды предупреждений и ошибок должны быть определены в заявлении о соответствии:
Таблица I.2-2. Значения причины ошибки ответа Store Instances
|
Транзакция сохранения исследований (Studies Store Transaction) (Раздел 10.5) не сохранила экземпляр из-за нехватки ресурсов. |
|||
|
Транзакция сохранения исследований (Studies Store Transaction) (Раздел 10.5) не сохранила экземпляр, поскольку экземпляр не соответствует указанному SOP Class. |
|||
|
Транзакция сохранения исследований (Studies Store Transaction) (Раздел 10.5) не сохранила экземпляр, поскольку не может понять определённые элементы данных. |
|||
|
Транзакция сохранения исследований (Studies Store Transaction) (Раздел 10.5) не сохранила экземпляр, поскольку она не поддерживает запрошенный Transfer Syntax для экземпляра. |
|||
|
Транзакция сохранения исследований (Studies Store Transaction) (Раздел 10.5) не сохранила экземпляр из-за общей ошибки обработки операции. |
|||
|
Транзакция сохранения исследований (Studies Store Transaction) (Раздел 10.5) не сохранила экземпляр, поскольку она не поддерживает запрошенный SOP Class. |
Дополнительные коды могут использоваться для причины ошибки (Failure Reason) (0008,1197) для отражения семантики других проблем.
В случае если могут применяться несколько кодов, должен использоваться один наиболее подходящий код.
Ниже приведён пример XML-модуля ответа Store Instances PS3.18 в теле ответного сообщения, содержащего 2 ошибочных SOP-экземпляра, 1 успешный SOP-экземпляр и 1 принятый SOP-экземпляр с предупреждением:
<?xml version="1.0" encoding="utf-8" xml:space="preserve"?>
<NativeDicomModel xmlns="http://dicom.nema.org/PS3.19/models/NativeDICOM"
xsi:schemaLocation="http://dicom.nema.org/PS3.19/models/NativeDICOM"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<DicomAttribute tag="00081198" vr="SQ" keyword="FailedSOPSequence">
<Item number="1">
<DicomAttribute tag="00081150" vr="UI" keyword="ReferencedSOPClassUID">
<Value number="1">1.2.840.10008.3.1.2.3.1</Value>
</DicomAttribute>
<DicomAttribute tag="00081155" vr="UI"
keyword="ReferencedSOPInstanceUID">
<Value number="1">
2.16.124.113543.6003.1011758472.49886.19426.2085542308</Value>
</DicomAttribute>
<DicomAttribute tag="00081197" vr="US" keyword="FailureReason">
<Value number="1">290</Value>
</DicomAttribute>
</Item>
<Item number="2">
<DicomAttribute tag="00081150" vr="UI" keyword="ReferencedSOPClassUID">
<Value number="1">1.2.840.10008.3.1.2.3.1</Value>
</DicomAttribute>
<DicomAttribute tag="00081155" vr="UI"
keyword="ReferencedSOPInstanceUID">
<Value number="1">
2.16.124.113543.6003.1011758472.49886.19426.2085542309</Value>
</DicomAttribute>
<DicomAttribute tag="00081197" vr="US" keyword="FailureReason">
<Value number="1">290</Value>
</DicomAttribute>
</Item>
</DicomAttribute>
<DicomAttribute tag="00081199" vr="SQ" keyword="ReferencedSOPSequence">
<Item number="1">
<DicomAttribute tag="00081150" vr="UI" keyword="ReferencedSOPClassUID">
<Value number="1">1.2.840.10008.5.1.4.1.1.2</Value>
</DicomAttribute>
<DicomAttribute tag="00081155" vr="UI"
keyword="ReferencedSOPInstanceUID">
<Value number="1">
2.16.124.113543.6003.189642796.63084.16748.2599092903</Value>
</DicomAttribute>
<DicomAttribute tag="00081190" vr="UR" keyword="RetrieveURL">
<Value number="1">
https://wadors.hospital.com/studies/2.16.124.113543.6003.1154777499.30246.19789.3503430045/
series/2.16.124.113543.6003.2588828330.45298.17418.2723805630/
instances/2.16.124.113543.6003.189642796.63084.16748.2599092903</Value>
</DicomAttribute>
</Item>
<Item number="2">
<DicomAttribute tag="00081150" vr="UI" keyword="ReferencedSOPClassUID">
<Value number="1">1.2.840.10008.5.1.4.1.1.2</Value>
</DicomAttribute>
<DicomAttribute tag="00081155" vr="UI"
keyword="ReferencedSOPInstanceUID">
<Value number="1">
2.16.124.113543.6003.189642796.63084.16748.2599092905</Value>
</DicomAttribute>
<DicomAttribute tag="00081196" vr="US" keyword="WarningReason">
<Value number="1">45056</Value>
</DicomAttribute>
<DicomAttribute tag="00081190" vr="UR" keyword="RetrieveURL">
<Value number="1">
https://wadors.hospital.com/studies/2.16.124.113543.6003.1154777499.30246.19789.3503430045/
series/2.16.124.113543.6003.2588828330.45298.17418.2723805630/
instances/2.16.124.113543.6003.189642796.63084.16748.2599092905</Value>
</DicomAttribute>
</Item>
</DicomAttribute>
<DicomAttribute tag="00081190" vr="UR" keyword="RetrieveURL">
<Value number="1">
https://wadors.hospital.com/studies/2.16.124.113543.6003.1154777499.30246.19789.3503430045</Value>
</DicomAttribute>
</NativeDicomModel>
Таблица J.1-1 определяет атрибуты модуля запроса подтверждения сохранения.
Таблица J.1-1. Модуль запроса подтверждения сохранения
|
SOP-экземпляры, для которых запрашивается подтверждение сохранения. В эту последовательность должен быть включён один или несколько элементов. Обязательно, если Referenced Study Sequence (0008,1110) отсутствует. |
|||
|
>Включить Таблица 10-11 “SOP Instance Reference Macro Attributes” в PS3.3 |
|||
|
Исследования, содержащие экземпляры, для которых запрашивается подтверждение сохранения. В эту последовательность должен быть включён один или несколько элементов. Обязательно, если Referenced SOP Sequence (0008,1199) отсутствует. |
|||
|
Серии, содержащие экземпляры, для которых запрашивается подтверждение сохранения. В эту последовательность должен быть включён один или несколько элементов. |
|||
|
SOP-экземпляры, для которых запрашивается подтверждение сохранения, сгруппированные по SOP Class. В эту последовательность должен быть включён один или несколько элементов. |
|||
|
SOP-экземпляры, для которых запрашивается подтверждение сохранения. В эту последовательность должен быть включён один или несколько элементов. |
|||
Таблица J.2-1 определяет атрибуты модуля ответа подтверждения сохранения.
Таблица J.2-1. Модуль ответа подтверждения сохранения
|
SOP-экземпляры, для которых подтверждение сохранения выполнено. Обязательно, если полезная нагрузка запроса содержала Referenced SOP Sequence (0008,1199), и в указанной последовательности есть хотя бы один SOP-экземпляр, для которого подтверждение сохранения выполнено. |
|||
|
>Включить Таблица 10-11 “SOP Instance Reference Macro Attributes” в PS3.3 |
|||
|
SOP-экземпляры, для которых подтверждение сохранения не выполнено. Обязательно, если полезная нагрузка запроса содержала Referenced SOP Sequence (0008,1199), и в указанной последовательности есть хотя бы один SOP-экземпляр, для которого подтверждение сохранения не выполнено. |
|||
|
>Включить Таблица 10-11 “SOP Instance Reference Macro Attributes” в PS3.3 |
|||
|
Причина, по которой подтверждение сохранения не выполнено для данного SOP-экземпляра. См. Раздел C.14.1.1 в PS3.3 для возможных значений. |
|||
|
Исследования, содержащие экземпляры, для которых подтверждение сохранения выполнено. Обязательно, если полезная нагрузка запроса содержала Referenced Study Sequence (0008,1110), и есть хотя бы один SOP-экземпляр, для которого подтверждение сохранения выполнено. |
|||
|
Серии, содержащие экземпляры, для которых подтверждение сохранения выполнено. |
|||
|
SOP-экземпляры, для которых подтверждение сохранения выполнено, сгруппированные по SOP Class. |
|||
|
SOP-экземпляры, для которых подтверждение сохранения выполнено. |
|||
|
Исследования, содержащие экземпляры, для которых подтверждение сохранения не выполнено. Обязательно, если полезная нагрузка запроса содержала Referenced Study Sequence (0008,1110), и в указанной последовательности есть хотя бы один SOP-экземпляр, для которого подтверждение сохранения не выполнено. |
|||
|
Серии, содержащие экземпляры, для которых подтверждение сохранения не выполнено. |
|||
|
SOP-экземпляры, для которых сохранение не было обеспечено, сгруппированные по SOP Class. |
|||
|
SOP-экземпляры, для которых подтверждение сохранения не выполнено. |
|||
|
Причина, по которой подтверждение сохранения не выполнено для данного SOP-экземпляра. |
|||
Модуль ответа визуализированного объёма (Rendered Volume Response Module) предоставляет пользовательскому агенту представление параметров, применённых исходным сервером для генерации объёмной визуализации.
Пользовательский агент может использовать эту информацию для:
информирования оператора о фактических использованных значениях параметров, включая как значения, указанные в запросе, так и значения, определённые исходным сервером (например, заполнение пользовательского интерфейса параметрами для помощи в интерпретации визуализированного содержимого),
использования в качестве основы для последующих запросов (например, для итеративного изменения параметров с целью получения желаемого результата визуализации), или
получения представления о вариантах, выбранных исходным сервером для задания значений по умолчанию и/или обработки ошибок при создании визуализации.
Таблица K.1-1 определяет атрибуты, возвращаемые в теле ответного сообщения ресурса визуализированного MPR-объёма (Rendered MPR Volume Resource) или ресурса визуализированного 3D-объёма (Rendered 3D Volume Resource).
Они представляют параметры запроса, которые могут быть указаны пользовательским агентом в ресурсах визуализированного MPR-объёма или ресурсах визуализированного 3D-объёма. См. Раздел 8.3.5.3.
Параметры анатомической ориентации (см. Раздел 8.3.5.3.4) преобразуются в параметры ориентации камеры для обеспечения точной настройки в последующем запросе.
Таблица K.1-1. Атрибуты модуля ответа визуализированного объёма