<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="IDMS-ChargeItemDefinition-Rebate-Profile" />
  <url value="https://health.gov.on.ca/idms/fhir/StructureDefinition/IDMS-ChargeItemDefinition-RebateDefinition" />
  <version value="1.0.0" />
  <name value="Rebate_Definition" />
  <title value="IDMS - ChargeItemDefinition - Rebate Definition" />
  <status value="active" />
  <description value="Rebate definition" />
  <fhirVersion value="5.0.0" />
  <kind value="resource" />
  <abstract value="false" />
  <type value="ChargeItemDefinition" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/ChargeItemDefinition" />
  <derivation value="constraint" />
  <differential>
    <element id="ChargeItemDefinition">
      <path value="ChargeItemDefinition" />
      <short value="Rebate Definition and how the price and the applicability of a ChargeItem can be determined" />
      <definition value="#### **_`Rebate Defition.  Invoice line items (ChargeItems) are based on rebate definitions (ChargeItemDefinitions)  `_**&#xD;&#xA;&#xD;&#xA;The ChargeItemDefinition resource provides the properties that apply to the (billing) codes necessary to calculate costs and prices. The properties may differ largely depending on type and realm, therefore this resource gives only a rough structure and requires profiling for each type of billing code system." />
    </element>
    <element id="ChargeItemDefinition.extension">
      <path value="ChargeItemDefinition.extension" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="url" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <min value="0" />
    </element>
    <element id="ChargeItemDefinition.extension:medicinalProduct">
      <path value="ChargeItemDefinition.extension" />
      <sliceName value="medicinalProduct" />
      <definition value="#### **_`Reference to the Drug Product (MedicinalProductDefinition).`_**" />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="https://health.gov.on.ca/idms/fhir/StructureDefinition/Extension-Related-Medicinal-Product" />
      </type>
    </element>
    <element id="ChargeItemDefinition.extension:createdUser">
      <path value="ChargeItemDefinition.extension" />
      <sliceName value="createdUser" />
      <definition value="#### **_`IDMS: Link to the user that created the record.`_**" />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="https://health.gov.on.ca/idms/fhir/StructureDefinition/CreatedUser" />
      </type>
    </element>
    <element id="ChargeItemDefinition.extension:createdDate">
      <path value="ChargeItemDefinition.extension" />
      <sliceName value="createdDate" />
      <definition value="#### **_`IDMS: Date and Time the record was created.`_**" />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="https://health.gov.on.ca/idms/fhir/StructureDefinition/CreatedDate" />
      </type>
    </element>
    <element id="ChargeItemDefinition.extension:updatedUser">
      <path value="ChargeItemDefinition.extension" />
      <sliceName value="updatedUser" />
      <definition value="#### **_`IDMS: Link to the user that last updated the record.`_**" />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="https://health.gov.on.ca/idms/fhir/StructureDefinition/UpdatedUser" />
      </type>
    </element>
    <element id="ChargeItemDefinition.extension:updatedDate">
      <path value="ChargeItemDefinition.extension" />
      <sliceName value="updatedDate" />
      <definition value="#### **_`IDMS: Date and Time the record was last updated.`_**" />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="https://health.gov.on.ca/idms/fhir/StructureDefinition/UpdatedDate" />
      </type>
    </element>
    <element id="ChargeItemDefinition.extension:tableNumber">
      <path value="ChargeItemDefinition.extension" />
      <sliceName value="tableNumber" />
      <definition value="#### **_`Corresponding Table number in the agreement. This is used for billing.`_**" />
      <min value="0" />
      <type>
        <code value="Extension" />
        <profile value="https://health.gov.on.ca/idms/fhir/StructureDefinition/Extension-Rebate-Table-Number" />
      </type>
    </element>
    <element id="ChargeItemDefinition.extension:numberOfYears">
      <path value="ChargeItemDefinition.extension" />
      <sliceName value="numberOfYears" />
      <definition value="#### **_`Number of years this rebate is good for. This is usually populated for Annual rebates.`_**" />
      <min value="0" />
      <type>
        <code value="Extension" />
        <profile value="https://health.gov.on.ca/idms/fhir/StructureDefinition/Extension-Rebate-Number-Years" />
      </type>
    </element>
    <element id="ChargeItemDefinition.extension:fundingProgram">
      <path value="ChargeItemDefinition.extension" />
      <sliceName value="fundingProgram" />
      <definition value="#### **_`Funding programs the rebate applies to.`_**" />
      <min value="0" />
      <type>
        <code value="Extension" />
        <profile value="https://health.gov.on.ca/idms/fhir/StructureDefinition/Extension-Rebate-Funding-Program" />
      </type>
    </element>
    <element id="ChargeItemDefinition.extension:originalAgreement">
      <path value="ChargeItemDefinition.extension" />
      <sliceName value="originalAgreement" />
      <definition value="#### **_`Funding programs the rebate applies to.`_**" />
      <min value="0" />
      <type>
        <code value="Extension" />
        <profile value="https://health.gov.on.ca/idms/fhir/StructureDefinition/Extension-Rebate-Original-Agreement" />
      </type>
    </element>
    <element id="ChargeItemDefinition.url">
      <path value="ChargeItemDefinition.url" />
      <definition value="#### **_`Unique URI for the rebate definition. This is referenced by the invoice line item (ChargeItem)  `_**&#xD;&#xA;&#xD;&#xA;An absolute URI that is used to identify this charge item definition when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which an authoritative instance of this charge item definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the charge item definition is stored on different servers." />
      <min value="1" />
    </element>
    <element id="ChargeItemDefinition.identifier">
      <path value="ChargeItemDefinition.identifier" />
      <max value="0" />
    </element>
    <element id="ChargeItemDefinition.versionAlgorithm[x]">
      <path value="ChargeItemDefinition.versionAlgorithm[x]" />
      <max value="0" />
    </element>
    <element id="ChargeItemDefinition.name">
      <path value="ChargeItemDefinition.name" />
      <max value="0" />
    </element>
    <element id="ChargeItemDefinition.title">
      <path value="ChargeItemDefinition.title" />
      <short value="Rebate Name" />
      <definition value="#### **_`Name given to the rebate by the manufacturer. Can appear on the invoice that is sent to manufacturer.`_**" />
      <min value="1" />
    </element>
    <element id="ChargeItemDefinition.derivedFromUri">
      <path value="ChargeItemDefinition.derivedFromUri" />
      <max value="0" />
    </element>
    <element id="ChargeItemDefinition.partOf">
      <path value="ChargeItemDefinition.partOf" />
      <max value="0" />
    </element>
    <element id="ChargeItemDefinition.replaces">
      <path value="ChargeItemDefinition.replaces" />
      <max value="0" />
    </element>
    <element id="ChargeItemDefinition.status">
      <path value="ChargeItemDefinition.status" />
      <definition value="#### **_`Status of the Rebate. Examples:  Inactive, Active, Hypothetical Rebate (Conditions need to be met before active).  Only FHIR statuses can be used so there needs to be a mapping.  Mapping: draft=Inactive, active=Active, unknown=Hypothetical.  A valueSet will be created to help with the mapping`_**" />
    </element>
    <element id="ChargeItemDefinition.experimental">
      <path value="ChargeItemDefinition.experimental" />
      <short value="Manual Calculation Indicator" />
      <definition value="#### **_`Indicates the rebate calculation is manual instead of automatic.  True = Manual,  False = Automatic`_**" />
      <min value="1" />
    </element>
    <element id="ChargeItemDefinition.date">
      <path value="ChargeItemDefinition.date" />
      <max value="0" />
    </element>
    <element id="ChargeItemDefinition.publisher">
      <path value="ChargeItemDefinition.publisher" />
      <max value="0" />
    </element>
    <element id="ChargeItemDefinition.contact">
      <path value="ChargeItemDefinition.contact" />
      <max value="0" />
    </element>
    <element id="ChargeItemDefinition.description">
      <path value="ChargeItemDefinition.description" />
      <short value="Working Notes" />
      <definition value="#### **_`Working notes on this rebate, including details about what will happen on the renegotion date..`_**" />
    </element>
    <element id="ChargeItemDefinition.useContext">
      <path value="ChargeItemDefinition.useContext" />
      <short value="Billing Frequency" />
      <definition value="#### **_`Billing frequency for this rebate.  Examples: Quarterly, Annual, etc..`_**&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate charge item definition instances." />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="ChargeItemDefinition.useContext.code">
      <path value="ChargeItemDefinition.useContext.code" />
      <short value="Context Type" />
      <definition value="#### **_`FHIR Mandatory so just populate the display with Billing Frequency `_**&#xD;&#xA;&#xD;&#xA;A code that identifies the type of context being specified by this usage context." />
    </element>
    <element id="ChargeItemDefinition.useContext.code.system">
      <path value="ChargeItemDefinition.useContext.code.system" />
      <max value="0" />
    </element>
    <element id="ChargeItemDefinition.useContext.code.version">
      <path value="ChargeItemDefinition.useContext.code.version" />
      <max value="0" />
    </element>
    <element id="ChargeItemDefinition.useContext.code.code">
      <path value="ChargeItemDefinition.useContext.code.code" />
      <max value="0" />
    </element>
    <element id="ChargeItemDefinition.useContext.code.display">
      <path value="ChargeItemDefinition.useContext.code.display" />
      <definition value="#### **_`FHIR Mandatory so always populate with Billing Frequency`_**" />
    </element>
    <element id="ChargeItemDefinition.useContext.code.userSelected">
      <path value="ChargeItemDefinition.useContext.code.userSelected" />
      <max value="0" />
    </element>
    <element id="ChargeItemDefinition.useContext.value[x]">
      <path value="ChargeItemDefinition.useContext.value[x]" />
      <definition value="#### **_`Billing Frequency code and display value`_**" />
      <type>
        <code value="CodeableConcept" />
      </type>
    </element>
    <element id="ChargeItemDefinition.useContext.value[x].coding">
      <path value="ChargeItemDefinition.useContext.value[x].coding" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="ChargeItemDefinition.useContext.value[x].coding.system">
      <path value="ChargeItemDefinition.useContext.value[x].coding.system" />
      <max value="0" />
    </element>
    <element id="ChargeItemDefinition.useContext.value[x].coding.version">
      <path value="ChargeItemDefinition.useContext.value[x].coding.version" />
      <max value="0" />
    </element>
    <element id="ChargeItemDefinition.useContext.value[x].coding.code">
      <path value="ChargeItemDefinition.useContext.value[x].coding.code" />
      <short value="Billing Frequency Code" />
      <definition value="#### **_`Billing Frequency code`_**" />
      <min value="1" />
    </element>
    <element id="ChargeItemDefinition.useContext.value[x].coding.display">
      <path value="ChargeItemDefinition.useContext.value[x].coding.display" />
      <short value="Billing Frequency" />
      <definition value="#### **_`Billing Frequency display value`_**" />
      <min value="1" />
    </element>
    <element id="ChargeItemDefinition.useContext.value[x].coding.userSelected">
      <path value="ChargeItemDefinition.useContext.value[x].coding.userSelected" />
      <max value="0" />
    </element>
    <element id="ChargeItemDefinition.useContext.value[x].text">
      <path value="ChargeItemDefinition.useContext.value[x].text" />
      <max value="0" />
    </element>
    <element id="ChargeItemDefinition.jurisdiction">
      <path value="ChargeItemDefinition.jurisdiction" />
      <max value="0" />
    </element>
    <element id="ChargeItemDefinition.purpose">
      <path value="ChargeItemDefinition.purpose" />
      <max value="0" />
    </element>
    <element id="ChargeItemDefinition.copyright">
      <path value="ChargeItemDefinition.copyright" />
      <max value="0" />
    </element>
    <element id="ChargeItemDefinition.copyrightLabel">
      <path value="ChargeItemDefinition.copyrightLabel" />
      <max value="0" />
    </element>
    <element id="ChargeItemDefinition.approvalDate">
      <path value="ChargeItemDefinition.approvalDate" />
      <max value="0" />
    </element>
    <element id="ChargeItemDefinition.lastReviewDate">
      <path value="ChargeItemDefinition.lastReviewDate" />
      <short value="Renegotiation date" />
      <definition value="#### **_`Some rebates have the option for renegotiation at the end of the contract and if no agreement is reached, previous rebate details are retained. In these cases, the renegotiation date will still be entered.`_**" />
    </element>
    <element id="ChargeItemDefinition.code">
      <path value="ChargeItemDefinition.code" />
      <short value="Rebate Type" />
      <definition value="#### **_`Rebate type.  Examples: Guaranteed, Contingent, etc...`_**" />
      <min value="1" />
    </element>
    <element id="ChargeItemDefinition.code.coding">
      <path value="ChargeItemDefinition.code.coding" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="ChargeItemDefinition.code.coding.system">
      <path value="ChargeItemDefinition.code.coding.system" />
      <max value="0" />
    </element>
    <element id="ChargeItemDefinition.code.coding.version">
      <path value="ChargeItemDefinition.code.coding.version" />
      <max value="0" />
    </element>
    <element id="ChargeItemDefinition.code.coding.code">
      <path value="ChargeItemDefinition.code.coding.code" />
      <short value="Rebate type code" />
      <definition value="#### **_`Rebate type code.  `_**" />
      <min value="1" />
    </element>
    <element id="ChargeItemDefinition.code.coding.display">
      <path value="ChargeItemDefinition.code.coding.display" />
      <short value="Rebate Type" />
      <definition value="#### **_`Rebate type.  Examples: Guaranteed,Contingent`_**" />
      <min value="1" />
    </element>
    <element id="ChargeItemDefinition.code.coding.userSelected">
      <path value="ChargeItemDefinition.code.coding.userSelected" />
      <max value="0" />
    </element>
    <element id="ChargeItemDefinition.code.text">
      <path value="ChargeItemDefinition.code.text" />
      <max value="0" />
    </element>
    <element id="ChargeItemDefinition.instance">
      <path value="ChargeItemDefinition.instance" />
      <max value="0" />
    </element>
    <element id="ChargeItemDefinition.applicability">
      <path value="ChargeItemDefinition.applicability" />
      <short value="Rebate Details" />
      <definition value="#### **_`Rebate Details.`_**" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="ChargeItemDefinition.applicability.condition">
      <path value="ChargeItemDefinition.applicability.condition" />
      <short value="Rebate Formula" />
      <definition value="#### **_`Rebate formula and description of the formula`_**" />
      <min value="1" />
    </element>
    <element id="ChargeItemDefinition.applicability.condition.description">
      <path value="ChargeItemDefinition.applicability.condition.description" />
      <short value="Formula Description" />
      <definition value="#### **_`Description of the rebate formula.`_**" />
      <min value="1" />
    </element>
    <element id="ChargeItemDefinition.applicability.condition.name">
      <path value="ChargeItemDefinition.applicability.condition.name" />
      <max value="0" />
    </element>
    <element id="ChargeItemDefinition.applicability.condition.language">
      <path value="ChargeItemDefinition.applicability.condition.language" />
      <max value="0" />
    </element>
    <element id="ChargeItemDefinition.applicability.condition.expression">
      <path value="ChargeItemDefinition.applicability.condition.expression" />
      <short value="Formula" />
      <definition value="#### **_`The rebate formula SAS executes.`_**" />
      <min value="1" />
    </element>
    <element id="ChargeItemDefinition.applicability.condition.reference">
      <path value="ChargeItemDefinition.applicability.condition.reference" />
      <max value="0" />
    </element>
    <element id="ChargeItemDefinition.applicability.effectivePeriod">
      <path value="ChargeItemDefinition.applicability.effectivePeriod" />
      <short value="Rebate Period" />
      <definition value="#### **_`Effective Date and End Date.   Typically present in rebates which involve caps.    May have to be manually calculated in cases when PLAs only specify effective contract years (e.g. Rebate is effective for contract years 1-3)  .  Expiry date is used when the PLA specifies an end date for the rebate. Alternatively, ineff_date is used when there is a change in the rebate.`_**" />
      <min value="1" />
    </element>
    <element id="ChargeItemDefinition.applicability.effectivePeriod.extension">
      <path value="ChargeItemDefinition.applicability.effectivePeriod.extension" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="url" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <min value="0" />
    </element>
    <element id="ChargeItemDefinition.applicability.effectivePeriod.extension:startReasonCode">
      <path value="ChargeItemDefinition.applicability.effectivePeriod.extension" />
      <sliceName value="startReasonCode" />
      <definition value="#### **_`Reason code for starting the rebate.`_**" />
      <min value="0" />
      <type>
        <code value="Extension" />
        <profile value="https://health.gov.on.ca/idms/fhir/StructureDefinition/Extension-Rebate-Start-Date-Reason-Code" />
      </type>
    </element>
    <element id="ChargeItemDefinition.applicability.effectivePeriod.extension:endReasonCode">
      <path value="ChargeItemDefinition.applicability.effectivePeriod.extension" />
      <sliceName value="endReasonCode" />
      <definition value="#### **_`Reason code for ending the rebate.`_**" />
      <min value="0" />
      <type>
        <code value="Extension" />
        <profile value="https://health.gov.on.ca/idms/fhir/StructureDefinition/Extension-Rebate-End-Date-Reason-Code" />
      </type>
    </element>
    <element id="ChargeItemDefinition.applicability.effectivePeriod.start">
      <path value="ChargeItemDefinition.applicability.effectivePeriod.start" />
      <min value="1" />
    </element>
    <element id="ChargeItemDefinition.applicability.relatedArtifact">
      <path value="ChargeItemDefinition.applicability.relatedArtifact" />
      <max value="0" />
    </element>
    <element id="ChargeItemDefinition.propertyGroup">
      <path value="ChargeItemDefinition.propertyGroup" />
      <short value="Input Values for Formula" />
      <definition value="#### **_`Price Variables needed for the SAS fomula calculation.  Comprised of:   &lt;BR&gt; - Type , Amount, Formula Variable and optionally the description .`_**" />
    </element>
    <element id="ChargeItemDefinition.propertyGroup.applicability">
      <path value="ChargeItemDefinition.propertyGroup.applicability" />
      <max value="0" />
    </element>
    <element id="ChargeItemDefinition.propertyGroup.extension">
      <path value="ChargeItemDefinition.propertyGroup.extension" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="url" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <min value="0" />
    </element>
    <element id="ChargeItemDefinition.propertyGroup.extension:formulaVariable">
      <path value="ChargeItemDefinition.propertyGroup.extension" />
      <sliceName value="formulaVariable" />
      <definition value="#### **_`The varaible in the formula that corresponds to this price.`_**" />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="https://health.gov.on.ca/idms/fhir/StructureDefinition/Extension-Formula-Variable" />
      </type>
    </element>
    <element id="ChargeItemDefinition.propertyGroup.extension:priceDescription">
      <path value="ChargeItemDefinition.propertyGroup.extension" />
      <sliceName value="priceDescription" />
      <definition value="#### **_`Description/note about the price.`_**" />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="https://health.gov.on.ca/idms/fhir/StructureDefinition/Extension-Price-Description" />
      </type>
    </element>
    <element id="ChargeItemDefinition.propertyGroup.priceComponent">
      <path value="ChargeItemDefinition.propertyGroup.priceComponent" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="ChargeItemDefinition.propertyGroup.priceComponent.type">
      <path value="ChargeItemDefinition.propertyGroup.priceComponent.type" />
      <definition value="#### **_`This is required by FHIR but we don't use it. So just make it base for every record`_**" />
      <max value="0" />
    </element>
    <element id="ChargeItemDefinition.propertyGroup.priceComponent.code">
      <path value="ChargeItemDefinition.propertyGroup.priceComponent.code" />
      <definition value="#### **_`Price type (DBP,DP1,FP1..etc).`_**" />
      <min value="1" />
      <max value="1" />
      <binding>
        <strength value="required" />
        <description value="Rebate Price Type" />
        <valueSet value="https://health.gov.on.ca/idms/fhir/ValueSet/RebatePriceType" />
      </binding>
    </element>
    <element id="ChargeItemDefinition.propertyGroup.priceComponent.factor">
      <path value="ChargeItemDefinition.propertyGroup.priceComponent.factor" />
      <max value="0" />
    </element>
    <element id="ChargeItemDefinition.propertyGroup.priceComponent.amount">
      <path value="ChargeItemDefinition.propertyGroup.priceComponent.amount" />
      <definition value="#### **_`Price amount for the rebate`_**" />
      <min value="1" />
    </element>
  </differential>
</StructureDefinition>