<?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 Sun, Mar 26, 2023 15:21+1100 for FHIR v5.0.0 

  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="TestScript" type="TestScript">
    <xs:annotation>
      <xs:documentation xml:lang="en">A structured set of tests against a FHIR server or client implementation to determine compliance against the FHIR specification.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="TestScript">
    <xs:annotation>
      <xs:documentation xml:lang="en">A structured set of tests against a FHIR server or client implementation to determine compliance against the FHIR specification.</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="0" maxOccurs="1" type="uri">
            <xs:annotation>
              <xs:documentation xml:lang="en">An absolute URI that is used to identify this test script 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 test script is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the test script 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 test script 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 test script when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the test script 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 test script. 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 test script.</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 test script. 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 test script is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used 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 test script 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 test script 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 test script.</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 test script 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 test script 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 test script is intended to be used.</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 test script 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 test script and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the test script.</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 resctricted. (e.g. 'All rights reserved', 'Some rights reserved').</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="origin" type="TestScript.Origin" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation xml:lang="en">An abstract server used in operations within this test script in the origin element.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="destination" type="TestScript.Destination" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation xml:lang="en">An abstract server used in operations within this test script in the destination element.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="metadata" type="TestScript.Metadata" minOccurs="0" maxOccurs="1">
            <xs:annotation>
              <xs:documentation xml:lang="en">The required capability must exist and are assumed to function correctly on the FHIR server being tested.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="scope" type="TestScript.Scope" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation xml:lang="en">The scope indicates a conformance artifact that is tested by the test(s) within this test case and the expectation of the test outcome(s) as well as the intended test phase inclusion.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="fixture" type="TestScript.Fixture" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation xml:lang="en">Fixture in the test script - by reference (uri). All fixtures are required for the test script to execute.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="profile" minOccurs="0" maxOccurs="unbounded" type="canonical">
            <xs:annotation>
              <xs:documentation xml:lang="en">Reference to the profile to be used for validation.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="variable" type="TestScript.Variable" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation xml:lang="en">Variable is set based either on element value in response body or on header field value in the response headers.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="setup" type="TestScript.Setup" minOccurs="0" maxOccurs="1">
            <xs:annotation>
              <xs:documentation xml:lang="en">A series of required setup operations before tests are executed.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="test" type="TestScript.Test" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation xml:lang="en">A test in this script.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="teardown" type="TestScript.Teardown" minOccurs="0" maxOccurs="1">
            <xs:annotation>
              <xs:documentation xml:lang="en">A series of operations required to clean up after all the tests are executed (successfully or otherwise).</xs:documentation>
           </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="TestScript.Origin">
    <xs:annotation>
      <xs:documentation xml:lang="en">A structured set of tests against a FHIR server or client implementation to determine compliance against the FHIR specification.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="BackboneElement">
        <xs:sequence>
          <xs:element name="index" minOccurs="1" maxOccurs="1" type="integer">
            <xs:annotation>
              <xs:documentation xml:lang="en">Abstract name given to an origin server in this test script.  The name is provided as a number starting at 1.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="profile" minOccurs="1" maxOccurs="1" type="Coding">
            <xs:annotation>
              <xs:documentation xml:lang="en">The type of origin profile the test system supports.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="url" minOccurs="0" maxOccurs="1" type="url">
            <xs:annotation>
              <xs:documentation xml:lang="en">The explicit url path of the origin server used in this test script.</xs:documentation>
           </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="TestScript.Destination">
    <xs:annotation>
      <xs:documentation xml:lang="en">A structured set of tests against a FHIR server or client implementation to determine compliance against the FHIR specification.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="BackboneElement">
        <xs:sequence>
          <xs:element name="index" minOccurs="1" maxOccurs="1" type="integer">
            <xs:annotation>
              <xs:documentation xml:lang="en">Abstract name given to a destination server in this test script.  The name is provided as a number starting at 1.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="profile" minOccurs="1" maxOccurs="1" type="Coding">
            <xs:annotation>
              <xs:documentation xml:lang="en">The type of destination profile the test system supports.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="url" minOccurs="0" maxOccurs="1" type="url">
            <xs:annotation>
              <xs:documentation xml:lang="en">The explicit url path of the destination server used in this test script.</xs:documentation>
           </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="TestScript.Metadata">
    <xs:annotation>
      <xs:documentation xml:lang="en">A structured set of tests against a FHIR server or client implementation to determine compliance against the FHIR specification.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="BackboneElement">
        <xs:sequence>
          <xs:element name="link" type="TestScript.Link" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation xml:lang="en">A link to the FHIR specification that this test is covering.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="capability" type="TestScript.Capability" minOccurs="1" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation xml:lang="en">Capabilities that must exist and are assumed to function correctly on the FHIR server being tested.</xs:documentation>
           </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="TestScript.Link">
    <xs:annotation>
      <xs:documentation xml:lang="en">A structured set of tests against a FHIR server or client implementation to determine compliance against the FHIR specification.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="BackboneElement">
        <xs:sequence>
          <xs:element name="url" minOccurs="1" maxOccurs="1" type="uri">
            <xs:annotation>
              <xs:documentation xml:lang="en">URL to a particular requirement or feature within the FHIR specification.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="description" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">Short description of the link.</xs:documentation>
           </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="TestScript.Capability">
    <xs:annotation>
      <xs:documentation xml:lang="en">A structured set of tests against a FHIR server or client implementation to determine compliance against the FHIR specification.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="BackboneElement">
        <xs:sequence>
          <xs:element name="required" minOccurs="1" maxOccurs="1" type="boolean">
            <xs:annotation>
              <xs:documentation xml:lang="en">Whether or not the test execution will require the given capabilities of the server in order for this test script to execute.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="validated" minOccurs="1" maxOccurs="1" type="boolean">
            <xs:annotation>
              <xs:documentation xml:lang="en">Whether or not the test execution will validate the given capabilities of the server in order for this test script to execute.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="description" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">Description of the capabilities that this test script is requiring the server to support.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="origin" minOccurs="0" maxOccurs="unbounded" type="integer">
            <xs:annotation>
              <xs:documentation xml:lang="en">Which origin server these requirements apply to.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="destination" minOccurs="0" maxOccurs="1" type="integer">
            <xs:annotation>
              <xs:documentation xml:lang="en">Which server these requirements apply to.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="link" minOccurs="0" maxOccurs="unbounded" type="uri">
            <xs:annotation>
              <xs:documentation xml:lang="en">Links to the FHIR specification that describes this interaction and the resources involved in more detail.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="capabilities" minOccurs="1" maxOccurs="1" type="canonical">
            <xs:annotation>
              <xs:documentation xml:lang="en">Minimum capabilities required of server for test script to execute successfully.   If server does not meet at a minimum the referenced capability statement, then all tests in this script are skipped.</xs:documentation>
           </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="TestScript.Scope">
    <xs:annotation>
      <xs:documentation xml:lang="en">A structured set of tests against a FHIR server or client implementation to determine compliance against the FHIR specification.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="BackboneElement">
        <xs:sequence>
          <xs:element name="artifact" minOccurs="1" maxOccurs="1" type="canonical">
            <xs:annotation>
              <xs:documentation xml:lang="en">The specific conformance artifact being tested. The canonical reference can be version-specific.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="conformance" minOccurs="0" maxOccurs="1" type="CodeableConcept">
            <xs:annotation>
              <xs:documentation xml:lang="en">The expectation of whether the test must pass for the system to be considered conformant with the artifact: required - all tests are expected to pass, optional - all test are expected to pass but non-pass status may be allowed, strict - all tests are expected to pass and warnings are treated as a failure.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="phase" minOccurs="0" maxOccurs="1" type="CodeableConcept">
            <xs:annotation>
              <xs:documentation xml:lang="en">The phase of testing for this artifact: unit - development / implementation phase, integration - internal system to system phase, production - live system to system phase (Note, this may involve pii/phi data).</xs:documentation>
           </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="TestScript.Fixture">
    <xs:annotation>
      <xs:documentation xml:lang="en">A structured set of tests against a FHIR server or client implementation to determine compliance against the FHIR specification.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="BackboneElement">
        <xs:sequence>
          <xs:element name="autocreate" minOccurs="1" maxOccurs="1" type="boolean">
            <xs:annotation>
              <xs:documentation xml:lang="en">Whether or not to implicitly create the fixture during setup. If true, the fixture is automatically created on each server being tested during setup, therefore no create operation is required for this fixture in the TestScript.setup section.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="autodelete" minOccurs="1" maxOccurs="1" type="boolean">
            <xs:annotation>
              <xs:documentation xml:lang="en">Whether or not to implicitly delete the fixture during teardown. If true, the fixture is automatically deleted on each server being tested during teardown, therefore no delete operation is required for this fixture in the TestScript.teardown section.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="resource" minOccurs="0" maxOccurs="1" type="Reference">
            <xs:annotation>
              <xs:documentation xml:lang="en">Reference to the resource (containing the contents of the resource needed for operations). This is allowed to be a Parameters resource.</xs:documentation>
           </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="TestScript.Variable">
    <xs:annotation>
      <xs:documentation xml:lang="en">A structured set of tests against a FHIR server or client implementation to determine compliance against the FHIR specification.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="BackboneElement">
        <xs:sequence>
          <xs:element name="name" minOccurs="1" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">Descriptive name for this variable.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="defaultValue" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">A default, hard-coded, or user-defined value for this variable.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="description" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">A free text natural language description of the variable and its purpose.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="expression" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">The FHIRPath expression for a specific value to evaluate against the fixture body. When variables are defined, only one of either expression, headerField or path must be specified.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="headerField" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">Will be used to grab the HTTP header field value from the headers that sourceId is pointing to.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="hint" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">Displayable text string with hint help information to the user when entering a default value.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="path" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">XPath or JSONPath to evaluate against the fixture body.  When variables are defined, only one of either expression, headerField or path must be specified.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="sourceId" minOccurs="0" maxOccurs="1" type="id">
            <xs:annotation>
              <xs:documentation xml:lang="en">Fixture to evaluate the XPath/JSONPath expression or the headerField  against within this variable.</xs:documentation>
           </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="TestScript.Setup">
    <xs:annotation>
      <xs:documentation xml:lang="en">A structured set of tests against a FHIR server or client implementation to determine compliance against the FHIR specification.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="BackboneElement">
        <xs:sequence>
          <xs:element name="action" type="TestScript.Action" minOccurs="1" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation xml:lang="en">Action would contain either an operation or an assertion.</xs:documentation>
           </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="TestScript.Action">
    <xs:annotation>
      <xs:documentation xml:lang="en">A structured set of tests against a FHIR server or client implementation to determine compliance against the FHIR specification.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="BackboneElement">
        <xs:sequence>
          <xs:element name="operation" type="TestScript.Operation" minOccurs="0" maxOccurs="1">
            <xs:annotation>
              <xs:documentation xml:lang="en">The operation to perform.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="assert" type="TestScript.Assert" minOccurs="0" maxOccurs="1">
            <xs:annotation>
              <xs:documentation xml:lang="en">Evaluates the results of previous operations to determine if the server under test behaves appropriately.</xs:documentation>
           </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="TestScript.Operation">
    <xs:annotation>
      <xs:documentation xml:lang="en">A structured set of tests against a FHIR server or client implementation to determine compliance against the FHIR specification.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="BackboneElement">
        <xs:sequence>
          <xs:element name="type" minOccurs="0" maxOccurs="1" type="Coding">
            <xs:annotation>
              <xs:documentation xml:lang="en">Server interaction or operation type.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="resource" minOccurs="0" maxOccurs="1" type="uri">
            <xs:annotation>
              <xs:documentation xml:lang="en">The type of the FHIR resource. See the [resource list](resourcelist.html). Data type of uri is needed when non-HL7 artifacts are identified.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="label" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">The label would be used for tracking/logging purposes by test engines.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="description" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">The description would be used by test engines for tracking and reporting purposes.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="accept" minOccurs="0" maxOccurs="1" type="code">
            <xs:annotation>
              <xs:documentation xml:lang="en">The mime-type to use for RESTful operation in the 'Accept' header.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="contentType" minOccurs="0" maxOccurs="1" type="code">
            <xs:annotation>
              <xs:documentation xml:lang="en">The mime-type to use for RESTful operation in the 'Content-Type' header.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="destination" minOccurs="0" maxOccurs="1" type="integer">
            <xs:annotation>
              <xs:documentation xml:lang="en">The server where the request message is destined for.  Must be one of the server numbers listed in TestScript.destination section.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="encodeRequestUrl" minOccurs="1" maxOccurs="1" type="boolean">
            <xs:annotation>
              <xs:documentation xml:lang="en">Whether or not to implicitly send the request url in encoded format. The default is true to match the standard RESTful client behavior. Set to false when communicating with a server that does not support encoded url paths.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="method" minOccurs="0" maxOccurs="1" type="TestScriptRequestMethodCode">
            <xs:annotation>
              <xs:documentation xml:lang="en">The HTTP method the test engine MUST use for this operation regardless of any other operation details.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="origin" minOccurs="0" maxOccurs="1" type="integer">
            <xs:annotation>
              <xs:documentation xml:lang="en">The server where the request message originates from.  Must be one of the server numbers listed in TestScript.origin section.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="params" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">Path plus parameters after [type].  Used to set parts of the request URL explicitly.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="requestHeader" type="TestScript.RequestHeader" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation xml:lang="en">Header elements would be used to set HTTP headers.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="requestId" minOccurs="0" maxOccurs="1" type="id">
            <xs:annotation>
              <xs:documentation xml:lang="en">The fixture id (maybe new) to map to the request.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="responseId" minOccurs="0" maxOccurs="1" type="id">
            <xs:annotation>
              <xs:documentation xml:lang="en">The fixture id (maybe new) to map to the response.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="sourceId" minOccurs="0" maxOccurs="1" type="id">
            <xs:annotation>
              <xs:documentation xml:lang="en">The id of the fixture used as the body of a PUT or POST request.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="targetId" minOccurs="0" maxOccurs="1" type="id">
            <xs:annotation>
              <xs:documentation xml:lang="en">Id of fixture used for extracting the [id],  [type], and [vid] for GET requests.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="url" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">Complete request URL.</xs:documentation>
           </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="TestScript.RequestHeader">
    <xs:annotation>
      <xs:documentation xml:lang="en">A structured set of tests against a FHIR server or client implementation to determine compliance against the FHIR specification.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="BackboneElement">
        <xs:sequence>
          <xs:element name="field" minOccurs="1" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">The HTTP header field e.g. &quot;Accept&quot;.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="value" minOccurs="1" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">The value of the header e.g. &quot;application/fhir+xml&quot;.</xs:documentation>
           </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="TestScript.Assert">
    <xs:annotation>
      <xs:documentation xml:lang="en">A structured set of tests against a FHIR server or client implementation to determine compliance against the FHIR specification.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="BackboneElement">
        <xs:sequence>
          <xs:element name="label" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">The label would be used for tracking/logging purposes by test engines.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="description" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">The description would be used by test engines for tracking and reporting purposes.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="direction" minOccurs="0" maxOccurs="1" type="AssertionDirectionType">
            <xs:annotation>
              <xs:documentation xml:lang="en">The direction to use for the assertion.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="compareToSourceId" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">Id of the source fixture used as the contents to be evaluated by either the &quot;source/expression&quot; or &quot;sourceId/path&quot; definition.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="compareToSourceExpression" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">The FHIRPath expression for a specific value to evaluate against the source fixture. When compareToSourceId is defined, either compareToSourceExpression or compareToSourcePath must be defined, but not both.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="compareToSourcePath" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">XPath or JSONPath expression to evaluate against the source fixture. When compareToSourceId is defined, either compareToSourceExpression or compareToSourcePath must be defined, but not both.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="contentType" minOccurs="0" maxOccurs="1" type="code">
            <xs:annotation>
              <xs:documentation xml:lang="en">The mime-type contents to compare against the request or response message 'Content-Type' header.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="defaultManualCompletion" minOccurs="0" maxOccurs="1" type="AssertionManualCompletionType">
            <xs:annotation>
              <xs:documentation xml:lang="en">The default manual completion outcome applied to this assertion.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="expression" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">The FHIRPath expression to be evaluated against the request or response message contents - HTTP headers and payload.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="headerField" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">The HTTP header field name e.g. 'Location'.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="minimumId" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">The ID of a fixture. Asserts that the response contains at a minimum the fixture specified by minimumId.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="navigationLinks" minOccurs="0" maxOccurs="1" type="boolean">
            <xs:annotation>
              <xs:documentation xml:lang="en">Whether or not the test execution performs validation on the bundle navigation links.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="operator" minOccurs="0" maxOccurs="1" type="AssertionOperatorType">
            <xs:annotation>
              <xs:documentation xml:lang="en">The operator type defines the conditional behavior of the assert.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="path" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">The XPath or JSONPath expression to be evaluated against the fixture representing the response received from server.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="requestMethod" minOccurs="0" maxOccurs="1" type="TestScriptRequestMethodCode">
            <xs:annotation>
              <xs:documentation xml:lang="en">The request method or HTTP operation code to compare against that used by the client system under test.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="requestURL" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">The value to use in a comparison against the request URL path string.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="resource" minOccurs="0" maxOccurs="1" type="uri">
            <xs:annotation>
              <xs:documentation xml:lang="en">The type of the resource.  See the [resource list](resourcelist.html).</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="response" minOccurs="0" maxOccurs="1" type="AssertionResponseTypes">
            <xs:annotation>
              <xs:documentation xml:lang="en">continue | switchingProtocols | okay | created | accepted | nonAuthoritativeInformation | noContent | resetContent | partialContent | multipleChoices | movedPermanently | found | seeOther | notModified | useProxy | temporaryRedirect | permanentRedirect | badRequest | unauthorized | paymentRequired | forbidden | notFound | methodNotAllowed | notAcceptable | proxyAuthenticationRequired | requestTimeout | conflict | gone | lengthRequired | preconditionFailed | contentTooLarge | uriTooLong | unsupportedMediaType | rangeNotSatisfiable | expectationFailed | misdirectedRequest | unprocessableContent | upgradeRequired | internalServerError | notImplemented | badGateway | serviceUnavailable | gatewayTimeout | httpVersionNotSupported.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="responseCode" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">The value of the HTTP response code to be tested.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="sourceId" minOccurs="0" maxOccurs="1" type="id">
            <xs:annotation>
              <xs:documentation xml:lang="en">Fixture to evaluate the XPath/JSONPath expression or the headerField  against.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="stopTestOnFail" minOccurs="1" maxOccurs="1" type="boolean">
            <xs:annotation>
              <xs:documentation xml:lang="en">Whether or not the current test execution will stop on failure for this assert.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="validateProfileId" minOccurs="0" maxOccurs="1" type="id">
            <xs:annotation>
              <xs:documentation xml:lang="en">The ID of the Profile to validate against.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="value" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">The value to compare to.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="warningOnly" minOccurs="1" maxOccurs="1" type="boolean">
            <xs:annotation>
              <xs:documentation xml:lang="en">Whether or not the test execution will produce a warning only on error for this assert.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="requirement" type="TestScript.Requirement" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation xml:lang="en">Links or references providing traceability to the testing requirements for this assert.</xs:documentation>
           </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="TestScript.Requirement">
    <xs:annotation>
      <xs:documentation xml:lang="en">A structured set of tests against a FHIR server or client implementation to determine compliance against the FHIR specification.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="BackboneElement">
        <xs:sequence>
          <xs:choice minOccurs="0" maxOccurs="1" >
            <xs:annotation>
              <xs:documentation xml:lang="en">Link or reference providing traceability to the testing requirement for this test.</xs:documentation>
            </xs:annotation>
            <xs:element name="linkUri" type="uri"/>
            <xs:element name="linkCanonical" type="canonical"/>
          </xs:choice>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="TestScript.Test">
    <xs:annotation>
      <xs:documentation xml:lang="en">A structured set of tests against a FHIR server or client implementation to determine compliance against the FHIR specification.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="BackboneElement">
        <xs:sequence>
          <xs:element name="name" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">The name of this test used for tracking/logging purposes by test engines.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="description" minOccurs="0" maxOccurs="1" type="string">
            <xs:annotation>
              <xs:documentation xml:lang="en">A short description of the test used by test engines for tracking and reporting purposes.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="action" type="TestScript.Action1" minOccurs="1" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation xml:lang="en">Action would contain either an operation or an assertion.</xs:documentation>
           </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="TestScript.Action1">
    <xs:annotation>
      <xs:documentation xml:lang="en">A structured set of tests against a FHIR server or client implementation to determine compliance against the FHIR specification.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="BackboneElement">
        <xs:sequence>
          <xs:element name="operation" type="TestScript.Operation" minOccurs="0" maxOccurs="1">
            <xs:annotation>
              <xs:documentation xml:lang="en">An operation would involve a REST request to a server.</xs:documentation>
           </xs:annotation>
          </xs:element>
          <xs:element name="assert" type="TestScript.Assert" minOccurs="0" maxOccurs="1">
            <xs:annotation>
              <xs:documentation xml:lang="en">Evaluates the results of previous operations to determine if the server under test behaves appropriately.</xs:documentation>
           </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="TestScript.Teardown">
    <xs:annotation>
      <xs:documentation xml:lang="en">A structured set of tests against a FHIR server or client implementation to determine compliance against the FHIR specification.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="BackboneElement">
        <xs:sequence>
          <xs:element name="action" type="TestScript.Action2" minOccurs="1" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation xml:lang="en">The teardown action will only contain an operation.</xs:documentation>
           </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="TestScript.Action2">
    <xs:annotation>
      <xs:documentation xml:lang="en">A structured set of tests against a FHIR server or client implementation to determine compliance against the FHIR specification.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="BackboneElement">
        <xs:sequence>
          <xs:element name="operation" type="TestScript.Operation" minOccurs="1" maxOccurs="1">
            <xs:annotation>
              <xs:documentation xml:lang="en">An operation would involve a REST request to a server.</xs:documentation>
           </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:simpleType name="AssertionManualCompletionTypeEnum">
    <xs:restriction base="code-primitive">
      <xs:enumeration value="fail">
        <xs:annotation>
          <xs:documentation xml:lang="en">Fail</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="pass">
        <xs:annotation>
          <xs:documentation xml:lang="en">Pass</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="skip">
        <xs:annotation>
          <xs:documentation xml:lang="en">Skip</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="stop">
        <xs:annotation>
          <xs:documentation xml:lang="en">Stop</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="AssertionManualCompletionType">
    <xs:annotation>
      <xs:documentation xml:lang="en">The type of operator to use for assertion.</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="AssertionManualCompletionTypeEnum" use="optional"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:simpleType name="AssertionDirectionTypeEnum">
    <xs:restriction base="code-primitive">
      <xs:enumeration value="response">
        <xs:annotation>
          <xs:documentation xml:lang="en">response</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="request">
        <xs:annotation>
          <xs:documentation xml:lang="en">request</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="AssertionDirectionType">
    <xs:annotation>
      <xs:documentation xml:lang="en">The type of direction to use for assertion.</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="AssertionDirectionTypeEnum" use="optional"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:simpleType name="AssertionOperatorTypeEnum">
    <xs:restriction base="code-primitive">
      <xs:enumeration value="equals">
        <xs:annotation>
          <xs:documentation xml:lang="en">equals</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="notEquals">
        <xs:annotation>
          <xs:documentation xml:lang="en">notEquals</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="in">
        <xs:annotation>
          <xs:documentation xml:lang="en">in</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="notIn">
        <xs:annotation>
          <xs:documentation xml:lang="en">notIn</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="greaterThan">
        <xs:annotation>
          <xs:documentation xml:lang="en">greaterThan</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="lessThan">
        <xs:annotation>
          <xs:documentation xml:lang="en">lessThan</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="empty">
        <xs:annotation>
          <xs:documentation xml:lang="en">empty</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="notEmpty">
        <xs:annotation>
          <xs:documentation xml:lang="en">notEmpty</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="contains">
        <xs:annotation>
          <xs:documentation xml:lang="en">contains</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="notContains">
        <xs:annotation>
          <xs:documentation xml:lang="en">notContains</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="eval">
        <xs:annotation>
          <xs:documentation xml:lang="en">evaluate</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="manualEval">
        <xs:annotation>
          <xs:documentation xml:lang="en">manualEvaluate</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="AssertionOperatorType">
    <xs:annotation>
      <xs:documentation xml:lang="en">The type of operator to use for assertion.</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="AssertionOperatorTypeEnum" use="optional"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:simpleType name="AssertionResponseTypesEnum">
    <xs:restriction base="code-primitive">
      <xs:enumeration value="continue">
        <xs:annotation>
          <xs:documentation xml:lang="en">Continue</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="switchingProtocols">
        <xs:annotation>
          <xs:documentation xml:lang="en">Switching Protocols</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="okay">
        <xs:annotation>
          <xs:documentation xml:lang="en">OK</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="created">
        <xs:annotation>
          <xs:documentation xml:lang="en">Created</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="accepted">
        <xs:annotation>
          <xs:documentation xml:lang="en">Accepted</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="nonAuthoritativeInformation">
        <xs:annotation>
          <xs:documentation xml:lang="en">Non-Authoritative Information</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="noContent">
        <xs:annotation>
          <xs:documentation xml:lang="en">No Content</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="resetContent">
        <xs:annotation>
          <xs:documentation xml:lang="en">Reset Content</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="partialContent">
        <xs:annotation>
          <xs:documentation xml:lang="en">Partial Content</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="multipleChoices">
        <xs:annotation>
          <xs:documentation xml:lang="en">Multiple Choices</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="movedPermanently">
        <xs:annotation>
          <xs:documentation xml:lang="en">Moved Permanently</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="found">
        <xs:annotation>
          <xs:documentation xml:lang="en">Found</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="seeOther">
        <xs:annotation>
          <xs:documentation xml:lang="en">See Other</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="notModified">
        <xs:annotation>
          <xs:documentation xml:lang="en">Not Modified</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="useProxy">
        <xs:annotation>
          <xs:documentation xml:lang="en">Use Proxy</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="temporaryRedirect">
        <xs:annotation>
          <xs:documentation xml:lang="en">Temporary Redirect</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="permanentRedirect">
        <xs:annotation>
          <xs:documentation xml:lang="en">Permanent Redirect</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="badRequest">
        <xs:annotation>
          <xs:documentation xml:lang="en">Bad Request</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="unauthorized">
        <xs:annotation>
          <xs:documentation xml:lang="en">Unauthorized</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="paymentRequired">
        <xs:annotation>
          <xs:documentation xml:lang="en">Payment Required</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="forbidden">
        <xs:annotation>
          <xs:documentation xml:lang="en">Forbidden</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="notFound">
        <xs:annotation>
          <xs:documentation xml:lang="en">Not Found</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="methodNotAllowed">
        <xs:annotation>
          <xs:documentation xml:lang="en">Method Not Allowed</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="notAcceptable">
        <xs:annotation>
          <xs:documentation xml:lang="en">Not Acceptable</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="proxyAuthenticationRequired">
        <xs:annotation>
          <xs:documentation xml:lang="en">Proxy Authentication Required</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="requestTimeout">
        <xs:annotation>
          <xs:documentation xml:lang="en">Request Timeout</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="conflict">
        <xs:annotation>
          <xs:documentation xml:lang="en">Conflict</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="gone">
        <xs:annotation>
          <xs:documentation xml:lang="en">Gone</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="lengthRequired">
        <xs:annotation>
          <xs:documentation xml:lang="en">Length Required</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="preconditionFailed">
        <xs:annotation>
          <xs:documentation xml:lang="en">Precondition Failed</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="contentTooLarge">
        <xs:annotation>
          <xs:documentation xml:lang="en">Content Too Large</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="uriTooLong">
        <xs:annotation>
          <xs:documentation xml:lang="en">URI Too Long</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="unsupportedMediaType">
        <xs:annotation>
          <xs:documentation xml:lang="en">Unsupported Media Type</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="rangeNotSatisfiable">
        <xs:annotation>
          <xs:documentation xml:lang="en">Range Not Satisfiable</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="expectationFailed">
        <xs:annotation>
          <xs:documentation xml:lang="en">Expectation Failed</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="misdirectedRequest">
        <xs:annotation>
          <xs:documentation xml:lang="en">Misdirected Request</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="unprocessableContent">
        <xs:annotation>
          <xs:documentation xml:lang="en">Unprocessable Content</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="upgradeRequired">
        <xs:annotation>
          <xs:documentation xml:lang="en">Upgrade Required</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="internalServerError">
        <xs:annotation>
          <xs:documentation xml:lang="en">Internal Server Error</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="notImplemented">
        <xs:annotation>
          <xs:documentation xml:lang="en">Not Implemented</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="badGateway">
        <xs:annotation>
          <xs:documentation xml:lang="en">Bad Gateway</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="serviceUnavailable">
        <xs:annotation>
          <xs:documentation xml:lang="en">Service Unavailable</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="gatewayTimeout">
        <xs:annotation>
          <xs:documentation xml:lang="en">Gateway Timeout</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="httpVersionNotSupported">
        <xs:annotation>
          <xs:documentation xml:lang="en">HTTP Version Not Supported</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="AssertionResponseTypes">
    <xs:annotation>
      <xs:documentation xml:lang="en">The type of response code to use for assertion.</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="AssertionResponseTypesEnum" use="optional"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:simpleType name="TestScriptRequestMethodCodeEnum">
    <xs:restriction base="code-primitive">
      <xs:enumeration value="delete">
        <xs:annotation>
          <xs:documentation xml:lang="en">DELETE</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="get">
        <xs:annotation>
          <xs:documentation xml:lang="en">GET</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="options">
        <xs:annotation>
          <xs:documentation xml:lang="en">OPTIONS</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="patch">
        <xs:annotation>
          <xs:documentation xml:lang="en">PATCH</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="post">
        <xs:annotation>
          <xs:documentation xml:lang="en">POST</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="put">
        <xs:annotation>
          <xs:documentation xml:lang="en">PUT</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="head">
        <xs:annotation>
          <xs:documentation xml:lang="en">HEAD</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="TestScriptRequestMethodCode">
    <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="TestScriptRequestMethodCodeEnum" use="optional"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:schema>
