Release 5 Ballot

This page is part of the FHIR Specification (v5.0.0-ballot: R5 Ballot - see ballot notes). The current version which supercedes this version is 5.0.0. For a full list of available versions, see the Directory of published versions

Example StructureDefinition/cqf-targetInvariant (XML)

FHIR Infrastructure Work GroupMaturity Level: N/AStandards Status: Informative

Raw XML (canonical form + also see XML Format Specification)

targetInvariant

<?xml version="1.0" encoding="UTF-8"?>

<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="cqf-targetInvariant"/> 
  <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/cqf-targetInvariant"/> 
  <version value="5.0.0-ballot"/> 
  <name value="targetInvariant"/> 
  <status value="draft"/> 
  <experimental value="false"/> 
  <date value="2015-05-30"/> 
  <publisher value="Health Level Seven, Inc. - CDS WG"/> 
  <contact> 
    <telecom> 
      <system value="url"/> 
      <value value="http://hl7.org/special/committees/dss"/> 
    </telecom> 
  </contact> 
  <description value="Specifies an invariant that is enforced in the context of an instantiated resource."/> 
  <fhirVersion value="5.0.0-ballot"/> 
  <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="Element"/> 
  </context> 
  <type value="Extension"/> 
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/Extension"/> 
  <derivation value="constraint"/> 
  <snapshot> 
    <element id="Extension">
      <path value="Extension"/> 
      <short value="A constraint on the target resource"/> 
      <definition value="Specifies an invariant that is enforced in the context of an instantiated resource."/> 
      <comment value="Can be used on any definitional artifact to define an invariant that is enforced
       in the context of an instantiated resource. The invariant expression will have
       access to `%target` and `%definition` variables, where target is the instantiated
       resource, and definition is the definition used to instantiate."/> 
      <min value="0"/> 
      <max value="*"/> 
      <base> 
        <path value="Extension"/> 
        <min value="0"/> 
        <max value="*"/> 
      </base> 
      <constraint> 
        <key value="ele-1"/> 
        <severity value="error"/> 
        <human value="All FHIR elements must have a @value or children"/> 
        <expression value="hasValue() or (children().count() &gt; id.count())"/> 
        <xpath value="@value|f:*|h:div"/> 
        <source value="http://hl7.org/fhir/StructureDefinition/Element"/> 
      </constraint> 
      <constraint> 
        <key value="ext-1"/> 
        <severity value="error"/> 
        <human value="Must have either extensions or value[x], not both"/> 
        <expression value="extension.exists() != value.exists()"/> 
        <xpath value="exists(f:extension)!=exists(f:*[starts-with(local-name(.), 'value')])"/> 
        <source value="http://hl7.org/fhir/StructureDefinition/Extension"/> 
      </constraint> 
      <isModifier value="false"/> 
    </element> 
    <element id="Extension.id">
      <path value="Extension.id"/> 
      <representation value="xmlAttr"/> 
      <short value="Unique id for inter-element referencing"/> 
      <definition value="Unique id for the element within a resource (for internal references). This may
       be any string value that does not contain spaces."/> 
      <min value="0"/> 
      <max value="1"/> 
      <base> 
        <path value="Element.id"/> 
        <min value="0"/> 
        <max value="1"/> 
      </base> 
      <type> 
        <extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-fhir-type">
          <valueUrl value="id"/> 
        </extension> 
        <code value="http://hl7.org/fhirpath/System.String"/> 
      </type> 
      <isModifier value="false"/> 
      <isSummary value="false"/> 
      <mapping> 
        <identity value="rim"/> 
        <map value="n/a"/> 
      </mapping> 
    </element> 
    <element id="Extension.extension">
      <path value="Extension.extension"/> 
      <slicing> 
        <discriminator> 
          <type value="value"/> 
          <path value="url"/> 
        </discriminator> 
        <description value="Extensions are always sliced by (at least) url"/> 
        <rules value="open"/> 
      </slicing> 
      <short value="Additional content defined by implementations"/> 
      <definition value="May be used to represent additional information that is not part of the basic definition
       of the element. To make the use of extensions safe and manageable, there is a strict
       set of governance  applied to the definition and use of extensions. Though any
       implementer can define an extension, there is a set of requirements that SHALL
       be met as part of the definition of the extension."/> 
      <comment value="There can be no stigma associated with the use of extensions by any application,
       project, or standard - regardless of the institution or jurisdiction that uses
       or defines the extensions.  The use of extensions is what allows the FHIR specification
       to retain a core level of simplicity for everyone."/> 
      <alias value="extensions"/> 
      <alias value="user content"/> 
      <min value="0"/> 
      <max value="*"/> 
      <base> 
        <path value="Element.extension"/> 
        <min value="0"/> 
        <max value="*"/> 
      </base> 
      <type> 
        <code value="Extension"/> 
      </type> 
      <constraint> 
        <key value="ele-1"/> 
        <severity value="error"/> 
        <human value="All FHIR elements must have a @value or children"/> 
        <expression value="hasValue() or (children().count() &gt; id.count())"/> 
        <xpath value="@value|f:*|h:div"/> 
        <source value="http://hl7.org/fhir/StructureDefinition/Element"/> 
      </constraint> 
      <constraint> 
        <key value="ext-1"/> 
        <severity value="error"/> 
        <human value="Must have either extensions or value[x], not both"/> 
        <expression value="extension.exists() != value.exists()"/> 
        <xpath value="exists(f:extension)!=exists(f:*[starts-with(local-name(.), &quot;value&quot;)])"/> 
        <source value="http://hl7.org/fhir/StructureDefinition/Extension"/> 
      </constraint> 
      <isModifier value="false"/> 
      <isSummary value="false"/> 
      <mapping> 
        <identity value="rim"/> 
        <map value="n/a"/> 
      </mapping> 
    </element> 
    <element id="Extension.extension:key">
      <path value="Extension.extension"/> 
      <sliceName value="key"/> 
      <short value="Unique identifier"/> 
      <definition value="A unique identifier for the invariant (unique in the context of the resource)."/> 
      <comment value="Any error or outcome messages or warnings should include this id to allow the source
       of the message to be determined."/> 
      <min value="1"/> 
      <max value="1"/> 
      <base> 
        <path value="Element.extension"/> 
        <min value="0"/> 
        <max value="*"/> 
      </base> 
      <type> 
        <code value="Extension"/> 
      </type> 
      <constraint> 
        <key value="ele-1"/> 
        <severity value="error"/> 
        <human value="All FHIR elements must have a @value or children"/> 
        <expression value="hasValue() or (children().count() &gt; id.count())"/> 
        <xpath value="@value|f:*|h:div"/> 
        <source value="http://hl7.org/fhir/StructureDefinition/Element"/> 
      </constraint> 
      <constraint> 
        <key value="ext-1"/> 
        <severity value="error"/> 
        <human value="Must have either extensions or value[x], not both"/> 
        <expression value="extension.exists() != value.exists()"/> 
        <xpath value="exists(f:extension)!=exists(f:*[starts-with(local-name(.), &quot;value&quot;)])"/> 
        <source value="http://hl7.org/fhir/StructureDefinition/Extension"/> 
      </constraint> 
      <isModifier value="false"/> 
      <isSummary value="false"/> 
    </element> 
    <element id="Extension.extension:key.id">
      <path value="Extension.extension.id"/> 
      <representation value="xmlAttr"/> 
      <short value="Unique id for inter-element referencing"/> 
      <definition value="Unique id for the element within a resource (for internal references). This may
       be any string value that does not contain spaces."/> 
      <min value="0"/> 
      <max value="1"/> 
      <base> 
        <path value="Element.id"/> 
        <min value="0"/> 
        <max value="1"/> 
      </base> 
      <type> 
        <extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-fhir-type">
          <valueUrl value="id"/> 
        </extension> 
        <code value="http://hl7.org/fhirpath/System.String"/> 
      </type> 
      <isModifier value="false"/> 
      <isSummary value="false"/> 
      <mapping> 
        <identity value="rim"/> 
        <map value="n/a"/> 
      </mapping> 
    </element> 
    <element id="Extension.extension:key.extension">
      <path value="Extension.extension.extension"/> 
      <slicing> 
        <discriminator> 
          <type value="value"/> 
          <path value="url"/> 
        </discriminator> 
        <description value="Extensions are always sliced by (at least) url"/> 
        <rules value="open"/> 
      </slicing> 
      <short value="Extension"/> 
      <definition value="An Extension"/> 
      <min value="0"/> 
      <max value="0"/> 
      <base> 
        <path value="Element.extension"/> 
        <min value="0"/> 
        <max value="*"/> 
      </base> 
      <type> 
        <code value="Extension"/> 
      </type> 
      <constraint> 
        <key value="ele-1"/> 
        <severity value="error"/> 
        <human value="All FHIR elements must have a @value or children"/> 
        <expression value="hasValue() or (children().count() &gt; id.count())"/> 
        <xpath value="@value|f:*|h:div"/> 
        <source value="http://hl7.org/fhir/StructureDefinition/Element"/> 
      </constraint> 
      <constraint> 
        <key value="ext-1"/> 
        <severity value="error"/> 
        <human value="Must have either extensions or value[x], not both"/> 
        <expression value="extension.exists() != value.exists()"/> 
        <xpath value="exists(f:extension)!=exists(f:*[starts-with(local-name(.), &quot;value&quot;)])"/> 
        <source value="http://hl7.org/fhir/StructureDefinition/Extension"/> 
      </constraint> 
      <isModifier value="false"/> 
      <isSummary value="false"/> 
    </element> 
    <element id="Extension.extension:key.url">
      <path value="Extension.extension.url"/> 
      <representation value="xmlAttr"/> 
      <short value="identifies the meaning of the extension"/> 
      <definition value="Source of the definition for the extension code - a logical name or a URL."/> 
      <comment value="The definition may point directly to a computable or human-readable definition
       of the extensibility codes, or it may be a logical URI as declared in some other
       specification. The definition SHALL be a URI for the Structure Definition defining
       the extension."/> 
      <min value="1"/> 
      <max value="1"/> 
      <base> 
        <path value="Extension.url"/> 
        <min value="1"/> 
        <max value="1"/> 
      </base> 
      <type> 
        <code value="uri"/> 
      </type> 
      <fixedUri value="key"/> 
      <isModifier value="false"/> 
      <isSummary value="false"/> 
      <mapping> 
        <identity value="rim"/> 
        <map value="N/A"/> 
      </mapping> 
    </element> 
    <element id="Extension.extension:key.value[x]">
      <path value="Extension.extension.value[x]"/> 
      <short value="Value of extension"/> 
      <definition value="Value of extension - must be one of a constrained set of the data types (see [Extensibility](
      extensibility.html) for a list)."/> 
      <min value="1"/> 
      <max value="1"/> 
      <base> 
        <path value="Extension.value[x]"/> 
        <min value="0"/> 
        <max value="1"/> 
      </base> 
      <type> 
        <code value="id"/> 
      </type> 
      <constraint> 
        <key value="ele-1"/> 
        <severity value="error"/> 
        <human value="All FHIR elements must have a @value or children"/> 
        <expression value="hasValue() or (children().count() &gt; id.count())"/> 
        <xpath value="@value|f:*|h:div"/> 
        <source value="http://hl7.org/fhir/StructureDefinition/Element"/> 
      </constraint> 
      <isModifier value="false"/> 
      <isSummary value="false"/> 
      <mapping> 
        <identity value="rim"/> 
        <map value="N/A"/> 
      </mapping> 
    </element> 
    <element id="Extension.extension:requirements">
      <path value="Extension.extension"/> 
      <sliceName value="requirements"/> 
      <short value="Why the invariant is defined"/> 
      <definition value="A brief description of why the invariant is necessary or appropriate."/> 
      <min value="0"/> 
      <max value="1"/> 
      <base> 
        <path value="Element.extension"/> 
        <min value="0"/> 
        <max value="*"/> 
      </base> 
      <type> 
        <code value="Extension"/> 
      </type> 
      <constraint> 
        <key value="ele-1"/> 
        <severity value="error"/> 
        <human value="All FHIR elements must have a @value or children"/> 
        <expression value="hasValue() or (children().count() &gt; id.count())"/> 
        <xpath value="@value|f:*|h:div"/> 
        <source value="http://hl7.org/fhir/StructureDefinition/Element"/> 
      </constraint> 
      <constraint> 
        <key value="ext-1"/> 
        <severity value="error"/> 
        <human value="Must have either extensions or value[x], not both"/> 
        <expression value="extension.exists() != value.exists()"/> 
        <xpath value="exists(f:extension)!=exists(f:*[starts-with(local-name(.), &quot;value&quot;)])"/> 
        <source value="http://hl7.org/fhir/StructureDefinition/Extension"/> 
      </constraint> 
      <isModifier value="false"/> 
      <isSummary value="false"/> 
    </element> 
    <element id="Extension.extension:requirements.id">
      <path value="Extension.extension.id"/> 
      <representation value="xmlAttr"/> 
      <short value="Unique id for inter-element referencing"/> 
      <definition value="Unique id for the element within a resource (for internal references). This may
       be any string value that does not contain spaces."/> 
      <min value="0"/> 
      <max value="1"/> 
      <base> 
        <path value="Element.id"/> 
        <min value="0"/> 
        <max value="1"/> 
      </base> 
      <type> 
        <extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-fhir-type">
          <valueUrl value="id"/> 
        </extension> 
        <code value="http://hl7.org/fhirpath/System.String"/> 
      </type> 
      <isModifier value="false"/> 
      <isSummary value="false"/> 
      <mapping> 
        <identity value="rim"/> 
        <map value="n/a"/> 
      </mapping> 
    </element> 
    <element id="Extension.extension:requirements.extension">
      <path value="Extension.extension.extension"/> 
      <slicing> 
        <discriminator> 
          <type value="value"/> 
          <path value="url"/> 
        </discriminator> 
        <description value="Extensions are always sliced by (at least) url"/> 
        <rules value="open"/> 
      </slicing> 
      <short value="Extension"/> 
      <definition value="An Extension"/> 
      <min value="0"/> 
      <max value="0"/> 
      <base> 
        <path value="Element.extension"/> 
        <min value="0"/> 
        <max value="*"/> 
      </base> 
      <type> 
        <code value="Extension"/> 
      </type> 
      <constraint> 
        <key value="ele-1"/> 
        <severity value="error"/> 
        <human value="All FHIR elements must have a @value or children"/> 
        <expression value="hasValue() or (children().count() &gt; id.count())"/> 
        <xpath value="@value|f:*|h:div"/> 
        <source value="http://hl7.org/fhir/StructureDefinition/Element"/> 
      </constraint> 
      <constraint> 
        <key value="ext-1"/> 
        <severity value="error"/> 
        <human value="Must have either extensions or value[x], not both"/> 
        <expression value="extension.exists() != value.exists()"/> 
        <xpath value="exists(f:extension)!=exists(f:*[starts-with(local-name(.), &quot;value&quot;)])"/> 
        <source value="http://hl7.org/fhir/StructureDefinition/Extension"/> 
      </constraint> 
      <isModifier value="false"/> 
      <isSummary value="false"/> 
    </element> 
    <element id="Extension.extension:requirements.url">
      <path value="Extension.extension.url"/> 
      <representation value="xmlAttr"/> 
      <short value="identifies the meaning of the extension"/> 
      <definition value="Source of the definition for the extension code - a logical name or a URL."/> 
      <comment value="The definition may point directly to a computable or human-readable definition
       of the extensibility codes, or it may be a logical URI as declared in some other
       specification. The definition SHALL be a URI for the Structure Definition defining
       the extension."/> 
      <min value="1"/> 
      <max value="1"/> 
      <base> 
        <path value="Extension.url"/> 
        <min value="1"/> 
        <max value="1"/> 
      </base> 
      <type> 
        <code value="uri"/> 
      </type> 
      <fixedUri value="requirements"/> 
      <isModifier value="false"/> 
      <isSummary value="false"/> 
      <mapping> 
        <identity value="rim"/> 
        <map value="N/A"/> 
      </mapping> 
    </element> 
    <element id="Extension.extension:requirements.value[x]">
      <path value="Extension.extension.value[x]"/> 
      <short value="Value of extension"/> 
      <definition value="Value of extension - must be one of a constrained set of the data types (see [Extensibility](
      extensibility.html) for a list)."/> 
      <min value="1"/> 
      <max value="1"/> 
      <base> 
        <path value="Extension.value[x]"/> 
        <min value="0"/> 
        <max value="1"/> 
      </base> 
      <type> 
        <code value="string"/> 
      </type> 
      <constraint> 
        <key value="ele-1"/> 
        <severity value="error"/> 
        <human value="All FHIR elements must have a @value or children"/> 
        <expression value="hasValue() or (children().count() &gt; id.count())"/> 
        <xpath value="@value|f:*|h:div"/> 
        <source value="http://hl7.org/fhir/StructureDefinition/Element"/> 
      </constraint> 
      <isModifier value="false"/> 
      <isSummary value="false"/> 
      <mapping> 
        <identity value="rim"/> 
        <map value="N/A"/> 
      </mapping> 
    </element> 
    <element id="Extension.extension:severity">
      <path value="Extension.extension"/> 
      <sliceName value="severity"/> 
      <short value="error | warning"/> 
      <definition value="Whether the invariant indicates an error condition or a warning."/> 
      <min value="1"/> 
      <max value="1"/> 
      <base> 
        <path value="Element.extension"/> 
        <min value="0"/> 
        <max value="*"/> 
      </base> 
      <type> 
        <code value="Extension"/> 
      </type> 
      <constraint> 
        <key value="ele-1"/> 
        <severity value="error"/> 
        <human value="All FHIR elements must have a @value or children"/> 
        <expression value="hasValue() or (children().count() &gt; id.count())"/> 
        <xpath value="@value|f:*|h:div"/> 
        <source value="http://hl7.org/fhir/StructureDefinition/Element"/> 
      </constraint> 
      <constraint> 
        <key value="ext-1"/> 
        <severity value="error"/> 
        <human value="Must have either extensions or value[x], not both"/> 
        <expression value="extension.exists() != value.exists()"/> 
        <xpath value="exists(f:extension)!=exists(f:*[starts-with(local-name(.), &quot;value&quot;)])"/> 
        <source value="http://hl7.org/fhir/StructureDefinition/Extension"/> 
      </constraint> 
      <isModifier value="false"/> 
      <isSummary value="false"/> 
    </element> 
    <element id="Extension.extension:severity.id">
      <path value="Extension.extension.id"/> 
      <representation value="xmlAttr"/> 
      <short value="Unique id for inter-element referencing"/> 
      <definition value="Unique id for the element within a resource (for internal references). This may
       be any string value that does not contain spaces."/> 
      <min value="0"/> 
      <max value="1"/> 
      <base> 
        <path value="Element.id"/> 
        <min value="0"/> 
        <max value="1"/> 
      </base> 
      <type> 
        <extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-fhir-type">
          <valueUrl value="id"/> 
        </extension> 
        <code value="http://hl7.org/fhirpath/System.String"/> 
      </type> 
      <isModifier value="false"/> 
      <isSummary value="false"/> 
      <mapping> 
        <identity value="rim"/> 
        <map value="n/a"/> 
      </mapping> 
    </element> 
    <element id="Extension.extension:severity.extension">
      <path value="Extension.extension.extension"/> 
      <slicing> 
        <discriminator> 
          <type value="value"/> 
          <path value="url"/> 
        </discriminator> 
        <description value="Extensions are always sliced by (at least) url"/> 
        <rules value="open"/> 
      </slicing> 
      <short value="Extension"/> 
      <definition value="An Extension"/> 
      <min value="0"/> 
      <max value="0"/> 
      <base> 
        <path value="Element.extension"/> 
        <min value="0"/> 
        <max value="*"/> 
      </base> 
      <type> 
        <code value="Extension"/> 
      </type> 
      <constraint> 
        <key value="ele-1"/> 
        <severity value="error"/> 
        <human value="All FHIR elements must have a @value or children"/> 
        <expression value="hasValue() or (children().count() &gt; id.count())"/> 
        <xpath value="@value|f:*|h:div"/> 
        <source value="http://hl7.org/fhir/StructureDefinition/Element"/> 
      </constraint> 
      <constraint> 
        <key value="ext-1"/> 
        <severity value="error"/> 
        <human value="Must have either extensions or value[x], not both"/> 
        <expression value="extension.exists() != value.exists()"/> 
        <xpath value="exists(f:extension)!=exists(f:*[starts-with(local-name(.), &quot;value&quot;)])"/> 
        <source value="http://hl7.org/fhir/StructureDefinition/Extension"/> 
      </constraint> 
      <isModifier value="false"/> 
      <isSummary value="false"/> 
    </element> 
    <element id="Extension.extension:severity.url">
      <path value="Extension.extension.url"/> 
      <representation value="xmlAttr"/> 
      <short value="identifies the meaning of the extension"/> 
      <definition value="Source of the definition for the extension code - a logical name or a URL."/> 
      <comment value="The definition may point directly to a computable or human-readable definition
       of the extensibility codes, or it may be a logical URI as declared in some other
       specification. The definition SHALL be a URI for the Structure Definition defining
       the extension."/> 
      <min value="1"/> 
      <max value="1"/> 
      <base> 
        <path value="Extension.url"/> 
        <min value="1"/> 
        <max value="1"/> 
      </base> 
      <type> 
        <code value="uri"/> 
      </type> 
      <fixedUri value="severity"/> 
      <isModifier value="false"/> 
      <isSummary value="false"/> 
      <mapping> 
        <identity value="rim"/> 
        <map value="N/A"/> 
      </mapping> 
    </element> 
    <element id="Extension.extension:severity.value[x]">
      <path value="Extension.extension.value[x]"/> 
      <short value="Value of extension"/> 
      <definition value="Value of extension - must be one of a constrained set of the data types (see [Extensibility](
      extensibility.html) for a list)."/> 
      <min value="1"/> 
      <max value="1"/> 
      <base> 
        <path value="Extension.value[x]"/> 
        <min value="0"/> 
        <max value="1"/> 
      </base> 
      <type> 
        <code value="code"/> 
      </type> 
      <constraint> 
        <key value="ele-1"/> 
        <severity value="error"/> 
        <human value="All FHIR elements must have a @value or children"/> 
        <expression value="hasValue() or (children().count() &gt; id.count())"/> 
        <xpath value="@value|f:*|h:div"/> 
        <source value="http://hl7.org/fhir/StructureDefinition/Element"/> 
      </constraint> 
      <isModifier value="false"/> 
      <isSummary value="false"/> 
      <binding> 
        <extension url="http://hl7.org/fhir/build/StructureDefinition/binding-definition">
          <valueString value="SHALL applications comply with this constraint?"/> 
        </extension> 
        <extension url="http://hl7.org/fhir/StructureDefinition/elementdefinition-bindingName">
          <valueString value="ConstraintSeverity"/> 
        </extension> 
        <strength value="required"/> 
        <valueSet value="http://hl7.org/fhir/ValueSet/constraint-severity|5.0.0-ballot"/> 
      </binding> 
      <mapping> 
        <identity value="rim"/> 
        <map value="N/A"/> 
      </mapping> 
    </element> 
    <element id="Extension.extension:expression">
      <path value="Extension.extension"/> 
      <sliceName value="expression"/> 
      <short value="The invariant expression"/> 
      <definition value="An expression providing a formal representation of the invariant condition."/> 
      <comment value="The expression will have access to `%target` (the resource that was instantiated)
       and `%definition` (the definition for the instantiated resource)."/> 
      <min value="1"/> 
      <max value="1"/> 
      <base> 
        <path value="Element.extension"/> 
        <min value="0"/> 
        <max value="*"/> 
      </base> 
      <type> 
        <code value="Extension"/> 
      </type> 
      <constraint> 
        <key value="ele-1"/> 
        <severity value="error"/> 
        <human value="All FHIR elements must have a @value or children"/> 
        <expression value="hasValue() or (children().count() &gt; id.count())"/> 
        <xpath value="@value|f:*|h:div"/> 
        <source value="http://hl7.org/fhir/StructureDefinition/Element"/> 
      </constraint> 
      <constraint> 
        <key value="ext-1"/> 
        <severity value="error"/> 
        <human value="Must have either extensions or value[x], not both"/> 
        <expression value="extension.exists() != value.exists()"/> 
        <xpath value="exists(f:extension)!=exists(f:*[starts-with(local-name(.), &quot;value&quot;)])"/> 
        <source value="http://hl7.org/fhir/StructureDefinition/Extension"/> 
      </constraint> 
      <isModifier value="false"/> 
      <isSummary value="false"/> 
    </element> 
    <element id="Extension.extension:expression.id">
      <path value="Extension.extension.id"/> 
      <representation value="xmlAttr"/> 
      <short value="Unique id for inter-element referencing"/> 
      <definition value="Unique id for the element within a resource (for internal references). This may
       be any string value that does not contain spaces."/> 
      <min value="0"/> 
      <max value="1"/> 
      <base> 
        <path value="Element.id"/> 
        <min value="0"/> 
        <max value="1"/> 
      </base> 
      <type> 
        <extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-fhir-type">
          <valueUrl value="id"/> 
        </extension> 
        <code value="http://hl7.org/fhirpath/System.String"/> 
      </type> 
      <isModifier value="false"/> 
      <isSummary value="false"/> 
      <mapping> 
        <identity value="rim"/> 
        <map value="n/a"/> 
      </mapping> 
    </element> 
    <element id="Extension.extension:expression.extension">
      <path value="Extension.extension.extension"/> 
      <slicing> 
        <discriminator> 
          <type value="value"/> 
          <path value="url"/> 
        </discriminator> 
        <description value="Extensions are always sliced by (at least) url"/> 
        <rules value="open"/> 
      </slicing> 
      <short value="Extension"/> 
      <definition value="An Extension"/> 
      <min value="0"/> 
      <max value="0"/> 
      <base> 
        <path value="Element.extension"/> 
        <min value="0"/> 
        <max value="*"/> 
      </base> 
      <type> 
        <code value="Extension"/> 
      </type> 
      <constraint> 
        <key value="ele-1"/> 
        <severity value="error"/> 
        <human value="All FHIR elements must have a @value or children"/> 
        <expression value="hasValue() or (children().count() &gt; id.count())"/> 
        <xpath value="@value|f:*|h:div"/> 
        <source value="http://hl7.org/fhir/StructureDefinition/Element"/> 
      </constraint> 
      <constraint> 
        <key value="ext-1"/> 
        <severity value="error"/> 
        <human value="Must have either extensions or value[x], not both"/> 
        <expression value="extension.exists() != value.exists()"/> 
        <xpath value="exists(f:extension)!=exists(f:*[starts-with(local-name(.), &quot;value&quot;)])"/> 
        <source value="http://hl7.org/fhir/StructureDefinition/Extension"/> 
      </constraint> 
      <isModifier value="false"/> 
      <isSummary value="false"/> 
    </element> 
    <element id="Extension.extension:expression.url">
      <path value="Extension.extension.url"/> 
      <representation value="xmlAttr"/> 
      <short value="identifies the meaning of the extension"/> 
      <definition value="Source of the definition for the extension code - a logical name or a URL."/> 
      <comment value="The definition may point directly to a computable or human-readable definition
       of the extensibility codes, or it may be a logical URI as declared in some other
       specification. The definition SHALL be a URI for the Structure Definition defining
       the extension."/> 
      <min value="1"/> 
      <max value="1"/> 
      <base> 
        <path value="Extension.url"/> 
        <min value="1"/> 
        <max value="1"/> 
      </base> 
      <type> 
        <code value="uri"/> 
      </type> 
      <fixedUri value="expression"/> 
      <isModifier value="false"/> 
      <isSummary value="false"/> 
      <mapping> 
        <identity value="rim"/> 
        <map value="N/A"/> 
      </mapping> 
    </element> 
    <element id="Extension.extension:expression.value[x]">
      <path value="Extension.extension.value[x]"/> 
      <short value="Value of extension"/> 
      <definition value="Value of extension - must be one of a constrained set of the data types (see [Extensibility](
      extensibility.html) for a list)."/> 
      <min value="1"/> 
      <max value="1"/> 
      <base> 
        <path value="Extension.value[x]"/> 
        <min value="0"/> 
        <max value="1"/> 
      </base> 
      <type> 
        <code value="Expression"/> 
      </type> 
      <constraint> 
        <key value="ele-1"/> 
        <severity value="error"/> 
        <human value="All FHIR elements must have a @value or children"/> 
        <expression value="hasValue() or (children().count() &gt; id.count())"/> 
        <xpath value="@value|f:*|h:div"/> 
        <source value="http://hl7.org/fhir/StructureDefinition/Element"/> 
      </constraint> 
      <isModifier value="false"/> 
      <isSummary value="false"/> 
      <mapping> 
        <identity value="rim"/> 
        <map value="N/A"/> 
      </mapping> 
    </element> 
    <element id="Extension.url">
      <path value="Extension.url"/> 
      <representation value="xmlAttr"/> 
      <short value="identifies the meaning of the extension"/> 
      <definition value="Source of the definition for the extension code - a logical name or a URL."/> 
      <comment value="The definition may point directly to a computable or human-readable definition
       of the extensibility codes, or it may be a logical URI as declared in some other
       specification. The definition SHALL be a URI for the Structure Definition defining
       the extension."/> 
      <min value="1"/> 
      <max value="1"/> 
      <base> 
        <path value="Extension.url"/> 
        <min value="1"/> 
        <max value="1"/> 
      </base> 
      <type> 
        <extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-fhir-type">
          <valueUrl value="uri"/> 
        </extension> 
        <code value="http://hl7.org/fhirpath/System.String"/> 
      </type> 
      <fixedUri value="http://hl7.org/fhir/StructureDefinition/cqf-targetInvariant"/> 
      <isModifier value="false"/> 
      <isSummary value="false"/> 
      <mapping> 
        <identity value="rim"/> 
        <map value="N/A"/> 
      </mapping> 
    </element> 
    <element id="Extension.value[x]">
      <path value="Extension.value[x]"/> 
      <short value="Value of extension"/> 
      <definition value="Value of extension - must be one of a constrained set of the data types (see [Extensibility](
      extensibility.html) for a list)."/> 
      <min value="0"/> 
      <max value="0"/> 
      <base> 
        <path value="Extension.value[x]"/> 
        <min value="0"/> 
        <max value="1"/> 
      </base> 
      <type> 
        <code value="base64Binary"/> 
      </type> 
      <type> 
        <code value="boolean"/> 
      </type> 
      <type> 
        <code value="canonical"/> 
      </type> 
      <type> 
        <code value="code"/> 
      </type> 
      <type> 
        <code value="date"/> 
      </type> 
      <type> 
        <code value="dateTime"/> 
      </type> 
      <type> 
        <code value="decimal"/> 
      </type> 
      <type> 
        <code value="id"/> 
      </type> 
      <type> 
        <code value="instant"/> 
      </type> 
      <type> 
        <code value="integer"/> 
      </type> 
      <type> 
        <code value="integer64"/> 
      </type> 
      <type> 
        <code value="markdown"/> 
      </type> 
      <type> 
        <code value="oid"/> 
      </type> 
      <type> 
        <code value="positiveInt"/> 
      </type> 
      <type> 
        <code value="string"/> 
      </type> 
      <type> 
        <code value="time"/> 
      </type> 
      <type> 
        <code value="unsignedInt"/> 
      </type> 
      <type> 
        <code value="uri"/> 
      </type> 
      <type> 
        <code value="url"/> 
      </type> 
      <type> 
        <code value="uuid"/> 
      </type> 
      <type> 
        <code value="Address"/> 
      </type> 
      <type> 
        <code value="Age"/> 
      </type> 
      <type> 
        <code value="Annotation"/> 
      </type> 
      <type> 
        <code value="Attachment"/> 
      </type> 
      <type> 
        <code value="CodeableConcept"/> 
      </type> 
      <type> 
        <code value="CodeableReference"/> 
      </type> 
      <type> 
        <code value="Coding"/> 
      </type> 
      <type> 
        <code value="ContactPoint"/> 
      </type> 
      <type> 
        <code value="Count"/> 
      </type> 
      <type> 
        <code value="Distance"/> 
      </type> 
      <type> 
        <code value="Duration"/> 
      </type> 
      <type> 
        <code value="HumanName"/> 
      </type> 
      <type> 
        <code value="Identifier"/> 
      </type> 
      <type> 
        <code value="Money"/> 
      </type> 
      <type> 
        <code value="Period"/> 
      </type> 
      <type> 
        <code value="Quantity"/> 
      </type> 
      <type> 
        <code value="Range"/> 
      </type> 
      <type> 
        <code value="Ratio"/> 
      </type> 
      <type> 
        <code value="RatioRange"/> 
      </type> 
      <type> 
        <code value="Reference"/> 
      </type> 
      <type> 
        <code value="SampledData"/> 
      </type> 
      <type> 
        <code value="Signature"/> 
      </type> 
      <type> 
        <code value="Timing"/> 
      </type> 
      <type> 
        <code value="ContactDetail"/> 
      </type> 
      <type> 
        <code value="DataRequirement"/> 
      </type> 
      <type> 
        <code value="Expression"/> 
      </type> 
      <type> 
        <code value="ParameterDefinition"/> 
      </type> 
      <type> 
        <code value="RelatedArtifact"/> 
      </type> 
      <type> 
        <code value="TriggerDefinition"/> 
      </type> 
      <type> 
        <code value="UsageContext"/> 
      </type> 
      <type> 
        <code value="Availability"/> 
      </type> 
      <type> 
        <code value="ExtendedContactDetail"/> 
      </type> 
      <type> 
        <code value="Dosage"/> 
      </type> 
      <type> 
        <code value="Meta"/> 
      </type> 
      <constraint> 
        <key value="ele-1"/> 
        <severity value="error"/> 
        <human value="All FHIR elements must have a @value or children"/> 
        <expression value="hasValue() or (children().count() &gt; id.count())"/> 
        <xpath value="@value|f:*|h:div"/> 
        <source value="http://hl7.org/fhir/StructureDefinition/Element"/> 
      </constraint> 
      <isModifier value="false"/> 
      <isSummary value="false"/> 
      <mapping> 
        <identity value="rim"/> 
        <map value="N/A"/> 
      </mapping> 
    </element> 
  </snapshot> 
  <differential> 
    <element id="Extension">
      <path value="Extension"/> 
      <short value="A constraint on the target resource"/> 
      <definition value="Specifies an invariant that is enforced in the context of an instantiated resource."/> 
      <comment value="Can be used on any definitional artifact to define an invariant that is enforced
       in the context of an instantiated resource. The invariant expression will have
       access to `%target` and `%definition` variables, where target is the instantiated
       resource, and definition is the definition used to instantiate."/> 
      <min value="0"/> 
      <max value="*"/> 
    </element> 
    <element id="Extension.extension:key">
      <path value="Extension.extension"/> 
      <sliceName value="key"/> 
      <short value="Unique identifier"/> 
      <definition value="A unique identifier for the invariant (unique in the context of the resource)."/> 
      <comment value="Any error or outcome messages or warnings should include this id to allow the source
       of the message to be determined."/> 
      <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.value[x]">
      <path value="Extension.extension.value[x]"/> 
      <min value="1"/> 
      <type> 
        <code value="id"/> 
      </type> 
    </element> 
    <element id="Extension.extension:requirements">
      <path value="Extension.extension"/> 
      <sliceName value="requirements"/> 
      <short value="Why the invariant is defined"/> 
      <definition value="A brief description of why the invariant is necessary or appropriate."/> 
      <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.value[x]">
      <path value="Extension.extension.value[x]"/> 
      <min value="1"/> 
      <type> 
        <code value="string"/> 
      </type> 
    </element> 
    <element id="Extension.extension:severity">
      <path value="Extension.extension"/> 
      <sliceName value="severity"/> 
      <short value="error | warning"/> 
      <definition value="Whether the invariant indicates an error condition or a warning."/> 
      <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.value[x]">
      <path value="Extension.extension.value[x]"/> 
      <min value="1"/> 
      <type> 
        <code value="code"/> 
      </type> 
      <binding> 
        <extension url="http://hl7.org/fhir/build/StructureDefinition/binding-definition">
          <valueString value="SHALL applications comply with this constraint?"/> 
        </extension> 
        <extension url="http://hl7.org/fhir/StructureDefinition/elementdefinition-bindingName">
          <valueString value="ConstraintSeverity"/> 
        </extension> 
        <strength value="required"/> 
        <valueSet value="http://hl7.org/fhir/ValueSet/constraint-severity|5.0.0-ballot"/> 
      </binding> 
    </element> 
    <element id="Extension.extension:expression">
      <path value="Extension.extension"/> 
      <sliceName value="expression"/> 
      <short value="The invariant expression"/> 
      <definition value="An expression providing a formal representation of the invariant condition."/> 
      <comment value="The expression will have access to `%target` (the resource that was instantiated)
       and `%definition` (the definition for the instantiated resource)."/> 
      <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.value[x]">
      <path value="Extension.extension.value[x]"/> 
      <min value="1"/> 
      <type> 
        <code value="Expression"/> 
      </type> 
    </element> 
    <element id="Extension.url">
      <path value="Extension.url"/> 
      <fixedUri value="http://hl7.org/fhir/StructureDefinition/cqf-targetInvariant"/> 
    </element> 
    <element id="Extension.value[x]">
      <path value="Extension.value[x]"/> 
      <min value="0"/> 
      <max value="0"/> 
    </element> 
  </differential> 
</StructureDefinition> 

Usage note: every effort has been made to ensure that the examples are correct and useful, but they are not a normative part of the specification.