<?xml version="1.0" encoding="UTF-8"?><!--
  Copyright (c) 2001, 2002, 2003, 2004, 2005 Health Level Seven. All rights reserved.

  Redistribution and use in source and binary forms, with or without
  modification, are permitted provided that the following conditions
  are met:
  1. Redistributions of source code must retain the above copyright
     notice, this list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright
     notice, this list of conditions and the following disclaimer in the
     documentation and/or other materials provided with the distribution.
  3. All advertising materials mentioning features or use of this software
     must display the following acknowledgement:
       This product includes software developed by Health Level Seven.
 
  THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  SUCH DAMAGE.
  --><!--
    This schema is generated from a Generic Schema Definition (GSD)
    by gsd2xsl. Do not edit this file.
  -->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
   <xsd:annotation>
      <xsd:documentation>
  Copyright (c) 2001, 2002, 2003, 2004, 2005 Health Level Seven. All rights reserved.

  Redistribution and use in source and binary forms, with or without
  modification, are permitted provided that the following conditions
  are met:
  1. Redistributions of source code must retain the above copyright
     notice, this list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright
     notice, this list of conditions and the following disclaimer in the
     documentation and/or other materials provided with the distribution.
  3. All advertising materials mentioning features or use of this software
     must display the following acknowledgement:
       This product includes software developed by Health Level Seven.
 
  THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  SUCH DAMAGE.
  
Generated by $Id: datatypes-base.xsd,v 1.1 2007/10/11 11:13:10 pdowney Exp $</xsd:documentation>
   </xsd:annotation>
   <xsd:include schemaLocation="voc.xsd"/>
   <xsd:annotation>
      <xsd:documentation> $Id: datatypes-base.xsd,v 1.1 2007/10/11 11:13:10 pdowney Exp $ 
Generated by $Id: datatypes-base.xsd,v 1.1 2007/10/11 11:13:10 pdowney Exp $</xsd:documentation>
   </xsd:annotation>
   <xsd:complexType name="ANY" abstract="true">
      <xsd:annotation>
         <xsd:documentation>
Defines the basic properties of every data value. This is an abstract
type, meaning that no value can be just a data value without belonging
to any concrete type. Every concrete type is a specialization of this
general abstract DataValue type.
  </xsd:documentation>
         <xsd:appinfo/>
      </xsd:annotation>
      <xsd:attribute name="nullFlavor" type="NullFlavor" use="optional">
         <xsd:annotation>
            <xsd:documentation>
An exceptional value expressing missing information and possibly the
reason why the information is missing.
  </xsd:documentation>
            <xsd:appinfo/>
         </xsd:annotation>
      </xsd:attribute>
   </xsd:complexType>
   <xsd:simpleType name="bl">
      <xsd:annotation>
         <xsd:documentation>
   The Boolean type stands for the values of two-valued logic. A
   Boolean value can be either true or
   false, or, as any other value may be NULL.
</xsd:documentation>
         <xsd:appinfo/>
      </xsd:annotation>
      <xsd:restriction base="xsd:boolean">
         <xsd:pattern value="true|false"/>
      </xsd:restriction>
   </xsd:simpleType>
   <xsd:complexType name="BL">
      <xsd:annotation>
         <xsd:documentation>
   The Boolean type stands for the values of two-valued logic. A
   Boolean value can be either true or
   false, or, as any other value may be NULL.
</xsd:documentation>
         <xsd:appinfo>
            <sch:pattern xmlns:sch="http://www.ascc.net/xml/schematron" name="validate BL">
               <sch:rule abstract="true" id="rule-BL">
                  <sch:report test="(@nullFlavor or @value) and not(@nullFlavor and @value)">
                     <p xmlns:hl7="urn:hl7-org:v3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gsd="http://aurora.regenstrief.org/GenericXMLSchema" xmlns:xlink="http://www.w3.org/TR/WD-xlink">
Although the use of the value is optional, this
constraint (expressed as an XPath predicate), specifies that there
must be either an value or the 
 attribute, but not both.
</p>
                  </sch:report>
               </sch:rule>
            </sch:pattern>
         </xsd:appinfo>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="ANY">
            <xsd:attribute name="value" use="optional" type="bl"/>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:simpleType name="bn">
      <xsd:annotation>
         <xsd:documentation>
   The BooleanNonNull type is used where a Boolean cannot have a null value. A
   Boolean value can be either true or
   false. 
</xsd:documentation>
         <xsd:appinfo/>
      </xsd:annotation>
      <xsd:restriction base="bl"/>
   </xsd:simpleType>
   <xsd:simpleType name="bin">
      <xsd:annotation>
         <xsd:documentation>
Binary data is a raw block of bits. Binary data is a protected
type that should not be declared outside the data type specification.
</xsd:documentation>
         <xsd:appinfo/>
      </xsd:annotation>
      <xsd:restriction base="xsd:base64Binary"/>
   </xsd:simpleType>
   <xsd:simpleType name="token_BinaryDataEncoding">
      <xsd:restriction base="xsd:NMTOKEN">
         <xsd:enumeration value="B64"/>
         <xsd:enumeration value="TXT"/>
      </xsd:restriction>
   </xsd:simpleType>
   <xsd:complexType name="BIN" abstract="true" mixed="true">
      <xsd:annotation>
         <xsd:documentation>
Binary data is a raw block of bits. Binary data is a protected
type that should not be declared outside the data type specification.
</xsd:documentation>
         <xsd:appinfo/>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="ANY">
            <xsd:attribute name="representation" use="optional" type="token_BinaryDataEncoding" default="TXT">
               <xsd:annotation>
                  <xsd:documentation>
Specifies the representation of the binary data that is the content
of the binary data complex XML schema data type.
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:complexType name="ED" mixed="true">
      <xsd:annotation>
         <xsd:documentation>
Data that is primarily intended for human interpretation or for
further machine processing is outside the scope of HL7. This includes
unformatted or formatted written language, multimedia data, or
structured information as defined by a different standard (e.g.,
XML-signatures.)  Instead of the data itself, an ED
may contain only a reference (see TEL.) Note that
the ST data type is a specialization of the
ED data type when the ED
media type is text/plain.
</xsd:documentation>
         <xsd:appinfo/>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="BIN">
            <xsd:sequence>
               <xsd:element name="reference" type="TEL" minOccurs="0" maxOccurs="1">
                  <xsd:annotation>
                     <xsd:documentation>
A telecommunication address (TEL), such as a URL for HTTP or FTP,
which will resolve to precisely the same binary data that could as
well have been provided as inline data.
</xsd:documentation>
                     <xsd:appinfo/>
                  </xsd:annotation>
               </xsd:element>
               <xsd:element name="thumbnail" minOccurs="0" maxOccurs="1" type="thumbnail"/>
            </xsd:sequence>
            <xsd:attribute name="mediaType" type="cs" use="optional" default="text/plain">
               <xsd:annotation>
                  <xsd:documentation>
Identifies the type of the encapsulated data and identifies a
method to interpret or render the data.
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="language" type="cs" use="optional">
               <xsd:annotation>
                  <xsd:documentation>
For character based information the language property
specifies the human language of the text.
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="compression" type="CompressionAlgorithm" use="optional">
               <xsd:annotation>
                  <xsd:documentation>
Indicates whether the raw byte data is compressed, and what
compression algorithm was used.
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="integrityCheck" type="bin" use="optional">
               <xsd:annotation>
                  <xsd:documentation>
The integrity check is a short binary value representing a
cryptographically strong checksum that is calculated over the binary
data. The purpose of this property, when communicated with a reference
is for anyone to validate later whether the reference still resolved
to the same data that the reference resolved to when the encapsulated
data value with reference was created.
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="integrityCheckAlgorithm" type="IntegrityCheckAlgorithm" use="optional" default="SHA-1">
               <xsd:annotation>
                  <xsd:documentation>
Specifies the algorithm used to compute the integrityCheck value.
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:complexType name="thumbnail">
      <xsd:annotation>
         <xsd:documentation>
A thumbnail is an abbreviated rendition of the full data. A thumbnail
requires significantly fewer resources than the full data, while still
maintaining some distinctive similarity with the full data. A
thumbnail is typically used with by-reference encapsulated data. It
allows a user to select data more efficiently before actually
downloading through the reference.
</xsd:documentation>
         <xsd:appinfo/>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:restriction base="ED">
            <xsd:sequence>
               <xsd:element name="reference" type="TEL" minOccurs="0" maxOccurs="1"/>
               <xsd:element name="thumbnail" type="thumbnail" minOccurs="0" maxOccurs="0"/>
            </xsd:sequence>
         </xsd:restriction>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:simpleType name="st">
      <xsd:annotation>
         <xsd:documentation>
The character string data type stands for text data, primarily
intended for machine processing (e.g., sorting, querying, indexing,
etc.) Used for names, symbols, and formal expressions.
</xsd:documentation>
         <xsd:appinfo/>
      </xsd:annotation>
      <xsd:restriction base="xsd:string">
         <xsd:minLength value="1"/>
      </xsd:restriction>
   </xsd:simpleType>
   <xsd:complexType name="ST" mixed="true">
      <xsd:annotation>
         <xsd:documentation>
The character string data type stands for text data, primarily
intended for machine processing (e.g., sorting, querying, indexing,
etc.) Used for names, symbols, and formal expressions.
</xsd:documentation>
         <xsd:appinfo>
            <sch:pattern xmlns:sch="http://www.ascc.net/xml/schematron" name="validate ST">
               <sch:rule abstract="true" id="rule-ST">
                  <sch:report test="(@nullFlavor or text()) and not(@nullFlavor and text())">
                     <p xmlns:hl7="urn:hl7-org:v3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gsd="http://aurora.regenstrief.org/GenericXMLSchema" xmlns:xlink="http://www.w3.org/TR/WD-xlink">Text content is only allowed in non-NULL values.</p>
                  </sch:report>
               </sch:rule>
            </sch:pattern>
         </xsd:appinfo>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:restriction base="ED">
            <xsd:sequence>
               <xsd:element name="reference" type="TEL" minOccurs="0" maxOccurs="0"/>
               <xsd:element name="thumbnail" type="ED" minOccurs="0" maxOccurs="0"/>
            </xsd:sequence>
            <xsd:attribute name="representation" type="token_BinaryDataEncoding" fixed="TXT"/>
            <xsd:attribute name="mediaType" type="cs" fixed="text/plain"/>
            <xsd:attribute name="language" type="cs" use="optional"/>
            <xsd:attribute name="compression" type="CompressionAlgorithm" use="prohibited"/>
            <xsd:attribute name="integrityCheck" type="bin" use="prohibited"/>
            <xsd:attribute name="integrityCheckAlgorithm" type="IntegrityCheckAlgorithm" use="prohibited"/>
         </xsd:restriction>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:simpleType name="cs">
      <xsd:annotation>
         <xsd:documentation>
Coded data in its simplest form, consists of a code and original text.
The code system and code system version is fixed by the context in
which the CS value occurs. CS is used for coded attributes that have a
single HL7-defined value set.
</xsd:documentation>
         <xsd:appinfo/>
      </xsd:annotation>
      <xsd:restriction base="xsd:token">
         <xsd:pattern value="[^\s]*"/>
      </xsd:restriction>
   </xsd:simpleType>
   <xsd:complexType name="CD">
      <xsd:annotation>
         <xsd:documentation>
A concept descriptor represents any kind of concept usually by
giving a code defined in a code system. 

A concept descriptor can contain the original text or phrase that
served as the basis of the coding and one or more translations into
different coding systems.

A concept descriptor can also contain qualifiers to describe, e.g., the
concept of a "left foot" as a postcoordinated term built from the
primary code "FOOT" and the qualifier "LEFT".

In exceptional cases, the concept descriptor need not contain a code
but only the original text describing that concept.
</xsd:documentation>
         <xsd:appinfo/>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="ANY">
            <xsd:sequence>
               <xsd:element name="originalText" type="ED" minOccurs="0" maxOccurs="1">
                  <xsd:annotation>
                     <xsd:documentation>
The text or phrase used as the basis for the coding.
</xsd:documentation>
                     <xsd:appinfo/>
                  </xsd:annotation>
               </xsd:element>
               <xsd:element name="qualifier" type="CR" minOccurs="0" maxOccurs="unbounded">
                  <xsd:annotation>
                     <xsd:documentation>
Specifies additional codes that increase the specificity of the 
primary code.
</xsd:documentation>
                     <xsd:appinfo/>
                  </xsd:annotation>
               </xsd:element>
               <xsd:element name="translation" type="CD" minOccurs="0" maxOccurs="unbounded">
                  <xsd:annotation>
                     <xsd:documentation>
A set of other concept descriptors that translate this concept
descriptor into other code systems.
</xsd:documentation>
                     <xsd:appinfo/>
                  </xsd:annotation>
               </xsd:element>
            </xsd:sequence>
            <xsd:attribute name="code" type="cs" use="optional">
               <xsd:annotation>
                  <xsd:documentation>
The plain code symbol defined by the code system. For example,
"784.0" is the code symbol of the ICD-9 code "784.0" for headache.
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="codeSystem" type="uid" use="optional">
               <xsd:annotation>
                  <xsd:documentation>
Specifies the code system that defines the code.
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="codeSystemName" type="st" use="optional">
               <xsd:annotation>
                  <xsd:documentation>
A common name of the coding system.
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="codeSystemVersion" type="st" use="optional">
               <xsd:annotation>
                  <xsd:documentation>
If applicable, a version descriptor defined specifically for the given
code system.
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="displayName" type="st" use="optional">
               <xsd:annotation>
                  <xsd:documentation>
A name or title for the code, under which the sending system shows the
code value to its users.
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType><!-- requires ref='schema-CV'/>
       FIXME: This dependency is cyclic, but it shouldn't hurt.
       Make sure it doesn't hurt. -->
   <xsd:complexType name="CE">
      <xsd:annotation>
         <xsd:documentation>
Coded data, consists of a coded value (CV) and, optionally, coded
value(s) from other coding systems that identify the same
concept. Used when alternative codes may exist.
</xsd:documentation>
         <xsd:appinfo/>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:restriction base="CD">
            <xsd:sequence>
               <xsd:element name="qualifier" type="CR" minOccurs="0" maxOccurs="0"/>
               <xsd:element name="originalText" type="ED" minOccurs="0" maxOccurs="1">
                  <xsd:annotation>
                     <xsd:documentation>
The text or phrase used as the basis for the coding.
</xsd:documentation>
                     <xsd:appinfo/>
                  </xsd:annotation>
               </xsd:element>
               <xsd:element name="translation" type="CD" minOccurs="0" maxOccurs="unbounded">
                  <xsd:annotation>
                     <xsd:documentation>
A set of other concept descriptors that translate this concept
descriptor into other code systems.
</xsd:documentation>
                     <xsd:appinfo/>
                  </xsd:annotation>
               </xsd:element>
            </xsd:sequence>
            <xsd:attribute name="code" type="cs" use="optional">
               <xsd:annotation>
                  <xsd:documentation>
The plain code symbol defined by the code system. For example,
"784.0" is the code symbol of the ICD-9 code "784.0" for headache.
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="codeSystem" type="uid" use="optional">
               <xsd:annotation>
                  <xsd:documentation>
Specifies the code system that defines the code.
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="codeSystemName" type="st" use="optional">
               <xsd:annotation>
                  <xsd:documentation>
A common name of the coding system.
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="codeSystemVersion" type="st" use="optional">
               <xsd:annotation>
                  <xsd:documentation>
If applicable, a version descriptor defined specifically for the given
code system.
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="displayName" type="st" use="optional">
               <xsd:annotation>
                  <xsd:documentation>
A name or title for the code, under which the sending system shows the
code value to its users.
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
         </xsd:restriction>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:complexType name="CV">
      <xsd:annotation>
         <xsd:documentation>
Coded data, consists of a code, display name, code system, and
original text. Used when a single code value must be sent.
</xsd:documentation>
         <xsd:appinfo/>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:restriction base="CE">
            <xsd:sequence>
               <xsd:element name="originalText" type="ED" minOccurs="0" maxOccurs="1">
                  <xsd:annotation>
                     <xsd:documentation>
The text or phrase used as the basis for the coding.
</xsd:documentation>
                     <xsd:appinfo/>
                  </xsd:annotation>
               </xsd:element>
               <xsd:element name="translation" type="CD" minOccurs="0" maxOccurs="0"/>
            </xsd:sequence>
            <xsd:attribute name="code" type="cs" use="optional">
               <xsd:annotation>
                  <xsd:documentation>
The plain code symbol defined by the code system. For example,
"784.0" is the code symbol of the ICD-9 code "784.0" for headache.
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="codeSystem" type="uid" use="optional">
               <xsd:annotation>
                  <xsd:documentation>
Specifies the code system that defines the code.
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="codeSystemName" type="st" use="optional">
               <xsd:annotation>
                  <xsd:documentation>
A common name of the coding system.
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="codeSystemVersion" type="st" use="optional">
               <xsd:annotation>
                  <xsd:documentation>
If applicable, a version descriptor defined specifically for the given
code system.
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="displayName" type="st" use="optional">
               <xsd:annotation>
                  <xsd:documentation>
A name or title for the code, under which the sending system shows the
code value to its users.
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
         </xsd:restriction>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:complexType name="CS">
      <xsd:annotation>
         <xsd:documentation>
Coded data, consists of a code, display name, code system, and
original text. Used when a single code value must be sent.
</xsd:documentation>
         <xsd:appinfo/>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:restriction base="CV">
            <xsd:sequence/>
            <xsd:attribute name="code" type="cs" use="optional">
               <xsd:annotation>
                  <xsd:documentation>
The plain code symbol defined by the code system. For example,
"784.0" is the code symbol of the ICD-9 code "784.0" for headache.
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="codeSystem" type="uid"/>
            <xsd:attribute name="codeSystemName" type="st"/>
            <xsd:attribute name="codeSystemVersion" type="st"/>
            <xsd:attribute name="displayName" type="st" use="prohibited"/>
         </xsd:restriction>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:complexType name="CO">
      <xsd:annotation>
         <xsd:documentation>
Coded data, where the domain from which the codeset comes is ordered. The
Coded Ordinal data type adds semantics related to ordering so that models
that make use of such domains may introduce model elements that involve
statements about the order of the terms in a domain. The representation is
exactly the same as CV, but the type still needs to be defined.
</xsd:documentation>
         <xsd:appinfo/>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="CV"/>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:complexType name="CR">
      <xsd:annotation>
         <xsd:documentation>
A concept qualifier code with optionally named role.  Both qualifier
role and value codes must be defined by the coding system.  For
example, if SNOMED RT defines a concept "leg", a role relation
"has-laterality", and another concept "left", the concept role
relation allows to add the qualifier "has-laterality: left" to a
primary code "leg" to construct the meaning "left leg".
</xsd:documentation>
         <xsd:appinfo>
            <sch:pattern xmlns:sch="http://www.ascc.net/xml/schematron" name="validate CR">
               <sch:rule abstract="true" id="rule-CR">
                  <sch:report test="(value or @nullFlavor) and not(@nullFlavor and node())">
                     <p xmlns:hl7="urn:hl7-org:v3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gsd="http://aurora.regenstrief.org/GenericXMLSchema" xmlns:xlink="http://www.w3.org/TR/WD-xlink">A value component is required or else the code role is NULL.</p>
                  </sch:report>
               </sch:rule>
            </sch:pattern>
         </xsd:appinfo>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="CD">
            <xsd:sequence>
               <xsd:element name="name" type="CV" minOccurs="0" maxOccurs="1">
                  <xsd:annotation>
                     <xsd:documentation>
Specifies the manner in which the concept role value contributes to
the meaning of a code phrase.  For example, if SNOMED RT defines a
concept "leg", a role relation "has-laterality", and another concept
"left", the concept role relation allows to add the qualifier
"has-laterality: left" to a primary code "leg" to construct the
meaning "left leg".  In this example "has-laterality" is the CR.name.
</xsd:documentation>
                     <xsd:appinfo/>
                  </xsd:annotation>
               </xsd:element>
               <xsd:element name="value" type="CD" minOccurs="0" maxOccurs="1">
                  <xsd:annotation>
                     <xsd:documentation>
The concept that modifies the primary code of a code phrase through
the role relation.  For example, if SNOMED RT defines a concept "leg",
a role relation "has-laterality", and another concept "left", the
concept role relation allows adding the qualifier "has-laterality:
left" to a primary code "leg" to construct the meaning "left leg".  In
this example "left" is the CR.value.
</xsd:documentation>
                     <xsd:appinfo/>
                  </xsd:annotation>
               </xsd:element>
            </xsd:sequence>
            <xsd:attribute name="inverted" type="bl" use="optional" default="false">
               <xsd:annotation>
                  <xsd:documentation>
Indicates if the sense of the role name is inverted.  This can be used
in cases where the underlying code system defines inversion but does
not provide reciprocal pairs of role names. By default, inverted is
false.
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:complexType name="SC" mixed="true">
      <xsd:annotation>
         <xsd:documentation>
A Character String that optionally
may have a code attached. The text must always be present if a code is
present. The code is often a local code.
  </xsd:documentation>
         <xsd:appinfo/>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="ST">
            <xsd:attribute name="code" type="cs" use="optional">
               <xsd:annotation>
                  <xsd:documentation>
The plain code symbol defined by the code system. For example,
"784.0" is the code symbol of the ICD-9 code "784.0" for headache.
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="codeSystem" type="uid" use="optional">
               <xsd:annotation>
                  <xsd:documentation>
Specifies the code system that defines the code.
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="codeSystemName" type="st" use="optional">
               <xsd:annotation>
                  <xsd:documentation>
A common name of the coding system.
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="codeSystemVersion" type="st" use="optional">
               <xsd:annotation>
                  <xsd:documentation>
If applicable, a version descriptor defined specifically for the given
code system.
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="displayName" type="st" use="optional">
               <xsd:annotation>
                  <xsd:documentation>
A name or title for the code, under which the sending system shows the
code value to its users.
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:simpleType name="uid">
      <xsd:annotation>
         <xsd:documentation/>
         <xsd:appinfo/>
      </xsd:annotation>
      <xsd:union memberTypes="oid uuid ruid"/>
   </xsd:simpleType>
   <xsd:simpleType name="oid">
      <xsd:annotation>
         <xsd:documentation/>
         <xsd:appinfo/>
      </xsd:annotation>
      <xsd:restriction base="xsd:string">
         <xsd:pattern value="([1-9][0-9]*)(\.[1-9][0-9]*)*"/>
      </xsd:restriction>
   </xsd:simpleType>
   <xsd:simpleType name="uuid">
      <xsd:annotation>
         <xsd:documentation/>
         <xsd:appinfo/>
      </xsd:annotation>
      <xsd:restriction base="xsd:string">
         <xsd:pattern value="[0-9a-zA-Z]{8}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{12}"/>
      </xsd:restriction>
   </xsd:simpleType>
   <xsd:simpleType name="ruid">
      <xsd:annotation>
         <xsd:documentation/>
         <xsd:appinfo/>
      </xsd:annotation>
      <xsd:restriction base="xsd:string">
         <xsd:pattern value="[A-Za-z][A-Za-z0-9\-]*"/>
      </xsd:restriction>
   </xsd:simpleType>
   <xsd:complexType name="II">
      <xsd:annotation>
         <xsd:documentation>
An identifier that uniquely identifies a thing or object. Examples
are object identifier for HL7 RIM objects, medical record number,
order id, service catalog item id, Vehicle Identification Number
(VIN), etc. Instance identifiers are defined based on ISO object
identifiers.
</xsd:documentation>
         <xsd:appinfo>
            <sch:pattern xmlns:sch="http://www.ascc.net/xml/schematron" name="validate II">
               <sch:rule abstract="true" id="rule-II">
                  <sch:report test="(@root or @nullFlavor) and not(@root and @nullFlavor)">
A root component is required or else the II value is NULL.
</sch:report>
               </sch:rule>
            </sch:pattern>
         </xsd:appinfo>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="ANY">
            <xsd:attribute name="root" type="uid" use="optional">
               <xsd:annotation>
                  <xsd:documentation>
A unique identifier that guarantees the global uniqueness of the
instance identifier. The root alone may be the entire instance
identifier.
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="extension" type="st" use="optional">
               <xsd:annotation>
                  <xsd:documentation>
A character string as a unique identifier within the scope of the
identifier root.
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="assigningAuthorityName" type="st" use="optional">
               <xsd:annotation>
                  <xsd:documentation>
A human readable name or mnemonic for the assigning authority. This
name may be provided solely for the convenience of unaided humans
interpreting an II value and can have no computational meaning.

Note: no automated processing must depend on the assigning authority
name to be present in any form.
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="displayable" type="bl" use="optional">
               <xsd:annotation>
                  <xsd:documentation>
Specifies if the identifier is intended for human
display and data entry (displayable = true) as opposed to pure machine
interoperation (displayable = false).
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:simpleType name="url">
      <xsd:annotation>
         <xsd:documentation>
A telecommunications address  specified according to Internet standard
RFC 1738  [http://www.ietf.org/rfc/rfc1738.txt]. The
URL  specifies the  protocol and  the  contact point  defined by  that
protocol  for  the resource.  Notable  uses  of the  telecommunication
address  data  type are  for  telephone  and  telefax numbers,  e-mail
addresses, Hypertext references, FTP references, etc.
</xsd:documentation>
         <xsd:appinfo/>
      </xsd:annotation>
      <xsd:restriction base="xsd:anyURI"/>
   </xsd:simpleType>
   <xsd:complexType name="URL">
      <xsd:annotation>
         <xsd:documentation>
A telecommunications address  specified according to Internet standard
RFC 1738  [http://www.ietf.org/rfc/rfc1738.txt]. The
URL  specifies the  protocol and  the  contact point  defined by  that
protocol  for  the resource.  Notable  uses  of the  telecommunication
address  data  type are  for  telephone  and  telefax numbers,  e-mail
addresses, Hypertext references, FTP references, etc.
</xsd:documentation>
         <xsd:appinfo>
            <sch:pattern xmlns:sch="http://www.ascc.net/xml/schematron" name="validate URL">
               <sch:rule abstract="true" id="rule-URL">
                  <sch:report test="(@nullFlavor or @value) and not(@nullFlavor and @value)">
                     <p xmlns:hl7="urn:hl7-org:v3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gsd="http://aurora.regenstrief.org/GenericXMLSchema" xmlns:xlink="http://www.w3.org/TR/WD-xlink">
Although the use of the value is optional, the
constraint (expressed as an XPath predicate), specifies that there
must be either an value or the 
 attribute, but not both.
</p>
                  </sch:report>
               </sch:rule>
            </sch:pattern>
         </xsd:appinfo>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="ANY">
            <xsd:attribute name="value" type="url" use="optional"/>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:simpleType name="ts">
      <xsd:annotation>
         <xsd:documentation>
A quantity specifying a point on the axis of natural time. A point
in time is most often represented as a calendar expression.
</xsd:documentation>
         <xsd:appinfo/>
      </xsd:annotation>
      <xsd:restriction base="xsd:string">
         <xsd:pattern value="[0-9]{1,8}|([0-9]{9,14}|[0-9]{14,14}\.[0-9]+)([+\-][0-9]{1,4})?"/>
      </xsd:restriction>
   </xsd:simpleType>
   <xsd:complexType name="TS">
      <xsd:annotation>
         <xsd:documentation>
A quantity specifying a point on the axis of natural time. A point
in time is most often represented as a calendar expression.
</xsd:documentation>
         <xsd:appinfo>
            <diff>PQ</diff>
         </xsd:appinfo>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="QTY">
            <xsd:attribute name="value" use="optional" type="ts"/>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:complexType name="TEL">
      <xsd:annotation>
         <xsd:documentation>
A telephone number (voice or fax), e-mail address, or other locator
for a resource (information or service) mediated by telecommunication
equipment. The address is specified as a Universal Resource Locator
(URL) qualified by time specification and use codes that help in
deciding which address to use for a given time and purpose.
</xsd:documentation>
         <xsd:appinfo/>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="URL">
            <xsd:sequence>
               <xsd:element name="useablePeriod" minOccurs="0" maxOccurs="unbounded" type="SXCM_TS">
                  <xsd:annotation>
                     <xsd:documentation>
Specifies the periods of time during which the telecommunication
address can be used.  For a telephone number, this can indicate the
time of day in which the party can be reached on that telephone.  For
a web address, it may specify a time range in which the web content is
promised to be available under the given address.
</xsd:documentation>
                     <xsd:appinfo/>
                  </xsd:annotation><!-- FIXME: one would expect the name "GTS" here but it's not
          SXCM does ALL the right things, it's just not the right NAME. -->
               </xsd:element>
            </xsd:sequence>
            <xsd:attribute name="use" use="optional" type="set_TelecommunicationAddressUse">
               <xsd:annotation>
                  <xsd:documentation>
One or more codes advising a system or user which telecommunication
address in a set of like addresses to select for a given
telecommunication need.
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:complexType name="ADXP" mixed="true">
      <xsd:annotation>
         <xsd:documentation>
A character string that may have a type-tag signifying its role in the
address. Typical parts that exist in about every address are street,
house number, or post box, postal code, city, country but other roles
may be defined regionally, nationally, or on an enterprise level
(e.g. in military addresses). Addresses are usually broken up into
lines, which are indicated by special line-breaking delimiter elements 
(e.g., DEL).
</xsd:documentation>
         <xsd:appinfo/>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="ST">
            <xsd:attribute name="partType" type="AddressPartType">
               <xsd:annotation>
                  <xsd:documentation>
Specifies whether an address part names the street, city, country,
postal code, post box, etc. If the type is NULL the address part is
unclassified and would simply appear on an address label as is.
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:complexType name="AD" mixed="true">
      <xsd:annotation>
         <xsd:documentation>
Mailing and home or office addresses. A sequence of address parts,
such as street or post office Box, city, postal code, country, etc.
</xsd:documentation>
         <xsd:appinfo/>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="ANY">
            <xsd:sequence>
               <xsd:choice minOccurs="0" maxOccurs="unbounded"><!-- This was supposed to be the generic part. The formally
               correct schema way of doing that would involve defining
               all the special part elements as substitution group
               members for part. But that entails global elements
               is unsafe scoping. So, we don't get into that here.
               
               xsd:element name='part' type='ADXP'/ -->
                  <xsd:element name="delimiter">
                     <xsd:complexType mixed="true">
                        <xsd:complexContent>
                           <xsd:restriction base="ADXP">
                              <xsd:attribute name="partType" type="AddressPartType" fixed="DEL"/>
                           </xsd:restriction>
                        </xsd:complexContent>
                     </xsd:complexType>
                  </xsd:element>
                  <xsd:element name="country">
                     <xsd:complexType mixed="true">
                        <xsd:complexContent>
                           <xsd:restriction base="ADXP">
                              <xsd:attribute name="partType" type="AddressPartType" fixed="CNT"/>
                           </xsd:restriction>
                        </xsd:complexContent>
                     </xsd:complexType>
                  </xsd:element>
                  <xsd:element name="state">
                     <xsd:complexType mixed="true">
                        <xsd:complexContent>
                           <xsd:restriction base="ADXP">
                              <xsd:attribute name="partType" type="AddressPartType" fixed="STA"/>
                           </xsd:restriction>
                        </xsd:complexContent>
                     </xsd:complexType>
                  </xsd:element>
                  <xsd:element name="county">
                     <xsd:complexType mixed="true">
                        <xsd:complexContent>
                           <xsd:restriction base="ADXP">
                              <xsd:attribute name="partType" type="AddressPartType" fixed="CPA"/>
                           </xsd:restriction>
                        </xsd:complexContent>
                     </xsd:complexType>
                  </xsd:element>
                  <xsd:element name="city">
                     <xsd:complexType mixed="true">
                        <xsd:complexContent>
                           <xsd:restriction base="ADXP">
                              <xsd:attribute name="partType" type="AddressPartType" fixed="CTY"/>
                           </xsd:restriction>
                        </xsd:complexContent>
                     </xsd:complexType>
                  </xsd:element>
                  <xsd:element name="postalCode">
                     <xsd:complexType mixed="true">
                        <xsd:complexContent>
                           <xsd:restriction base="ADXP">
                              <xsd:attribute name="partType" type="AddressPartType" fixed="ZIP"/>
                           </xsd:restriction>
                        </xsd:complexContent>
                     </xsd:complexType>
                  </xsd:element>
                  <xsd:element name="streetAddressLine">
                     <xsd:complexType mixed="true">
                        <xsd:complexContent>
                           <xsd:restriction base="ADXP">
                              <xsd:attribute name="partType" type="AddressPartType" fixed="SAL"/>
                           </xsd:restriction>
                        </xsd:complexContent>
                     </xsd:complexType>
                  </xsd:element>
                  <xsd:element name="houseNumber">
                     <xsd:complexType mixed="true">
                        <xsd:complexContent>
                           <xsd:restriction base="ADXP">
                              <xsd:attribute name="partType" type="AddressPartType" fixed="BNR"/>
                           </xsd:restriction>
                        </xsd:complexContent>
                     </xsd:complexType>
                  </xsd:element>
                  <xsd:element name="houseNumberNumeric">
                     <xsd:complexType mixed="true">
                        <xsd:complexContent>
                           <xsd:restriction base="ADXP">
                              <xsd:attribute name="partType" type="AddressPartType" fixed="BNN"/>
                           </xsd:restriction>
                        </xsd:complexContent>
                     </xsd:complexType>
                  </xsd:element>
                  <xsd:element name="direction">
                     <xsd:complexType mixed="true">
                        <xsd:complexContent>
                           <xsd:restriction base="ADXP">
                              <xsd:attribute name="partType" type="AddressPartType" fixed="DIR"/>
                           </xsd:restriction>
                        </xsd:complexContent>
                     </xsd:complexType>
                  </xsd:element>
                  <xsd:element name="streetName">
                     <xsd:complexType mixed="true">
                        <xsd:complexContent>
                           <xsd:restriction base="ADXP">
                              <xsd:attribute name="partType" type="AddressPartType" fixed="STR"/>
                           </xsd:restriction>
                        </xsd:complexContent>
                     </xsd:complexType>
                  </xsd:element>
                  <xsd:element name="streetNameBase">
                     <xsd:complexType mixed="true">
                        <xsd:complexContent>
                           <xsd:restriction base="ADXP">
                              <xsd:attribute name="partType" type="AddressPartType" fixed="STB"/>
                           </xsd:restriction>
                        </xsd:complexContent>
                     </xsd:complexType>
                  </xsd:element><!--
                jaxb implementors note: the jaxb code generator (v1.0.?) will fail to
                append "Type" to streetNameType so that there will be duplicate
                definitions in the java source for streetNameType.  You will have
                to fix this manually.
              -->
                  <xsd:element name="streetNameType">
                     <xsd:complexType mixed="true">
                        <xsd:complexContent>
                           <xsd:restriction base="ADXP">
                              <xsd:attribute name="partType" type="AddressPartType" fixed="STTYP"/>
                           </xsd:restriction>
                        </xsd:complexContent>
                     </xsd:complexType>
                  </xsd:element>
                  <xsd:element name="additionalLocator">
                     <xsd:complexType mixed="true">
                        <xsd:complexContent>
                           <xsd:restriction base="ADXP">
                              <xsd:attribute name="partType" type="AddressPartType" fixed="ADL"/>
                           </xsd:restriction>
                        </xsd:complexContent>
                     </xsd:complexType>
                  </xsd:element>
                  <xsd:element name="unitID">
                     <xsd:complexType mixed="true">
                        <xsd:complexContent>
                           <xsd:restriction base="ADXP">
                              <xsd:attribute name="partType" type="AddressPartType" fixed="UNID"/>
                           </xsd:restriction>
                        </xsd:complexContent>
                     </xsd:complexType>
                  </xsd:element>
                  <xsd:element name="unitType">
                     <xsd:complexType mixed="true">
                        <xsd:complexContent>
                           <xsd:restriction base="ADXP">
                              <xsd:attribute name="partType" type="AddressPartType" fixed="UNIT"/>
                           </xsd:restriction>
                        </xsd:complexContent>
                     </xsd:complexType>
                  </xsd:element>
                  <xsd:element name="carrier">
                     <xsd:complexType mixed="true">
                        <xsd:complexContent>
                           <xsd:restriction base="ADXP">
                              <xsd:attribute name="partType" type="AddressPartType" fixed="CAR"/>
                           </xsd:restriction>
                        </xsd:complexContent>
                     </xsd:complexType>
                  </xsd:element>
                  <xsd:element name="censusTract"><!-- VOTE: negativ minor: this will not be interoperable because
  there are many census tract definitions. Needs to be coded. This
  should be a location specification (Place class). -->
                     <xsd:complexType mixed="true">
                        <xsd:complexContent>
                           <xsd:restriction base="ADXP">
                              <xsd:attribute name="partType" type="AddressPartType" fixed="CEN"/>
                           </xsd:restriction>
                        </xsd:complexContent>
                     </xsd:complexType>
                  </xsd:element>
               </xsd:choice>
               <xsd:element name="useablePeriod" minOccurs="0" maxOccurs="unbounded" type="SXCM_TS">
                  <xsd:annotation>
                     <xsd:documentation>
A General Timing Specification (GTS) specifying the periods of
time during which the address can be used.  This is used to specify
different addresses for different times of the year or to refer to
historical addresses.
      </xsd:documentation>
                     <xsd:appinfo/>
                  </xsd:annotation><!-- FIXME: one would expect the name "GTS" here but it's not
          SXCM does ALL the right things, it's just not the right NAME. -->
               </xsd:element>
            </xsd:sequence>
            <xsd:attribute name="use" use="optional" type="set_PostalAddressUse">
               <xsd:annotation>
                  <xsd:documentation>
A set of codes advising a system or user which address in a set of
like addresses to select for a given purpose.
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="isNotOrdered" type="bl" use="optional">
               <xsd:annotation>
                  <xsd:documentation>
A boolean value specifying whether the order of the address parts is known
or not. While the address parts are always a Sequence, the order in which
they are presented may or may not be known. Where this matters, the
isNotOrdered property can be used to convey this information.
      </xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:complexType name="ENXP" mixed="true">
      <xsd:annotation>
         <xsd:documentation>
A character string token representing a part of a name. May have a
type code signifying the role of the part in the whole entity name,
and a qualifier code for more detail about the name part type.
Typical name parts for person names are given names, and family names,
titles, etc.
</xsd:documentation>
         <xsd:appinfo/>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="ST">
            <xsd:attribute name="partType" type="EntityNamePartType">
               <xsd:annotation>
                  <xsd:documentation>
Indicates whether the name part is a given name, family name, prefix,
suffix, etc.
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="qualifier" use="optional" type="set_EntityNamePartQualifier">
               <xsd:annotation>
                  <xsd:documentation>
The qualifier is a set of codes each of which specifies a certain
subcategory of the name part in addition to the main name part type.
For example, a given name may be flagged as a nickname, a family name
may be a pseudonym or a name of public records.
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:complexType name="en.delimiter" mixed="true">
      <xsd:complexContent>
         <xsd:restriction base="ENXP">
            <xsd:attribute name="partType" type="EntityNamePartType" fixed="DEL"/>
         </xsd:restriction>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:complexType name="en.family" mixed="true">
      <xsd:complexContent>
         <xsd:restriction base="ENXP">
            <xsd:attribute name="partType" type="EntityNamePartType" fixed="FAM"/>
         </xsd:restriction>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:complexType name="en.given" mixed="true">
      <xsd:complexContent>
         <xsd:restriction base="ENXP">
            <xsd:attribute name="partType" type="EntityNamePartType" fixed="GIV"/>
         </xsd:restriction>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:complexType name="en.prefix" mixed="true">
      <xsd:complexContent>
         <xsd:restriction base="ENXP">
            <xsd:attribute name="partType" type="EntityNamePartType" fixed="PFX"/>
         </xsd:restriction>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:complexType name="en.suffix" mixed="true">
      <xsd:complexContent>
         <xsd:restriction base="ENXP">
            <xsd:attribute name="partType" type="EntityNamePartType" fixed="SFX"/>
         </xsd:restriction>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:complexType name="EN" mixed="true">
      <xsd:annotation>
         <xsd:documentation>
A name for a person, organization, place or thing. A sequence of name
parts, such as given name or family name, prefix, suffix, etc.
Examples for entity name values are "Jim Bob Walton, Jr.", "Health
Level Seven, Inc.", "Lake Tahoe", etc. An entity name may be as simple
as a character string or may consist of several entity name parts,
such as, "Jim", "Bob", "Walton", and "Jr.", "Health Level Seven" and
"Inc.", "Lake" and "Tahoe".
</xsd:documentation>
         <xsd:appinfo/>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="ANY">
            <xsd:sequence>
               <xsd:choice minOccurs="0" maxOccurs="unbounded">
                  <xsd:element name="delimiter" type="en.delimiter"/>
                  <xsd:element name="family" type="en.family"/>
                  <xsd:element name="given" type="en.given"/>
                  <xsd:element name="prefix" type="en.prefix"/>
                  <xsd:element name="suffix" type="en.suffix"/>
               </xsd:choice>
               <xsd:element name="validTime" minOccurs="0" maxOccurs="1" type="IVL_TS">
                  <xsd:annotation>
                     <xsd:documentation>
An interval of time specifying the time during which the name is or
was used for the entity. This accomodates the fact that people change
names for people, places and things.
      </xsd:documentation>
                     <xsd:appinfo/>
                  </xsd:annotation>
               </xsd:element>
            </xsd:sequence>
            <xsd:attribute name="use" use="optional" type="set_EntityNameUse">
               <xsd:annotation>
                  <xsd:documentation>
A set of codes advising a system or user which name in a set of
like names to select for a given purpose.

A name without specific use code might be a default name
useful for any purpose, but a name with a specific use code would
be preferred for that respective purpose.
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:complexType name="PN" mixed="true">
      <xsd:annotation>
         <xsd:documentation>
A name for a person. A sequence of name parts, such as given name or family name, prefix, suffix, etc. PN differs from
EN because the qualifier type cannot include LS (Legal Status).
</xsd:documentation>
         <xsd:appinfo/>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="EN"/>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:complexType name="ON" mixed="true">
      <xsd:annotation>
         <xsd:documentation>
A name for an organization. A sequence of name parts.
</xsd:documentation>
         <xsd:appinfo/>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:restriction base="EN">
            <xsd:sequence>
               <xsd:choice minOccurs="0" maxOccurs="unbounded">
                  <xsd:element name="delimiter" type="en.delimiter"/>
                  <xsd:element name="prefix" type="en.prefix"/>
                  <xsd:element name="suffix" type="en.suffix"/>
               </xsd:choice>
               <xsd:element name="validTime" minOccurs="0" maxOccurs="1" type="IVL_TS">
                  <xsd:annotation>
                     <xsd:documentation>
An interval of time specifying the time during which the name is or
was used for the entity. This accomodates the fact that people change
names for people, places and things.
      </xsd:documentation>
                     <xsd:appinfo/>
                  </xsd:annotation>
               </xsd:element>
            </xsd:sequence>
            <xsd:attribute name="use" use="optional" type="set_EntityNameUse">
               <xsd:annotation>
                  <xsd:documentation>
A set of codes advising a system or user which name in a set of
like names to select for a given purpose.

A name without specific use code might be a default name
useful for any purpose, but a name with a specific use code would
be preferred for that respective purpose.
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
         </xsd:restriction>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:complexType name="TN" mixed="true">
      <xsd:annotation>
         <xsd:documentation>
A restriction of entity name that is effectively a simple string used
for a simple name for things and places.
</xsd:documentation>
         <xsd:appinfo/>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:restriction base="EN"><!-- FIXME: how do I specify that this sequence is constraint
	     to be void? -->
            <xsd:sequence><!-- see note in schema-ED's part element, that's commented
               out for now.

              xsd:choice minOccurs='0' maxOccurs='0'>
                <xsd:element name='part' type='ENXP'/>
              </xsd:choice --></xsd:sequence>
         </xsd:restriction>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:complexType name="QTY" abstract="true">
      <xsd:annotation>
         <xsd:documentation>
The quantity data type is an abstract generalization for all data
types (1) whose value set has an order relation (less-or-equal) and
(2) where difference is defined in all of the data type's totally
ordered value subsets.  The quantity type abstraction is needed in
defining certain other types, such as the interval and the probability
distribution.
</xsd:documentation>
         <xsd:appinfo>
            <diff>QTY</diff>
         </xsd:appinfo>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="ANY"/>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:simpleType name="int">
      <xsd:annotation>
         <xsd:documentation>
Integer numbers (-1,0,1,2, 100, 3398129, etc.) are precise numbers
that are results of counting and enumerating. Integer numbers are
discrete, the set of integers is infinite but countable.  No arbitrary
limit is imposed on the range of integer numbers. Two NULL flavors are
defined for the positive and negative infinity.
</xsd:documentation>
         <xsd:appinfo/>
      </xsd:annotation>
      <xsd:restriction base="xsd:integer"/>
   </xsd:simpleType>
   <xsd:complexType name="INT">
      <xsd:annotation>
         <xsd:documentation>
Integer numbers (-1,0,1,2, 100, 3398129, etc.) are precise numbers
that are results of counting and enumerating. Integer numbers are
discrete, the set of integers is infinite but countable.  No arbitrary
limit is imposed on the range of integer numbers. Two NULL flavors are
defined for the positive and negative infinity.
</xsd:documentation>
         <xsd:appinfo>
            <diff>INT</diff>
            <sch:pattern xmlns:sch="http://www.ascc.net/xml/schematron" name="validate INT">
               <sch:rule abstract="true" id="rule-INT">
                  <sch:report test="(@value or @nullFlavor) and not(@value and @nullFlavor)">
                     <p xmlns:hl7="urn:hl7-org:v3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gsd="http://aurora.regenstrief.org/GenericXMLSchema" xmlns:xlink="http://www.w3.org/TR/WD-xlink">
Although the use of the value is optional, the constraint
(expressed as an XPath predicate), specifies that there must be either
an value or the , but
not both.
</p>
                  </sch:report>
               </sch:rule>
            </sch:pattern>
         </xsd:appinfo>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="QTY">
            <xsd:attribute name="value" use="optional" type="int"/>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:simpleType name="real">
      <xsd:annotation>
         <xsd:documentation>
Fractional numbers. Typically used whenever quantities are measured,
estimated, or computed from other real numbers.  The typical
representation is decimal, where the number of significant decimal
digits is known as the precision.

Real numbers are needed beyond integers whenever quantities of the
real world are measured, estimated, or computed from other real
numbers. The term "Real number" in this specification is used to mean
that fractional values are covered without necessarily implying the
full set of the mathematical real numbers.
</xsd:documentation>
         <xsd:appinfo/>
      </xsd:annotation>
      <xsd:union memberTypes="xsd:decimal xsd:double"/>
   </xsd:simpleType>
   <xsd:complexType name="REAL">
      <xsd:annotation>
         <xsd:documentation>
Fractional numbers. Typically used whenever quantities are measured,
estimated, or computed from other real numbers.  The typical
representation is decimal, where the number of significant decimal
digits is known as the precision.

Real numbers are needed beyond integers whenever quantities of the
real world are measured, estimated, or computed from other real
numbers. The term "Real number" in this specification is used to mean
that fractional values are covered without necessarily implying the
full set of the mathematical real numbers.
</xsd:documentation>
         <xsd:appinfo>
            <diff>REAL</diff>
            <sch:pattern xmlns:sch="http://www.ascc.net/xml/schematron" name="validate REAL">
               <sch:rule abstract="true" id="rule-REAL">
                  <sch:report test="(@nullFlavor or @value) and not(@nullFlavor and @value)">
                     <p xmlns:hl7="urn:hl7-org:v3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gsd="http://aurora.regenstrief.org/GenericXMLSchema" xmlns:xlink="http://www.w3.org/TR/WD-xlink">
Although the use of the value is optional, the
constraint (expressed as an XPath predicate), specifies that there
must be either a value or the 
, but not both.
</p>
                  </sch:report>
               </sch:rule>
            </sch:pattern>
         </xsd:appinfo>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="QTY">
            <xsd:attribute name="value" use="optional" type="real"/>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:complexType name="PQR">
      <xsd:annotation>
         <xsd:documentation>
A representation of a physical quantity in a unit from any code
system. Used to show alternative representation for a physical
quantity.
</xsd:documentation>
         <xsd:appinfo/>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="CV">
            <xsd:attribute name="value" type="real" use="optional">
               <xsd:annotation>
                  <xsd:documentation>
The magnitude of the measurement value in terms of the unit
specified in the code.
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:complexType name="PQ">
      <xsd:annotation>
         <xsd:documentation>
A dimensioned quantity expressing the result of a measurement act.
  </xsd:documentation>
         <xsd:appinfo>
            <diff>PQ</diff>
         </xsd:appinfo>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="QTY">
            <xsd:sequence>
               <xsd:element name="translation" type="PQR" minOccurs="0" maxOccurs="unbounded">
                  <xsd:annotation>
                     <xsd:documentation>
An alternative representation of the same physical quantity expressed
in a different unit, of a different unit code system and possibly with
a different value.
</xsd:documentation>
                     <xsd:appinfo/>
                  </xsd:annotation>
               </xsd:element>
            </xsd:sequence>
            <xsd:attribute name="value" type="real" use="optional">
               <xsd:annotation>
                  <xsd:documentation>
The magnitude of the quantity measured in terms of the unit.
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="unit" type="cs" use="optional" default="1">
               <xsd:annotation>
                  <xsd:documentation>
The unit of measure specified in the Unified Code for Units of Measure
(UCUM) [http://aurora.rg.iupui.edu/UCUM].
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:complexType name="MO">
      <xsd:annotation>
         <xsd:documentation>
A monetary amount is a quantity expressing the amount of money in some
currency. Currencies are the units in which monetary amounts are
denominated in different economic regions. While the monetary amount
is a single kind of quantity (money) the exchange rates between the
different units are variable.  This is the principle difference
between physical quantity and monetary amounts, and the reason why
currency units are not physical units.
</xsd:documentation>
         <xsd:appinfo>
            <diff>MO</diff>
            <sch:pattern xmlns:sch="http://www.ascc.net/xml/schematron" name="validate MO">
               <sch:rule abstract="true" id="rule-MO">
                  <sch:report test="not(@nullFlavor and (@value or @currency))"/>
               </sch:rule>
            </sch:pattern>
         </xsd:appinfo>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="QTY">
            <xsd:attribute name="value" type="real" use="optional">
               <xsd:annotation>
                  <xsd:documentation>
The magnitude of the monetary amount in terms of the currency unit.
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="currency" type="cs" use="optional">
               <xsd:annotation>
                  <xsd:documentation>
The currency unit as defined in ISO 4217.
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:complexType name="RTO">
      <xsd:annotation>
         <xsd:documentation>
A quantity constructed as the quotient of a numerator quantity divided
by a denominator quantity. Common factors in the numerator and
denominator are not automatically cancelled out.  The  data
type supports titers (e.g., "1:128") and other quantities produced by
laboratories that truly represent ratios. Ratios are not simply
"structured numerics", particularly blood pressure measurements
(e.g. "120/60") are not ratios. In many cases the 
REAL should be used instead of the 
.
  </xsd:documentation>
         <xsd:appinfo/>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="RTO_QTY_QTY"/>
      </xsd:complexContent>
   </xsd:complexType><!--            <xsd:annotation>
              <xsd:appinfo>
                <sch:pattern name="validate IVL_TS">
                  <sch:rule abstract="true" id="rule-IVL_TS">
                    <sch:report test="count(child::low|child::high|child::mid|child::width)&gt;2">
                      <p>No more than two of the four components (low, high, mid, width) may be popluated at one time</p>
                    </sch:report>
                  </sch:rule>
                </sch:pattern>
              </xsd:appinfo>
            </xsd:annotation> -->
    <!--
      Instantiated templates
    --><xsd:complexType name="SXCM_TS">
      <xsd:complexContent>
         <xsd:extension base="TS">
            <xsd:attribute name="operator" type="SetOperator" use="optional" default="I">
               <xsd:annotation>
                  <xsd:documentation>
A code specifying whether the set component is included (union) or
excluded (set-difference) from the set, or other set operations with
the current set component and the set as constructed from the
representation stream up to the current point.
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:simpleType name="set_TelecommunicationAddressUse">
      <xsd:list itemType="TelecommunicationAddressUse"/>
   </xsd:simpleType>
   <xsd:simpleType name="set_PostalAddressUse">
      <xsd:list itemType="PostalAddressUse"/>
   </xsd:simpleType>
   <xsd:simpleType name="set_EntityNamePartQualifier">
      <xsd:list itemType="EntityNamePartQualifier"/>
   </xsd:simpleType>
   <xsd:complexType name="IVL_TS">
      <xsd:complexContent>
         <xsd:extension base="SXCM_TS">
            <xsd:choice minOccurs="0">
               <xsd:sequence>
                  <xsd:element name="low" minOccurs="1" maxOccurs="1" type="IVXB_TS">
                     <xsd:annotation>
                        <xsd:documentation>
The low limit of the interval.
</xsd:documentation>
                        <xsd:appinfo/>
                     </xsd:annotation>
                  </xsd:element>
                  <xsd:choice minOccurs="0">
                     <xsd:element name="width" minOccurs="0" maxOccurs="1" type="PQ">
                        <xsd:annotation>
                           <xsd:documentation>
The difference between high and low boundary. The purpose of
distinguishing a width property is to handle all cases of incomplete
information symmetrically. In any interval representation only two of
the three properties high, low, and width need to be stated and the
third can be derived.
</xsd:documentation>
                           <xsd:appinfo/>
                        </xsd:annotation>
                     </xsd:element>
                     <xsd:element name="high" minOccurs="0" maxOccurs="1" type="IVXB_TS">
                        <xsd:annotation>
                           <xsd:documentation>
The high limit of the interval.
</xsd:documentation>
                           <xsd:appinfo/>
                        </xsd:annotation>
                     </xsd:element>
                  </xsd:choice>
               </xsd:sequence>
               <xsd:element name="high" minOccurs="1" maxOccurs="1" type="IVXB_TS">
                  <xsd:annotation>
                     <xsd:documentation/>
                     <xsd:appinfo/>
                  </xsd:annotation>
               </xsd:element>
               <xsd:sequence>
                  <xsd:element name="width" minOccurs="1" maxOccurs="1" type="PQ">
                     <xsd:annotation>
                        <xsd:documentation>
The difference between high and low boundary. The purpose of
distinguishing a width property is to handle all cases of incomplete
information symmetrically. In any interval representation only two of
the three properties high, low, and width need to be stated and the
third can be derived.
</xsd:documentation>
                        <xsd:appinfo/>
                     </xsd:annotation>
                  </xsd:element>
                  <xsd:element name="high" minOccurs="0" maxOccurs="1" type="IVXB_TS">
                     <xsd:annotation>
                        <xsd:documentation>
The high limit of the interval.
</xsd:documentation>
                        <xsd:appinfo/>
                     </xsd:annotation>
                  </xsd:element>
               </xsd:sequence>
               <xsd:sequence>
                  <xsd:element name="center" minOccurs="1" maxOccurs="1" type="TS">
                     <xsd:annotation>
                        <xsd:documentation>
The arithmetic mean of the interval (low plus high divided by 2). The
purpose of distinguishing the center as a semantic property is for
conversions of intervals from and to point values.
</xsd:documentation>
                        <xsd:appinfo/>
                     </xsd:annotation>
                  </xsd:element>
                  <xsd:element name="width" minOccurs="0" maxOccurs="1" type="PQ">
                     <xsd:annotation>
                        <xsd:documentation>
The difference between high and low boundary. The purpose of
distinguishing a width property is to handle all cases of incomplete
information symmetrically. In any interval representation only two of
the three properties high, low, and width need to be stated and the
third can be derived.
</xsd:documentation>
                        <xsd:appinfo/>
                     </xsd:annotation>
                  </xsd:element>
               </xsd:sequence>
            </xsd:choice>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:complexType name="IVXB_TS">
      <xsd:complexContent>
         <xsd:extension base="TS">
            <xsd:attribute name="inclusive" type="bl" use="optional" default="true">
               <xsd:annotation>
                  <xsd:documentation>
Specifies whether the limit is included in the interval
(interval is closed) or excluded from the interval (interval is open).
</xsd:documentation>
                  <xsd:appinfo/>
               </xsd:annotation>
            </xsd:attribute>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:simpleType name="set_EntityNameUse">
      <xsd:list itemType="EntityNameUse"/>
   </xsd:simpleType>
   <xsd:complexType name="RTO_QTY_QTY">
      <xsd:annotation>
         <xsd:appinfo>
            <diff>RTO_QTY_QTY</diff>
         </xsd:appinfo>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="QTY">
            <xsd:sequence>
               <xsd:element name="numerator" type="QTY">
                  <xsd:annotation>
                     <xsd:documentation>
The quantity that is being divided in the ratio.  The default is the
integer number 1 (one.)
</xsd:documentation>
                     <xsd:appinfo/>
                  </xsd:annotation>
               </xsd:element>
               <xsd:element name="denominator" type="QTY">
                  <xsd:annotation>
                     <xsd:documentation>
The quantity that devides the numerator in the ratio.  The default is
the integer number 1 (one.)  The denominator must not be zero.
</xsd:documentation>
                     <xsd:appinfo/>
                  </xsd:annotation>
               </xsd:element>
            </xsd:sequence>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
</xsd:schema>
