Un esquema de mensaje se utiliza para describir los mensajes que envían y reciben los nodos DICOM.
Todos los nodos de DICOM utilizan el mismo esquema para describir el contenido de sus mensajes XML de DICOM.
Los nodos DICOMInput y DICOMOutput utilizan la misma definición de tipo complejo (DICOM). El nodo DICOMFindMove tiene un tipo complejo que se denomina FindMove (que define los parámetros de búsqueda para la consulta) y un tipo complejo que se denomina Results (que define la estructura del mensaje de resultados).
La tabla siguiente resume los tipos complejos que se esperan en el terminal de entrada y se envían desde el terminal de salida.
Nodo | Tipo complejo que se espera en el terminal de entrada | Tipo complejo que se envía desde el terminal de salida |
---|---|---|
Nodo DICOMInput | DICOM | |
Nodo DICOMOutput | DICOM | DICOM |
Nodo DICOMFindMove | FindMove | Results |
El tipo complejo DICOM es una lista ordenada de elementos de datos de DICOM. Cada elemento de datos, que se conoce como Attribute, puede contener un único valor (por ejemplo, el nombre del paciente), o bien puede contener una secuencia de repetición de otros elementos Attribute dentro de un elemento Item. Cada DICOM Attribute contiene un elemento que se denomina Tag (que contiene el nombre de código de DICOM) y un elemento llamado VR (que especifica el tipo de datos de DICOM).
<Attribute Tag="7FE00010" VR="OW" Source="7FE00010"/>
El nodo DICOMFindMove utiliza el tipo de esquema FindMove para representar los parámetros de búsqueda de un mandato C-FIND. El nodo puede devolver varios resultados de búsqueda. Cada resultado se representa mediante un elemento DICOM (la misma definición de tipo que utilizan los nodos DICOMInput y DICOMOutput). Si los parámetros de búsqueda incluyen un elemento MoveDestination, cada elemento Results también incluye un elemento XML adicional denominado MoveResults. El elemento MoveResults especifica si la imagen de DICOM se ha movido satisfactoriamente al destino. Este elemento también proporciona información de error detallada (si está disponible) en los elementos ErrorID y ErrorComment. Los mensajes de consulta pueden incluir códigos de retorno específicos del proveedor en el elemento Return. Si el soporte de proveedor pertinente está configurado en el proveedor de clase de servicio (SCP), estos códigos se incluyen en los mensajes de respuesta.
<?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>