<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="el-coding" />
  <url value="http://fhir.essilorluxottica.com/fhir/StructureDefinition/el-coding" />
  <version value="1.0.0" />
  <name value="ELCoding" />
  <title value="EL Coding Profile" />
  <status value="draft" />
  <description value="The Profile for Coding." />
  <fhirVersion value="4.0.1" />
  <kind value="resource" />
  <abstract value="false" />
  <type value="ChargeItem" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/ChargeItem" />
  <derivation value="constraint" />
  <differential>
    <element id="ChargeItem">
      <path value="ChargeItem" />
      <constraint>
        <key value="mustcontain-cpt-or-hcpcs" />
        <severity value="error" />
        <human value="Requires either CPT or HCPCS code." />
        <expression value="(code.coding.where( system = 'http://www.ama-assn.org/go/cpt' ).exists() and code.coding.where( system = 'https://terminology.hl7.org/5.0.0/CodeSystem-hcpcs-Level-II.html' ).exists().not()) or&#xA;      (code.coding.where( system = 'http://www.ama-assn.org/go/cpt' ).exists().not() and code.coding.where( system = 'https://terminology.hl7.org/5.0.0/CodeSystem-hcpcs-Level-II.html' ).exists())" />
        <source value="http://fhir.essilorluxottica.com/fhir/StructureDefinition/el-coding" />
      </constraint>
    </element>
    <element id="ChargeItem.meta.extension">
      <path value="ChargeItem.meta.extension" />
      <min value="1" />
    </element>
    <element id="ChargeItem.meta.extension:organization">
      <path value="ChargeItem.meta.extension" />
      <sliceName value="organization" />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://fhir.essilorluxottica.com/fhir/StructureDefinition/el-meta-organization-extension" />
      </type>
    </element>
    <element id="ChargeItem.meta.tag">
      <path value="ChargeItem.meta.tag" />
      <binding>
        <strength value="required" />
        <valueSet value="http://fhir.essilorluxottica.com/fhir/ValueSet/el-metatag-vs" />
      </binding>
    </element>
    <element id="ChargeItem.status">
      <path value="ChargeItem.status" />
      <binding>
        <strength value="required" />
        <valueSet value="http://fhir.essilorluxottica.com/fhir/ValueSet/el-chargeItem-status-vs" />
      </binding>
    </element>
    <element id="ChargeItem.code.coding">
      <path value="ChargeItem.code.coding" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="system" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <min value="1" />
      <max value="3" />
    </element>
    <element id="ChargeItem.code.coding:cpt">
      <path value="ChargeItem.code.coding" />
      <sliceName value="cpt" />
      <min value="0" />
      <max value="1" />
      <binding>
        <strength value="required" />
        <valueSet value="http://hl7.org/fhir/ValueSet/cpt-all" />
      </binding>
    </element>
    <element id="ChargeItem.code.coding:cpt.system">
      <path value="ChargeItem.code.coding.system" />
      <min value="1" />
      <patternUri value="http://www.ama-assn.org/go/cpt" />
    </element>
    <element id="ChargeItem.code.coding:cpt.code">
      <path value="ChargeItem.code.coding.code" />
      <min value="1" />
    </element>
    <element id="ChargeItem.code.coding:hcpcs">
      <path value="ChargeItem.code.coding" />
      <sliceName value="hcpcs" />
      <min value="0" />
      <max value="1" />
      <binding>
        <strength value="required" />
        <valueSet value="http://terminology.hl7.org/ValueSet/v3-HealthCareCommonProcedureCodingSystem" />
      </binding>
    </element>
    <element id="ChargeItem.code.coding:hcpcs.system">
      <path value="ChargeItem.code.coding.system" />
      <min value="1" />
      <patternUri value="https://www.cms.gov/Medicare/Coding/HCPCSReleaseCodeSets" />
    </element>
    <element id="ChargeItem.code.coding:hcpcs.code">
      <path value="ChargeItem.code.coding.code" />
      <min value="1" />
    </element>
    <element id="ChargeItem.code.coding:modifier">
      <path value="ChargeItem.code.coding" />
      <sliceName value="modifier" />
      <min value="0" />
      <max value="1" />
      <binding>
        <strength value="required" />
        <valueSet value="http://terminology.hl7.org/ValueSet/cpt-modifiers" />
      </binding>
    </element>
    <element id="ChargeItem.code.coding:modifier.system">
      <path value="ChargeItem.code.coding.system" />
      <min value="1" />
      <patternUri value="http://www.ama-assn.org/go/cpt-modifier" />
    </element>
    <element id="ChargeItem.code.coding:modifier.code">
      <path value="ChargeItem.code.coding.code" />
      <min value="1" />
    </element>
    <element id="ChargeItem.code.coding:feelevel">
      <path value="ChargeItem.code.coding" />
      <sliceName value="feelevel" />
      <min value="0" />
      <max value="1" />
      <binding>
        <strength value="required" />
        <valueSet value="http://fhir.essilorluxottica.com/fhir/ValueSet/el-chargeItem-feelevel-vs" />
      </binding>
    </element>
    <element id="ChargeItem.code.coding:feelevel.system">
      <path value="ChargeItem.code.coding.system" />
      <min value="1" />
      <patternUri value="http://fhir.essilorluxottica.com/fhir/CodeSystem/el-chargeItem-feelevel-cs" />
    </element>
    <element id="ChargeItem.code.coding:feelevel.code">
      <path value="ChargeItem.code.coding.code" />
      <min value="1" />
    </element>
    <element id="ChargeItem.context">
      <path value="ChargeItem.context" />
      <min value="1" />
    </element>
    <element id="ChargeItem.performingOrganization">
      <path value="ChargeItem.performingOrganization" />
      <min value="1" />
    </element>
    <element id="ChargeItem.quantity">
      <path value="ChargeItem.quantity" />
      <min value="1" />
    </element>
    <element id="ChargeItem.reason.coding">
      <path value="ChargeItem.reason.coding" />
      <binding>
        <strength value="required" />
        <valueSet value="http://fhir.essilorluxottica.com/fhir/ValueSet/el-condition-assessmentcode-vs" />
      </binding>
    </element>
    <element id="ChargeItem.reason.coding.system">
      <path value="ChargeItem.reason.coding.system" />
      <patternUri value="http://hl7.org/fhir/sid/icd-10-cm" />
    </element>
    <element id="ChargeItem.reason.coding.code">
      <path value="ChargeItem.reason.coding.code" />
      <min value="1" />
    </element>
    <element id="ChargeItem.reason.coding.display">
      <path value="ChargeItem.reason.coding.display" />
      <min value="1" />
    </element>
    <element id="ChargeItem.account">
      <path value="ChargeItem.account" />
      <min value="1" />
      <max value="1" />
    </element>
  </differential>
</StructureDefinition>