<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="iso21090-nullFlavor" />
  <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/iso21090-nullFlavor" />
  <version value="4.0.1" />
  <name value="nullFlavor" />
  <status value="draft" />
  <date value="2012-06-24" />
  <publisher value="Health Level Seven International (Modeling and Methodology)" />
  <contact>
    <telecom>
      <system value="url" />
      <value value="http://www.hl7.org/Special/committees/mnm" />
    </telecom>
  </contact>
  <description value="If the value is not a proper value, indicates the reason." />
  <fhirVersion value="4.0.1" />
  <mapping>
    <identity value="v2" />
    <uri value="http://hl7.org/v2" />
    <name value="HL7 v2 Mapping" />
  </mapping>
  <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="NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | QS" />
      <definition value="If the value is not a proper value, indicates the reason." />
      <comment value="Considerable care must be used when using nullFlavor in this context of FHIR - more than any other concept, this is tied to the way v3 works, and FHIR is quite different. For instance, there is no notion of a &quot;proper value&quot; as opposed to any other value in FHIR. a NullFlavor should be understood to mean, &quot;why information is missing&quot;, and the nulFlavors OTH, NINF, PINF, and TRC should not be used." />
      <min value="0" />
      <max value="1" />
      <base>
        <path value="Extension" />
        <min value="0" />
        <max value="*" />
      </base>
      <condition value="ele-1" />
      <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" />
      <mapping>
        <identity value="v2" />
        <map value="n/a" />
      </mapping>
      <mapping>
        <identity value="rim" />
        <map value="ANY.nullFlavor" />
      </mapping>
    </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="string" />
        </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="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.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/iso21090-nullFlavor" />
      <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](http://hl7.org/fhir/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/StructureDefinition/elementdefinition-bindingName">
          <valueString value="NullFlavor" />
        </extension>
        <strength value="required" />
        <description value="A collection of codes specifying why a valid value is not present." />
        <valueSet value="http://terminology.hl7.org/ValueSet/v3-NullFlavor|4.0.1" />
      </binding>
      <mapping>
        <identity value="rim" />
        <map value="N/A" />
      </mapping>
    </element>
  </snapshot>
  <differential>
    <element id="Extension">
      <path value="Extension" />
      <short value="NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | QS" />
      <definition value="If the value is not a proper value, indicates the reason." />
      <comment value="Considerable care must be used when using nullFlavor in this context of FHIR - more than any other concept, this is tied to the way v3 works, and FHIR is quite different. For instance, there is no notion of a &quot;proper value&quot; as opposed to any other value in FHIR. a NullFlavor should be understood to mean, &quot;why information is missing&quot;, and the nulFlavors OTH, NINF, PINF, and TRC should not be used." />
      <min value="0" />
      <max value="1" />
      <mapping>
        <identity value="v2" />
        <map value="n/a" />
      </mapping>
      <mapping>
        <identity value="rim" />
        <map value="ANY.nullFlavor" />
      </mapping>
    </element>
    <element id="Extension.extension">
      <path value="Extension.extension" />
      <max value="0" />
    </element>
    <element id="Extension.url">
      <path value="Extension.url" />
      <fixedUri value="http://hl7.org/fhir/StructureDefinition/iso21090-nullFlavor" />
    </element>
    <element id="Extension.value[x]">
      <path value="Extension.value[x]" />
      <min value="1" />
      <type>
        <code value="code" />
      </type>
      <binding>
        <extension url="http://hl7.org/fhir/StructureDefinition/elementdefinition-bindingName">
          <valueString value="NullFlavor" />
        </extension>
        <strength value="required" />
        <description value="A collection of codes specifying why a valid value is not present." />
        <valueSet value="http://terminology.hl7.org/ValueSet/v3-NullFlavor|4.0.1" />
      </binding>
    </element>
  </differential>
</StructureDefinition>