<?xml version="1.0" encoding="UTF-8"?>
<!-- 
 * #%L
 * org.hl7.fhir.r5
 * %%
 * Copyright (C) 2014 - 2019 Health Level 7
 * %%
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * #L%
 */

/*
  Copyright (c) 2011+, HL7, Inc.
  All rights reserved.
  
  Redistribution and use in source and binary forms, with or without modification, 
  are permitted provided that the following conditions are met:
  
   * Redistributions of source code must retain the above copyright notice, this 
     list of conditions and the following disclaimer.
   * 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.
   * Neither the name of HL7 nor the names of its contributors may be used to 
     endorse or promote products derived from this software without specific 
     prior written permission.
  
  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT HOLDER 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 on Tue, Mar 31, 2026 18:55+0000 for FHIR v6.0.0-ballot4 

  Note: the schemas &amp; schematrons do not contain all of the rules about what makes resources
  valid. Implementers will still need to be familiar with the content of the specification and with
  any profiles that apply to the resources in order to make a conformant implementation.

-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://hl7.org/fhir" xmlns:xhtml="http://www.w3.org/1999/xhtml" targetNamespace="http://hl7.org/fhir" elementFormDefault="qualified" version="1.0">
  <xs:include schemaLocation="fhir-base.xsd"/>
  <xs:element name="StructureMap" type="StructureMap">
    <xs:annotation>
      <xs:documentation xml:lang="en">A Map of relationships between 2 structures that can be used to transform data.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="StructureMap">
    <xs:annotation>
      <xs:documentation xml:lang="en">A Map of relationships between 2 structures that can be used to transform data.</xs:documentation>
      <xs:documentation xml:lang="en">If the element is present, it must have either a @value, an @id, or extensions</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="CanonicalResource">
        <xs:sequence>
          <xs:element name="url" minOccurs="1" maxOccurs="1" type="uri">
            <xs:annotation>
              <xs:documentation xml:lang="en">An absolute URI that is used to identify this structure map when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which an authoritative instance of this structure map is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the structure map is stored on different servers.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="identifier" minOccurs="0" maxOccurs="unbounded" type="Identifier">
            <xs:annotation>
              <xs:documentation xml:lang="en">A formal identifier that is used to identify this structure map when it is represented in other formats, or referenced in a specification, model, design or an instance.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="version" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">The identifier that is used to identify this version of the structure map when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the structure map author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:choice minOccurs="0" maxOccurs="1" >
            <xs:annotation>
              <xs:documentation xml:lang="en">Indicates the mechanism used to compare versions to determine which is more current.</xs:documentation>
            </xs:annotation>
            <xs:element name="versionAlgorithmString" type="string"/>
            <xs:element name="versionAlgorithmCoding" type="Coding"/>
          </xs:choice>
          <xs:element name="name" minOccurs="1" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">A natural language name identifying the structure map. This name should be usable as an identifier for the module by machine processing applications such as code generation.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="title" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">A short, descriptive, user-friendly title for the structure map.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="status" minOccurs="1" maxOccurs="1" type="PublicationStatus">
            <xs:annotation>
              <xs:documentation xml:lang="en">The status of this structure map. Enables tracking the life-cycle of the content.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="experimental" minOccurs="0" maxOccurs="1" type="boolean">
            <xs:annotation>
              <xs:documentation xml:lang="en">A Boolean value to indicate that this structure map is authored for testing purposes (or education/evaluation/marketing) and no version of this resource will ever be intended for genuine usage.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="date" minOccurs="0" maxOccurs="1" type="dateTime">
            <xs:annotation>
              <xs:documentation xml:lang="en">The date  (and optionally time) when the structure map was last significantly changed. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the structure map changes.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="publisher" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">The name of the organization or individual responsible for the release and ongoing maintenance of the structure map.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="contact" minOccurs="0" maxOccurs="unbounded" type="ContactDetail">
            <xs:annotation>
              <xs:documentation xml:lang="en">Contact details to assist a user in finding and communicating with the publisher.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="description" minOccurs="0" maxOccurs="1" type="markdown">
            <xs:annotation>
              <xs:documentation xml:lang="en">A free text natural language description of the structure map from a consumer's perspective.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="useContext" minOccurs="0" maxOccurs="unbounded" type="UsageContext">
            <xs:annotation>
              <xs:documentation xml:lang="en">The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate structure map instances.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="jurisdiction" minOccurs="0" maxOccurs="unbounded" type="CodeableConcept">
            <xs:annotation>
              <xs:documentation xml:lang="en">A legal or geographic region in which the authority that maintains the resource is operating.  In general, the jurisdiction is also found in the useContext.  The useContext may reference additional jurisdictions because the defining jurisdiction does not necessarily limit the jurisdictions of use.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="purpose" minOccurs="0" maxOccurs="1" type="markdown">
            <xs:annotation>
              <xs:documentation xml:lang="en">Explanation of why this structure map is needed and why it has been designed as it has.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="copyright" minOccurs="0" maxOccurs="1" type="markdown">
            <xs:annotation>
              <xs:documentation xml:lang="en">A copyright statement relating to the structure map and/or its contents. Copyright statements are notices of intellectual property ownership and can include restrictions on the use and publishing of the structure map.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="copyrightLabel" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">A short string (&lt;50 characters), suitable for inclusion in a page footer that identifies the copyright holder, effective period, and optionally whether rights are restricted. (e.g. 'All rights reserved', 'Some rights reserved').</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="structure" type="StructureMap.Structure" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation xml:lang="en">A structure definition used by this map. The structure definition may describe instances that are converted, or the instances that are produced.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="import" minOccurs="0" maxOccurs="unbounded" type="canonical">
            <xs:annotation>
              <xs:documentation xml:lang="en">Other maps used by this map (canonical URLs).</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="const" type="StructureMap.Const" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation xml:lang="en">Definition of a constant value used in the map rules.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="group" type="StructureMap.Group" minOccurs="1" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation xml:lang="en">Organizes the mapping into managable chunks for human review/ease of maintenance.</xs:documentation>
           </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="StructureMap.Structure">
    <xs:annotation>
      <xs:documentation xml:lang="en">A Map of relationships between 2 structures that can be used to transform data.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="BackboneElement">
        <xs:sequence>
          <xs:element name="url" minOccurs="1" maxOccurs="1" type="canonical">
            <xs:annotation>
              <xs:documentation xml:lang="en">The canonical reference to the structure.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="mode" minOccurs="1" maxOccurs="1" type="StructureMapModelMode">
            <xs:annotation>
              <xs:documentation xml:lang="en">How the referenced structure is used in this mapping.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="alias" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">The name used for this type in the map.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="documentation" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">Documentation that describes how the structure is used in the mapping.</xs:documentation>
           </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="StructureMap.Const">
    <xs:annotation>
      <xs:documentation xml:lang="en">A Map of relationships between 2 structures that can be used to transform data.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="BackboneElement">
        <xs:sequence>
          <xs:element name="name" minOccurs="0" maxOccurs="1" type="id">
            <xs:annotation>
              <xs:documentation xml:lang="en">Other maps used by this map (canonical URLs).</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="value" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">A FHIRPath expression that is the value of this variable.</xs:documentation>
           </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="StructureMap.Group">
    <xs:annotation>
      <xs:documentation xml:lang="en">A Map of relationships between 2 structures that can be used to transform data.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="BackboneElement">
        <xs:sequence>
          <xs:element name="name" minOccurs="1" maxOccurs="1" type="id">
            <xs:annotation>
              <xs:documentation xml:lang="en">A unique name for the group for the convenience of human readers.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="extends" minOccurs="0" maxOccurs="1" type="id">
            <xs:annotation>
              <xs:documentation xml:lang="en">Another group that this group adds rules to.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="typeMode" minOccurs="0" maxOccurs="1" type="StructureMapGroupTypeMode">
            <xs:annotation>
              <xs:documentation xml:lang="en">If this is the default rule set to apply for the source type or this combination of types.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="documentation" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">Additional supporting documentation that explains the purpose of the group and the types of mappings within it.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="input" type="StructureMap.Input" minOccurs="1" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation xml:lang="en">A name assigned to an instance of data. The instance must be provided when the mapping is invoked.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="rule" type="StructureMap.Rule" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation xml:lang="en">Transform Rule from source to target.</xs:documentation>
           </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="StructureMap.Input">
    <xs:annotation>
      <xs:documentation xml:lang="en">A Map of relationships between 2 structures that can be used to transform data.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="BackboneElement">
        <xs:sequence>
          <xs:element name="name" minOccurs="1" maxOccurs="1" type="id">
            <xs:annotation>
              <xs:documentation xml:lang="en">Name for this instance of data.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="type" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">Type for this instance of data.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="mode" minOccurs="1" maxOccurs="1" type="StructureMapInputMode">
            <xs:annotation>
              <xs:documentation xml:lang="en">Mode for this instance of data.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="documentation" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">Documentation for this instance of data.</xs:documentation>
           </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="StructureMap.Rule">
    <xs:annotation>
      <xs:documentation xml:lang="en">A Map of relationships between 2 structures that can be used to transform data.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="BackboneElement">
        <xs:sequence>
          <xs:element name="name" minOccurs="0" maxOccurs="1" type="id">
            <xs:annotation>
              <xs:documentation xml:lang="en">Name of the rule for internal references.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="source" type="StructureMap.Source" minOccurs="1" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation xml:lang="en">Source inputs to the mapping.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="target" type="StructureMap.Target" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation xml:lang="en">Content to create because of this mapping rule.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="rule" type="StructureMap.Rule" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation xml:lang="en">Rules contained in this rule.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="dependent" type="StructureMap.Dependent" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation xml:lang="en">Which other rules to apply in the context of this rule.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="documentation" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">Documentation for this instance of data.</xs:documentation>
           </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="StructureMap.Source">
    <xs:annotation>
      <xs:documentation xml:lang="en">A Map of relationships between 2 structures that can be used to transform data.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="BackboneElement">
        <xs:sequence>
          <xs:element name="context" minOccurs="1" maxOccurs="1" type="id">
            <xs:annotation>
              <xs:documentation xml:lang="en">Type or variable this rule applies to.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="min" minOccurs="0" maxOccurs="1" type="unsignedInt">
            <xs:annotation>
              <xs:documentation xml:lang="en">Specified minimum cardinality for the element. This is optional; if present, it acts an implicit check on the input content.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="max" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">Specified maximum cardinality for the element - a number or a &quot;*&quot;. This is optional; if present, it acts an implicit check on the input content (* just serves as documentation; it's the default value).</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="type" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">Specified type for the element. This works as a condition on the mapping - use for polymorphic elements.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="defaultValue" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">A value to use if there is no existing value in the source object.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="element" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">Optional field for this source.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="listMode" minOccurs="0" maxOccurs="1" type="StructureMapSourceListMode">
            <xs:annotation>
              <xs:documentation xml:lang="en">How to handle the list mode for this element.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="variable" minOccurs="0" maxOccurs="1" type="id">
            <xs:annotation>
              <xs:documentation xml:lang="en">Named context for field, if a field is specified.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="condition" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">FHIRPath expression  - must be true or the rule does not apply.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="check" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">FHIRPath expression  - must be true or the mapping engine throws an error instead of completing.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="logMessage" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">A FHIRPath expression which specifies a message to put in the transform log when content matching the source rule is found.</xs:documentation>
           </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="StructureMap.Target">
    <xs:annotation>
      <xs:documentation xml:lang="en">A Map of relationships between 2 structures that can be used to transform data.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="BackboneElement">
        <xs:sequence>
          <xs:element name="context" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">Variable this rule applies to.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="element" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">Field to create in the context.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="variable" minOccurs="0" maxOccurs="1" type="id">
            <xs:annotation>
              <xs:documentation xml:lang="en">Named context for field, if desired, and a field is specified.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="listMode" minOccurs="0" maxOccurs="unbounded" type="StructureMapTargetListMode">
            <xs:annotation>
              <xs:documentation xml:lang="en">If field is a list, how to manage the list.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="listRuleId" minOccurs="0" maxOccurs="1" type="id">
            <xs:annotation>
              <xs:documentation xml:lang="en">Internal rule reference for shared list items.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="transform" minOccurs="0" maxOccurs="1" type="StructureMapTransform">
            <xs:annotation>
              <xs:documentation xml:lang="en">How the data is copied / created.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="parameter" type="StructureMap.Parameter" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation xml:lang="en">Parameters to the transform.</xs:documentation>
           </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="StructureMap.Parameter">
    <xs:annotation>
      <xs:documentation xml:lang="en">A Map of relationships between 2 structures that can be used to transform data.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="BackboneElement">
        <xs:sequence>
          <xs:choice minOccurs="1" maxOccurs="1" >
            <xs:annotation>
              <xs:documentation xml:lang="en">Parameter value - variable or literal.</xs:documentation>
            </xs:annotation>
            <xs:element name="valueId" type="id"/>
            <xs:element name="valueString" type="string"/>
            <xs:element name="valueBoolean" type="boolean"/>
            <xs:element name="valueInteger" type="integer"/>
            <xs:element name="valueDecimal" type="decimal"/>
            <xs:element name="valueDate" type="date"/>
            <xs:element name="valueTime" type="time"/>
            <xs:element name="valueDateTime" type="dateTime"/>
          </xs:choice>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="StructureMap.Dependent">
    <xs:annotation>
      <xs:documentation xml:lang="en">A Map of relationships between 2 structures that can be used to transform data.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="BackboneElement">
        <xs:sequence>
          <xs:element name="name" minOccurs="1" maxOccurs="1" type="id">
            <xs:annotation>
              <xs:documentation xml:lang="en">Name of a rule or group to apply.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="parameter" type="StructureMap.Parameter" minOccurs="1" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation xml:lang="en">Parameter to pass to the rule or group.</xs:documentation>
           </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:simpleType name="StructureMapInputModeEnum">
    <xs:restriction base="code-primitive">
      <xs:enumeration value="source">
        <xs:annotation>
          <xs:documentation xml:lang="en">Source Instance</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="target">
        <xs:annotation>
          <xs:documentation xml:lang="en">Target Instance</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="StructureMapInputMode">
    <xs:annotation>
      <xs:documentation xml:lang="en"></xs:documentation>
      <xs:documentation xml:lang="en">If the element is present, it must have either a @value, an @id, or extensions</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="Element">
        <xs:attribute name="value" type="StructureMapInputModeEnum" use="optional"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:simpleType name="StructureMapTargetListModeEnum">
    <xs:restriction base="code-primitive">
      <xs:enumeration value="first">
        <xs:annotation>
          <xs:documentation xml:lang="en">First</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="share">
        <xs:annotation>
          <xs:documentation xml:lang="en">Share</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="last">
        <xs:annotation>
          <xs:documentation xml:lang="en">Last</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="single">
        <xs:annotation>
          <xs:documentation xml:lang="en">single</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="StructureMapTargetListMode">
    <xs:annotation>
      <xs:documentation xml:lang="en"></xs:documentation>
      <xs:documentation xml:lang="en">If the element is present, it must have either a @value, an @id, or extensions</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="Element">
        <xs:attribute name="value" type="StructureMapTargetListModeEnum" use="optional"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:simpleType name="StructureMapTransformEnum">
    <xs:restriction base="code-primitive">
      <xs:enumeration value="create">
        <xs:annotation>
          <xs:documentation xml:lang="en">create</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="copy">
        <xs:annotation>
          <xs:documentation xml:lang="en">copy</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="truncate">
        <xs:annotation>
          <xs:documentation xml:lang="en">truncate</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="escape">
        <xs:annotation>
          <xs:documentation xml:lang="en">escape</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="cast">
        <xs:annotation>
          <xs:documentation xml:lang="en">cast</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="append">
        <xs:annotation>
          <xs:documentation xml:lang="en">append</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="translate">
        <xs:annotation>
          <xs:documentation xml:lang="en">translate</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="reference">
        <xs:annotation>
          <xs:documentation xml:lang="en">reference</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="dateOp">
        <xs:annotation>
          <xs:documentation xml:lang="en">dateOp</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="uuid">
        <xs:annotation>
          <xs:documentation xml:lang="en">uuid</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="pointer">
        <xs:annotation>
          <xs:documentation xml:lang="en">pointer</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="evaluate">
        <xs:annotation>
          <xs:documentation xml:lang="en">evaluate</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="cc">
        <xs:annotation>
          <xs:documentation xml:lang="en">cc</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="c">
        <xs:annotation>
          <xs:documentation xml:lang="en">c</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="qty">
        <xs:annotation>
          <xs:documentation xml:lang="en">qty</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="id">
        <xs:annotation>
          <xs:documentation xml:lang="en">id</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="cp">
        <xs:annotation>
          <xs:documentation xml:lang="en">cp</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="StructureMapTransform">
    <xs:annotation>
      <xs:documentation xml:lang="en"></xs:documentation>
      <xs:documentation xml:lang="en">If the element is present, it must have either a @value, an @id, or extensions</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="Element">
        <xs:attribute name="value" type="StructureMapTransformEnum" use="optional"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:simpleType name="StructureMapSourceListModeEnum">
    <xs:restriction base="code-primitive">
      <xs:enumeration value="first">
        <xs:annotation>
          <xs:documentation xml:lang="en">First</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="not_first">
        <xs:annotation>
          <xs:documentation xml:lang="en">All but the first</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="last">
        <xs:annotation>
          <xs:documentation xml:lang="en">Last</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="not_last">
        <xs:annotation>
          <xs:documentation xml:lang="en">All but the last</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="only_one">
        <xs:annotation>
          <xs:documentation xml:lang="en">Enforce only one</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="StructureMapSourceListMode">
    <xs:annotation>
      <xs:documentation xml:lang="en"></xs:documentation>
      <xs:documentation xml:lang="en">If the element is present, it must have either a @value, an @id, or extensions</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="Element">
        <xs:attribute name="value" type="StructureMapSourceListModeEnum" use="optional"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:simpleType name="StructureMapGroupTypeModeEnum">
    <xs:restriction base="code-primitive">
      <xs:enumeration value="types">
        <xs:annotation>
          <xs:documentation xml:lang="en">Default for Type Combination</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="type-and-types">
        <xs:annotation>
          <xs:documentation xml:lang="en">Default for type + combination</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="StructureMapGroupTypeMode">
    <xs:annotation>
      <xs:documentation xml:lang="en"></xs:documentation>
      <xs:documentation xml:lang="en">If the element is present, it must have either a @value, an @id, or extensions</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="Element">
        <xs:attribute name="value" type="StructureMapGroupTypeModeEnum" use="optional"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:simpleType name="StructureMapModelModeEnum">
    <xs:restriction base="code-primitive">
      <xs:enumeration value="source">
        <xs:annotation>
          <xs:documentation xml:lang="en">Source Structure Definition</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="queried">
        <xs:annotation>
          <xs:documentation xml:lang="en">Queried Structure Definition</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="target">
        <xs:annotation>
          <xs:documentation xml:lang="en">Target Structure Definition</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="produced">
        <xs:annotation>
          <xs:documentation xml:lang="en">Produced Structure Definition</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="StructureMapModelMode">
    <xs:annotation>
      <xs:documentation xml:lang="en"></xs:documentation>
      <xs:documentation xml:lang="en">If the element is present, it must have either a @value, an @id, or extensions</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="Element">
        <xs:attribute name="value" type="StructureMapModelModeEnum" use="optional"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:schema>
