<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="profile-ValueSet-expansion" />
  <url value="https://bpcs.exchange/fhir/StructureDefinition/profile-ValueSet-expansion" />
  <name value="ValueSetExpansion" />
  <title value="ValueSet Expansion Profile" />
  <status value="active" />
  <experimental value="false" />
  <description value="An expanded (current) list of codes for a given value set" />
  <fhirVersion value="5.0.0" />
  <mapping>
    <identity value="BPCS" />
    <name value="Internal BPCS API" />
  </mapping>
  <kind value="resource" />
  <abstract value="false" />
  <type value="ValueSet" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/ValueSet" />
  <derivation value="constraint" />
  <differential>
    <element id="ValueSet.url">
      <path value="ValueSet.url" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="ValueSet.version">
      <path value="ValueSet.version" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="ValueSet.status">
      <path value="ValueSet.status" />
      <patternCode value="active" />
    </element>
    <element id="ValueSet.expansion">
      <path value="ValueSet.expansion" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="ValueSet.expansion.timestamp">
      <path value="ValueSet.expansion.timestamp" />
      <comment value="This can be used to determine when the value set needs to be queried again" />
      <mustSupport value="true" />
    </element>
    <element id="ValueSet.expansion.contains">
      <path value="ValueSet.expansion.contains" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="ValueSet.expansion.contains.system">
      <path value="ValueSet.expansion.contains.system" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="ValueSet.expansion.contains.code">
      <path value="ValueSet.expansion.contains.code" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="ValueSet.expansion.contains.display">
      <path value="ValueSet.expansion.contains.display" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="ValueSet.expansion.contains.designation">
      <path value="ValueSet.expansion.contains.designation" />
      <mustSupport value="true" />
    </element>
    <element id="ValueSet.expansion.contains.designation.use">
      <path value="ValueSet.expansion.contains.designation.use" />
      <mustSupport value="true" />
    </element>
    <element id="ValueSet.expansion.contains.designation.value">
      <path value="ValueSet.expansion.contains.designation.value" />
      <mustSupport value="true" />
    </element>
    <element id="ValueSet.expansion.contains.property">
      <path value="ValueSet.expansion.contains.property" />
      <mustSupport value="true" />
    </element>
    <element id="ValueSet.expansion.contains.property.code">
      <path value="ValueSet.expansion.contains.property.code" />
      <mustSupport value="true" />
    </element>
    <element id="ValueSet.expansion.contains.property.value[x]">
      <path value="ValueSet.expansion.contains.property.value[x]" />
      <mustSupport value="true" />
    </element>
    <element id="ValueSet.expansion.contains.contains">
      <path value="ValueSet.expansion.contains.contains" />
      <mustSupport value="true" />
    </element>
    <element id="ValueSet.expansion.contains.contains.system">
      <path value="ValueSet.expansion.contains.contains.system" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="ValueSet.expansion.contains.contains.code">
      <path value="ValueSet.expansion.contains.contains.code" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="ValueSet.expansion.contains.contains.display">
      <path value="ValueSet.expansion.contains.contains.display" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="ValueSet.expansion.contains.contains.designation">
      <path value="ValueSet.expansion.contains.contains.designation" />
      <mustSupport value="true" />
    </element>
    <element id="ValueSet.expansion.contains.contains.designation.use">
      <path value="ValueSet.expansion.contains.contains.designation.use" />
      <mustSupport value="true" />
    </element>
    <element id="ValueSet.expansion.contains.contains.designation.value">
      <path value="ValueSet.expansion.contains.contains.designation.value" />
      <mustSupport value="true" />
    </element>
    <element id="ValueSet.expansion.contains.contains.property">
      <path value="ValueSet.expansion.contains.contains.property" />
      <mustSupport value="true" />
    </element>
    <element id="ValueSet.expansion.contains.contains.property.code">
      <path value="ValueSet.expansion.contains.contains.property.code" />
      <mustSupport value="true" />
    </element>
    <element id="ValueSet.expansion.contains.contains.property.value[x]">
      <path value="ValueSet.expansion.contains.contains.property.value[x]" />
      <mustSupport value="true" />
    </element>
  </differential>
</StructureDefinition>