Un schéma de message est utilisé pour décrire les messages envoyés et reçus par les noeuds DICOM.
Les noeuds DICOM utilisent tous le même schéma pour décrire le contenu de leurs messages XML DICOM.
Les noeuds DICOMInput et DICOMOutput utilisent la même définition de type complexe (DICOM). Le noeud DICOMFindMove a un type complexe appelé FindMove (qui définit les paramètres de recherche pour la requête) et un type complexe appelé Results (qui définit la structure du message de résultats).
Le tableau suivant récapitule les types complexes attendus sur le terminal d'entrée et envoyés à partir de ce dernier.
Noeud | Type complexe attendu sur le terminal d'entrée | Type complexe qui est envoyé depuis le terminal de sortie |
---|---|---|
Noeud DICOMInput | DICOM | |
Noeud DICOMOutput | DICOM | DICOM |
Noeud DICOMFindMove | FindMove | Résultats |
Le type complexe DICOM est une liste classée d'éléments de données DICOM. Chaque élément de données appelé attribut peut contenir une valeur unique (le nom du patient par exemple) ou une séquence répétitive d'autres éléments Attribute dans un élément Item. Chaque attribut DICOM contient un élément appelé Tag (qui contient le nom de l'étiquette DICOM), et un élément appelé VR (qui spécifie le type de données DICOM).
<Attribute Tag="7FE00010" VR="OW" Source="7FE00010"/>
Le noeud DICOMFindMove utilise le type de schéma FindMove pour représenter les paramètres de recherche d'une commande C-FIND. Le noeud peut renvoyer plusieurs résultats de recherche. Chaque résultat est représenté par un élément DICOM (même définition de type que celle utilisée par les noeuds DICOMInput et DICOMOutput). Si les paramètres de recherche incluent un élément MoveDestination, chaque élément Résultats inclut également un élément XML supplémentaire appelé MoveResults. L'élément MoveResults indique si l'image DICOM a été déplacée avec succès vers la destination. Cet élément fournit également des informations d'erreur détaillées (si disponibles) dans les éléments ErrorID et ErrorComment. Les messages de requête peuvent inclure des étiquettes Return propres au fournisseur dans l'élément Return. Si la prise en charge de fournisseur appropriée est configurée sur le noeud SCP (Service Class Provider), ces étiquettes sont incluses dans les messages de réponse.
<?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>