<?xml version="1.0" encoding="WINDOWS-1252"?>
<!-- Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.    NAME     ordcmdp.xsd - XML Schema for DICOM protocol documents.   MODIFIED   (MM/DD/YY)   jiezhan     09/12/12   - special tag and admin docs   dnoblet     08/16/11   - Created-->
<xs:schema xmlns="http://xmlns.oracle.com/ord/dicom/protocol_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/protocol_1_0" elementFormDefault="qualified" attributeFormDefault="unqualified" xmlns:oraxdb="http://xmlns.oracle.com/xdb" oraxdb:storeVarrayAsTable="true" oraxdb:flags="2105649" oraxdb:schemaURL="http://xmlns.oracle.com/ord/dicom/protocol_1_0" oraxdb:schemaOwner="ORDSYS" oraxdb:numProps="25">
  <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 protocol document.            Structure Overview        Question mark &quot;?&quot; means optional items.        Plus &quot;+&quot; means one or more items.        Asterisk &quot;*&quot; means zero or more items.                DICOM_PROTOCOL          DOCUMENT_HEADER?            DOCUMENT_CHANGE_LOG*              DOCUMENT_MODIFIER              DOCUMENT_MODIFICATION_DATE              DOCUMENT_VERSION?              MODIFICATION_COMMENT?              BASE_DOCUMENT?              BASE_DOCUMENT_RELEASE_DATE?              BASE_DOCUMENT_DESCRIPTION?          STORAGE+            ATTRIBUTE*            DICOM*            METADATA*            PREVIEW*                The preceding element values specify the configuration required by the        Oracle DICOM Protocol Adapter Suite to serve DICOM protocol requests        based on user tables storing DICOM images and/or metadata.    </xs:documentation>
  </xs:annotation>
  <xs:simpleType name="table_name_t">
    <xs:restriction base="xs:string">
      <xs:minLength value="1"/>
      <xs:maxLength value="261"/>
      <xs:pattern value="((&quot;[^&quot;]+&quot;)|([a-zA-Z][a-zA-Z0-9_#$]*))([.]((&quot;[^&quot;]+&quot;)|([a-zA-Z][a-zA-Z0-9_#$]*)))?"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="column_name_t">
    <xs:restriction base="xs:string">
      <xs:minLength value="1"/>
      <xs:maxLength value="130"/>
      <xs:pattern value="(&quot;[^&quot;]+&quot;)|([a-zA-Z][a-zA-Z0-9_#$]*)"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="column_type_t">
    <xs:restriction base="xs:string">
      <xs:enumeration value="blob"/>
      <xs:enumeration value="BLOB"/>
      <xs:enumeration value="clob"/>
      <xs:enumeration value="CLOB"/>
      <xs:enumeration value="ORDImage"/>
      <xs:enumeration value="ORDIMAGE"/>
      <xs:enumeration value="ORDDicom"/>
      <xs:enumeration value="ORDDICOM"/>
      <xs:enumeration value="varchar2"/>
      <xs:enumeration value="VARCHAR2"/>
      <xs:enumeration value="date"/>
      <xs:enumeration value="DATE"/>
      <xs:enumeration value="number"/>
      <xs:enumeration value="NUMBER"/>
      <xs:enumeration value="XMLType"/>
      <xs:enumeration value="XMLTYPE"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="image_verb_t">
    <xs:annotation>
      <xs:documentation>        Specify the image transformation options when generating a DICOM image        preview.      </xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:minLength value="1"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="wado_link_t">
    <xs:annotation>
      <xs:documentation>        Specify an HTTP WADO link.      </xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:minLength value="1"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="ORD_table_col_t" oraxdb:SQLType="CLOB">
    <xs:attribute name="column" type="column_name_t" use="required" oraxdb:propNumber="3318" oraxdb:global="false" oraxdb:memType="1"/>
    <xs:attribute name="type" type="column_type_t" use="optional" oraxdb:propNumber="3319" oraxdb:global="false" oraxdb:memType="259"/>
  </xs:complexType>
  <xs:complexType name="ORD_dicom_col_t" oraxdb:SQLType="CLOB">
    <xs:annotation>
      <xs:documentation>        Specify a column in a table that will be used to store a DICOM image        (either as ORDDicom or BLOB).      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="ORD_table_col_t">
        <xs:attribute name="retain" type="xs:boolean" use="optional" oraxdb:propNumber="3320" oraxdb:global="false" oraxdb:memType="252"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="ORD_metadata_col_t" oraxdb:SQLType="CLOB">
    <xs:annotation>
      <xs:documentation>        Specify a column in a table that will be used to store an XML-based        representation of the DICOM metadata corresponding to a DICOM image        (as XMLType).      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="ORD_table_col_t"/>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="ORD_preview_col_t" oraxdb:SQLType="CLOB">
    <xs:annotation>
      <xs:documentation>        Specify a column in a table will be used to store a non-DICOM image         (JPEG, TIFF, etc.) representation of a DICOM image (as ORDImage or         BLOB).      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="ORD_table_col_t">
        <xs:attribute name="options" type="image_verb_t" use="required" oraxdb:propNumber="3321" oraxdb:global="false" oraxdb:memType="1"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="ORD_attr_col_t" oraxdb:SQLType="CLOB">
    <xs:annotation>
      <xs:documentation>        Specify a column in a table will be used to store a value corresponding        to a given DICOM metadata tag.      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="ORD_table_col_t">
        <xs:attribute name="tag" type="dt:AT" use="required" oraxdb:propNumber="3322" oraxdb:global="false" oraxdb:memType="23"/>
        <xs:attribute name="definer" type="dt:LO" use="optional" oraxdb:propNumber="3323" oraxdb:global="false" oraxdb:memType="1"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="ORD_special_tag_col_t" oraxdb:SQLType="CLOB">
    <xs:annotation>
      <xs:documentation>        Specify a column in a table will be used to store a value corresponding        to a given DICOM metadata tag name.      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="ORD_table_col_t">
        <xs:attribute name="tag_name" type="dt:LT" use="required" oraxdb:propNumber="3324" oraxdb:global="false" oraxdb:memType="1"/>
        <xs:attribute name="definer" type="dt:LO" use="optional" oraxdb:propNumber="3325" oraxdb:global="false" oraxdb:memType="1"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:simpleType name="ORD_mapping_doc_option_t">
    <xs:restriction base="xs:string">
      <xs:enumeration value="ALL"/>
      <xs:enumeration value="MAPPED"/>
      <xs:enumeration value="STANDARD"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="ORD_mapping_doc_t" oraxdb:SQLType="CLOB">
    <xs:annotation>
      <xs:documentation>        Specify the DICOM mapping documents for extracting metadata of those DICOM        stored in BLOB      </xs:documentation>
    </xs:annotation>
    <xs:attribute name="doc_type" use="required" type="xs:string" fixed="MAPPING" oraxdb:propNumber="3326" oraxdb:global="false" oraxdb:memType="1"/>
    <xs:attribute name="doc_name" use="required" type="table_name_t" oraxdb:propNumber="3327" oraxdb:global="false" oraxdb:memType="1"/>
    <xs:attribute name="doc_option" use="required" type="ORD_mapping_doc_option_t" oraxdb:propNumber="3328" oraxdb:global="false" oraxdb:memType="259"/>
  </xs:complexType>
  <xs:complexType name="ORD_wado_col_t" oraxdb:SQLType="CLOB">
    <xs:annotation>
      <xs:documentation>        Specify a column in a table will be used to store a WADO link.      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="ORD_table_col_t">
        <xs:attribute name="prefix" type="wado_link_t" use="required" oraxdb:propNumber="3329" oraxdb:global="false" oraxdb:memType="1"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="ORD_storage_t" oraxdb:SQLType="CLOB">
    <xs:annotation>
      <xs:documentation>        Specify the columns of a user table where DICOM images and/or metadata         are stored. When the corresponding instance of the Oracle DICOM         Protocol Adapter Suite receives a new image to store in Oracle Database,        it will populate the given columns of the specified user table.         Likewise, when the Oracle Protocol Adapter Suite serves a DICOM query        (usually C-FIND or C-MOVE), it will search the given columns of the         specified user table in order to return the DICOM image data or metadata        requested by the remote user.      </xs:documentation>
    </xs:annotation>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element name="DICOM" type="ORD_dicom_col_t" oraxdb:propNumber="3333" oraxdb:global="false" oraxdb:SQLName="DICOM" oraxdb:memType="258" oraxdb:MemInline="false" oraxdb:SQLInline="true" oraxdb:JavaInline="false"/>
      <xs:element name="METADATA" type="ORD_metadata_col_t" oraxdb:propNumber="3334" oraxdb:global="false" oraxdb:SQLName="METADATA" oraxdb:memType="258" oraxdb:MemInline="false" oraxdb:SQLInline="true" oraxdb:JavaInline="false"/>
      <xs:element name="PREVIEW" type="ORD_preview_col_t" oraxdb:propNumber="3335" oraxdb:global="false" oraxdb:SQLName="PREVIEW" oraxdb:memType="258" oraxdb:MemInline="false" oraxdb:SQLInline="true" oraxdb:JavaInline="false"/>
      <xs:element name="ATTRIBUTE" type="ORD_attr_col_t" oraxdb:propNumber="3336" oraxdb:global="false" oraxdb:SQLName="ATTRIBUTE" oraxdb:memType="258" oraxdb:MemInline="false" oraxdb:SQLInline="true" oraxdb:JavaInline="false"/>
      <xs:element name="WADO" type="ORD_wado_col_t" oraxdb:propNumber="3337" oraxdb:global="false" oraxdb:SQLName="WADO" oraxdb:memType="258" oraxdb:MemInline="false" oraxdb:SQLInline="true" oraxdb:JavaInline="false"/>
      <xs:element name="SPECIAL_TAG" type="ORD_special_tag_col_t" oraxdb:propNumber="3338" oraxdb:global="false" oraxdb:SQLName="SPECIAL_TAG" oraxdb:memType="258" oraxdb:MemInline="false" oraxdb:SQLInline="true" oraxdb:JavaInline="false"/>
    </xs:choice>
    <xs:attribute name="table" use="required" type="table_name_t" oraxdb:propNumber="3330" oraxdb:global="false" oraxdb:memType="1"/>
    <xs:attribute name="id_col" use="required" type="column_name_t" oraxdb:propNumber="3331" oraxdb:global="false" oraxdb:memType="1"/>
    <xs:attribute name="ver_col" use="optional" type="column_name_t" oraxdb:propNumber="3332" oraxdb:global="false" oraxdb:memType="1"/>
  </xs:complexType>
  <xs:complexType name="ORD_DICOM_PROTOCOL_t" oraxdb:SQLType="CLOB">
    <xs:annotation>
      <xs:documentation>        Specify the user tables where DICOM images and/or metadata are stored         that are accessible to the Oracle DICOM Protocol Adapter Suite. Each         &quot;STORAGE&quot; tag corresponds to a table where DICOM images and/or metadata        are stored.      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="DOCUMENT_HEADER" type="dt:DOCUMENT_HEADER_T" minOccurs="0" oraxdb:propNumber="3339" oraxdb:global="false" oraxdb:memType="258" oraxdb:MemInline="false" oraxdb:SQLInline="true" oraxdb:JavaInline="false"/>
      <xs:element name="ADMIN_DOC" type="ORD_mapping_doc_t" minOccurs="0" maxOccurs="unbounded" oraxdb:propNumber="3340" oraxdb:global="false" oraxdb:SQLName="ADMIN_DOC" oraxdb:memType="258" oraxdb:MemInline="false" oraxdb:SQLInline="true" oraxdb:JavaInline="false"/>
      <xs:element name="STORAGE" type="ORD_storage_t" minOccurs="1" maxOccurs="unbounded" oraxdb:propNumber="3341" oraxdb:global="false" oraxdb:SQLName="STORAGE" oraxdb:memType="258" oraxdb:MemInline="false" oraxdb:SQLInline="true" oraxdb:JavaInline="false"/>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="DICOM_PROTOCOL" type="ORD_DICOM_PROTOCOL_t" oraxdb:propNumber="3317" oraxdb:global="true" oraxdb:SQLType="CLOB" oraxdb:SQLName="DICOM_PROTOCOL" oraxdb:memType="258"/>
</xs:schema>
