DICOM message schema
A message schema is used to describe the messages sent and received by the DICOM nodes.
Description
The DICOM nodes all use the same schema to describe the content of their DICOM XML messages.
The DICOMInput and DICOMOutput nodes use the
same complex type definition (DICOM
). The DICOMFindMove node has a
complex type that is called FindMove
(which defines
the search parameters for the query) and a complex type that is called Results
(which
defines the structure of the results message).
The following table summarizes the complex types that are expected on the input terminal and sent from the output terminal.
Node | Complex type that is expected on input terminal | Complex type that is sent from output terminal |
---|---|---|
DICOMInput node | DICOM |
|
DICOMOutput node | DICOM |
DICOM |
DICOMFindMove node | FindMove |
Results |
The DICOM complex
type is an ordered list of DICOM data
elements. Each data element, which is known as an Attribute
,
can either contain a single value (for example, the patient’s name),
or it can contain a repeating sequence of other Attribute
elements
inside an Item
element. Each DICOM Attribute
contains
an element that is called Tag
(which contains the DICOM tag name), and an element
called VR
(which specifies the DICOM data type).
Source
and Location
. These
attributes are used in DICOMInput and DICOMOutput nodes to link
to data on the file system that is not included in the DICOM XML messages (for example,
pixel data). The Location
attribute is always present
on the DICOM root element
and points to the directory that contains the image sent to the DICOMInput node. The Source
attribute
is optionally present on Attribute
and Item
elements
and specifies a file name in the processing directory which contains
data not present in the DICOM XML
message. For example, <Attribute Tag="7FE00010" VR="OW" Source="7FE00010"/>
The DICOMFindMove node uses the FindMove
schema
type to represent the search parameters for a C-FIND command. The
node can return multiple search results. Each result is represented
by a DICOM element (the
same type definition that is used by the DICOMInput and DICOMOutput nodes). If the
search parameters include a MoveDestination
element,
then each Results
element also includes an extra
XML element called MoveResults
. The MoveResults
element
specifies whether the DICOM image
was successfully moved to the destination. This element also provides
detailed error information (if available) in the ErrorID
and ErrorComment
elements.
Query messages can include vendor-specific return tags in the Return
element.
If the relevant vendor support is configured on the Service Class
Provider (SCP), these tags are included in the response messages.
Schema
<?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>