<StructureDefinition xmlns="http://hl7.org/fhir">
  <url value="http://ontariohealth.ca/fhir/StructureDefinition/ca-on-mha-profile-episodeofcare" />
  <version value="2.0.0" />
  <name value="EpisodeOfCare" />
  <title value="MHA EpisodeOfCare" />
  <status value="active" />
  <date value="2025-05-17T20:17:06.3613088+00:00" />
  <fhirVersion value="4.0.1" />
  <mapping>
    <identity value="MHA-PDS-Mapping" />
    <name value="MHA PDS Mapping" />
  </mapping>
  <kind value="resource" />
  <abstract value="false" />
  <type value="EpisodeOfCare" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/EpisodeOfCare" />
  <derivation value="constraint" />
  <differential>
    <element id="EpisodeOfCare">
      <path value="EpisodeOfCare" />
      <constraint>
        <key value="mha-eoc-key-1" />
        <severity value="error" />
        <human value="Service Termination Date SHALL be present when Service Termination Reason is present" />
        <expression value="status.extension('https://ontariohealth.ca/fhir/StructureDefinition/ca-on-ext-ServiceTerminationReason').exists() = period.end.exists()" />
      </constraint>
      <constraint>
        <key value="mha-eoc-key-2" />
        <severity value="error" />
        <human value="Service Termination Date SHALL be present when status is 'finished'" />
        <expression value="status = 'finished' implies period.end.exists()" />
      </constraint>
      <constraint>
        <key value="mha-eoc-key-3" />
        <severity value="error" />
        <human value="If status is 'active' and both service enrollment date and service initiation     date are present, service initiation date must be equal to or after the service enrollment date" />
        <expression value="status = 'active' implies (period.start.exists().not() or extension.where(url = 'http://ontariohealth.ca/fhir/StructureDefinition/ca-on-ext-ServiceInitiationDate').exists().not() or period.start.toString().substring(0,10) &lt;= extension.where(url = 'http://ontariohealth.ca/fhir/StructureDefinition/ca-on-ext-ServiceInitiationDate').value.toString().substring(0,10))" />
      </constraint>
      <constraint>
        <key value="mha-eoc-key-4" />
        <severity value="error" />
        <human value="If status is 'active', at least one of service enrollment date or service initiation date SHALL be present" />
        <expression value="status = 'active' implies (period.start.exists() or extension.where(url = 'http://ontariohealth.ca/fhir/StructureDefinition/ca-on-ext-ServiceInitiationDate').exists())" />
      </constraint>
      <constraint>
        <key value="mha-eoc-key-5" />
        <severity value="error" />
        <human value="If status is 'cancelled' or 'finished', service termination date and termination reason SHALL be present" />
        <expression value="status in ('cancelled'|'finished') implies period.end.exists() and status.extension('https://ontariohealth.ca/fhir/StructureDefinition/ca-on-ext-ServiceTerminationReason').exists()" />
      </constraint>
      <constraint>
        <key value="mha-eoc-key-6" />
        <severity value="error" />
        <human value="Service enrollment or service initiation date SHALL only exist when status is 'active' or 'finished'" />
        <expression value="status in ('active'|'finished') implies period.start.exists() or extension('http://ontariohealth.ca/fhir/StructureDefinition/ca-on-ext-ServiceInitiationDate').exists()" />
      </constraint>
      <constraint>
        <key value="mha-eoc-key-7" />
        <severity value="error" />
        <human value="If status is 'planned', Service enrollment and service initiation date SHALL not be provided" />
        <expression value="status = 'planned' implies period.start.exists().not() and extension('http://ontariohealth.ca/fhir/StructureDefinition/ca-on-ext-ServiceInitiationDate').exists().not()" />
      </constraint>
      <mustSupport value="true" />
      <mapping>
        <identity value="MHA-PDS-Mapping" />
        <map value="MHA-PDS-Mapping" />
      </mapping>
    </element>
    <element id="EpisodeOfCare.meta">
      <path value="EpisodeOfCare.meta" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="EpisodeOfCare.meta.profile">
      <path value="EpisodeOfCare.meta.profile" />
      <min value="1" />
      <max value="1" />
      <fixedCanonical value="http://ontariohealth.ca/fhir/StructureDefinition/ca-on-mha-profile-episodeofcare" />
      <mustSupport value="true" />
    </element>
    <element id="EpisodeOfCare.extension:FirstContactDate">
      <path value="EpisodeOfCare.extension" />
      <sliceName value="FirstContactDate" />
      <definition value="The date the client first experienced contact with an HSP regarding a specific program" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="https://ontariohealth.ca/fhir/StructureDefinition/ca-on-mha-ext-FirstContactDate" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="EpisodeOfCare.extension:EligibilityScreeningDate">
      <path value="EpisodeOfCare.extension" />
      <sliceName value="EligibilityScreeningDate" />
      <definition value="The date at which an eligibility determination is done by HSP  and client is accepted (eligible) or not accepted (ineligible) into program/service ." />
      <type>
        <code value="Extension" />
        <profile value="http://ontariohealth.ca/fhir/StructureDefinition/ca-on-ext-eligibilityScreeningDate" />
      </type>
    </element>
    <element id="EpisodeOfCare.extension:EligibilityScreeningDate.value[x]">
      <path value="EpisodeOfCare.extension.value[x]" />
      <mustSupport value="true" />
      <mapping>
        <identity value="MHA-PDS-Mapping" />
        <map value="Eligibility Screening Date" />
      </mapping>
    </element>
    <element id="EpisodeOfCare.extension:ServiceInitiationDate">
      <path value="EpisodeOfCare.extension" />
      <sliceName value="ServiceInitiationDate" />
      <type>
        <code value="Extension" />
        <profile value="http://ontariohealth.ca/fhir/StructureDefinition/ca-on-ext-ServiceInitiationDate" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="EpisodeOfCare.extension:InitialAssessmentDate">
      <path value="EpisodeOfCare.extension" />
      <sliceName value="InitialAssessmentDate" />
      <definition value="The date the client completed an initial assessment for a service" />
      <type>
        <code value="Extension" />
        <profile value="http://ontariohealth.ca/fhir/StructureDefinition/ca-on-ext-InitialAssessmentDate" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="EpisodeOfCare.extension:InitialAssessmentDate.value[x]">
      <path value="EpisodeOfCare.extension.value[x]" />
      <mapping>
        <identity value="MHA-PDS-Mapping" />
        <map value="Initial Assessment Date" />
      </mapping>
    </element>
    <element id="EpisodeOfCare.identifier">
      <path value="EpisodeOfCare.identifier" />
      <min value="1" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="EpisodeOfCare.identifier.system">
      <path value="EpisodeOfCare.identifier.system" />
      <min value="1" />
      <mustSupport value="true" />
      <binding>
        <strength value="required" />
        <description value="The identifier URIs for patient episode of care" />
        <valueSet value="http://ontariohealth.ca/fhir/ValueSet/mha/EpisodeOfCare-identifier-system" />
      </binding>
    </element>
    <element id="EpisodeOfCare.identifier.value">
      <path value="EpisodeOfCare.identifier.value" />
      <min value="1" />
      <mustSupport value="true" />
      <mapping>
        <identity value="MHA-PDS-Mapping" />
        <map value="Episode of Care Identifier" />
      </mapping>
    </element>
    <element id="EpisodeOfCare.status">
      <path value="EpisodeOfCare.status" />
      <constraint>
        <key value="status-key-1" />
        <severity value="error" />
        <human value="Service Termination Reason must be provided only when EOC status is &quot;finished&quot; or &quot;cancelled&quot;" />
        <expression value="value in ('finished' | 'cancelled') implies $this.extension('https://ontariohealth.ca/fhir/StructureDefinition/ca-on-ext-ServiceTerminationReason').exists()" />
      </constraint>
      <constraint>
        <key value="status-key-2" />
        <severity value="error" />
        <human value="When service is terminated and termination reason is present, outbound referral source SHALL be empty when continuity indicates no further service planned" />
        <expression value="(value = 'finished' and $this.extension.extension('continuity').value.code ='3') implies $this.extension.extension('outbound-referral-source').empty()" />
      </constraint>
      <mustSupport value="true" />
      <mapping>
        <identity value="MHA-PDS-Mapping" />
        <map value="Health Service Status" />
      </mapping>
    </element>
    <element id="EpisodeOfCare.status.extension:serviceTerminationReason">
      <path value="EpisodeOfCare.status.extension" />
      <sliceName value="serviceTerminationReason" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="https://ontariohealth.ca/fhir/StructureDefinition/ca-on-ext-ServiceTerminationReason" />
      </type>
      <mustSupport value="true" />
      <isModifier value="false" />
    </element>
    <element id="EpisodeOfCare.patient">
      <path value="EpisodeOfCare.patient" />
      <type>
        <code value="Reference" />
        <targetProfile value="http://ontariohealth.ca/fhir/StructureDefinition/ca-on-mha-profile-patient" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="EpisodeOfCare.patient.reference">
      <path value="EpisodeOfCare.patient.reference" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="EpisodeOfCare.managingOrganization">
      <path value="EpisodeOfCare.managingOrganization" />
      <min value="1" />
      <type>
        <code value="Reference" />
        <targetProfile value="http://ontariohealth.ca/fhir/StructureDefinition/ca-on-mha-profile-organization" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="EpisodeOfCare.managingOrganization.reference">
      <path value="EpisodeOfCare.managingOrganization.reference" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="EpisodeOfCare.period">
      <path value="EpisodeOfCare.period" />
      <mustSupport value="true" />
    </element>
    <element id="EpisodeOfCare.period.start">
      <path value="EpisodeOfCare.period.start" />
      <definition value="The start of the period. The boundary is inclusive.&#xD;&#xA;&#xD;&#xA;The date the HSP deems the client eligible for  treatment and enrolled in the service." />
      <mustSupport value="true" />
      <mapping>
        <identity value="MHA-PDS-Mapping" />
        <map value="Service Enrollment Date" />
      </mapping>
    </element>
    <element id="EpisodeOfCare.period.end">
      <path value="EpisodeOfCare.period.end" />
      <comment value="The high value includes any matching date/time. i.e. 2012-02-03T10:00:00 is in a period that has an end value of 2012-02-03.&#xD;&#xA;&#xD;&#xA;The date when the client's need for service has ended or as per the HSP service termination criteria" />
      <mustSupport value="true" />
      <mapping>
        <identity value="MHA-PDS-Mapping" />
        <map value="Service Termination Date" />
      </mapping>
    </element>
    <element id="EpisodeOfCare.referralRequest">
      <path value="EpisodeOfCare.referralRequest" />
      <max value="1" />
      <type>
        <code value="Reference" />
        <targetProfile value="http://ontariohealth.ca/fhir/StructureDefinition/ca-on-mha-profile-servicerequest" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="EpisodeOfCare.referralRequest.reference">
      <path value="EpisodeOfCare.referralRequest.reference" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="EpisodeOfCare.account">
      <path value="EpisodeOfCare.account" />
      <max value="1" />
    </element>
  </differential>
</StructureDefinition>