<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="questionnaire-constraint" />
  <extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-wg">
    <valueCode value="fhir" />
  </extension>
  <extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-fmm">
    <valueInteger value="1" />
  </extension>
  <url value="http://hl7.org/fhir/StructureDefinition/questionnaire-constraint" />
  <version value="4.0.0" />
  <name value="constraint" />
  <status value="draft" />
  <date value="2013-07-04" />
  <publisher value="HL7" />
  <contact>
    <telecom>
      <system value="url" />
      <value value="http://www.hl7.org" />
    </telecom>
  </contact>
  <description value="An invariant that must be satisfied before responses to the questionnaire can be considered &quot;complete&quot;." />
  <fhirVersion value="4.0.0" />
  <mapping>
    <identity value="rim" />
    <uri value="http://hl7.org/v3" />
    <name value="RIM Mapping" />
  </mapping>
  <kind value="complex-type" />
  <abstract value="false" />
  <context>
    <type value="element" />
    <expression value="Questionnaire" />
  </context>
  <context>
    <type value="element" />
    <expression value="Questionnaire.item" />
  </context>
  <context>
    <type value="element" />
    <expression value="Questionnaire.item.item" />
  </context>
  <type value="Extension" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/Extension" />
  <derivation value="constraint" />
  <differential>
    <element id="Extension">
      <path value="Extension" />
      <short value="Constraint" />
      <definition value="An invariant that must be satisfied before responses to the questionnaire can be considered &quot;complete&quot;." />
      <comment value="This maps to the ElementDefinition.constraint element." />
      <min value="0" />
      <max value="*" />
    </element>
    <element id="Extension.extension:key">
      <path value="Extension.extension" />
      <sliceName value="key" />
      <short value="Unique identifier" />
      <definition value="Unique id for the constraint within the questionnaire." />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="Extension" />
      </type>
    </element>
    <element id="Extension.extension:key.extension">
      <path value="Extension.extension.extension" />
      <max value="0" />
    </element>
    <element id="Extension.extension:key.url">
      <path value="Extension.extension.url" />
      <type>
        <code value="uri" />
      </type>
      <fixedUri value="key" />
    </element>
    <element id="Extension.extension:key.valueId">
      <path value="Extension.extension.valueId" />
      <type>
        <code value="id" />
      </type>
    </element>
    <element id="Extension.extension:requirements">
      <path value="Extension.extension" />
      <sliceName value="requirements" />
      <short value="Why needed" />
      <definition value="An explanation of why this extension is required (for documentation purposes)." />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Extension" />
      </type>
    </element>
    <element id="Extension.extension:requirements.extension">
      <path value="Extension.extension.extension" />
      <max value="0" />
    </element>
    <element id="Extension.extension:requirements.url">
      <path value="Extension.extension.url" />
      <type>
        <code value="uri" />
      </type>
      <fixedUri value="requirements" />
    </element>
    <element id="Extension.extension:requirements.valueString">
      <path value="Extension.extension.valueString" />
      <type>
        <code value="string" />
      </type>
    </element>
    <element id="Extension.extension:severity">
      <path value="Extension.extension" />
      <sliceName value="severity" />
      <short value="error|warning" />
      <definition value="Indicates how serious violating the invariant is." />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="Extension" />
      </type>
    </element>
    <element id="Extension.extension:severity.extension">
      <path value="Extension.extension.extension" />
      <max value="0" />
    </element>
    <element id="Extension.extension:severity.url">
      <path value="Extension.extension.url" />
      <type>
        <code value="uri" />
      </type>
      <fixedUri value="severity" />
    </element>
    <element id="Extension.extension:severity.valueCode">
      <path value="Extension.extension.valueCode" />
      <type>
        <code value="code" />
      </type>
      <binding>
        <extension url="http://hl7.org/fhir/StructureDefinition/elementdefinition-bindingName">
          <valueString value="ConstraintSeverity" />
        </extension>
        <strength value="required" />
        <description value="How important the invariant is." />
        <valueSet value="http://hl7.org/fhir/ValueSet/constraint-severity|4.0.0" />
      </binding>
    </element>
    <element id="Extension.extension:expression">
      <path value="Extension.extension" />
      <sliceName value="expression" />
      <short value="Formal rule" />
      <definition value="The FHIRPath expression of the rule for computable interpretation." />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="Extension" />
      </type>
    </element>
    <element id="Extension.extension:expression.extension">
      <path value="Extension.extension.extension" />
      <max value="0" />
    </element>
    <element id="Extension.extension:expression.url">
      <path value="Extension.extension.url" />
      <type>
        <code value="uri" />
      </type>
      <fixedUri value="expression" />
    </element>
    <element id="Extension.extension:expression.valueString">
      <path value="Extension.extension.valueString" />
      <type>
        <code value="string" />
      </type>
    </element>
    <element id="Extension.extension:human">
      <path value="Extension.extension" />
      <sliceName value="human" />
      <short value="Human-readable rule" />
      <definition value="A free text expression of the rule to display to the user if the rule is violated." />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="Extension" />
      </type>
    </element>
    <element id="Extension.extension:human.extension">
      <path value="Extension.extension.extension" />
      <max value="0" />
    </element>
    <element id="Extension.extension:human.url">
      <path value="Extension.extension.url" />
      <type>
        <code value="uri" />
      </type>
      <fixedUri value="human" />
    </element>
    <element id="Extension.extension:human.valueString">
      <path value="Extension.extension.valueString" />
      <type>
        <code value="string" />
      </type>
    </element>
    <element id="Extension.extension:location">
      <path value="Extension.extension" />
      <sliceName value="location" />
      <short value="Relative path to elements" />
      <definition value="Relative paths to the questions this rule is enforced against." />
      <min value="0" />
      <max value="*" />
      <type>
        <code value="Extension" />
      </type>
    </element>
    <element id="Extension.extension:location.extension">
      <path value="Extension.extension.extension" />
      <max value="0" />
    </element>
    <element id="Extension.extension:location.url">
      <path value="Extension.extension.url" />
      <type>
        <code value="uri" />
      </type>
      <fixedUri value="location" />
    </element>
    <element id="Extension.extension:location.valueString">
      <path value="Extension.extension.valueString" />
      <type>
        <code value="string" />
      </type>
    </element>
    <element id="Extension.url">
      <path value="Extension.url" />
      <type>
        <code value="uri" />
      </type>
      <fixedUri value="http://hl7.org/fhir/StructureDefinition/questionnaire-constraint" />
    </element>
    <element id="Extension.value[x]">
      <path value="Extension.value[x]" />
      <min value="0" />
      <max value="0" />
    </element>
  </differential>
</StructureDefinition>