Oracle® Multimedia DICOM Developer's Guide 11g Release 2 (11.2) Part Number E10778-03 |
|
|
PDF · Mobi · ePub |
This appendix lists the DICOM XML schemas used by the methods of the ORDDicom object type. When Oracle Multimedia DICOM is installed, these schemas are registered as global XML schemas in Oracle Database with Oracle XML DB (see Section 9.2.1).
Note:
The schemas in this appendix might not match the code shipped with the Oracle installation. For the final versions of these schemas, use the files provided with the installation.The latest versions of these schemas are available as files in the ord/xml/xsd
directory under <ORACLE_HOME>
. To locate and examine the schemas, query the dictionary view ALL_XML_SCHEMAS (see Section 9.2.2). In addition, read the documentation embedded within each schema file for more information.
The DICOM XML schemas are associated with one or more DICOM configuration documents. See Appendix A for a list of configuration documents.
This appendix includes these DICOM XML schemas:
Anonymity Document Schema (ordcman.xsd
)
Constraint Document Schema (ordcmct.xsd
)
Data Type Definition Schema (ordcmrdt.xsd
)
Default DICOM Metadata Schema (ordcmmd.xsd
)
Manifest Document Schema (ordcmmft.xsd
)
Mapping Document Schema (ordcmmp.xsd
)
Metadata Data Type Definition Schema (ordcmmddt.xsd
)
Preference Document Schema (ordcmpf.xsd
)
Private Dictionary Document Schema (ordcmpv.xsd
)
Standard Dictionary Document Schema (ordcmsd.xsd
)
Stored Tag List Document Schema (ordcmstl.xsd
)
UID Definition Document Schema (ordcmui.xsd
)
See Also:
Oracle XML DB Developer's Guide for more information about registering XML schemas
http://www.w3.org/XML/Schema
for more information about XML schemas
Oracle Database Reference for more information about the dictionary view ALL_XML_SCHEMAS
The anonymity document schema ordcman.xsd
, shown in Example B-1, defines the structure of the anonymity documents. The namespace for this schema is
http://xmlns.oracle.com/ord/dicom/anonymity_1_0
Example B-1 Anonymity Document Schema
<?xml version="1.0" encoding="UTF-8"?> <!-- Copyright (c) 2007, Oracle. All rights reserved. NAME ordcman.xsd - XML schema for DICOM anonymity documents --> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://xmlns.oracle.com/ord/dicom/anonymity_1_0" xmlns:dt="http://xmlns.oracle.com/ord/dicom/datatype_1_0" targetNamespace="http://xmlns.oracle.com/ord/dicom/anonymity_1_0" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:import namespace="http://xmlns.oracle.com/ord/dicom/datatype_1_0" schemaLocation="http://xmlns.oracle.com/ord/dicom/datatype_1_0"/> <xs:annotation> <xs:documentation> Introduction This schema defines the DICOM anonymity document. Structure Overview Question mark "?" means optional items. Plus "+" means one or more items. Asterisk "*" means zero or more items. ANONYMITY_RULE_DOCUMENT DOCUMENT_HEADER? DOCUMENT_CHANGE_LOG* DOCUMENT_MODIFIER DOCUMENT_MODIFICATION_DATE DOCUMENT_VERSION? MODIFICATION_COMMENT? BASE_DOCUMENT? BASE_DOCUMENT_RELEASE_DATE? BASE_DOCUMENT_DESCRIPTION? PRIVATE_ATTRIBUTES UNDEFINED_STANDARD_ATTRIBUTES UNDEFINED_PRIVATE_ATTRIBUTES INDIVIDUAL_ATTRIBUTE* The preceding element values specify the actions required to make a DICOM attribute, or a selected group of DICOM attributes, anonymous. </xs:documentation> </xs:annotation> <xs:element name="ANONYMITY_RULE_DOCUMENT"> <xs:complexType> <xs:sequence> <xs:element name="DOCUMENT_HEADER" type="dt:DOCUMENT_HEADER_T" nillable="true" minOccurs="0"/> <xs:element name="PRIVATE_ATTRIBUTES" type="ANONYM_G_T"> <xs:annotation> <xs:documentation> Specify the action required to make all private attributes anonymous. </xs:documentation> </xs:annotation> </xs:element> <xs:element name="UNDEFINED_STANDARD_ATTRIBUTES" type="ANONYM_G_T"> <xs:annotation> <xs:documentation> Specify the action required to make all undefined standard attributes anonymous. Undefined standard attributes are not defined by the standard data dictionaries when makeAnonymous or isAnonymous functions are invoked. </xs:documentation> </xs:annotation> </xs:element> <xs:element name="UNDEFINED_PRIVATE_ATTRIBUTES" type="ANONYM_G_T"> <xs:annotation> <xs:documentation> Specify the action required to make all undefined private attributes anonymous. Undefined private attributes are not defined by the private data dictionaries when makeAnonymous or isAnonymous functions are invoked. This element takes priority over the previous element PRIVATE_ATTRIBUTES. </xs:documentation> </xs:annotation> </xs:element> <xs:element name="INDIVIDUAL_ATTRIBUTE" minOccurs="0" maxOccurs="unbounded"> <xs:annotation> <xs:documentation> Specify the action required to make an attribute anonymous. This element overwrites the group specifications specified in the preceding elements. </xs:documentation> </xs:annotation> <xs:complexType> <xs:sequence> <xs:element name="ATTRIBUTE_TAG" type="dt:VALUE_LOCATOR_T"/> <xs:element name="DESCRIPTION" type="dt:SHORT_TEXT_T" minOccurs="0"/> <xs:element name="ANONYMITY_ACTION" type="ANONYM_T" nillable="true"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:complexType name="ANONYM_T"> <xs:simpleContent> <xs:annotation> <xs:documentation> The anonymity action type has an attribute action, which defines the action used to make an attribute anonymous. If the value of the action attribute is "none", no action will be taken. If the value of the action attribute is "remove", then the element does not require a value.(The default value of the action attribute is "remove"). The selected candidate attribute will be removed from the DICOM object to make it anonymous. If the value of the action attribute is "replace", then the string value encoded in the attribute will be cast into the corresponding type of the attribute and the new value replaces the original. If the value of the action attribute is "empty" , then the attribute will be changed into zero length attribute (for future use only). If the value of the action attribute is "encrypt", then the string value encoded in the action attribute will be replaced with an encrypted value (for future use only). </xs:documentation> </xs:annotation> <xs:extension base="dt:SHORT_STRING_T"> <xs:attribute name="action" default="remove"> <xs:simpleType> <xs:restriction base="xs:token"> <xs:enumeration value="none"/> <xs:enumeration value="remove"/> <xs:enumeration value="replace"/> <xs:enumeration value="empty"/> <xs:enumeration value="encrypt"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="ANONYM_G_T"> <xs:simpleContent> <xs:annotation> <xs:documentation> The anonymity action type for a group attribute is similar to ANONYM_T except that it does not allow "replace" action. </xs:documentation> </xs:annotation> <xs:extension base="dt:SHORT_STRING_T"> <xs:attribute name="action" default="remove"> <xs:simpleType> <xs:restriction base="xs:token"> <xs:enumeration value="none"/> <xs:enumeration value="remove"/> <xs:enumeration value="empty"/> <xs:enumeration value="encrypt"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:schema>
The constraint document schema ordcmct.xsd
, shown in Example B-2, defines the structure of the constraint documents. The namespace for this schema is
http://xmlns.oracle.com/ord/dicom/constraint_1_0
Example B-2 Constraint Document Schema
<?xml version="1.0" encoding="UTF-8"?> <!-- Copyright (c) 2007, Oracle. All rights reserved. NAME ordcmct.xsd - XML schema for DICOM constraint documents --> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://xmlns.oracle.com/ord/dicom/constraint_1_0" xmlns:ct="http://xmlns.oracle.com/ord/dicom/constraint_1_0" xmlns:dt="http://xmlns.oracle.com/ord/dicom/datatype_1_0" targetNamespace="http://xmlns.oracle.com/ord/dicom/constraint_1_0" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:import namespace="http://xmlns.oracle.com/ord/dicom/datatype_1_0" schemaLocation="http://xmlns.oracle.com/ord/dicom/datatype_1_0"/> <xs:annotation> <xs:documentation> Introduction This schema defines the DICOM constraint document. A DICOM constraint document defines rules to check the conformance of a DICOM content with respect to the DICOM standard and other organization-wide guidelines. This XML schema document defines the XML schema constraining constraint documents. A constraint document defines one or more constraint rules. A constraint rule is the unit of invocation for conformance checking. At run time, a user may invoke a PL/SQL or Java function to check the conformance of a DICOM content with respect to a particular rule. Each invocable rule is defined as a GLOBAL_RULE, which can reference other global rules internally. A constraint rule can be decomposed into individual predicates. A predicate can be a logical statement, a relational statement comparing values, a function call evaluation that returns a Boolean type, or a reference to other predicate definitions. Predicate definitions are recursive. A predicate can be a logical statement, which includes the logical OR of two other predicates. Each predicate can be a relational predicate. For example: (patientName=="Joe Smith" AND patientSex=="M") After being translated into a predicate, the preceding example becomes: <PREDICATE> <DESCRIPTION>An example to find an object that has (patientName="Joe Smith" AND patientSex=="M") </DESCRIPTION> <LOGICAL operator="and"> <PREDICATE> <RELATIONAL operator="eq"> <DICOM_ATTRIBUTE>00100010</DICOM_ATTRIBUTE> <XML_VALUE> <dt:PERSON_NAME> <dt:NAME> <dt:FAMILY>Smith</dt:FAMILY> <dt:GIVEN>Joe</dt:GIVEN> </dt:NAME> </dt:PERSON_NAME> </XML_VALUE> </RELATIONAL> </PREDICATE> <PREDICATE> <RELATIONAL operator="eq"> <DICOM_ATTRIBUTE>00100040</DICOM_ATTRIBUTE> <XML_VALUE> <dt:CODE_STRING>M</dt:CODE_STRING> </XML_VALUE> </RELATIONAL> </PREDICATE> </LOGICAL> </PREDICATE> Constraint macros can be used to simplify the definition of complex constraint rules. Constraint macros follow the same predicate definition grammar as constraint rules. The operands in constraint macros can be variables rather than fixed values, as they are in constraint rules. The variables in a macro are substituted when the macro is invoked. For example, you can define a macro to compare patient names ( patientName == $NAME ). When this macro is invoked, the parameter NAME is assigned the value "Joe Smith" and the macro is transformed into the predicate:( patientName == "Joe Smith"). As another example, you can define a macro to check if a DICOM attribute is a code sequence attribute. A code sequence attribute must contain the mandatory child attributes, code value and code scheme. This macro checks whether the specified code sequence attribute contains these mandatory child attributes. <GLOBAL_MACRO name="CSMacro"> <DESCRIPTION> A subset of Code Sequence Macro defined in DICOM standard, PS3.3-2007, Table 8.8-1 </DESCRIPTION> <PARAMETER_DECLARATION> CodeAttr </PARAMETER_DECLARATION> <PREDICATE> <DESCRIPTION>Code value must not be empty</DESCRIPTION> <BOOLEAN_FUNC operator="notEmpty"> <DICOM_ATTRIBUTE>${CodeAttr}.00080100 </DICOM_ATTRIBUTE> </BOOLEAN_FUNC> </PREDICATE> <PREDICATE> <DESCRIPTION>Code scheme designator must not be empty </DESCRIPTION> <BOOLEAN_FUNC operator="notEmpty"> <DICOM_ATTRIBUTE>${CodeAttr}.00080102 </DICOM_ATTRIBUTE> </BOOLEAN_FUNC> </PREDICATE> <!-- other predicates follow --> </GLOBAL_MACRO> You can separate a constraint definition into multiple files. Each file defines one or more constraint rules or macros. A file can import the macros and constraint rules that are defined in a difference file. You must specify the set of external rules or macros before referencing them in a file. EXTERNAL_RULE_INCLUDE and EXTERNAL_MACRO_INCLUDE statements serve this purpose. Structure Overview Question mark "?" means optional items. Plus "+" means one or more items. Asterisk "*" means zero or more items. CONFORMANCE_CONSTRAINT_DEFINITION DOCUMENT_HEADER? DOCUMENT_CHANGE_LOG+ DOCUMENT_MODIFIER DOCUMENT_MODIFICATION_DATE DOCUMENT_VERSION? MODIFICATION_COMMENT? BASE_DOCUMENT? BASE_DOCUMENT_RELEASE_DATE? BASE_DOCUMENT_DESCRIPTION? EXTERNAL_MACRO_INCLUDE* EXTERNAL_RULE_INCLUDE* (GLOBAL_MACRO|GLOBAL_RULE)+ GLOBAL_RULE (name) | PREDICATE_DEFINITION (name) DESCRIPTION? PREDICATE_DEFINITION* PREDICATE+ ACTION (when, action)* GLOBAL_MACRO (name) DESCRIPTION? PARAMETER_DECLARATION+ PREDICATE_DEFINITION* PREDICATE+ ACTION (when, action)* PREDICATE DESCRIPTION? (LOGICAL|RELATIONAL|BOOLEAN_FUNC|INVOKE_MACRO|PREDICATE_REF|GLOBAL_RULE_REF) ACTION (when, action)* LOGICAL(operator) PREDICATE+ RELATIONAL(operator) (ATTRIBUTE_TAG|FUNCTION)(ATTRIBUTE_TAG|STRING_VALUE|XML_VALUE|FUNCTION)+ BOOLEAN_FUNC(operator) (ATTRIBUTE_TAG|STRING_VALUE|XML_VALUE|FUNCTION)* INVOKE_MACRO MACRO_NAME PARAMETER+ NAME VALUE FUNCTION(operator) (ATTRIBUTE_TAG|STRING_VALUE|XML_VALUE|FUNCTION)* </xs:documentation> </xs:annotation> <xs:element name="CONFORMANCE_CONSTRAINT_DEFINITION"> <xs:annotation> <xs:documentation>A constraint document defines groups of predicates to validate the conformance of a DICOM content or a DICOM metadata document.</xs:documentation> </xs:annotation> <xs:complexType> <xs:sequence> <xs:element name="DOCUMENT_HEADER" type="dt:DOCUMENT_HEADER_T" minOccurs="0"/> <xs:element name="EXTERNAL_MACRO_INCLUDE" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:simpleContent> <xs:extension base="dt:SHORT_TEXT_T"> <xs:attribute name="name" type="dt:SHORT_ID_T" use="required"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="EXTERNAL_RULE_INCLUDE" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:simpleContent> <xs:extension base="dt:SHORT_TEXT_T"> <xs:attribute name="name" type="dt:SHORT_ID_T" use="required"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:choice maxOccurs="unbounded"> <xs:element name="GLOBAL_MACRO" type="PREDICATE_MACRO_T"> <xs:key name="LOCAL_PRED_KEY1"> <xs:selector xpath="ct:PREDICATES_DEFINITION"/> <xs:field xpath="@name"/> </xs:key> <xs:keyref name="LOCAL_PREDICATE_REF1" refer="ct:LOCAL_PRED_KEY1"> <xs:selector xpath=".//ct:LOGICAL"/> <xs:field xpath=".//ct:PREDICATE_REF"/> </xs:keyref> </xs:element> <xs:element name="GLOBAL_RULE" type="PREDICATE_GROUP_T"> <xs:key name="LOCAL_PRED_KEY2"> <xs:selector xpath="ct:PREDICATES_DEFINITION"/> <xs:field xpath="@name"/> </xs:key> <xs:keyref name="LOCAL_PREDICATE_REF2" refer="ct:LOCAL_PRED_KEY2"> <xs:selector xpath=".//ct:LOGICAL"/> <xs:field xpath=".//ct:PREDICATE_REF"/> </xs:keyref> </xs:element> </xs:choice> </xs:sequence> </xs:complexType> <!-- predicate group defined under the root element is global --> <xs:key name="GLOBAL_PRED1"> <xs:selector xpath="ct:GLOBAL_RULE|ct:EXTERNAL_RULE_INCLUDE"/> <xs:field xpath="@name"/> </xs:key> <xs:keyref name="PREDICATE_REF1" refer="ct:GLOBAL_PRED1"> <xs:selector xpath=".//ct:LOGICAL"/> <xs:field xpath="ct:GLOBAL_RULE_REF"/> </xs:keyref> <xs:key name="GLOBAL_MACRO1"> <xs:selector xpath="ct:GLOBAL_MACRO|ct:EXTERNAL_MACRO_INCLUDE"/> <xs:field xpath="@name"/> </xs:key> <xs:keyref name="MACRO_USE1" refer="ct:GLOBAL_MACRO1"> <xs:selector xpath=".//ct:INVOKE_MACRO"/> <xs:field xpath="ct:MACRONAME"/> </xs:keyref> </xs:element> <xs:complexType name="PREDICATE_GROUP_T"> <xs:annotation> <xs:documentation>A predicate group is the logical AND of a collection of predicates or predicate groups. Each predicate group has a name that is unique within its parent. Any other predicates can reference this predicate group by its name. The value of the reference is the Boolean of the predicate group. Optionally, a predicate group can contain a set of predicate definitions. These definitions are not part of the logical AND component of the predicate group, but they are meant to be referenced within the predicate group. A predicate group has an optional action element that specifies what action to take when the predicate evaluates to true or false. </xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="DESCRIPTION" type="dt:SHORT_TEXT_T" minOccurs="0"/> <xs:element name="PREDICATES_DEFINITION" type="PREDICATE_GROUP_T" minOccurs="0" maxOccurs="unbounded"/> <xs:choice maxOccurs="unbounded"> <xs:element name="PREDICATE" type="PREDICATE_T"/> </xs:choice> <xs:element name="ACTION" type="ACTION_T" nillable="true" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="name" type="dt:SHORT_ID_T"/> </xs:complexType> <xs:complexType name="PREDICATE_MACRO_T"> <xs:annotation> <xs:documentation> </xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="DESCRIPTION" type="dt:SHORT_TEXT_T" minOccurs="0"/> <xs:element name="PARAMETER_DECLARATION" type="dt:SHORT_NAME_T" nillable="false" maxOccurs="unbounded"/> <xs:element name="PREDICATES_DEFINITION" type="PREDICATE_GROUP_T" minOccurs="0" maxOccurs="unbounded"/> <xs:choice maxOccurs="unbounded"> <xs:element name="PREDICATE" type="PREDICATE_T"/> </xs:choice> <xs:element name="ACTION" type="ACTION_T" nillable="true" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="name" type="dt:SHORT_ID_T"/> </xs:complexType> <xs:complexType name="ACTION_T"> <xs:annotation> <xs:documentation> A type to specify an action for a predicate value. The "when" attribute specifies the predicate value. The "action" attribute specifies the type of action. When the action type is "log", "warning", or "error", the string value of this attribute is returned in a log file or as part of warning or error message. </xs:documentation> </xs:annotation> <xs:simpleContent> <xs:extension base="dt:SHORT_TEXT_T"> <xs:attribute name="when" type="xs:boolean" use="required"/> <xs:attribute name="action" type="ACTION_LIST_T" use="required"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:simpleType name="ACTION_LIST_T"> <xs:restriction base="xs:token"> <xs:enumeration value="none"/> <xs:enumeration value="log"/> <xs:enumeration value="warning"/> <xs:enumeration value="error"/> </xs:restriction> </xs:simpleType> <xs:complexType name="PREDICATE_T"> <xs:sequence> <xs:element name="DESCRIPTION" type="dt:SHORT_TEXT_T" minOccurs="0"/> <xs:choice> <xs:element name="LOGICAL" type="LOGICAL_PREDICATE_T"/> <xs:element name="RELATIONAL" type="RELATIONAL_PREDICATE_T"/> <xs:element name="BOOLEAN_FUNC" type="BOOLEAN_FUNC_PREDICATE_T"/> <xs:element name="INVOKE_MACRO" type="MACRO_USE_T"/> <xs:element name="PREDICATE_REF" type="xs:IDREF"/> <xs:element name="GLOBAL_RULE_REF" type="xs:IDREF"/> </xs:choice> <xs:element name="ACTION" type="ACTION_T" nillable="true" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:complexType name="MACRO_USE_T"> <xs:sequence> <xs:element name="MACRO_NAME" type="xs:IDREF"/> <xs:element name="PARAMETER" maxOccurs="unbounded"> <xs:complexType> <xs:sequence maxOccurs="unbounded"> <xs:element name="NAME" type="dt:SHORT_STRING_T" nillable="false"/> <xs:element name="VALUE" type="dt:SHORT_TEXT_T"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> <xs:complexType name="LOGICAL_PREDICATE_T"> <xs:sequence maxOccurs="unbounded"> <!--Boolean type, static inline predicate definition --> <xs:element name="PREDICATE" type="PREDICATE_T"/> </xs:sequence> <xs:attribute name="operator" use="required"> <xs:simpleType> <xs:restriction base="xs:token"> <xs:annotation> <xs:documentation> A derive B ( (NOT A) OR B ) </xs:documentation> </xs:annotation> <xs:enumeration value="and"/> <xs:enumeration value="or"/> <xs:enumeration value="derive"/> <xs:enumeration value="not"/> <xs:enumeration value="xor"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:complexType> <xs:complexType name="RELATIONAL_PREDICATE_T"> <xs:sequence> <xs:choice> <xs:element name="ATTRIBUTE_TAG" type="dt:VALUE_LOCATOR_MACRO_T"/> <xs:element name="FUNCTION" type="FUNCTION_T"/> </xs:choice> <xs:choice maxOccurs="unbounded"> <xs:element name="ATTRIBUTE_TAG" type="dt:VALUE_LOCATOR_MACRO_T"/> <xs:element name="STRING_VALUE" type="dt:MIXED_TEXT_T"/> <xs:element name="XML_VALUE" type="dt:ATTR_VALUE_T"/> <xs:element name="FUNCTION" type="FUNCTION_T"/> </xs:choice> </xs:sequence> <xs:attribute name="operator" use="required"> <xs:simpleType> <xs:restriction base="xs:token"> <xs:annotation> <xs:documentation> gt greater than ge greater than or equal to lt less than le less than or equal to eq equal to ne not equal to in value in the set of match attribute value matches pattern The second operand must be a Java regular expression pattern as specified by JDK1.5 java.lang.String class documentation. The first operator should be a DICOM attribute tag. The tag should identify an attribute that belongs to one of the following value representation types: AE, AS, AT, CS, DA, DT, LO, LT, PN, SH, ST, TM, UI and UT Note that the operands must be compatible with each other when a predicate invokes relational operator. For example, (patientAge > 005M) is a valid predicate. But (patientAge > "Joe Smith") is not a valid predicate, because the operand "Joe Smith" cannot be cast into an instance of the patient age attribute. </xs:documentation> </xs:annotation> <xs:enumeration value="gt"/> <xs:enumeration value="ge"/> <xs:enumeration value="lt"/> <xs:enumeration value="le"/> <xs:enumeration value="eq"/> <xs:enumeration value="ne"/> <xs:enumeration value="in"/> <xs:enumeration value="match"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:complexType> <xs:complexType name="BOOLEAN_FUNC_PREDICATE_T"> <xs:choice maxOccurs="unbounded" minOccurs="0"> <xs:element name="ATTRIBUTE_TAG" type="dt:VALUE_LOCATOR_MACRO_T"/> <xs:element name="STRING_VALUE" type="dt:MIXED_TEXT_T"/> <xs:element name="XML_VALUE" type="dt:ATTR_VALUE_T"/> <xs:element name="FUNCTION" type="FUNCTION_T"/> </xs:choice> <xs:attribute name="operator" use="required"> <xs:annotation> <xs:documentation> To allow future extensions, the set of allowed operators for Boolean function types are not fixed. Operator names are case-sensitive. The current values for this operator are: "notEmpty", "occurs", "true", and "false". "occurs" takes a single operand ATTRIBUTE_TAG, and returns true if an attribute matching the tag exists. (The attribute value can be an empty string or null. For example, a DICOM type 2 attribute may be empty.); Otherwise, it returns false. "notEmpty" takes a single operand ATTRIBUTE_TAG. It returns true if an attribute matching the tag exists in a DICOM content and has a non-null value (e.g. a DICOM type 1 attribute); otherwise, it returns false. "true" takes no operand and it always returns true. "false" takes no operand and it always returns false. </xs:documentation> </xs:annotation> <xs:simpleType> <xs:restriction base="xs:token"> <xs:maxLength value="64"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:complexType> <xs:complexType name="FUNCTION_T"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="ATTRIBUTE_TAG" type="dt:VALUE_LOCATOR_MACRO_T"/> <xs:element name="STRING_VALUE" type="dt:MIXED_TEXT_T"/> <xs:element name="XML_VALUE" type="dt:ATTR_VALUE_T"/> <xs:element name="FUNCTION" type="FUNCTION_T"/> </xs:choice> <xs:attribute name="operator" use="required"> <xs:annotation> <xs:documentation> To allow future extensions, the set of allowed operators for function types are not fixed. Operator names are case-sensitive. This feature is not supported for Oracle Database 11g Release 1. </xs:documentation> </xs:annotation> <xs:simpleType> <xs:restriction base="xs:token"> <xs:maxLength value="64"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:schema>
The schema ordcmrdt.xsd
, shown in Example B-3, defines the DICOM standard data types. The namespace for this schema is
http://xmlns.oracle.com/ord/dicom/datatype_1_0
Example B-3 Data Type Definition Schema
<?xml version="1.0" encoding="UTF-8"?> <!-- Copyright (c) 2007, 2009, Oracle and/or its affiliates.All rights reserved. NAME ordcmrdt.xsd - XML schema for DICOM standard data types. --> <xs:schema xmlns="http://xmlns.oracle.com/ord/dicom/datatype_1_0" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xdb="http://xmlns.oracle.com/xdb" targetNamespace="http://xmlns.oracle.com/ord/dicom/datatype_1_0" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:annotation> <xs:documentation> Introduction This schema defines the DICOM standard data types that are used by all other DICOM XML schema definitions. Naming conventions: All DICOM value representation (VR) types are named with a 2-character string, such as "AE" and "CS". All DICOM attribute type definitions are named as VR_ATTR_T, where VR is replaced by the attribute's 2-character VR. Note that each item of a sequence type (SQ) is of DATASET_T type. The DATASET_T type can recursively contain more attributes. The element name of an attribute is its value representation (VR) name. Oracle uses value representation names defined by the DICOM standard part 5. The element name to VR mappings are: APPLICATION_ENTITY --- AE AGE_STRING --- AS ATTRIBUTE_TAG --- AT CODE_STRING --- CS DATE --- DA DECIMAL_STRING --- DS FLOAT_SINGLE --- FL FLOAT_DOUBLE --- FD INTEGER_STRING --- IS LONG_STRING --- LO LONG_TEXT --- LT OTHER_BYTE --- OB OTHER_FLOAT --- OF OTHER_WORD --- OW OTHER_WORD --- OWB PERSON_NAME --- PN SHORT_STRING --- SH SIGNED_LONG --- SL SEQUENCE --- SQ SIGNED_SHORT --- SS SHORT_TEXT --- ST TIME --- TM UNIQUE_ID --- UI UNSIGNED_LONG --- UL UNKNOWN --- UN UNSIGNED_SHORT --- US SIGNED_SHORT --- USS UNLIMITED_TEXT --- UT EXTENDED_TYPE --- EXT EXCEPTION_TYPE --- EXP The VR types "OWB', "EXT", "EXP" and "USS" are Oracle-defined extensions. Please refer to the individual data type documentation for more explanation. </xs:documentation> </xs:annotation> <xs:simpleType name="AE"> <xs:annotation> <xs:documentation>DICOM Value representation Application Entity</xs:documentation> </xs:annotation> <xs:restriction base="xs:token"> <xs:maxLength value="16"/> </xs:restriction> </xs:simpleType> <xs:complexType name="AS"> <xs:annotation> <xs:documentation>DICOM Value representation Age String. The age string can be expressed either in DICOM string format, or in number of days. When metadata is extracted from a DICOM object, both elements will be populated. XML documents can represent age by either format. Age in number of days is converted into an age string when XML metadata is encoded into a DICOM object. To convert from age string into the number of days: 365 * number_of_year or 31 * number_of_month. Because AGE_STRING is mandatory, it is not necessary to convert from the number of days into an age string. </xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="VALUE" nillable="true"> <xs:simpleType> <xs:restriction base="xs:token"> <xs:pattern value="[0-9]{3}(D|W|M|Y)"/> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name="AGE_IN_DAYS" type="xs:unsignedInt" minOccurs="0"/> </xs:sequence> </xs:complexType> <xs:simpleType name="AT"> <xs:annotation> <xs:documentation> DICOM VR type Attribute Tag. An attribute tag is expressed as two big-endian 2-byte hexadecimal number (group number followed by element number with no separator). </xs:documentation> </xs:annotation> <xs:restriction base="xs:hexBinary"> <xs:minLength value="4"/> <xs:maxLength value="4"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="CS"> <xs:annotation> <xs:documentation>DICOM VR type Code String</xs:documentation> </xs:annotation> <xs:restriction base="xs:token"> <xs:maxLength value="16"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="DA"> <xs:annotation> <xs:documentation>DICOM VR type DAte</xs:documentation> </xs:annotation> <xs:restriction base="xs:date"/> </xs:simpleType> <xs:simpleType name="DS"> <xs:annotation> <xs:documentation>DICOM VR type Decimal String</xs:documentation> </xs:annotation> <xs:restriction base="xs:float"/> </xs:simpleType> <xs:simpleType name="DT"> <xs:annotation> <xs:documentation>DICOM VR type Data Time</xs:documentation> </xs:annotation> <xs:restriction base="xs:dateTime"/> </xs:simpleType> <xs:simpleType name="FL"> <xs:annotation> <xs:documentation>DICOM VR type FLoating-point single</xs:documentation> </xs:annotation> <xs:restriction base="xs:float"/> </xs:simpleType> <xs:simpleType name="FD"> <xs:annotation> <xs:documentation>DICOM VR type Floating-point Double</xs:documentation> </xs:annotation> <xs:restriction base="xs:double"/> </xs:simpleType> <xs:simpleType name="IS"> <xs:annotation> <xs:documentation>DICOM VR type Integer String</xs:documentation> </xs:annotation> <xs:restriction base="xs:integer"/> </xs:simpleType> <xs:simpleType name="LO"> <xs:annotation> <xs:documentation>DICOM VR type LOng string</xs:documentation> </xs:annotation> <xs:restriction base="xs:string"> <xs:maxLength value="64"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="LT"> <xs:annotation> <xs:documentation>DICOM VR type Long Text</xs:documentation> </xs:annotation> <xs:restriction base="xs:string"> <xs:maxLength value="10240"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="OB"> <xs:annotation> <xs:documentation>DICOM VR type Other Byte</xs:documentation> </xs:annotation> <xs:restriction base="xs:base64Binary"/> </xs:simpleType> <xs:simpleType name="OF"> <xs:annotation> <xs:documentation> VR type Other Float </xs:documentation> </xs:annotation> <xs:restriction base="xs:float"/> </xs:simpleType> <xs:complexType name="OW"> <xs:annotation> <xs:documentation> DICOM VR type Other Word in base64binary encoding. The mandatory attribute endian specifies the byte order of the binary value. </xs:documentation> </xs:annotation> <xs:simpleContent> <xs:extension base="xs:base64Binary"> <xs:attribute name="endian" use="required"> <xs:simpleType> <xs:restriction base="xs:token"> <xs:enumeration value="big"/> <xs:enumeration value="little"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="PN"> <xs:annotation> <xs:documentation> DICOM VR type Person Name. Person Name can be expressed either in component format or as a single concatentated string. When metadata is extracted from a DICOM object, the person name type is encoded with both formats. Users can index and search DICOM metadata with either the component format or the concatenated string format. In component format, a name has an optional "type" attribute that indicates its encoding type. The value of the "type" attribute can be "unibyte", "ideographic" or "phonetic". A name may have up to five components: "FAMILY", "GIVEN", "MIDDLE", "PREFIX", and "SUFFIX". </xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="NAME" minOccurs="0" maxOccurs="3" nillable="true"> <xs:complexType> <xs:sequence> <xs:element name="FAMILY" type="xs:string" minOccurs="0" nillable="true"/> <xs:element name="GIVEN" type="xs:string" minOccurs="0" nillable="true"/> <xs:element name="MIDDLE" type="xs:string" minOccurs="0" nillable="true"/> <xs:element name="PREFIX" type="xs:string" minOccurs="0" nillable="true"/> <xs:element name="SUFFIX" type="xs:string" minOccurs="0" nillable="true"/> </xs:sequence> <xs:attribute name="type" default="unibyte"> <xs:simpleType> <xs:restriction base="xs:token"> <xs:enumeration value="unibyte"/> <xs:enumeration value="ideographic"/> <xs:enumeration value="phonetic"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element> <xs:element name="VALUE" minOccurs="0" nillable="true"> <xs:simpleType> <xs:restriction base="xs:token"> <xs:maxLength value="64"/> </xs:restriction> </xs:simpleType> </xs:element> </xs:sequence> </xs:complexType> <xs:simpleType name="SH"> <xs:annotation> <xs:documentation>DICOM VR type SHort string</xs:documentation> </xs:annotation> <xs:restriction base="xs:string"> <xs:maxLength value="16"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="SL"> <xs:annotation> <xs:documentation>DICOM VR type Signed Long</xs:documentation> </xs:annotation> <xs:restriction base="xs:integer"/> </xs:simpleType> <xs:complexType name="SQ"> <xs:annotation> <xs:documentation>DICOM VR type SeQuence. Note that item number can be explicitly encoded in XML. Number counts from 1 up. Each item is a DATASET_T type, which may contain any combination of DICOM attributes. </xs:documentation> </xs:annotation> <xs:sequence maxOccurs="unbounded"> <xs:element name="ITEM" type="DATASET_T" minOccurs="0" nillable="true"/> </xs:sequence> </xs:complexType> <xs:simpleType name="SS"> <xs:annotation> <xs:documentation>DICOM VR type Signed Short</xs:documentation> </xs:annotation> <xs:restriction base="xs:integer"/> </xs:simpleType> <xs:simpleType name="ST"> <xs:annotation> <xs:documentation>DICOM VR type Short Text</xs:documentation> </xs:annotation> <xs:restriction base="xs:string"> <xs:maxLength value="1024"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="TM"> <xs:annotation> <xs:documentation>DICOM VR type TiMe</xs:documentation> </xs:annotation> <xs:restriction base="xs:time"/> </xs:simpleType> <xs:simpleType name="UI"> <xs:annotation> <xs:documentation>DICOM VR type Unique Identifier</xs:documentation> </xs:annotation> <xs:restriction base="xs:token"> <xs:maxLength value="128"/> <xs:pattern value="[0-9\.]+"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="UL"> <xs:annotation> <xs:documentation>DICOM VR type Unsigned Long</xs:documentation> </xs:annotation> <xs:restriction base="xs:unsignedInt"/> </xs:simpleType> <xs:complexType name="UN"> <xs:annotation> <xs:documentation> DICOM VR type UNknown. This type contains a base64 dump of its binary content. The mandatory attribute "endian" specifies the byte order of this encoding. </xs:documentation> </xs:annotation> <xs:simpleContent> <xs:extension base="xs:base64Binary"> <xs:attribute name="endian" use="required"> <xs:simpleType> <xs:restriction base="xs:token"> <xs:enumeration value="big"/> <xs:enumeration value="little"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:simpleType name="US"> <xs:annotation> <xs:documentation>DICOM VR type Unsigned Short</xs:documentation> </xs:annotation> <xs:restriction base="xs:unsignedShort"/> </xs:simpleType> <xs:simpleType name="UT"> <xs:annotation> <xs:documentation>DICOM VR type Unlimited Text</xs:documentation> </xs:annotation> <xs:restriction base="xs:string"/> </xs:simpleType> <xs:complexType name="EXT"> <xs:annotation> <xs:documentation>DICOM Extension type This type does not have direct mapping to any value representation (VR) types defined in Part 5 of the DICOM standard. It can accommodate future extensions to DICOM VR types without modification to the XML schema definitions. The VR element specifies the value representation. The VALUE element specifies the XML value for the corresponding data element. The exact XML schema definition can be introduced in the future. </xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="VR" type="xs:token"/> <xs:element name="VALUE" type="xs:anyType" nillable="true"/> </xs:sequence> </xs:complexType> <xs:simpleType name="EXP"> <xs:annotation> <xs:documentation>DICOM Exception type. This type does not have direct mapping to any value representation (VR) types defined in Part 5 of the DICOM standard. It indicates an error situation. It is equivalent to an exception in the Java language. The value of this data type is the original byte array of the data type in the DICOM object. </xs:documentation> </xs:annotation> <xs:restriction base="xs:base64Binary"/> </xs:simpleType> <xs:complexType name="DATASET_T"> <xs:annotation> <xs:documentation> The dataset type maps the DICOM concept dataset into an XML schema type(See the DICOM standard P3-5) . A dataset may contain any number of DICOM attributes. Each type of attribute has a name that reflects the DICOM value representation of the attribute. Each attribute is strongly typed, and its type matches its DICOM VR. Note that DICOM attribute type SQ (sequence) may recursively contain items that are also of the dataset type. </xs:documentation> </xs:annotation> <xs:choice maxOccurs="unbounded" minOccurs="0"> <xs:element name="APPLICATION_ENTITY" type="AE_ATTR_T" nillable="true"/> <xs:element name="AGE_STRING" type="AS_ATTR_T" nillable="true"/> <xs:element name="ATTRIBUTE_TAG" type="AT_ATTR_T" nillable="true"/> <xs:element name="CODE_STRING" type="CS_ATTR_T" nillable="true"/> <xs:element name="DATE" type="DA_ATTR_T" nillable="true"/> <xs:element name="DATE_TIME" type="DT_ATTR_T" nillable="true"/> <xs:element name="DECIMAL_STRING" type="DS_ATTR_T" nillable="true"/> <xs:element name="FLOAT_SINGLE" type="FL_ATTR_T" nillable="true"/> <xs:element name="FLOAT_DOUBLE" type="FD_ATTR_T" nillable="true"/> <xs:element name="INTEGER_STRING" type="IS_ATTR_T" nillable="true"/> <xs:element name="LONG_STRING" type="LO_ATTR_T" nillable="true"/> <xs:element name="LONG_TEXT" type="LT_ATTR_T" nillable="true"/> <xs:element name="OTHER_BYTE" type="OB_ATTR_T" nillable="true"/> <xs:element name="OTHER_FLOAT" type="OF_ATTR_T" nillable="true"/> <xs:element name="OTHER_WORD" type="OW_ATTR_T" nillable="true"/> <xs:element name="PERSON_NAME" type="PN_ATTR_T" nillable="true"/> <xs:element name="SHORT_STRING" type="SH_ATTR_T" nillable="true"/> <xs:element name="SIGNED_LONG" type="SL_ATTR_T" nillable="true"/> <xs:element name="SEQUENCE" type="SQ_ATTR_T" nillable="true" xdb:SQLType="CLOB"/> <xs:element name="SIGNED_SHORT" type="SS_ATTR_T" nillable="true"/> <xs:element name="SHORT_TEXT" type="ST_ATTR_T" nillable="true"/> <xs:element name="TIME" type="TM_ATTR_T" nillable="true"/> <xs:element name="UNIQUE_ID" type="UI_ATTR_T" nillable="true"/> <xs:element name="UNSIGNED_LONG" type="UL_ATTR_T" nillable="true"/> <xs:element name="UNKNOWN" type="UN_ATTR_T" nillable="true"/> <xs:element name="UNSIGNED_SHORT" type="US_ATTR_T" nillable="true"/> <xs:element name="UNLIMITED_TEXT" type="UT_ATTR_T" nillable="true"/> <xs:element name="EXTENDED_TYPE" type="EXT_ATTR_T" nillable="true"/> <xs:element name="EXCEPTION_TYPE" type="EXP_ATTR_T" nillable="true"/> </xs:choice> <xs:attribute name="number" type="xs:long" use="optional" default="1"/> </xs:complexType> <xs:complexType name="ATTR_VALUE_T"> <xs:annotation> <xs:documentation> Attribute value type (ATTR_VALUE_T) maps to a single DICOM attribute value. Each type of attribute has a name that reflects the DICOM value representation of the attribute. Each attribute is strongly typed, and its type matches its DICOM VR. Certain DICOM configuration files, such as constraint documents, use ATTR_VALUE_T. </xs:documentation> </xs:annotation> <xs:choice> <xs:element name="APPLICATION_ENTITY" type="AE"/> <xs:element name="AGE_STRING" type="AS"/> <xs:element name="ATTRIBUTE_TAG" type="AT"/> <xs:element name="CODE_STRING" type="CS"/> <xs:element name="DATE" type="DA"/> <xs:element name="DATE_TIME" type="DT"/> <xs:element name="DECIMAL_STRING" type="DS"/> <xs:element name="FLOAT_SINGLE" type="FL"/> <xs:element name="FLOAT_DOUBLE" type="FD"/> <xs:element name="INTEGER_STRING" type="IS"/> <xs:element name="LONG_STRING" type="LO"/> <xs:element name="LONG_TEXT" type="LT"/> <xs:element name="OTHER_BYTE" type="OB"/> <xs:element name="OTHER_FLOAT" type="OF"/> <xs:element name="OTHER_WORD" type="OW"/> <xs:element name="PERSON_NAME" type="PN"/> <xs:element name="SHORT_STRING" type="SH"/> <xs:element name="SIGNED_LONG" type="SL"/> <xs:element name="SEQUENCE" type="SQ"/> <xs:element name="SIGNED_SHORT" type="SS"/> <xs:element name="SHORT_TEXT" type="ST"/> <xs:element name="TIME" type="TM"/> <xs:element name="UNIQUE_ID" type="UI"/> <xs:element name="UNSIGNED_LONG" type="UL"/> <xs:element name="UNKNOWN" type="UN"/> <xs:element name="UNSIGNED_SHORT" type="US"/> <xs:element name="UNLIMITED_TEXT" type="UT"/> <xs:element name="EXTENDED_TYPE" type="EXT"/> <xs:element name="EXCEPTION_TYPE" type="EXP"/> </xs:choice> </xs:complexType> <xs:attributeGroup name="ATTR_GRP_T"> <xs:annotation> <xs:documentation> Attribute group type (ATTR_GRP_T) is used by all DICOM attribute definitions. It defines XML attributes that are used by all DICOM attribute types. The "tag" attribute defines DICOM attributes in little-endian encoding. The "definer" attribute specifies the organization that has created the attribute. By default, all DICOM standard attributes have the definer name "DICOM". The "name" attribute specifies the canonical attribute name as defined by the data dictionary. For example, in an XML metadata schema definition, you can choose a tag PATIENT_DATE_OF_BIRTH or "DOB" for DICOM attribute (0010,0030), but its name attribute should match that of the DICOM standard: "Patient's Birth Date". The "number" attribute is an optional attribute to indicate the ordering of a multivalued attributes. Number counts from 1 up. The "truncated" attribute takes a Boolean value. If it is true, it indicates that the original length of the DICOM attribute exceeds the maximum length allowed for this XML value;therefore, it is truncated in XML. When this attribute is true, xsi:nill="true" for this attribute. Optionally, the "rawValue" attribute can be used to store values that do not conform to the DICOM standard. The associated attribute "byteOrderLE" specifies the byte order of the byte stream for the "rawValue" attribute. "offset" and "length" are Oracle-reserved attributes. </xs:documentation> </xs:annotation> <xs:attribute name="tag" type="AT" use="required"/> <xs:attribute name="definer" type="LO" default="DICOM"/> <xs:attribute name="name" type="SHORT_STRING_T"/> <xs:attribute name="number" type="xs:long" use="optional" default="1"/> <xs:attribute name="offset" type="xs:long"/> <xs:attribute name="length" type="xs:long"/> <xs:attribute name="truncated" type="xs:boolean" default="false"/> <xs:attribute name="rawValue" type="xs:base64Binary"/> <xs:attribute name="byteOrderLE" type="xs:boolean" default="true"/> </xs:attributeGroup> <xs:complexType name="AE_ATTR_T"> <xs:simpleContent> <xs:extension base="AE"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="AS_ATTR_T"> <xs:complexContent> <xs:extension base="AS"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="AT_ATTR_T"> <xs:simpleContent> <xs:extension base="AT"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="CS_ATTR_T"> <xs:simpleContent> <xs:extension base="CS"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="DA_ATTR_T"> <xs:simpleContent> <xs:extension base="DA"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="DS_ATTR_T"> <xs:simpleContent> <xs:extension base="DS"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="DT_ATTR_T"> <xs:simpleContent> <xs:extension base="DT"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="FD_ATTR_T"> <xs:simpleContent> <xs:extension base="FD"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="FL_ATTR_T"> <xs:simpleContent> <xs:extension base="FL"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="IS_ATTR_T"> <xs:simpleContent> <xs:extension base="IS"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="LO_ATTR_T"> <xs:simpleContent> <xs:extension base="LO"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="LT_ATTR_T"> <xs:simpleContent> <xs:extension base="LT"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="OB_ATTR_T"> <xs:simpleContent> <xs:extension base="OB"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="OF_ATTR_T"> <xs:simpleContent> <xs:extension base="OF"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="OW_ATTR_T"> <xs:simpleContent> <xs:extension base="OW"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="PN_ATTR_T"> <xs:complexContent> <xs:extension base="PN"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="SH_ATTR_T"> <xs:simpleContent> <xs:extension base="SH"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="SL_ATTR_T"> <xs:simpleContent> <xs:extension base="SL"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="SQ_ATTR_T"> <xs:complexContent> <xs:extension base="SQ"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="SS_ATTR_T"> <xs:simpleContent> <xs:extension base="SS"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="ST_ATTR_T"> <xs:simpleContent> <xs:extension base="ST"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="TM_ATTR_T"> <xs:simpleContent> <xs:extension base="TM"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="UI_ATTR_T"> <xs:simpleContent> <xs:extension base="UI"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="UL_ATTR_T"> <xs:simpleContent> <xs:extension base="UL"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="UN_ATTR_T"> <xs:simpleContent> <xs:extension base="UN"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="US_ATTR_T"> <xs:simpleContent> <xs:extension base="US"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="UT_ATTR_T"> <xs:simpleContent> <xs:extension base="UT"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="EXT_ATTR_T"> <xs:annotation> <xs:documentation> This attribute is useful for representing attributes whose VR types are not supported natively by Oracle. </xs:documentation> </xs:annotation> <xs:complexContent> <xs:extension base="EXT"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="EXP_ATTR_T"> <xs:annotation> <xs:documentation> This attribute type is useful for representing attributes that are present in a DICOM object, but whose definition cannot be found in the data dictionary. Such attributes cannot be parsed or interpreted. </xs:documentation> </xs:annotation> <xs:simpleContent> <xs:extension base="EXP"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="DOCUMENT_HEADER_T"> <xs:annotation> <xs:documentation> Each time the XML configuration document is modified, a new element, DOCUMENT_CHANGE_LOG, is added to the DOCUMENT_HEADER. The change log describes who made what type of change to the XML document on which date. It also describes what DICOM standard document the modification is based upon, either a DICOM change proposal (CP) or a DICOM supplement. DOCUMENT_MODIFIER identifies the modifier of the present XML document. If it is generated by software, specify the name and version of the software. DOCUMENT_MODIFICATION_DATE specifies the date when this XML document is modified. DOCUMENT_VERSION specifies the version of the document after the modification. MODIFICATION_COMMENT briefly describes the modification. BASE_DOCUMENT describes the document or DICOM standard that the modification is based upon. BASE_DOCUMENT_RELEASE_DATE specifies the release date of the base document. BASE_DOCUMENT_DESCRIPTION briefly describes the base document. </xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="DOCUMENT_CHANGE_LOG" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="DOCUMENT_MODIFIER" type="SHORT_STRING_T"/> <xs:element name="DOCUMENT_MODIFICATION_DATE" type="SHORT_STRING_T"/> <xs:element name="DOCUMENT_VERSION" type="SHORT_STRING_T" minOccurs="0"/> <xs:element name="MODIFICATION_COMMENT" type="SHORT_TEXT_T" minOccurs="0"/> <xs:element name="BASE_DOCUMENT" type="SHORT_STRING_T" minOccurs="0"/> <xs:element name="BASE_DOCUMENT_RELEASE_DATE" type="xs:date" minOccurs="0"/> <xs:element name="BASE_DOCUMENT_DESCRIPTION" type="SHORT_TEXT_T" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> <xs:complexType name="ATTR_DEFINERS_T"> <xs:annotation> <xs:documentation> Attribute definer is identified by its name and UID. In Oracle's implementation, the DICOM standard is given the definer name "DICOM" and the UID "1.2.840.10008.1". All DICOM standard attributes are given the definer name "DICOM". Users can introduce private attributes of their own and encode them in an XML document. These private attributes are identified with the definer's name and UID. Oracle recommends that all DICOM private attributes be associated with a UID-qualified name. </xs:documentation> </xs:annotation> <xs:sequence maxOccurs="unbounded"> <xs:element name="ATTR_DEFINER"> <xs:complexType> <xs:sequence> <xs:element name="NAME" type="LO" maxOccurs="unbounded"/> <xs:element name="UID" type="UI" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> <!-- Attribute Tag (allowing x wildcard)--> <xs:simpleType name="ATTR_TAG_T"> <xs:annotation> <xs:documentation> The attribute tag type differs from DICOM VR type AT in that it allows the wildcard character 'x'. </xs:documentation> </xs:annotation> <xs:restriction base="xs:token"> <xs:pattern value="([0-9a-fA-FxX]{8})"/> </xs:restriction> </xs:simpleType> <xs:complexType name="ATTR_RANGE_T"> <xs:annotation> <xs:documentation> The attribute range type defines a range of DICOM attributes. This data type is used in private attribute definitions. Certain private attributes accept a range of attribute tags. </xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="STARTING_TAG" type="ATTR_TAG_T"/> <xs:element name="ENDING_TAG" type="ATTR_TAG_T"/> </xs:sequence> </xs:complexType> <xs:simpleType name="VALUE_LOCATOR_T"> <xs:annotation> <xs:documentation> The DICOM value locator type identifies a particular DICOM attribute by "xxxxxxxx(definer)", where "xxxxxxxx" is the attribute tag and "definer" is the attribute definer, which can be the DICOM standard (DICOM) or other private sources. A locator path can also identify a particular descendent of a container type attribute (SQ). The n-th item of a sequence attribute is denoted by "xxxxxxxxx(definer)[n]". By default, the definer suffix "(definer)" can be omitted if the attribute is a DICOM standard tag. The index "n" of an item address "[n]" must be a positive integer. The item address suffix can be omitted if the item it pointed to is the first item of a sequence. For example, 00080096.00401101.00080100 is the code that identifies the first referring physician. The above value locator is equivalent to: 00080096(DICOM)[1].00401101(DICOM)[1].00080100(DICOM) </xs:documentation> </xs:annotation> <xs:restriction base="VALUE_LOCATOR_MACRO_T"/> </xs:simpleType> <xs:simpleType name="VALUE_LOCATOR_MACRO_T"> <xs:annotation> <xs:documentation> VALUE_LOCATOR_MACRO_T is similar to the value locator type, except that it permits the use of a macro within the locator string. So, the macro locator string can be: ${TAG}(DICOM)[2].00080100 This string indicates the code value (0008,0100) of the second item of a sequence attribute identified by ${TAG}. The macro parameter TAG can be replaced by a compatible attribute tag (code sequence attribute) later. </xs:documentation> </xs:annotation> <xs:restriction base="SHORT_TEXT_T"/> </xs:simpleType> <xs:simpleType name="VM_T"> <xs:annotation> <xs:documentation> DICOM value multiplicity (VM) specification. This type is used in DICOM dictionary documents. Patterns of valid specifications are: "k", "k-j", "k-n", "n", "k-kn". In these patterns, k and j are integers, k is less than j, and n is the letter n. </xs:documentation> </xs:annotation> <xs:restriction base="SHORT_STRING_T"> <xs:pattern value="(([0-9]+)-)?(([0-9]*n|([0-9]+)))"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="VR_T"> <xs:annotation> <xs:documentation> DICOM value representation types. In the DICOM standard, VR for certain attributes is defined as "other word or byte", "US or SS", or "See Note". Oracle has extended the list of VR types and introduced OWB (for "other word or byte"), USS (for "US or SS"), and EXP (where VR definition does not apply). When an attribute of USS type is encoded into XML, it is automatically encoded as a signed short type. When an attribute of OWB type is encoded into XML, it is automatically encoded into other word type. An example of an attribute with VR type of EXP is the sequence item (FFFE, E000). For compatibility with future DICOM releases, if a new DICOM VR is introduced by the DICOM standard, users can mark such attributes as type "EXT??", where "??" should be replaced by the new VR name. </xs:documentation> </xs:annotation> <xs:restriction base="xs:token"> <xs:pattern value="AE"/> <xs:pattern value="AS"/> <xs:pattern value="AT"/> <xs:pattern value="CS"/> <xs:pattern value="DA"/> <xs:pattern value="DS"/> <xs:pattern value="DT"/> <xs:pattern value="FL"/> <xs:pattern value="FD"/> <xs:pattern value="IS"/> <xs:pattern value="LO"/> <xs:pattern value="LT"/> <xs:pattern value="OB"/> <xs:pattern value="OF"/> <xs:pattern value="OW"/> <xs:pattern value="PN"/> <xs:pattern value="SH"/> <xs:pattern value="SL"/> <xs:pattern value="SQ"/> <xs:pattern value="SS"/> <xs:pattern value="ST"/> <xs:pattern value="TM"/> <xs:pattern value="UI"/> <xs:pattern value="UL"/> <xs:pattern value="UN"/> <xs:pattern value="US"/> <xs:pattern value="UT"/> <xs:pattern value="USS"/> <xs:pattern value="OWB"/> <xs:pattern value="EXP"/> <xs:pattern value="EXT[A-Z]{2}"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="SHORT_TEXT_T"> <xs:restriction base="xs:token"> <xs:maxLength value="1999"/> </xs:restriction> </xs:simpleType> <xs:complexType name="MIXED_TEXT_T" mixed="true"> <xs:complexContent mixed="true"> <xs:extension base="xs:anyType"> </xs:extension> </xs:complexContent> </xs:complexType> <xs:simpleType name="SHORT_STRING_T"> <xs:restriction base="xs:token"> <xs:maxLength value="128"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="SHORT_NAME_T"> <xs:restriction base="xs:NCName"> <xs:maxLength value="128"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="SHORT_ID_T"> <xs:restriction base="xs:ID"> <xs:maxLength value="64"/> <xs:pattern value="[^\.]+"/> </xs:restriction> </xs:simpleType> </xs:schema>
The schema ordcmmd.xsd
, shown in Example B-4, defines the default DICOM metadata schema. The namespace for this schema is
http://xmlns.oracle.com/ord/dicom/metadata_1_0
Example B-4 Default DICOM Metadata Schema
<?xml version="1.0" encoding="UTF-8"?> <!-- Copyright (c) 2007, Oracle. All rights reserved. NAME ordcmmd.xsd - XML schema for default DICOM metadata documents --> <xs:schema xmlns="http://xmlns.oracle.com/ord/dicom/metadata_1_0" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:dt="http://xmlns.oracle.com/ord/dicom/metadata_1_0" targetNamespace="http://xmlns.oracle.com/ord/dicom/metadata_1_0" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:include schemaLocation="http://xmlns.oracle.com/ord/dicom/mddatatype_1_0"/> <xs:annotation> <xs:documentation> Introduction This schema defines the default DICOM metadata schema used by the ORDDicom object attribute (XMLType metadata). </xs:documentation> </xs:annotation> <xs:element name="DICOM_OBJECT" type="dt:DATASET_T"/> </xs:schema>
The manifest document schema ordcmmft.xsd
, shown in Example B-5, defines the structure of the manifest documents, which are created when exporting a set of configuration documents from a DICOM repository. The manifest document specifies the name of each configuration document, its document type, and the load order to be used when importing the configuration document into a DICOM repository. The default manifest document is ordcmmft.xml
. The namespace for this schema is
http://xmlns.oracle.com/ord/dicom/manifest_1_0
Example B-5 Manifest Document Schema
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns="http://xmlns.oracle.com/ord/dicom/manifest_1_0" xmlns:dt="http://xmlns.oracle.com/ord/dicom/datatype_1_0" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://xmlns.oracle.com/ord/dicom/manifest_1_0" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:import namespace="http://xmlns.oracle.com/ord/dicom/datatype_1_0" schemaLocation="http://xmlns.oracle.com/ord/dicom/datatype_1_0"/> <xs:annotation> <xs:documentation> This schema defines a DICOM manifest file. This file specifies the document name, type, and the order in which the configuration documents are loaded into the DICOM data model repository. This manifest file is created by the exportDataModel procedure and is used by the importDataModel procedure in the data model repository (ord_dicom_admin) API. The DOCUMENT_VERSION in the DOCUMENT_HEADER represents the repository version. This value identifies a set of configuration documents in the repository. This value is for future use when we may maintain and export multiple versions of the data model repository. DICOM_MANIFEST DOCUMENT_HEADER? DOCUMENT_CHANGE_LOG* DOCUMENT_MODIFIER DOCUMENT_MODIFICATION_DATE DOCUMENT_VERSION? MODIFICATION_COMMENT? BASE_DOCUMENT? BASE_DOCUMENT_RELEASE_DATE? BASE_DOCUMENT_DESCRIPTION? DOCUMENT_DEF+ NAME TYPE LOAD_ORDER </xs:documentation> </xs:annotation> <xs:simpleType name="DOCUMENT_NAME_T"> <xs:annotation> <xs:documentation> Name of a document in the dicom data model repository. This is the file name of the XML document that has been exported from the repository or is being loaded into the repository. </xs:documentation> </xs:annotation> <xs:restriction base="xs:string"> <xs:maxLength value="100"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="DOCUMENT_TYPE_T"> <xs:annotation> <xs:documentation> The document types supported in the data model repository. </xs:documentation> </xs:annotation> <xs:restriction base="xs:string"> <xs:pattern value="STANDARD_DICTIONARY" /> <xs:pattern value="PRIVATE_DICTIONARY" /> <xs:pattern value="MAPPING" /> <xs:pattern value="ANONYMITY" /> <xs:pattern value="PREFERENCE" /> <xs:pattern value="CONSTRAINT" /> <xs:pattern value="UID_DEFINITION" /> <xs:pattern value="STORED_TAG_LIST" /> </xs:restriction> </xs:simpleType> <xs:element name="DICOM_MANIFEST"> <xs:complexType> <xs:sequence> <xs:element name="DOCUMENT_HEADER" type="dt:DOCUMENT_HEADER_T" nillable="true" minOccurs="0"/> <xs:element name="DOCUMENT_DEF" maxOccurs="unbounded"> <xs:annotation> <xs:documentation> Each document definition defines a document that to be inserted into or exported from the data model repository. </xs:documentation> </xs:annotation> <xs:complexType> <xs:sequence> <xs:element name="NAME" type="DOCUMENT_NAME_T"/> <xs:element name="TYPE" type="DOCUMENT_TYPE_T"/> <xs:element name="LOAD_ORDER" type="xs:integer"/> </xs:sequence> </xs:complexType> <xs:unique name="docName"> <xs:selector xpath="NAME"/> <xs:field xpath="."/> </xs:unique> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
The mapping document schema ordcmmp.xsd
, shown in Example B-6, defines the structure of the mapping documents. The namespace for this schema is
http://xmlns.oracle.com/ord/dicom/mapping_1_0
Example B-6 Mapping Document Schema
<?xml version="1.0" encoding="UTF-8"?> <!-- Copyright (c) 2007, Oracle. All rights reserved. NAME ordcmmp.xsd - XML schema for DICOM mapping documents --> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://xmlns.oracle.com/ord/dicom/mapping_1_0" xmlns:dt="http://xmlns.oracle.com/ord/dicom/datatype_1_0" targetNamespace="http://xmlns.oracle.com/ord/dicom/mapping_1_0" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:import namespace="http://xmlns.oracle.com/ord/dicom/datatype_1_0" schemaLocation="http://xmlns.oracle.com/ord/dicom/datatype_1_0"/> <xs:annotation> <xs:documentation> This schema defines the DICOM (XML) mapping document. It defines how each DICOM attribute maps to an element of the DICOM metadata document. The mapping document is used by the metadata encoder to produce a DICOM metadata document. Each DICOM attribute is identified by a 4-byte hexadecimal attribute tag. Each DICOM attribute is mapped to an element of the XML metadata document designated by the PATH element. By default, a DICOM attribute can be null and is optional. XML_MAPPING_DOCUMENT Question mark "?" means optional items. Plus "+" means one or more items. Asterisk "*" means zero or more items. DOCUMENT_HEADER? DOCUMENT_CHANGE_LOG* DOCUMENT_MODIFIER DOCUMENT_MODIFICATION_DATE DOCUMENT_VERSION? MODIFICATION_COMMENT? BASE_DOCUMENT? BASE_DOCUMENT_RELEASE_DATE? BASE_DOCUMENT_DESCRIPTION? NAMESPACE? ROOT_ELEM_TAG UNMAPPED_ELEM MAPPED_ELEM MAPPED_PATH+ (occurs?, notEmpty?, writeTag?, writeDefiner?, writeName?, writeRawValue) {ATTRIBUTE_TAG(definer), PATH}+ </xs:documentation> </xs:annotation> <xs:element name="XML_MAPPING_DOCUMENT"> <xs:complexType> <xs:sequence> <xs:element name="DOCUMENT_HEADER" type="dt:DOCUMENT_HEADER_T" minOccurs="0"/> <xs:element name="NAMESPACE" type="dt:SHORT_TEXT_T"> <xs:annotation> <xs:documentation> The namespace of the XML metadata schema on which a mapping document is based. Metadata from a DICOM object can be mapped into an XML document constrained by this XML metadata schema. If the value of this element is an empty string, the extracted XML metadata document is not associated with an XML schema. The order of the MAPPED_PATH elements MUST match the sequence of the corresponding XML elements in this namespace. </xs:documentation> </xs:annotation> </xs:element> <xs:element name="ROOT_ELEM_TAG" type="dt:SHORT_STRING_T"> <xs:annotation> <xs:documentation> This element specifies the root element tag of an XML metadata document. </xs:documentation> </xs:annotation> </xs:element> <xs:element name="UNMAPPED_ELEM" type="dt:SHORT_STRING_T" nillable="true" minOccurs="0"> <xs:annotation> <xs:documentation> This element specifies the XML path (appended to ROOT_ELEM_TAG) for unmapped attributes, that is, the set of DICOM attributes that are present in a DICOM object, but whose mappings have not been defined by the MAPPED_PATH elements of an XML mapping document. This element is optional. If this element is omitted or empty, the unmapped attributes are appended to ROOT_ELEM_TAG. If an XML schema is used to constrain the metadata document, the XML schema element pointed to by this element should be of type dt:DATASET_T. See the DICOM data type definition schema "http://xmlns.oracle.com/ord/dicom/datatype_1_0" and dt:DATASET_T for more information. </xs:documentation> </xs:annotation> </xs:element> <xs:element name="MAPPED_ELEM" type="dt:SHORT_STRING_T" nillable="true" minOccurs="0"> <xs:annotation> <xs:documentation> This element specifies the XML path for all mapped attributes, that is, the set of DICOM attributes that are present in a DICOM object, and whose mappings are defined by the MAPPED_XPATH elements of an XML mapping document. This element specifies a relative path from ROOT_ELEM_TAG. For example, to map a DICOM attribute (0010,0010) to the XML element at "/DICOM_METADATA/PATIENT/NAME", specify the following The ROOT_ELEM_TAG element value is "DICOM_METADATA". The MAPPED_ELEM element value is "PATIENT" and The MAPPED_PATH/PATH element value should be "NAME". Alternatively, if the value of element MAPPED_ELEM is an empty string, then the value of the element MAPPED_PATH/PATH should be "PATIENT/NAME". </xs:documentation> </xs:annotation> </xs:element> <xs:element name="MAPPED_PATH" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:annotation> <xs:documentation> A MAPPED_PATH element contains attribute tag and path pairs. An attribute tag uniquely identifies an attribute within the data dictionary. Wildcards are not allowed in an attribute tag specification in this release. The path consists of slash "/"-concatenated element names. A path specifies the destination of an attribute in the DICOM XML metadata document. The mapped path is the relative path from ROOT_ELEM_TAG and MAPPED_ELEM. The absolute path is: "${ROOT_ELEM_TAG} / ${MAPPED_ELEM} / ${MAPPED_PATH}". The optional attribute "occurs" specifies whether the attribute must exist in the original DICOM content. (The attribute tag must exist, but the attribute value can be an empty string, for example, a DICOM type 2 attribute.) The optional attribute "notEmpty" specifies whether the attribute must have a value in the original DICOM content (type 1 in DICOM terms). Depending on the run-time preferences, if the above "occurs' or "notEmpty" condition is not met, an error may be thrown at run-time. The optional attribute "writeTag" specifies whether to add the attribute "tag" when writing the element. The tag attribute is of type "dt:AT". The value of this attribute is the DICOM attribute tag in little-endian encoding. The optional attribute "writeDefiner" specifies whether to add the attribute "definer" when writing the element. The definer attribute is of type "dt:LO". The value of this attribute is the same as the definer attribute of ATTRIBUTE_TAG element of the mapping document. The optional attribute "writeName" specifies whether to add the attribute "name" when writing the element. The name attribute is of type "dt:SHORT_STRING_T". The value of this element is the attribute name defined by the data dictionary. The optional attribute "writeRawValue" specifies whether to add the attribute "rawValue" when writing the element. The raw value attribute is of type "xs:hexBinary". This attribute only occurs when there is a parsing error for this attribute and no XML value can be extracted for the element. The value of this attribute is the hexadecimal dump of the original byte stream. </xs:documentation> </xs:annotation> <xs:element name="ATTRIBUTE_TAG" type="dt:VALUE_LOCATOR_T"/> <xs:element name="PATH" type="dt:SHORT_TEXT_T"/> </xs:sequence> <xs:attribute name="occurs" type="xs:boolean" default="false"/> <xs:attribute name="notEmpty" type="xs:boolean" default="false"/> <xs:attribute name="writeTag" type="xs:boolean" default="false"/> <xs:attribute name="writeDefiner" type="xs:boolean" default="false"/> <xs:attribute name="writeName" type="xs:boolean" default="false"/> <xs:attribute name="writeRawValue" type="xs:boolean" default="false"/> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
The schema ordcmmddt.xsd
, shown in Example B-7, defines the metadata data types that are used by DICOM metadata schemas. The namespace for this schema is
http://xmlns.oracle.com/ord/dicom/metadata_1_0
Example B-7 Data Type Definition Schema
<?xml version="1.0" encoding="UTF-8"?> <!-- Copyright (c) 2007, 2009, Oracle and/or its affiliates.All rights reserved. NAME ordcmmddt.xsd - XML schema for metadata data types --> <xs:schema xmlns="http://xmlns.oracle.com/ord/dicom/metadata_1_0" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xdb="http://xmlns.oracle.com/xdb" targetNamespace="http://xmlns.oracle.com/ord/dicom/metadata_1_0" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:annotation> <xs:documentation> Introduction This schema defines the data types that are used by DICOM metadata schemas. Naming conventions: All DICOM value representation (VR) types are named with a 2-character string, such as "AE" and "CS". All DICOM attribute type definitions are named as VR_ATTR_T, where VR is replaced by the attribute's 2-character VR. Note that each item of a sequence type (SQ) is of DATASET_T type. The DATASET_T type can recursively contain more attributes. The element name of an attribute is its value representation (VR) name. Oracle uses value representation names defined by the DICOM standard part 5. The element name to VR mappings are: APPLICATION_ENTITY --- AE AGE_STRING --- AS ATTRIBUTE_TAG --- AT CODE_STRING --- CS DATE --- DA DECIMAL_STRING --- DS FLOAT_SINGLE --- FL FLOAT_DOUBLE --- FD INTEGER_STRING --- IS LONG_STRING --- LO LONG_TEXT --- LT OTHER_BYTE --- OB OTHER_FLOAT --- OF OTHER_WORD --- OW OTHER_WORD --- OWB PERSON_NAME --- PN SHORT_STRING --- SH SIGNED_LONG --- SL SEQUENCE --- SQ SIGNED_SHORT --- SS SHORT_TEXT --- ST TIME --- TM UNIQUE_ID --- UI UNSIGNED_LONG --- UL UNKNOWN --- UN UNSIGNED_SHORT --- US SIGNED_SHORT --- USS UNLIMITED_TEXT --- UT EXTENDED_TYPE --- EXT EXCEPTION_TYPE --- EXP The VR types "OWB', "EXT", "EXP" and "USS" are Oracle-defined extensions. Please refer to the individual data type documentation for more explanation. </xs:documentation> </xs:annotation> <xs:simpleType name="AE"> <xs:annotation> <xs:documentation>DICOM Value representation Application Entity</xs:documentation> </xs:annotation> <xs:restriction base="xs:token"> <xs:maxLength value="16"/> </xs:restriction> </xs:simpleType> <xs:complexType name="AS"> <xs:annotation> <xs:documentation>DICOM Value representation Age String. The age string can be expressed either in DICOM string format, or in number of days. When metadata is extracted from a DICOM object, both elements will be populated. XML documents can represent age by either format. Age in number of days is converted into an age string when XML metadata is encoded into a DICOM object. To convert from age string into the number of days: 365 * number_of_year or 31 * number_of_month. Because AGE_STRING is mandatory, it is not necessary to convert from the number of days into an age string. </xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="VALUE" nillable="true"> <xs:simpleType> <xs:restriction base="xs:token"> <xs:pattern value="[0-9]{3}(D|W|M|Y)"/> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name="AGE_IN_DAYS" type="xs:unsignedInt" minOccurs="0"/> </xs:sequence> </xs:complexType> <xs:simpleType name="AT"> <xs:annotation> <xs:documentation> DICOM VR type Attribute Tag. An attribute tag is expressed as two big-endian 2-byte hexadecimal number (group number followed by element number with no separator). </xs:documentation> </xs:annotation> <xs:restriction base="xs:hexBinary"> <xs:minLength value="4"/> <xs:maxLength value="4"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="CS"> <xs:annotation> <xs:documentation>DICOM VR type Code String</xs:documentation> </xs:annotation> <xs:restriction base="xs:token"> <xs:maxLength value="16"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="DA"> <xs:annotation> <xs:documentation>DICOM VR type DAte</xs:documentation> </xs:annotation> <xs:restriction base="xs:date"/> </xs:simpleType> <xs:simpleType name="DS"> <xs:annotation> <xs:documentation>DICOM VR type Decimal String</xs:documentation> </xs:annotation> <xs:restriction base="xs:float"/> </xs:simpleType> <xs:simpleType name="DT"> <xs:annotation> <xs:documentation>DICOM VR type Data Time</xs:documentation> </xs:annotation> <xs:restriction base="xs:dateTime"/> </xs:simpleType> <xs:simpleType name="FL"> <xs:annotation> <xs:documentation>DICOM VR type FLoating-point single</xs:documentation> </xs:annotation> <xs:restriction base="xs:float"/> </xs:simpleType> <xs:simpleType name="FD"> <xs:annotation> <xs:documentation>DICOM VR type Floating-point Double</xs:documentation> </xs:annotation> <xs:restriction base="xs:double"/> </xs:simpleType> <xs:simpleType name="IS"> <xs:annotation> <xs:documentation>DICOM VR type Integer String</xs:documentation> </xs:annotation> <xs:restriction base="xs:integer"/> </xs:simpleType> <xs:simpleType name="LO"> <xs:annotation> <xs:documentation>DICOM VR type LOng string</xs:documentation> </xs:annotation> <xs:restriction base="xs:string"> <xs:maxLength value="64"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="LT"> <xs:annotation> <xs:documentation>DICOM VR type Long Text</xs:documentation> </xs:annotation> <xs:restriction base="xs:string"> <xs:maxLength value="10240"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="OB"> <xs:annotation> <xs:documentation>DICOM VR type Other Byte</xs:documentation> </xs:annotation> <xs:restriction base="xs:base64Binary"/> </xs:simpleType> <xs:simpleType name="OF"> <xs:annotation> <xs:documentation> VR type Other Float </xs:documentation> </xs:annotation> <xs:restriction base="xs:float"/> </xs:simpleType> <xs:complexType name="OW"> <xs:annotation> <xs:documentation> DICOM VR type Other Word in base64binary encoding. The mandatory attribute endian specifies the byte order of the binary value. </xs:documentation> </xs:annotation> <xs:simpleContent> <xs:extension base="xs:base64Binary"> <xs:attribute name="endian" use="required"> <xs:simpleType> <xs:restriction base="xs:token"> <xs:enumeration value="big"/> <xs:enumeration value="little"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="PN"> <xs:annotation> <xs:documentation> DICOM VR type Person Name. Person Name can be expressed either in component format or as a single concatentated string. When metadata is extracted from a DICOM object, the person name type is encoded with both formats. Users can index and search DICOM metadata with either the component format or the concatenated string format. In component format, a name has an optional "type" attribute that indicates its encoding type. The value of the "type" attribute can be "unibyte", "ideographic" or "phonetic". A name may have up to five components: "FAMILY", "GIVEN", "MIDDLE", "PREFIX", and "SUFFIX". </xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="NAME" minOccurs="0" maxOccurs="3" nillable="true"> <xs:complexType> <xs:sequence> <xs:element name="FAMILY" type="xs:string" minOccurs="0" nillable="true"/> <xs:element name="GIVEN" type="xs:string" minOccurs="0" nillable="true"/> <xs:element name="MIDDLE" type="xs:string" minOccurs="0" nillable="true"/> <xs:element name="PREFIX" type="xs:string" minOccurs="0" nillable="true"/> <xs:element name="SUFFIX" type="xs:string" minOccurs="0" nillable="true"/> </xs:sequence> <xs:attribute name="type" default="unibyte"> <xs:simpleType> <xs:restriction base="xs:token"> <xs:enumeration value="unibyte"/> <xs:enumeration value="ideographic"/> <xs:enumeration value="phonetic"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element> <xs:element name="VALUE" minOccurs="0" nillable="true"> <xs:simpleType> <xs:restriction base="xs:token"> <xs:maxLength value="64"/> </xs:restriction> </xs:simpleType> </xs:element> </xs:sequence> </xs:complexType> <xs:simpleType name="SH"> <xs:annotation> <xs:documentation>DICOM VR type SHort string</xs:documentation> </xs:annotation> <xs:restriction base="xs:string"> <xs:maxLength value="16"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="SL"> <xs:annotation> <xs:documentation>DICOM VR type Signed Long</xs:documentation> </xs:annotation> <xs:restriction base="xs:integer"/> </xs:simpleType> <xs:complexType name="SQ"> <xs:annotation> <xs:documentation> DICOM VR type SeQuence. Note that item number can be explicitly encoded in XML. Number counts from 1 up. Each item is a DATASET_T type, which may contain any combination of DICOM attributes. </xs:documentation> </xs:annotation> <xs:sequence maxOccurs="unbounded"> <xs:element name="ITEM" type="DATASET_T" minOccurs="0" nillable="true"/> </xs:sequence> </xs:complexType> <xs:simpleType name="SS"> <xs:annotation> <xs:documentation>DICOM VR type Signed Short</xs:documentation> </xs:annotation> <xs:restriction base="xs:integer"/> </xs:simpleType> <xs:simpleType name="ST"> <xs:annotation> <xs:documentation>DICOM VR type Short Text</xs:documentation> </xs:annotation> <xs:restriction base="xs:string"> <xs:maxLength value="1024"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="TM"> <xs:annotation> <xs:documentation>DICOM VR type TiMe</xs:documentation> </xs:annotation> <xs:restriction base="xs:time"/> </xs:simpleType> <xs:simpleType name="UI"> <xs:annotation> <xs:documentation>DICOM VR type Unique Identifier</xs:documentation> </xs:annotation> <xs:restriction base="xs:token"> <xs:maxLength value="128"/> <xs:pattern value="[0-9\.]+"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="UL"> <xs:annotation> <xs:documentation>DICOM VR type Unsigned Long</xs:documentation> </xs:annotation> <xs:restriction base="xs:unsignedInt"/> </xs:simpleType> <xs:complexType name="UN"> <xs:annotation> <xs:documentation> DICOM VR type UNknown. This type contains a base64 dump of its binary content. The mandatory attribute "endian" specifies the byte order of this encoding. </xs:documentation> </xs:annotation> <xs:simpleContent> <xs:extension base="xs:base64Binary"> <xs:attribute name="endian" use="required"> <xs:simpleType> <xs:restriction base="xs:token"> <xs:enumeration value="big"/> <xs:enumeration value="little"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:simpleType name="US"> <xs:annotation> <xs:documentation>DICOM VR type Unsigned Short</xs:documentation> </xs:annotation> <xs:restriction base="xs:unsignedShort"/> </xs:simpleType> <xs:simpleType name="UT"> <xs:annotation> <xs:documentation>DICOM VR type Unlimited Text</xs:documentation> </xs:annotation> <xs:restriction base="xs:string"/> </xs:simpleType> <xs:complexType name="EXT"> <xs:annotation> <xs:documentation>DICOM Extension type This type does not have direct mapping to any value representation (VR) types defined in Part 5 of the DICOM standard. It can accommodate future extensions to DICOM VR types without modification to the XML schema definitions. The VR element specifies the value representation. The VALUE element specifies the XML value for the corresponding data element. The exact XML schema definition can be introduced in the future. </xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="VR" type="xs:token"/> <xs:element name="VALUE" type="xs:anyType" nillable="true"/> </xs:sequence> </xs:complexType> <xs:simpleType name="EXP"> <xs:annotation> <xs:documentation>DICOM Exception type. This type does not have direct mapping to any value representation (VR) types defined in Part 5 of the DICOM standard. It indicates an error situation. It is equivalent to an exception in the Java language. The value of this data type is the original byte array of the data type in the DICOM object. </xs:documentation> </xs:annotation> <xs:restriction base="xs:base64Binary"/> </xs:simpleType> <xs:complexType name="DATASET_T"> <xs:annotation> <xs:documentation> The dataset type maps the DICOM concept dataset into an XML schema type(See the DICOM standard P3-5) . A dataset may contain any number of DICOM attributes. Each type of attribute has a name that reflects the DICOM value representation of the attribute. Each attribute is strongly typed, and its type matches its DICOM VR. Note that DICOM attribute type SQ (sequence) may recursively contain items that are also of the dataset type. </xs:documentation> </xs:annotation> <xs:choice maxOccurs="unbounded" minOccurs="0"> <xs:element name="APPLICATION_ENTITY" type="AE_ATTR_T" nillable="true"/> <xs:element name="AGE_STRING" type="AS_ATTR_T" nillable="true"/> <xs:element name="ATTRIBUTE_TAG" type="AT_ATTR_T" nillable="true"/> <xs:element name="CODE_STRING" type="CS_ATTR_T" nillable="true"/> <xs:element name="DATE" type="DA_ATTR_T" nillable="true"/> <xs:element name="DATE_TIME" type="DT_ATTR_T" nillable="true"/> <xs:element name="DECIMAL_STRING" type="DS_ATTR_T" nillable="true"/> <xs:element name="FLOAT_SINGLE" type="FL_ATTR_T" nillable="true"/> <xs:element name="FLOAT_DOUBLE" type="FD_ATTR_T" nillable="true"/> <xs:element name="INTEGER_STRING" type="IS_ATTR_T" nillable="true"/> <xs:element name="LONG_STRING" type="LO_ATTR_T" nillable="true"/> <xs:element name="LONG_TEXT" type="LT_ATTR_T" nillable="true"/> <xs:element name="OTHER_BYTE" type="OB_ATTR_T" nillable="true"/> <xs:element name="OTHER_FLOAT" type="OF_ATTR_T" nillable="true"/> <xs:element name="OTHER_WORD" type="OW_ATTR_T" nillable="true"/> <xs:element name="PERSON_NAME" type="PN_ATTR_T" nillable="true"/> <xs:element name="SHORT_STRING" type="SH_ATTR_T" nillable="true"/> <xs:element name="SIGNED_LONG" type="SL_ATTR_T" nillable="true"/> <xs:element name="SEQUENCE" type="SQ_ATTR_T" nillable="true" xdb:SQLType="CLOB" xdb:SQLName="SEQUENCE"/> <xs:element name="SIGNED_SHORT" type="SS_ATTR_T" nillable="true"/> <xs:element name="SHORT_TEXT" type="ST_ATTR_T" nillable="true"/> <xs:element name="TIME" type="TM_ATTR_T" nillable="true"/> <xs:element name="UNIQUE_ID" type="UI_ATTR_T" nillable="true"/> <xs:element name="UNSIGNED_LONG" type="UL_ATTR_T" nillable="true"/> <xs:element name="UNKNOWN" type="UN_ATTR_T" nillable="true"/> <xs:element name="UNSIGNED_SHORT" type="US_ATTR_T" nillable="true"/> <xs:element name="UNLIMITED_TEXT" type="UT_ATTR_T" nillable="true"/> <xs:element name="EXTENDED_TYPE" type="EXT_ATTR_T" nillable="true"/> <xs:element name="EXCEPTION_TYPE" type="EXP_ATTR_T" nillable="true"/> </xs:choice> <xs:attribute name="number" type="xs:long" use="optional" default="1"/> </xs:complexType> <xs:complexType name="ATTR_VALUE_T"> <xs:annotation> <xs:documentation> Attribute value type (ATTR_VALUE_T) maps to a single DICOM attribute value. Each type of attribute has a name that reflects the DICOM value representation of the attribute. Each attribute is strongly typed, and its type matches its DICOM VR. Certain DICOM configuration files, such as constraint documents, use ATTR_VALUE_T. </xs:documentation> </xs:annotation> <xs:choice> <xs:element name="APPLICATION_ENTITY" type="AE"/> <xs:element name="AGE_STRING" type="AS"/> <xs:element name="ATTRIBUTE_TAG" type="AT"/> <xs:element name="CODE_STRING" type="CS"/> <xs:element name="DATE" type="DA"/> <xs:element name="DATE_TIME" type="DT"/> <xs:element name="DECIMAL_STRING" type="DS"/> <xs:element name="FLOAT_SINGLE" type="FL"/> <xs:element name="FLOAT_DOUBLE" type="FD"/> <xs:element name="INTEGER_STRING" type="IS"/> <xs:element name="LONG_STRING" type="LO"/> <xs:element name="LONG_TEXT" type="LT"/> <xs:element name="OTHER_BYTE" type="OB"/> <xs:element name="OTHER_FLOAT" type="OF"/> <xs:element name="OTHER_WORD" type="OW"/> <xs:element name="PERSON_NAME" type="PN"/> <xs:element name="SHORT_STRING" type="SH"/> <xs:element name="SIGNED_LONG" type="SL"/> <xs:element name="SEQUENCE" type="SQ"/> <xs:element name="SIGNED_SHORT" type="SS"/> <xs:element name="SHORT_TEXT" type="ST"/> <xs:element name="TIME" type="TM"/> <xs:element name="UNIQUE_ID" type="UI"/> <xs:element name="UNSIGNED_LONG" type="UL"/> <xs:element name="UNKNOWN" type="UN"/> <xs:element name="UNSIGNED_SHORT" type="US"/> <xs:element name="UNLIMITED_TEXT" type="UT"/> <xs:element name="EXTENDED_TYPE" type="EXT"/> <xs:element name="EXCEPTION_TYPE" type="EXP"/> </xs:choice> </xs:complexType> <xs:attributeGroup name="ATTR_GRP_T"> <xs:annotation> <xs:documentation> Attribute group type (ATTR_GRP_T) is used by all DICOM attribute definitions. It defines XML attributes that are used by all DICOM attribute types. The "tag" attribute defines DICOM attributes in little-endian encoding. The "definer" attribute specifies the organization that has created the attribute. By default, all DICOM standard attributes have the definer name "DICOM". The "name" attribute specifies the canonical attribute name as defined by the data dictionary. For example, in an XML metadata schema definition, you can choose a tag PATIENT_DATE_OF_BIRTH or "DOB" for DICOM attribute (0010,0030), but its name attribute should match that of the DICOM standard: "Patient's Birth Date". The "number" attribute is an optional attribute to indicate the ordering of a multivalued attributes. Number counts from 1 up. The "truncated" attribute takes a Boolean value. If it is true, it indicates that the original length of the DICOM attribute exceeds the maximum length allowed for this XML value;therefore, it is truncated in XML. When this attribute is true, xsi:nill="true" for this attribute. Optionally, the "rawValue" attribute can be used to store values that do not conform to the DICOM standard. The associated attribute "byteOrderLE" specifies the byte order of the byte stream for the "rawValue" attribute. "offset" and "length" are Oracle-reserved attributes. </xs:documentation> </xs:annotation> <xs:attribute name="tag" type="AT" use="required"/> <xs:attribute name="definer" type="LO" default="DICOM"/> <xs:attribute name="name" type="SHORT_STRING_T"/> <xs:attribute name="number" type="xs:long" use="optional" default="1"/> <xs:attribute name="offset" type="xs:long"/> <xs:attribute name="length" type="xs:long"/> <xs:attribute name="truncated" type="xs:boolean" default="false"/> <xs:attribute name="rawValue" type="xs:base64Binary"/> <xs:attribute name="byteOrderLE" type="xs:boolean" default="true"/> </xs:attributeGroup> <xs:complexType name="AE_ATTR_T"> <xs:simpleContent> <xs:extension base="AE"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="AS_ATTR_T"> <xs:complexContent> <xs:extension base="AS"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="AT_ATTR_T"> <xs:simpleContent> <xs:extension base="AT"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="CS_ATTR_T"> <xs:simpleContent> <xs:extension base="CS"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="DA_ATTR_T"> <xs:simpleContent> <xs:extension base="DA"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="DS_ATTR_T"> <xs:simpleContent> <xs:extension base="DS"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="DT_ATTR_T"> <xs:simpleContent> <xs:extension base="DT"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="FD_ATTR_T"> <xs:simpleContent> <xs:extension base="FD"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="FL_ATTR_T"> <xs:simpleContent> <xs:extension base="FL"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="IS_ATTR_T"> <xs:simpleContent> <xs:extension base="IS"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="LO_ATTR_T"> <xs:simpleContent> <xs:extension base="LO"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="LT_ATTR_T"> <xs:simpleContent> <xs:extension base="LT"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="OB_ATTR_T"> <xs:simpleContent> <xs:extension base="OB"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="OF_ATTR_T"> <xs:simpleContent> <xs:extension base="OF"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="OW_ATTR_T"> <xs:simpleContent> <xs:extension base="OW"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="PN_ATTR_T"> <xs:complexContent> <xs:extension base="PN"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="SH_ATTR_T"> <xs:simpleContent> <xs:extension base="SH"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="SL_ATTR_T"> <xs:simpleContent> <xs:extension base="SL"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="SQ_ATTR_T"> <xs:complexContent> <xs:extension base="SQ"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="SS_ATTR_T"> <xs:simpleContent> <xs:extension base="SS"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="ST_ATTR_T"> <xs:simpleContent> <xs:extension base="ST"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="TM_ATTR_T"> <xs:simpleContent> <xs:extension base="TM"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="UI_ATTR_T"> <xs:simpleContent> <xs:extension base="UI"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="UL_ATTR_T"> <xs:simpleContent> <xs:extension base="UL"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="UN_ATTR_T"> <xs:simpleContent> <xs:extension base="UN"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="US_ATTR_T"> <xs:simpleContent> <xs:extension base="US"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="UT_ATTR_T"> <xs:simpleContent> <xs:extension base="UT"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="EXT_ATTR_T"> <xs:annotation> <xs:documentation> This attribute is useful for representing attributes whose VR types are not supported natively by Oracle. </xs:documentation> </xs:annotation> <xs:complexContent> <xs:extension base="EXT"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="EXP_ATTR_T"> <xs:annotation> <xs:documentation> This attribute type is useful for representing attributes that are present in a DICOM object, but whose definition cannot be found in the data dictionary. Such attributes cannot be parsed or interpreted. </xs:documentation> </xs:annotation> <xs:simpleContent> <xs:extension base="EXP"> <xs:attributeGroup ref="ATTR_GRP_T"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="DOCUMENT_HEADER_T"> <xs:annotation> <xs:documentation> Each time the XML configuration document is modified, a new element, DOCUMENT_CHANGE_LOG, is added to the DOCUMENT_HEADER. The change log describes who made what type of change to the XML document on which date. It also describes what DICOM standard document the modification is based upon, either a DICOM change proposal (CP) or a DICOM supplement. DOCUMENT_MODIFIER identifies the modifier of the present XML document. If it is generated by software, specify the name and version of the software. DOCUMENT_MODIFICATION_DATE specifies the date when this XML document is modified. DOCUMENT_VERSION specifies the version of the document after the modification. MODIFICATION_COMMENT briefly describes the modification. BASE_DOCUMENT describes the document or DICOM standard that the modification is based upon. BASE_DOCUMENT_RELEASE_DATE specifies the release date of the base document. BASE_DOCUMENT_DESCRIPTION briefly describes the base document. </xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="DOCUMENT_CHANGE_LOG" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="DOCUMENT_MODIFIER" type="SHORT_STRING_T"/> <xs:element name="DOCUMENT_MODIFICATION_DATE" type="SHORT_STRING_T"/> <xs:element name="DOCUMENT_VERSION" type="SHORT_STRING_T" minOccurs="0"/> <xs:element name="MODIFICATION_COMMENT" type="SHORT_TEXT_T" minOccurs="0"/> <xs:element name="BASE_DOCUMENT" type="SHORT_STRING_T" minOccurs="0"/> <xs:element name="BASE_DOCUMENT_RELEASE_DATE" type="xs:date" minOccurs="0"/> <xs:element name="BASE_DOCUMENT_DESCRIPTION" type="SHORT_TEXT_T" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> <xs:complexType name="ATTR_DEFINERS_T"> <xs:annotation> <xs:documentation> Attribute definer is identified by its name and UID. In Oracle's implementation, the DICOM standard is given the definer name "DICOM" and the UID "1.2.840.10008.1". All DICOM standard attributes are given the definer name "DICOM". Users can introduce private attributes of their own and encode them in an XML document. These private attributes are identified with the definer's name and UID. Oracle recommends that all DICOM private attributes be associated with a UID-qualified name. </xs:documentation> </xs:annotation> <xs:sequence maxOccurs="unbounded"> <xs:element name="ATTR_DEFINER"> <xs:complexType> <xs:sequence> <xs:element name="NAME" type="LO" maxOccurs="unbounded"/> <xs:element name="UID" type="UI" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> <!-- Attribute Tag (allowing x wildcard)--> <xs:simpleType name="ATTR_TAG_T"> <xs:annotation> <xs:documentation> The attribute tag type differs from DICOM VR type AT in that it allows the wildcard character 'x'. </xs:documentation> </xs:annotation> <xs:restriction base="xs:token"> <xs:pattern value="([0-9a-fA-FxX]{8})"/> </xs:restriction> </xs:simpleType> <xs:complexType name="ATTR_RANGE_T"> <xs:annotation> <xs:documentation> The attribute range type defines a range of DICOM attributes. This data type is used in private attribute definitions. Certain private attributes accept a range of attribute tags. </xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="STARTING_TAG" type="ATTR_TAG_T"/> <xs:element name="ENDING_TAG" type="ATTR_TAG_T"/> </xs:sequence> </xs:complexType> <xs:simpleType name="VALUE_LOCATOR_T"> <xs:annotation> <xs:documentation> The DICOM value locator type identifies a particular DICOM attribute by "xxxxxxxx(definer)", where "xxxxxxxx" is the attribute tag and "definer" is the attribute definer, which can be the DICOM standard (DICOM) or other private sources. A locator path can also identify a particular descendent of a container type attribute (SQ). The n-th item of a sequence attribute is denoted by "xxxxxxxxx(definer)[n]". By default, the definer suffix "(definer)" can be omitted if the attribute is a DICOM standard tag. The index "n" of an item address "[n]" must be a positive integer. The item address suffix can be omitted if the item it pointed to is the first item of a sequence. For example, 00080096.00401101.00080100 is the code that identifies the first referring physician. The above value locator is equivalent to: 00080096(DICOM)[1].00401101(DICOM)[1].00080100(DICOM) </xs:documentation> </xs:annotation> <xs:restriction base="VALUE_LOCATOR_MACRO_T"/> </xs:simpleType> <xs:simpleType name="VALUE_LOCATOR_MACRO_T"> <xs:annotation> <xs:documentation> VALUE_LOCATOR_MACRO_T is similar to the value locator type, except that it permits the use of a macro within the locator string. So, the macro locator string can be: ${TAG}(DICOM)[2].00080100 This string indicates the code value (0008,0100) of the second item of a sequence attribute identified by ${TAG}. The macro parameter TAG can be replaced by a compatible attribute tag (code sequence attribute) later. </xs:documentation> </xs:annotation> <xs:restriction base="SHORT_TEXT_T"/> </xs:simpleType> <xs:simpleType name="VM_T"> <xs:annotation> <xs:documentation> DICOM value multiplicity (VM) specification. This type is used in DICOM dictionary documents. Patterns of valid specifications are: "k", "k-j", "k-n", "n", "k-kn". In these patterns, k and j are integers, k is less than j, and n is the letter n. </xs:documentation> </xs:annotation> <xs:restriction base="SHORT_STRING_T"> <xs:pattern value="(([0-9]+)-)?(([0-9]*n|([0-9]+)))"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="VR_T"> <xs:annotation> <xs:documentation> DICOM value representation types. In the DICOM standard, VR for certain attributes is defined as "other word or byte", "US or SS", or "See Note". Oracle has extended the list of VR types and introduced OWB (for "other word or byte"), USS (for "US or SS"), and EXP (where VR definition does not apply). When an attribute of USS type is encoded into XML, it is automatically encoded as a signed short type. When an attribute of OWB type is encoded into XML, it is automatically encoded into other word type. An example of an attribute with VR type of EXP is the sequence item (FFFE, E000). For compatibility with future DICOM releases, if a new DICOM VR is introduced by the DICOM standard, users can mark such attributes as type "EXT??", where "??" should be replaced by the new VR name. </xs:documentation> </xs:annotation> <xs:restriction base="xs:token"> <xs:pattern value="AE"/> <xs:pattern value="AS"/> <xs:pattern value="AT"/> <xs:pattern value="CS"/> <xs:pattern value="DA"/> <xs:pattern value="DS"/> <xs:pattern value="DT"/> <xs:pattern value="FL"/> <xs:pattern value="FD"/> <xs:pattern value="IS"/> <xs:pattern value="LO"/> <xs:pattern value="LT"/> <xs:pattern value="OB"/> <xs:pattern value="OF"/> <xs:pattern value="OW"/> <xs:pattern value="PN"/> <xs:pattern value="SH"/> <xs:pattern value="SL"/> <xs:pattern value="SQ"/> <xs:pattern value="SS"/> <xs:pattern value="ST"/> <xs:pattern value="TM"/> <xs:pattern value="UI"/> <xs:pattern value="UL"/> <xs:pattern value="UN"/> <xs:pattern value="US"/> <xs:pattern value="UT"/> <xs:pattern value="USS"/> <xs:pattern value="OWB"/> <xs:pattern value="EXP"/> <xs:pattern value="EXT[A-Z]{2}"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="SHORT_TEXT_T"> <xs:restriction base="xs:token"> <xs:maxLength value="1999"/> </xs:restriction> </xs:simpleType> <xs:complexType name="MIXED_TEXT_T" mixed="true"> <xs:complexContent mixed="true"> <xs:extension base="xs:anyType"> </xs:extension> </xs:complexContent> </xs:complexType> <xs:simpleType name="SHORT_STRING_T"> <xs:restriction base="xs:token"> <xs:maxLength value="128"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="SHORT_NAME_T"> <xs:restriction base="xs:NCName"> <xs:maxLength value="128"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="SHORT_ID_T"> <xs:restriction base="xs:ID"> <xs:maxLength value="64"/> <xs:pattern value="[^\.]+"/> </xs:restriction> </xs:simpleType> </xs:schema>
The preference document schema ordcmpf.xsd
, shown in Example B-8, defines the structure of the preference documents. The namespace for this schema is
http://xmlns.oracle.com/ord/dicom/preference_1_0
Example B-8 Preference Document Schema
<?xml version="1.0" encoding="UTF-8"?> <!-- Copyright (c) 2007, 2009, Oracle and/or its affiliates.All rights reserved. NAME ordcmpf.xsd - XML Schema for DICOM preference documents. --> <xs:schema xmlns="http://xmlns.oracle.com/ord/dicom/preference_1_0" xmlns:dt="http://xmlns.oracle.com/ord/dicom/datatype_1_0" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" targetNamespace="http://xmlns.oracle.com/ord/dicom/preference_1_0" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:import namespace="http://xmlns.oracle.com/ord/dicom/datatype_1_0" schemaLocation="http://xmlns.oracle.com/ord/dicom/datatype_1_0"/> <xs:annotation> <xs:documentation> Introduction This schema defines the run-time preference settings for Oracle Multimedia DICOM features. Structure Overview Question mark "?" means optional items. Plus "+" means one or more items. Asterisk "*" means zero or more items. DICOM_RUNTIME_PREFERENCES DOCUMENT_HEADER? DOCUMENT_CHANGE_LOG* DOCUMENT_MODIFIER DOCUMENT_MODIFICATION_DATE DOCUMENT_VERSION? MODIFICATION_COMMENT? BASE_DOCUMENT? BASE_DOCUMENT_RELEASE_DATE? BASE_DOCUMENT_DESCRIPTION? PREFERENCE_DEF+ PARAMETER DESCRIPTION VALUE The allowed values for the PARAMETER element of a PREFERENCE_DEF entry and its corresponding VALUE element are as follows: PARAMETER: XML_SKIP_ATTR VALUE: an integer type (default 512, 128~ 32767) DESCRIPTION: When encoding a DICOM attribute into XML, skip attributes whose (child) XML element sizes (in bytes) are larger than XML_SKIP_ATTR. If an attribute is of simple type, this limit applies to the whole attribute. If the attribute type is SQ, this limit applies to its child items. For example, if an attribute is of type SQ and it contains child items of type OB, the limit applies to each child instance of type OB. The smallest value allowed for this parameter is 128. PARAMETER: AVG_ATTR_NUM VALUE: an integer type (default 200, 20~2000) DESCRIPTION: The average number of root-level attributes per DICOM object. This is a hint to the DICOM implementation. Finding the optimal value for a database helps improve storage efficiency and performance. Too large a value may lead to wasted memory, and too small a value may lead to poor performance. An ideal value is one where most (suggested 95%) DICOM images have less than $VALUE number of attributes. The smallest value allowed for this parameter is 20. The largest number allowed for this parameter is the total number of not retired standard attributes defined. PARAMETER: CONFORMANCE_LEVEL VALUE: enum { leastConform, ignoreException(default), mostConform} DESCRIPTION: The option "leastConform" means that all functions try to maximize the processing of a DICOM object and ignore any errors and exceptions. "ignoreException" means that all functions ignore the types of exceptions given in the parameter "IGNORED_EXP_LIST". The default set of ignored exceptions includes: MISSING_ATTR, INVALID_LENGTH, MISSING_MAGIC, MISSING_HEADER, INVALID_VR, INVALID_VM, and PARSE_ERR. "mostConform" means that all functions throw an exception if a DICOM object contains nonconformant content. This does not include backward compatibility cases allowed by the DICOM standard. Note: By choosing an option other than "mostConform", you risk accepting invalid DICOM objects, possibly getting incorrect results. In this case, Oracle recommends setting the LOGGING_LEVEL parameter to "warning" or a more detailed level, and then examining the log file for possible errors. PARAMETER: IGNORED_EXP_LIST VALUE: EmptySpace-separated exception names from the following list: {MISSING_MAGIC, MISSING_HEADER, MISSING_ATTR, FAULTY_VALUE, INVALID_LENGTH, INVALID_VM, INVALID_VR, UNSUPPORT_VALUE, UNDEFINED_VALUE, NOT_AN_IMAGE, PARSE_ERR} Default: {MISSING_ATTR INVALID_LENGTH MISSING_MAGIC MISSING_HEADER INVALID_VR INVALID_VM PARSE_ERR}. DESCRIPTION: This parameter is only effective when the value of the CONFORMANCE_LEVEL parameter is "ignoreException". If this is the case, the exceptions in the ignore exception list are ignored at run time. However, if the LOGGING_LEVEL parameter is set to "warning" or a more detailed level, the exception is logged. The program continues and skips the part of the DICOM object that has triggered an exception. These exceptions are defined as follows: MISSING_MAGIC: a DICOM object does not contain the file magic number "DICM". MISSING_HEADER: a DICOM object does not have the file meta header (not conformant to the DICOM standard part 10). MISSING_ATTR: a DICOM object does not have the mandatory attributes (type 1) required by the DICOM standard. FAULTY_VALUE: a DICOM object has attribute values that lead to parsing errors. INVALID_LENGTH: a DICOM object contains a length value that is not consistent with the DICOM encoding rules or a length that is not permitted by the DICOM data dictionary. INVALID_VM: an attribute of a DICOM object has an invalid Value Multiplicity value (not consistent with the dictionary definition). INVALID_VR: an attribute of a DICOM object has an invalid Value Representation value, which can either conflict with the data dictionary or has not been defined by the data dictionary. UNSUPPORTED_VALUE: a DICOM object contains attribute values that are outside of the supported range; for example, an unsupported pixel representation value. UNDEFINED_VALUE: a DICOM object contains attribute values that are not defined by the data model; for example, an undefined transfer syntax UID, an undefined SOP class UID, and so on. NOT_AN_IMAGE: When an image content processing function is invoked on a DICOM object, if the object's SOP class UID is defined but its classification is not "storageClass", or its content type is not "image", an exception is thrown. It may mean that the UID definition document is not up-to-date. An administrator can update the document to define the SOP class UID as a "storageClass" of "image" type. PARSE_ERR: When a DICOM object contains invalid data, a parse exception is thrown. This exception is ignored, and the parsing process continues. PARAMETER: OUTPUT_RAW_VALUE VALUE: an integer value (default to 0, no output) (-1 ~ 32767) DESCRIPTION: What to output in an XML metadata document when the parsing of a DICOM object fails. The base64 encoding of the attribute's byte value can be returned in the rawValue attribute of a DICOM XML element. The VALUE element specifies the maximal length allowed for the rawValue attribute. If $VALUE == -1, (not recommended), the entire attribute up to 32k is saved in the rawValue attribute in base64 encoding. If $VALUE == 0, an empty string is saved in the rawValue attribute (recommended for production systems). If $VALUE == N > 0, only the first N bytes of the attribute are saved in the rawValue attribute. A nonzero value for this parameter is useful for debugging purposes. For a production system, do NOT pick a value larger than 64. The value -1 should never be used outside of a development environment. PARAMETER: LOGGING_LEVEL VALUE: enum {debug, conformance, warning(default), error, none } DESCRIPTION: The logging level, if ordered by the level of detail from the most to the least is: "debug", "conformance", "warning", "error", and "none". "debug" means extensive logging of all steps; it should only be used for debugging purposes. "conformance" means to log all nonstandard conformance problems that are discovered. In general, nonconformance is very common for a DICOM object repository containing DICOM objects from different sources, for example, a hospital or an imaging center. This logging level may lead to large log files for most scenarios, and lower performance. "warning" means to log all recoverable messages that require operator attention. For example, if a user invokes an image processing function on a DICOM object and Oracle does not recognize this DICOM object as an image, a warning message is logged stating that this DICOM object is not defined as an image. The processing of the image content may continue if the CONFORMANCE_LEVEL parameter is set to ignore "NOT_AN_IMAGE" exception. "error" means to log only irrecoverable messages. "none" means that logging is disabled. Note: Do not use the "debug" option for a deployed system. It adds significant overhead and slows down all DICOM related functions. PARAMETER: VALIDATE_METADATA VALUE: Boolean{true, false(default)} DESCRIPTION: The value of this parameter determines whether to validate the XML documents used in the DICOM functions and procedures. If the value of this parameter is false, the XML documents are not validated. If the value is set to true, the XML documents are validated against a specific XML schema that is registered with Oracle XML DB. All XML documents used in the DICOM functions and procedures, except those that are generated by the method extractMetadata( ), are validated against the Oracle default DICOM metadata schema. The XML documents generated by the method extractMetadata( ) are validated against the XML schema whose namespace is defined in the specified mapping document. PARAMETER: EXP_IF_NULL_ATTR_IN_CONSTRAINT VALUE: Boolean{true(default), false} DESCRIPTION: A DICOM object may not contain certain attributes that are used in a constraint predicate. The object may contain an attribute, but its value is empty. Both cases result to a null value attribute. So a constraint predicate involving this attribute has a null parameter value such as (null== MY_VALUE). If this preference parameter is set to true, an exception is thrown if the first occurrence of a a null-value attribute is not guarded by the "notEmpty" Boolean function. If this parameter is set to false, no exception is thrown and the predicate evaluates to false. To avoid confusion, it is always better to guard an attribute with "notEmpty" Boolean functions before using the attribute value in a predicate. PARAMETER: MAX_RECURSION_DEPTH VALUE: an integer type (default 16, 1 ~ 32767) DESCRIPTION: This parameter restricts the number of levels of recursions when evaluating a recursive constraint on a DICOM object. If the recursion level exceeds this number, an exception is thrown. PARAMETER: MANDATE_ATTR_TAGS_IN_STL VALUE: Boolean{false(default), true} DESCRIPTION: This parameter is used to enforce that all tags used by the constraint and mapping documents must be listed in the STORED_TAG_LIST(STL) document. This rule is not enforced by default. If this preference parameter is set to true, the rule is enforced. If an existing STL document does not satisfy this rule, the preference value cannot be set to true until the STL document is deleted. PARAMETER: SQ_WRITE_LEN VALUE: boolean{true(default), false} DESCRIPTION: This parameter determines how the DICOM sequence (SQ) types are encoded by the DICOM function writeMetadata(). If the value of this parameter is true, the SQ types are encoded with explicit length and without item or sequence delimitors. This is the default behavior and allows DICOM viewers to skip the sequence attributes easily. If the value of this parameter is false, the SQ types are encoded with variable (or undefined) length and terminated with sequence delimitors. This allows backward compatibility with some older DICOM viewers and Dicom applications as they only support undefined length for SQ types. PARAMETER: SPECIFIC_CHARACTER_SET VALUE: enum {ASCII(default), ISO_IR 100, ISO_IR 101, ISO_IR 109, ISO_IR 110, ISO_IR 144, ISO_IR 127, ISO_IR 126, ISO_IR 138, ISO_IR 148, ISO_IR 13, ISO_IR 166, ISO_IR 192, GB18030} DESCRIPTION: This parameter determines how data elements with value representations of SH (Short String), LO (Long String), ST (Short Text) LT (Long Text), PN (Person Name) or UT (Unlimited Text) are decoded when the Specific Character Set (0008,0005) Attribute is missing. The DICOM standard states that the default character set (ISO-IR 6, or ASCII) shall be used for decoding when the Specific Character Set (0008,0005) Attribute is not specified. This parameter allows an application to specify a different character set to use in these cases. PARAMETER: BINARY_SKIP_INVALID_ATTR VALUE: boolean{false(default), true} DESCRIPTION: It is possible that a DICOM object contains one or more attribute values that do not conform to the DICOM specification. In the event that such an attribute is present in a DICOM object, this parameter determines whether or not to "skip" (i.e. not include) the value of that attribute in the binary output when making a copy of the object in question. The default behavior, specified by setting this parameter to "false", is to not skip these values and to include them as-is in the coresponding output. When an attribute is skipped, its value is included in the output truncated to length 0. </xs:documentation> </xs:annotation> <xs:element name="DICOM_RUNTIME_PREFERENCES"> <xs:complexType> <xs:sequence> <xs:element name="DOCUMENT_HEADER" type="dt:DOCUMENT_HEADER_T" minOccurs="0"/> <xs:element name="PREFERENCE_DEF" maxOccurs="unbounded"> <xs:annotation> <xs:documentation> Each PREFERENCE_DEF entry describes one parameter that a repository administrator may modify to adjust the run-time behavior of the DICOM functionality. </xs:documentation> </xs:annotation> <xs:complexType> <xs:sequence> <xs:element name="PARAMETER" type="dt:SHORT_ID_T"/> <xs:element name="DESCRIPTION" type="dt:SHORT_TEXT_T" minOccurs="0"/> <xs:element name="VALUE"> <xs:simpleType> <xs:restriction base="dt:SHORT_TEXT_T"> <xs:pattern value="[ 0-9_a-zA-Z]+"/> </xs:restriction> </xs:simpleType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
The private dictionary document schema ordcmpv.xsd
, shown in Example B-9, defines the structure of the private dictionary documents. The namespace for this schema is
http://xmlns.oracle.com/ord/dicom/privateDictionary_1_0
Example B-9 Private Dictionary Document Schema
<?xml version="1.0" encoding="UTF-8"?> <!-- Copyright (c) 2007, Oracle. All rights reserved. NAME ordcmpv.xsd - XML schema for DICOM private dictionary documents --> <xs:schema xmlns="http://xmlns.oracle.com/ord/dicom/privateDictionary_1_0" xmlns:dt="http://xmlns.oracle.com/ord/dicom/datatype_1_0" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://xmlns.oracle.com/ord/dicom/privateDictionary_1_0" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:import namespace="http://xmlns.oracle.com/ord/dicom/datatype_1_0" schemaLocation="http://xmlns.oracle.com/ord/dicom/datatype_1_0"/> <xs:annotation> <xs:documentation> Introduction This schema defines the private attributes created by modality manufacturers or organizations other than the DICOM Standards Committee. Structure Overview Question mark "?" means optional items. Plus "+" means one or more items. Asterisk "*" means zero or more items. DICOM_PRIVATE_ATTRIBUTES DOCUMENT_HEADER? DOCUMENT_CHANGE_LOG* DOCUMENT_MODIFIER DOCUMENT_MODIFICATION_DATE DOCUMENT_VERSION? MODIFICATION_COMMENT? BASE_DOCUMENT? BASE_DOCUMENT_RELEASE_DATE? BASE_DOCUMENT_DESCRIPTION? ATTRIBUTE_DEFINERS? DEFINER+ NAME ID? PRIVATE_ATTRIBUTE_DEFINITION+ (TAG|TAG_RANGE) NAME DEFINER VR? VM? RETIRED? DOCUMENT_HEADER is an optional header to specify the modification history. See dt:DOCUMENT_HEADER_T for more information. ATTRIBUTE_DEFINERS specify the owner of each private attribute. See dt:ATTR_DEFINER_T for more information. A private dictionary contains one or more private attribute definitions. Each private attribute specification takes a tag specification, a name, a value representation type, a value multiplicity type, and a retired flag. See dt:VR_T dt:VM_T for the allowed values for the value representation and value multiplicity elements. Note: Private attribute tags allow three specification types. The tag can be a 4-byte hexadecimal number, a wildcard type such as "0039xx01", or a range type such as "0039xx01~0041xx01". Multiple attribute definitions cannot be associated with the same definer-tag pair in a dictionary. For example, a simple attribute definition ("oracle", 60100010) matches a wildcard attribute ("oracle", 60xx0010), they cannot coexist in the private dictionary. Similarly, a range attribute definition ("Oracle", {6000-60FF}) overlaps a range attribute definition ("Oracle", {6010-6020}), they cannot coexist in the private dictionary. As a rule, an attribute must not match two entries in the dictionary. </xs:documentation> </xs:annotation> <xs:element name="DICOM_PRIVATE_ATTRIBUTES"> <xs:complexType> <xs:sequence> <xs:element name="DOCUMENT_HEADER" type="dt:DOCUMENT_HEADER_T" minOccurs="0"/> <xs:element name="ATTRIBUTE_DEFINERS" type="dt:ATTR_DEFINERS_T" minOccurs="0"/> <xs:element name="PRIVATE_ATTRIBUTE_DEFINITION" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:choice> <xs:element name="TAG" type="dt:ATTR_TAG_T"/> <xs:element name="TAG_RANGE" type="dt:ATTR_RANGE_T"/> </xs:choice> <xs:element name="NAME" type="dt:SHORT_STRING_T"/> <xs:element name="DEFINER" type="dt:LO"/> <xs:element name="VR" type="dt:VR_T" minOccurs="0"/> <xs:element name="VM" type="dt:VM_T" minOccurs="0"/> <xs:element name="RETIRED" type="xs:boolean" default="false" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
The standard dictionary document schema ordcmsd.xsd
, shown in Example B-10, defines the structure of the standard dictionary documents. The namespace for this schema is
http://xmlns.oracle.com/ord/dicom/standardDictionary_1_0
Example B-10 Standard Dictionary Document Schema
<?xml version="1.0" encoding="UTF-8"?> <!-- Copyright (c) 2007, Oracle. All rights reserved. NAME ordcmsd.xsd - XML Schema for DICOM standard dictionary document. --> <xs:schema xmlns="http://xmlns.oracle.com/ord/dicom/standardDictionary_1_0" xmlns:dt="http://xmlns.oracle.com/ord/dicom/datatype_1_0" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" targetNamespace="http://xmlns.oracle.com/ord/dicom/standardDictionary_1_0" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:import namespace="http://xmlns.oracle.com/ord/dicom/datatype_1_0" schemaLocation="http://xmlns.oracle.com/ord/dicom/datatype_1_0"/> <xs:annotation> <xs:documentation> Introduction This schema defines the data dictionary that lists the DICOM standard attributes as published by the DICOM Standards Committee. No other attributes, such as those defined by a modality manufacturer or an organization other than NEMA, should be included in the standard data dictionary. Structure Overview Question mark "?" means optional items. Plus "+" means one or more items. Asterisk "*" means zero or more items. DICOM_STANDARD_ATTRIBUTES DOCUMENT_HEADER? DOCUMENT_CHANGE_LOG* DOCUMENT_MODIFIER DOCUMENT_MODIFICATION_DATE DOCUMENT_VERSION? MODIFICATION_COMMENT? BASE_DOCUMENT? BASE_DOCUMENT_RELEASE_DATE? BASE_DOCUMENT_DESCRIPTION? ATTRIBUTE_DEFINERS? DEFINER+ NAME ID? STANDARD_ATTRIBUTE_DEFINITION+ TAG NAME VR? VM? RETIRED? DOCUMENT_HEADER is an optional header to specify the modification history. See dt:DOCUMENT_HEADER_T for more information. ATTRIBUTE_DEFINERS specify the owner of each attribute. See dt:ATTR_DEFINER_T for more information. All DICOM standard attributes must have definer name "DICOM" and UID "1.2.840.10008.1". A standard dictionary contains one or more standard attribute definitions. Each standard attribute specification takes a tag specification, a name, a value representation type, a value multiplicity type, and a retired flag. See DICOM P3-6 2007 for a description of these elements. See dt:VR_T dt:VM_T for the allowed values of value representation and value multiplicity elements. Note: Wildcard character "x" can be used to specify standard attribute tags (for example, 60xx0010 for overlay rows). Multiple attribute definitions must not be associated with the same tag in a standard dictionary. For example, the attribute definition 60100010 matches the wildcard attribute 60xx0010, they cannot coexist in the dictionary. As a rule, an attribute must not match two entries in the dictionary. </xs:documentation> </xs:annotation> <xs:element name="DICOM_STANDARD_ATTRIBUTES"> <xs:complexType> <xs:sequence> <xs:element name="DOCUMENT_HEADER" type="dt:DOCUMENT_HEADER_T" minOccurs="0"/> <xs:element name="ATTRIBUTE_DEFINERS" type="dt:ATTR_DEFINERS_T" minOccurs="0"/> <xs:element name="STANDARD_ATTRIBUTE_DEFINITION" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="TAG" type="dt:ATTR_TAG_T"/> <xs:element name="NAME" type="dt:SHORT_STRING_T"/> <xs:element name="VR" type="dt:VR_T" minOccurs="0"/> <xs:element name="VM" type="dt:VM_T" minOccurs="0"/> <xs:element name="RETIRED" type="xs:boolean" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
The stored tag list document schema ordcmstl.xsd
, shown in Example B-11, defines the structure of the DICOM stored tag list documents. The namespace for this schema is
http://xmlns.oracle.com/ord/dicom/attributeTag_1_0
Example B-11 Stored Tag List Document Schema
<?xml version="1.0" encoding="UTF-8"?> <!-- Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved. NAME ordcmstl.xsd - XML schema for the DICOM STORED_TAG_LIST document --> <xs:schema xmlns="http://xmlns.oracle.com/ord/dicom/attributeTag_1_0" xmlns:dt="http://xmlns.oracle.com/ord/dicom/datatype_1_0" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" targetNamespace="http://xmlns.oracle.com/ord/dicom/attributeTag_1_0" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:import namespace="http://xmlns.oracle.com/ord/dicom/datatype_1_0" schemaLocation="http://xmlns.oracle.com/ord/dicom/datatype_1_0"/> <xs:annotation> <xs:documentation> Introduction This schema defines the STORED_TAG_LIST document. This document lists the attribute tags that are persistently stored in the metadata attribute of the ORDDICOM object. Structure Overview: Question mark "?" means optional items. Plus "+" means one or more items. Asterisk "*" means zero or more items. ATTRIBUTE_TAG_LIST DOCUMENT_HEADER? DOCUMENT_CHANGE_LOG* DOCUMENT_MODIFIER DOCUMENT_MODIFICATION_DATE DOCUMENT_VERSION? MODIFICATION_COMMENT? BASE_DOCUMENT? BASE_DOCUMENT_RELEASE_DATE? BASE_DOCUMENT_DESCRIPTION? ATTRIBUTE_TAG+ </xs:documentation> </xs:annotation> <xs:element name="ATTRIBUTE_TAG_LIST"> <xs:complexType> <xs:sequence> <xs:element name="DOCUMENT_HEADER" type="dt:DOCUMENT_HEADER_T" minOccurs="0"/> <xs:element name="ATTRIBUTE_TAG" type="dt:VALUE_LOCATOR_T" minOccurs="1" maxOccurs="unbounded" > <xs:annotation> <xs:documentation> Each ATTRIBUTE_TAG entry describes one locator path of a DICOM attribute in the list. </xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
The UID definition document schema ordcmui.xsd
, shown in Example B-12, defines the structure of the UID definition documents. The namespace for this schema is
http://xmlns.oracle.com/ord/dicom/UIDdefinition_1_0
Example B-12 UID Definition Document Schema
<?xml version="1.0" encoding="UTF-8"?> <!-- Copyright (c) 2007, Oracle. All rights reserved. NAME ordcmui.xsd - XML schema for DICOM UID definition documents. --> <xs:schema xmlns="http://xmlns.oracle.com/ord/dicom/UIDdefinition_1_0" xmlns:dt="http://xmlns.oracle.com/ord/dicom/datatype_1_0" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://xmlns.oracle.com/ord/dicom/UIDdefinition_1_0" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:import namespace="http://xmlns.oracle.com/ord/dicom/datatype_1_0" schemaLocation="http://xmlns.oracle.com/ord/dicom/datatype_1_0"/> <xs:annotation> <xs:documentation> Introduction This schema defines DICOM UIDs. User can update this file to support new DICOM object types. Structure Overview Question mark "?" means optional items. Plus "+" means one or more items. Asterisk "*" means zero or more items. DICOM_UID_DEFINITIONS DOCUMENT_HEADER? DOCUMENT_CHANGE_LOG* DOCUMENT_MODIFIER DOCUMENT_MODIFICATION_DATE DOCUMENT_VERSION? MODIFICATION_COMMENT? BASE_DOCUMENT? BASE_DOCUMENT_RELEASE_DATE? BASE_DOCUMENT_DESCRIPTION? UID_DEF (classification, isLE?, isEVR?, isCompressed?,retired?, contentType?)+ UID NAME DESCRIPTION? A UID_DEF entry describes a UID value. The mandatory classification attribute specifies what a UID is. Its value can be "transferSyntax", "storageClass", "frameOfRef", "ldapOID", "entityID", or "other". "transferSyntax" means that the UID identifies transfer syntax. "storageClass" means that the UID identifies a storage class. "frameOfRef" means that the UID is a well-known frame of reference. "ldapOID" means that the UID is an LDAP OID. "entityID" means that the UID identifies an entity, which can be an organization or a device manufacturer. "other" means that the UID does not fall into any of the previous categories. For entries that have a classification type of "transferSyntax", the attributes "isLE", "isEVR", and "isCompressed" further define the transfer syntax. These attributes are ignored for all other classification types. The "isLE" attribute specifies whether the binary stream will be encoded with little-endian byte order(defaults to true). The "isEVR" attribute specifies whether the binary stream will use the explicit VR encoding rule (defaults to true). The "isCompressed" attribute specifies whether the transfer syntax means that the data content is compressed (defaults to true). If an entry has a classification type of "storageClass", the "contentType" attribute further specifies the primary content of a DICOM object belonging to this class. The value of this attribute can be "image", "waveform", "report" or "other". "image" can be single-frame, multi-frame images, or video. "waveform" can be ECG, EEG, or any other 1D signal. "report" means a structured report. "other" means overlay, GSPS, KO, or any other object types that do not belong to the previous categories. For example "Ultrasound Multi-frame Image Storage" SOP class has a UID of "1.2.840.10008.5.1.4.1.1.3.1". Its primary content is image. </xs:documentation> </xs:annotation> <xs:element name="DICOM_UID_DEFINITIONS"> <xs:complexType> <xs:sequence> <xs:element name="DOCUMENT_HEADER" type="dt:DOCUMENT_HEADER_T" nillable="true" minOccurs="0"/> <xs:element name="UID_DEF" maxOccurs="unbounded"> <xs:complexType> <xs:complexContent> <xs:extension base="UID_ENTRY_T"> <xs:attribute name="classification" use="required"> <xs:simpleType> <xs:restriction base="xs:token"> <xs:enumeration value="transferSyntax"/> <xs:enumeration value="storageClass"/> <xs:enumeration value="frameOfRef"/> <xs:enumeration value="ldapOID"/> <xs:enumeration value="entityID"/> <xs:enumeration value="other"/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attribute name="isLE" type="xs:boolean" default="true"/> <xs:attribute name="isEVR" type="xs:boolean" default="true"/> <xs:attribute name="isCompressed" type="xs:boolean" default="true"/> <xs:attribute name="retired" type="xs:boolean" default="false"/> <xs:attribute name="contentType" default="image"> <xs:simpleType> <xs:restriction base="xs:token"> <xs:enumeration value="image"/> <xs:enumeration value="waveform"/> <xs:enumeration value="report"/> <xs:enumeration value="other"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:complexType name="UID_ENTRY_T"> <xs:sequence> <xs:element name="UID" type="dt:UI"/> <xs:element name="NAME" type="dt:SHORT_STRING_T"/> <xs:element name="DESCRIPTION" type="dt:SHORT_TEXT_T" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:schema>