<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="profile-patient" />
  <meta>
    <lastUpdated value="2026-03-04T16:45:53.0073792+00:00" />
  </meta>
  <url value="http://ontariohealth.ca/fhir/StructureDefinition/ca-on-mha-profile-patient" />
  <version value="2.0.0" />
  <name value="Patient" />
  <title value="MHA Patient Profile" />
  <status value="active" />
  <date value="2024-10-03T13:43:06.889914+00:00" />
  <publisher value="HL7 Canada" />
  <description value="Proposed constraints and extensions on the Patient Resource. This represents client information." />
  <purpose value="The Patient Profile will serve to exchange client related data including but not limited to identifiers and demographics." />
  <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="Patient" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/Patient" />
  <derivation value="constraint" />
  <differential>
    <element id="Patient">
      <path value="Patient" />
      <short value="Patient Profile" />
      <definition value="The Patient Profile is based upon the core FHIR Patient Resource" />
      <mustSupport value="true" />
      <isModifier value="false" />
    </element>
    <element id="Patient.meta">
      <path value="Patient.meta" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.meta.profile">
      <path value="Patient.meta.profile" />
      <min value="1" />
      <max value="1" />
      <fixedCanonical value="http://ontariohealth.ca/fhir/StructureDefinition/ca-on-mha-profile-patient" />
    </element>
    <element id="Patient.identifier">
      <path value="Patient.identifier" />
      <slicing>
        <discriminator>
          <type value="pattern" />
          <path value="type" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.identifier.type">
      <path value="Patient.identifier.type" />
      <min value="1" />
      <binding>
        <strength value="required" />
        <valueSet value="http://ontariohealth.ca/fhir/ValueSet/client-identifier-type-code" />
      </binding>
      <mapping>
        <identity value="MHA-PDS-Mapping" />
        <map value="Identifier Type" />
      </mapping>
    </element>
    <element id="Patient.identifier.system">
      <path value="Patient.identifier.system" />
      <isModifier value="false" />
    </element>
    <element id="Patient.identifier.value">
      <path value="Patient.identifier.value" />
      <short value="The value that is unique within the system." />
      <isModifier value="false" />
    </element>
    <element id="Patient.identifier:MRN">
      <path value="Patient.identifier" />
      <sliceName value="MRN" />
      <min value="1" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.identifier:MRN.type">
      <path value="Patient.identifier.type" />
      <patternCodeableConcept>
        <coding>
          <system value="http://terminology.hl7.org/CodeSystem/v2-0203" />
          <code value="MR" />
          <display value="Medical record number" />
        </coding>
      </patternCodeableConcept>
      <mustSupport value="true" />
      <binding>
        <strength value="required" />
        <valueSet value="http://ontariohealth.ca/fhir/ValueSet/client-identifier-type-code" />
      </binding>
    </element>
    <element id="Patient.identifier:MRN.system">
      <path value="Patient.identifier.system" />
      <min value="1" />
      <mustSupport value="true" />
      <binding>
        <strength value="required" />
        <description value="MHA Patient MRN system URI values" />
        <valueSet value="http://ontariohealth.ca/fhir/ValueSet/mha/patient-mrn-identifier-system" />
      </binding>
    </element>
    <element id="Patient.identifier:MRN.value">
      <path value="Patient.identifier.value" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.identifier:JHN">
      <path value="Patient.identifier" />
      <sliceName value="JHN" />
      <min value="1" />
      <max value="1" />
      <constraint>
        <key value="jhn-inv-1" />
        <severity value="error" />
        <human value="Either both system and value exists or none of them exists" />
        <expression value="system.exists() = value.exists()" />
      </constraint>
      <constraint>
        <key value="jhn-inv-2" />
        <severity value="error" />
        <human value="Healthcard must be provide either with value or data-absent-reason" />
        <expression value="$this.where(type.coding.code = 'JHN').value.exists() or $this.where(type.coding.code = 'JHN').extension('http://ontariohealth.ca/fhir/StructureDefinition/ext-ca-on-mha-data-absent-reason').exists()" />
      </constraint>
      <mustSupport value="true" />
    </element>
    <element id="Patient.identifier:JHN.extension:mHADataAbsentReason">
      <path value="Patient.identifier.extension" />
      <sliceName value="mHADataAbsentReason" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://ontariohealth.ca/fhir/StructureDefinition/ext-ca-on-mha-data-absent-reason" />
      </type>
      <mustSupport value="true" />
      <isModifier value="false" />
    </element>
    <element id="Patient.identifier:JHN.type">
      <path value="Patient.identifier.type" />
      <min value="1" />
      <patternCodeableConcept>
        <coding>
          <system value="http://terminology.hl7.org/CodeSystem/v2-0203" />
          <code value="JHN" />
          <display value="Jurisdictional health number" />
        </coding>
      </patternCodeableConcept>
      <mustSupport value="true" />
      <binding>
        <strength value="required" />
        <valueSet value="http://ontariohealth.ca/fhir/ValueSet/client-identifier-type-code" />
      </binding>
    </element>
    <element id="Patient.identifier:JHN.system">
      <path value="Patient.identifier.system" />
      <mustSupport value="true" />
      <binding>
        <strength value="required" />
        <valueSet value="http://ontariohealth.ca/fhir/ValueSet/mha/patient-jhn-identifier-system" />
      </binding>
    </element>
    <element id="Patient.identifier:JHN.value">
      <path value="Patient.identifier.value" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.identifier:Anonymous">
      <path value="Patient.identifier" />
      <sliceName value="Anonymous" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.identifier:Anonymous.type">
      <path value="Patient.identifier.type" />
      <min value="1" />
      <patternCodeableConcept>
        <coding>
          <system value="http://terminology.hl7.org/CodeSystem/v2-0203" />
          <code value="ANON" />
        </coding>
      </patternCodeableConcept>
      <mustSupport value="true" />
      <binding>
        <strength value="required" />
        <valueSet value="http://ontariohealth.ca/fhir/ValueSet/client-identifier-type-code" />
      </binding>
    </element>
    <element id="Patient.identifier:Anonymous.system">
      <path value="Patient.identifier.system" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.identifier:Anonymous.value">
      <path value="Patient.identifier.value" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.active">
      <path value="Patient.active" />
      <definition value="Only use this field to mark a patient record is inactive." />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.name">
      <path value="Patient.name" />
      <short value="A name associated with the patient(client)" />
      <min value="1" />
      <max value="1" />
      <constraint>
        <key value="ca-baseline-name" />
        <severity value="error" />
        <human value="Patient.name.given  or Patient.name.family or both SHALL be present" />
        <expression value="family.exists() or given.exists()" />
        <xpath value="f:given or f:family" />
        <source value="http://hl7.org/fhir/ca/baseline/StructureDefinition/profile-patient" />
      </constraint>
      <mustSupport value="true" />
    </element>
    <element id="Patient.name.family">
      <path value="Patient.name.family" />
      <min value="1" />
      <mustSupport value="true" />
      <mapping>
        <identity value="MHA-PDS-Mapping" />
        <map value="Client Last Name" />
      </mapping>
    </element>
    <element id="Patient.name.given">
      <path value="Patient.name.given" />
      <definition value="The first or given name of the client. If middle name is available, it should be provided as the second value." />
      <min value="1" />
      <max value="2" />
      <mustSupport value="true" />
      <mapping>
        <identity value="MHA-PDS-Mapping" />
        <map value="Client First Name, Client Middle Name" />
      </mapping>
    </element>
    <element id="Patient.birthDate">
      <path value="Patient.birthDate" />
      <comment value="At least an estimated year should be provided as a guess if the real DOB is unknown" />
      <requirements value="• Used to calculate the age of the person and which age group the person belongs to.&#xD;&#xA;• Used to categorize data for reporting." />
      <min value="1" />
      <constraint>
        <key value="bd-1" />
        <severity value="error" />
        <human value="birthDate must have a date value" />
        <expression value="hasValue() = true" />
      </constraint>
      <constraint>
        <key value="bd-2" />
        <severity value="error" />
        <human value="If birthDate is &quot;1900-01-01&quot;, BirthDate estimated flag must be set to 'true'" />
        <expression value="$this = @1900-01-01 implies $this.extension.value = true" />
      </constraint>
      <constraint>
        <key value="bd-3" />
        <severity value="error" />
        <human value="BirthDate must not be before '1900-01-01' or after the current date and it must be a valid date" />
        <expression value="$this &gt;= @1900-01-01 and $this &lt; today()" />
      </constraint>
      <mustSupport value="true" />
      <mapping>
        <identity value="MHA-PDS-Mapping" />
        <map value="Date of Birth" />
      </mapping>
    </element>
    <element id="Patient.birthDate.extension">
      <path value="Patient.birthDate.extension" />
      <min value="1" />
    </element>
    <element id="Patient.birthDate.extension:BirthDateEstimatedFlag">
      <path value="Patient.birthDate.extension" />
      <sliceName value="BirthDateEstimatedFlag" />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://ontariohealth.ca/fhir/StructureDefinition/ca-on-ext-birthdate-estimated-flag" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Patient.address">
      <path value="Patient.address" />
      <constraint>
        <key value="adr-key-1" />
        <severity value="error" />
        <human value="Province must be provided if 'address use' is provided" />
        <expression value="use.exists() implies state.exists()" />
      </constraint>
      <mustSupport value="true" />
    </element>
    <element id="Patient.address.use">
      <path value="Patient.address.use" />
      <mapping>
        <identity value="MHA-PDS-Mapping" />
        <map value="Address Use" />
      </mapping>
    </element>
    <element id="Patient.address.line">
      <path value="Patient.address.line" />
      <mapping>
        <identity value="MHA-PDS-Mapping" />
        <map value="Address Line 1" />
      </mapping>
    </element>
    <element id="Patient.address.city">
      <path value="Patient.address.city" />
      <mustSupport value="true" />
      <mapping>
        <identity value="MHA-PDS-Mapping" />
        <map value="City" />
      </mapping>
    </element>
    <element id="Patient.address.state">
      <path value="Patient.address.state" />
      <mustSupport value="true" />
      <binding>
        <strength value="required" />
        <description value="Codes to identify the provinces and territories of Canada" />
        <valueSet value="http://ehealthontario.ca/fhir/ValueSet/province-code" />
      </binding>
      <mapping>
        <identity value="MHA-PDS-Mapping" />
        <map value="Province" />
      </mapping>
    </element>
    <element id="Patient.address.postalCode">
      <path value="Patient.address.postalCode" />
      <min value="1" />
      <constraint>
        <key value="postalcode-inv-1" />
        <severity value="error" />
        <human value="postal code cannot have both value and data-absent-reason present" />
        <expression value="$this.hasValue() != $this.extension('http://ontariohealth.ca/fhir/StructureDefinition/ext-ca-on-mha-data-absent-reason').exists()" />
      </constraint>
      <mustSupport value="true" />
      <mapping>
        <identity value="MHA-PDS-Mapping" />
        <map value="Postal Code" />
      </mapping>
    </element>
    <element id="Patient.address.postalCode.extension:mHADataAbsentReason">
      <path value="Patient.address.postalCode.extension" />
      <sliceName value="mHADataAbsentReason" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://ontariohealth.ca/fhir/StructureDefinition/ext-ca-on-mha-data-absent-reason" />
      </type>
      <mustSupport value="true" />
      <isModifier value="false" />
    </element>
    <element id="Patient.communication">
      <path value="Patient.communication" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="extension.value.coding.code" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <mustSupport value="true" />
    </element>
    <element id="Patient.communication.extension">
      <path value="Patient.communication.extension" />
      <min value="1" />
    </element>
    <element id="Patient.communication.extension:languageUse">
      <path value="Patient.communication.extension" />
      <sliceName value="languageUse" />
      <min value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://ontariohealth.ca/fhir/StructureDefinition/ca-on-mha-ext-LanguageUse" />
      </type>
    </element>
    <element id="Patient.communication.language">
      <path value="Patient.communication.language" />
      <mapping>
        <identity value="MHA-PDS-Mapping" />
        <map value="Preferred Language" />
      </mapping>
    </element>
    <element id="Patient.communication.language.coding.system">
      <path value="Patient.communication.language.coding.system" />
      <min value="1" />
    </element>
    <element id="Patient.communication.language.coding.code">
      <path value="Patient.communication.language.coding.code" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.communication.language.coding.display">
      <path value="Patient.communication.language.coding.display" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.communication:languageOfComfort">
      <path value="Patient.communication" />
      <sliceName value="languageOfComfort" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.communication:languageOfComfort.extension">
      <path value="Patient.communication.extension" />
      <min value="1" />
    </element>
    <element id="Patient.communication:languageOfComfort.extension:languageUse">
      <path value="Patient.communication.extension" />
      <sliceName value="languageUse" />
      <min value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://ontariohealth.ca/fhir/StructureDefinition/ca-on-mha-ext-LanguageUse" />
      </type>
    </element>
    <element id="Patient.communication:languageOfComfort.extension:languageUse.value[x]">
      <path value="Patient.communication.extension.value[x]" />
      <min value="1" />
    </element>
    <element id="Patient.communication:languageOfComfort.extension:languageUse.value[x].coding">
      <path value="Patient.communication.extension.value[x].coding" />
    </element>
    <element id="Patient.communication:languageOfComfort.extension:languageUse.value[x].coding.system">
      <path value="Patient.communication.extension.value[x].coding.system" />
      <fixedUri value="http://snomed.info/sct" />
    </element>
    <element id="Patient.communication:languageOfComfort.extension:languageUse.value[x].coding.code">
      <path value="Patient.communication.extension.value[x].coding.code" />
      <fixedCode value="428996008" />
    </element>
    <element id="Patient.communication:languageOfComfort.language">
      <path value="Patient.communication.language" />
      <mustSupport value="true" />
      <binding>
        <strength value="required" />
        <description value="Official languages of Canada." />
        <valueSet value="http://ontariohealth.ca/fhir/ValueSet/human-language" />
      </binding>
    </element>
    <element id="Patient.communication:languageOfComfort.language.coding">
      <path value="Patient.communication.language.coding" />
      <min value="1" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.communication:languageOfComfort.language.coding.system">
      <path value="Patient.communication.language.coding.system" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.communication:languageOfComfort.language.coding.code">
      <path value="Patient.communication.language.coding.code" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.communication:languageOfComfort.language.coding.display">
      <path value="Patient.communication.language.coding.display" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.communication:officialLanguage">
      <path value="Patient.communication" />
      <sliceName value="officialLanguage" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.communication:officialLanguage.extension">
      <path value="Patient.communication.extension" />
      <min value="1" />
    </element>
    <element id="Patient.communication:officialLanguage.extension:languageUse">
      <path value="Patient.communication.extension" />
      <sliceName value="languageUse" />
      <min value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://ontariohealth.ca/fhir/StructureDefinition/ca-on-mha-ext-LanguageUse" />
      </type>
    </element>
    <element id="Patient.communication:officialLanguage.extension:languageUse.value[x]">
      <path value="Patient.communication.extension.value[x]" />
      <label value="ServiceLanguage" />
      <min value="1" />
    </element>
    <element id="Patient.communication:officialLanguage.extension:languageUse.value[x].coding">
      <path value="Patient.communication.extension.value[x].coding" />
    </element>
    <element id="Patient.communication:officialLanguage.extension:languageUse.value[x].coding.system">
      <path value="Patient.communication.extension.value[x].coding.system" />
      <fixedUri value="http://ontariohealth.ca/fhir/CodeSystem/LanguageUse" />
    </element>
    <element id="Patient.communication:officialLanguage.extension:languageUse.value[x].coding.code">
      <path value="Patient.communication.extension.value[x].coding.code" />
      <fixedCode value="OFL" />
    </element>
    <element id="Patient.communication:officialLanguage.language">
      <path value="Patient.communication.language" />
      <mustSupport value="true" />
      <binding>
        <strength value="required" />
        <description value="Languages understood or supported by Ontario clients and organizations." />
        <valueSet value="http://ontariohealth.ca/fhir/ValueSet/official-language" />
      </binding>
    </element>
    <element id="Patient.communication:officialLanguage.language.coding">
      <path value="Patient.communication.language.coding" />
      <min value="1" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.communication:officialLanguage.language.coding.system">
      <path value="Patient.communication.language.coding.system" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.communication:officialLanguage.language.coding.code">
      <path value="Patient.communication.language.coding.code" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.communication:officialLanguage.language.coding.display">
      <path value="Patient.communication.language.coding.display" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
  </differential>
</StructureDefinition>