消息模式用于描述 DICOM 节点所发送和接收的消息。
DICOM 节点全都使用同一种模式来描述其 DICOM XML 消息的内容。
DICOMInput 和 DICOMOutput 节点使用同一复杂类型定义 (DICOM)。DICOMFindMove 节点具有名为 FindMove 的复杂类型(用于定义查询的搜索参数)和名为 Results 的复杂类型(用于定义结果消息的结构)。
下表概括了输入终端所期望的复杂类型以及从输出终端发送的复杂类型。
节点 | 输入终端所期望的复杂类型 | 从输出终端发送的复杂类型 |
---|---|---|
DICOMInput 节点 | DICOM | |
DICOMOutput 节点 | DICOM | DICOM |
DICOMFindMove 节点 | FindMove | Results |
DICOM 复杂类型是 DICOM 数据元素的有序列表。每个数据元素(称为属性)既可以包含单个值(例如患者姓名),也可以包含项元素中其他属性元素的重复序列。每个 DICOM 属性都包含一个名为 Tag 的元素(其中包含 DICOM 标记名称)和一个名为 VR 的元素(其中包含 DICOM 数据类型)。
<Attribute Tag="7FE00010" VR="OW" Source="7FE00010"/>
DICOMFindMove 节点使用 FindMove 模式类型来表示 C-FIND 命令的搜索参数。此节点可以返回多个搜索结果。每个结果都由一个 DICOM 元素(DICOMInput 和 DICOMOutput 节点所使用的类型定义)表示。如果搜索参数包含 MoveDestination 元素,那么每个 Results 元素都另外包含一个名为 MoveResults 的 XML 元素。MoveResults 元素指定是否已成功地将 DICOM 图像移至目标。此元素还在 ErrorID 和 ErrorComment 元素中提供了详细的错误信息(如果有)。查询消息可以在 Return 元素中包含特定于供应商的返回标记。如果对 Service Class Provider (SCP) 配置了相关的供应商支持,那么这些标记将包括在响应消息中。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xsd:schema xmlns="http://com.ibm.healthcare/DICOM" xmlns:xsd="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://com.ibm.healthcare/DICOM">
<xsd:element name="DICOM" type="DICOM"/>
<xsd:element name="Results" type="Results"/>
<xsd:element name="FindMove" type="FindMove"/>
<xsd:complexType name="Attribute" mixed="true">
<xsd:annotation>
<xsd:documentation xml:lang="en">Defines the schema for DICOM data attributes.</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="Item" type="Item"/>
</xsd:sequence>
<xsd:attribute name="Tag" type="xsd:string"/>
<xsd:attribute name="VR" type="xsd:string" use="optional"/>
<xsd:attribute name="Source" type="xsd:string" use="optional"/>
</xsd:complexType>
<xsd:complexType name="MoveResults">
<xsd:annotation>
<xsd:documentation xml:lang="en">Defines the schema for DICOM C-MOVE results.</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="Completed" type="xsd:string"/>
<xsd:element name="Failed" type="xsd:string"/>
<xsd:element name="Warnings" type="xsd:string"/>
<xsd:element name="Status" type="xsd:string"/>
<xsd:element name="ErrorID" type="xsd:string"/>
<xsd:element name="ErrorComment" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Item">
<xsd:annotation>
<xsd:documentation xml:lang="en">Defines the schema for DICOM sequences.</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="Attribute" type="Attribute"/>
</xsd:sequence>
<xsd:attribute name="Source" type="xsd:string" use="optional"/>
</xsd:complexType>
<xsd:complexType name="DICOM">
<xsd:annotation>
<xsd:documentation xml:lang="en">Defines the schema for DICOM data objects.</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="Attribute" type="Attribute"/>
<xsd:element minOccurs="0" name="MoveResults" type="MoveResults"/>
</xsd:sequence>
<xsd:attribute name="Location" type="xsd:string" use="optional"/>
</xsd:complexType>
<xsd:complexType name="Results">
<xsd:annotation>
<xsd:documentation xml:lang="en">Defines the schema for DICOM C-FIND result messages.</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="DICOM" type="DICOM"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="FindMove">
<xsd:annotation>
<xsd:documentation xml:lang="en">Defines the schema for DICOM C-FIND query messages.</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element minOccurs="0" name="QueryRoot" type="xsd:string"/>
<xsd:element minOccurs="0" name="QueryLevel" type="xsd:string"/>
<xsd:element minOccurs="0" name="MoveDestination" type="xsd:string"/>
<xsd:element minOccurs="0" name="OperationPriority" type="xsd:string"/>
<xsd:element name="Match">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" name="Attribute" type="Attribute"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element minOccurs="0" name="Return">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="Tag" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>