<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="structuredefinition-profile-iar-encounter" />
  <url value="http://ontariohealth.ca/fhir/iar/StructureDefinition/profile-encounter" />
  <version value="1.0.0" />
  <name value="EncounterIAR" />
  <title value="Encounter IAR" />
  <status value="active" />
  <description value="An interaction between a patient and healthcare provider(s) for the purpose of providing healthcare service(s) or assessing the health status of a patient." />
  <fhirVersion value="4.0.1" />
  <kind value="resource" />
  <abstract value="false" />
  <type value="Encounter" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/Encounter" />
  <derivation value="constraint" />
  <differential>
    <element id="Encounter.contained">
      <path value="Encounter.contained" />
      <short value="Tracks balance, charges, for patient or cost center" />
      <definition value="A financial tool for tracking value accrued for a particular purpose.  In the healthcare field, used to track charges for a patient, cost centers, etc." />
      <alias value="Cost center" />
      <alias value="Record" />
      <type>
        <code value="Resource" />
        <profile value="http://ontariohealth.ca/fhir/iar/StructureDefinition/profile-account" />
        <profile value="http://ontariohealth.ca/fhir/iar/StructureDefinition/profile-coverage" />
        <profile value="http://ontariohealth.ca/fhir/iar/StructureDefinition/profile-location" />
      </type>
      <constraint>
        <key value="dom-2" />
        <severity value="error" />
        <human value="If the resource is contained in another resource, it SHALL NOT contain nested Resources" />
        <expression value="contained.contained.empty()" />
        <xpath value="not(parent::f:contained and f:contained)" />
        <source value="http://hl7.org/fhir/StructureDefinition/DomainResource" />
      </constraint>
      <constraint>
        <key value="dom-4" />
        <severity value="error" />
        <human value="If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated" />
        <expression value="contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()" />
        <xpath value="not(exists(f:contained/*/f:meta/f:versionId)) and not(exists(f:contained/*/f:meta/f:lastUpdated))" />
        <source value="http://hl7.org/fhir/StructureDefinition/DomainResource" />
      </constraint>
      <constraint>
        <key value="dom-3" />
        <severity value="error" />
        <human value="If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource" />
        <expression value="contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()" />
        <xpath value="not(exists(for $id in f:contained/*/f:id/@value return $contained[not(parent::*/descendant::f:reference/@value=concat('#', $contained/*/id/@value) or descendant::f:reference[@value='#'])]))" />
        <source value="http://hl7.org/fhir/StructureDefinition/DomainResource" />
      </constraint>
      <constraint>
        <key value="dom-6" />
        <severity value="warning" />
        <human value="A resource should have narrative for robust management" />
        <expression value="text.`div`.exists()" />
        <xpath value="exists(f:text/h:div)" />
        <source value="http://hl7.org/fhir/StructureDefinition/DomainResource" />
      </constraint>
      <constraint>
        <key value="dom-5" />
        <severity value="error" />
        <human value="If a resource is contained in another resource, it SHALL NOT have a security label" />
        <expression value="contained.meta.security.empty()" />
        <xpath value="not(exists(f:contained/*/f:meta/f:security))" />
        <source value="http://hl7.org/fhir/StructureDefinition/DomainResource" />
      </constraint>
      <mustSupport value="true" />
      <mapping>
        <identity value="rim" />
        <map value="Account" />
      </mapping>
    </element>
    <element id="Encounter.identifier">
      <path value="Encounter.identifier" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Encounter.identifier.type">
      <path value="Encounter.identifier.type" />
      <min value="1" />
      <mustSupport value="true" />
      <binding>
        <strength value="extensible" />
        <valueSet value="http://ontariohealth.ca/fhir/ehr/ValueSet/identifier-type" />
      </binding>
    </element>
    <element id="Encounter.identifier.type.coding">
      <path value="Encounter.identifier.type.coding" />
      <min value="1" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Encounter.identifier.type.coding.system">
      <path value="Encounter.identifier.type.coding.system" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Encounter.identifier.type.coding.code">
      <path value="Encounter.identifier.type.coding.code" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Encounter.identifier.type.coding.display">
      <path value="Encounter.identifier.type.coding.display" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Encounter.identifier.system">
      <path value="Encounter.identifier.system" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Encounter.identifier.value">
      <path value="Encounter.identifier.value" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Encounter.status">
      <path value="Encounter.status" />
      <mustSupport value="true" />
    </element>
    <element id="Encounter.class">
      <path value="Encounter.class" />
      <type>
        <code value="Coding" />
        <profile value="http://ontariohealth.ca/fhir/ehr/StructureDefinition/Coding-oh-ehr" />
      </type>
      <mustSupport value="true" />
      <binding>
        <strength value="extensible" />
        <valueSet value="http://ontariohealth.ca/fhir/ehr/ValueSet/encounter-class" />
      </binding>
    </element>
    <element id="Encounter.class.display.extension:translation">
      <path value="Encounter.class.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Encounter.class.display.extension:translation.extension">
      <path value="Encounter.class.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Encounter.type">
      <path value="Encounter.type" />
      <max value="1" />
      <type>
        <code value="CodeableConcept" />
        <profile value="http://ontariohealth.ca/fhir/ehr/StructureDefinition/CodeableConcept-oh-ehr" />
      </type>
      <mustSupport value="true" />
      <binding>
        <strength value="extensible" />
        <valueSet value="http://ontariohealth.ca/fhir/iar/ValueSet/program-type" />
      </binding>
    </element>
    <element id="Encounter.type.coding.display.extension:translation">
      <path value="Encounter.type.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Encounter.type.coding.display.extension:translation.extension">
      <path value="Encounter.type.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Encounter.subject">
      <path value="Encounter.subject" />
      <min value="1" />
      <type>
        <code value="Reference" />
        <targetProfile value="http://ontariohealth.ca/fhir/ehr/StructureDefinition/profile-patient" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Encounter.subject.reference">
      <path value="Encounter.subject.reference" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Encounter.period">
      <path value="Encounter.period" />
      <min value="1" />
      <mustSupport value="true" />
      <isSummary value="true" />
    </element>
    <element id="Encounter.period.start">
      <path value="Encounter.period.start" />
      <min value="1" />
      <mustSupport value="true" />
      <mapping>
        <identity value="interRAI" />
        <map value="iB2 (Date Stay began/Case opened), cihiB2 (Return date), AD4b (Program start date)" />
      </mapping>
    </element>
    <element id="Encounter.period.end">
      <path value="Encounter.period.end" />
      <mustSupport value="true" />
      <mapping>
        <identity value="interRAI" />
        <map value="iT1 (Last day of stay), AD4c (Program end date)" />
      </mapping>
    </element>
    <element id="Encounter.reasonCode">
      <path value="Encounter.reasonCode" />
      <mustSupport value="false" />
    </element>
    <element id="Encounter.reasonCode.coding.display.extension:translation">
      <path value="Encounter.reasonCode.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Encounter.reasonCode.coding.display.extension:translation.url">
      <path value="Encounter.reasonCode.coding.display.extension.url" />
      <fixedUri value="translation" />
    </element>
    <element id="Encounter.account">
      <path value="Encounter.account" />
      <type>
        <code value="Reference" />
        <targetProfile value="http://ontariohealth.ca/fhir/iar/StructureDefinition/profile-account" />
        <aggregation value="contained" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Encounter.account.reference">
      <path value="Encounter.account.reference" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Encounter.hospitalization">
      <path value="Encounter.hospitalization" />
      <mustSupport value="true" />
    </element>
    <element id="Encounter.hospitalization.origin">
      <path value="Encounter.hospitalization.origin" />
      <mustSupport value="true" />
    </element>
    <element id="Encounter.hospitalization.origin.reference">
      <path value="Encounter.hospitalization.origin.reference" />
      <mustSupport value="true" />
    </element>
    <element id="Encounter.hospitalization.admitSource">
      <path value="Encounter.hospitalization.admitSource" />
      <type>
        <code value="CodeableConcept" />
        <profile value="http://ontariohealth.ca/fhir/ehr/StructureDefinition/CodeableConcept-oh-ehr" />
      </type>
      <mustSupport value="true" />
      <binding>
        <strength value="required" />
        <valueSet value="http://cihi.ca/fhir/ValueSet/aac-admit-source" />
      </binding>
    </element>
    <element id="Encounter.hospitalization.admitSource.coding">
      <path value="Encounter.hospitalization.admitSource.coding" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="Encounter.hospitalization.admitSource.coding.system">
      <path value="Encounter.hospitalization.admitSource.coding.system" />
      <fixedUri value="http://cihi.ca/fhir/CodeSystem/aac-admit-source" />
    </element>
    <element id="Encounter.hospitalization.admitSource.coding.display.extension:translation">
      <path value="Encounter.hospitalization.admitSource.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Encounter.hospitalization.admitSource.coding.display.extension:translation.extension">
      <path value="Encounter.hospitalization.admitSource.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Encounter.hospitalization.reAdmission">
      <path value="Encounter.hospitalization.reAdmission" />
      <mustSupport value="true" />
    </element>
    <element id="Encounter.hospitalization.reAdmission.coding">
      <path value="Encounter.hospitalization.reAdmission.coding" />
      <type>
        <code value="Coding" />
        <profile value="http://ontariohealth.ca/fhir/ehr/StructureDefinition/Coding-oh-ehr" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Encounter.hospitalization.reAdmission.coding.display.extension:translation">
      <path value="Encounter.hospitalization.reAdmission.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Encounter.hospitalization.reAdmission.coding.display.extension:translation.extension">
      <path value="Encounter.hospitalization.reAdmission.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Encounter.hospitalization.destination">
      <path value="Encounter.hospitalization.destination" />
      <mustSupport value="true" />
    </element>
    <element id="Encounter.hospitalization.destination.reference">
      <path value="Encounter.hospitalization.destination.reference" />
      <mustSupport value="true" />
    </element>
    <element id="Encounter.hospitalization.dischargeDisposition">
      <path value="Encounter.hospitalization.dischargeDisposition" />
      <type>
        <code value="CodeableConcept" />
        <profile value="http://ontariohealth.ca/fhir/ehr/StructureDefinition/CodeableConcept-oh-ehr" />
      </type>
      <mustSupport value="true" />
      <binding>
        <strength value="required" />
        <valueSet value="http://cihi.ca/fhir/ValueSet/aac-discharge-disposition" />
      </binding>
    </element>
    <element id="Encounter.hospitalization.dischargeDisposition.coding.display.extension:translation">
      <path value="Encounter.hospitalization.dischargeDisposition.coding.display.extension" />
      <sliceName value="translation" />
    </element>
    <element id="Encounter.hospitalization.dischargeDisposition.coding.display.extension:translation.extension">
      <path value="Encounter.hospitalization.dischargeDisposition.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="Encounter.location">
      <path value="Encounter.location" />
      <mustSupport value="true" />
    </element>
    <element id="Encounter.location.location">
      <path value="Encounter.location.location" />
      <type>
        <code value="Reference" />
        <targetProfile value="http://ontariohealth.ca/fhir/iar/StructureDefinition/profile-location" />
        <aggregation value="contained" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Encounter.location.location.reference">
      <path value="Encounter.location.location.reference" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Encounter.location.period">
      <path value="Encounter.location.period" />
      <mustSupport value="true" />
    </element>
    <element id="Encounter.location.period.start">
      <path value="Encounter.location.period.start" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Encounter.location.period.end">
      <path value="Encounter.location.period.end" />
      <mustSupport value="true" />
    </element>
    <element id="Encounter.serviceProvider">
      <path value="Encounter.serviceProvider" />
      <min value="1" />
      <type>
        <code value="Reference" />
        <targetProfile value="http://ontariohealth.ca/fhir/ehr/StructureDefinition/profile-organization" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Encounter.serviceProvider.reference">
      <path value="Encounter.serviceProvider.reference" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Encounter.partOf">
      <path value="Encounter.partOf" />
      <type>
        <code value="Reference" />
        <targetProfile value="http://ontariohealth.ca/fhir/iar/StructureDefinition/profile-encounter" />
        <aggregation value="contained" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Encounter.partOf.reference">
      <path value="Encounter.partOf.reference" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
  </differential>
</StructureDefinition>