<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="cmh-su-patient" />
  <url value="https://ccim.on.ca/fhir/iar/StructureDefinition/cmh-su-patient" />
  <name value="CMH-SU Patient" />
  <status value="draft" />
  <fhirVersion value="3.0.1" />
  <kind value="resource" />
  <abstract value="false" />
  <type value="Patient" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/Patient" />
  <derivation value="constraint" />
  <differential>
    <element id="Patient.id">
      <path value="Patient.id" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.meta">
      <path value="Patient.meta" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.extension">
      <path value="Patient.extension" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="url" />
        </discriminator>
        <rules value="open" />
      </slicing>
    </element>
    <element id="Patient.extension:StatementOfDisagreement">
      <path value="Patient.extension" />
      <sliceName value="StatementOfDisagreement" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="https://ccim.on.ca/fhir/mds/StructureDefinition/ext-statement-of-disagreement" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Patient.identifier">
      <path value="Patient.identifier" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="type.coding.system" />
        </discriminator>
        <discriminator>
          <type value="value" />
          <path value="type.coding.code" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.identifier:MRN">
      <path value="Patient.identifier" />
      <sliceName value="MRN" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="Patient.identifier:MRN.type">
      <path value="Patient.identifier.type" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.identifier:MRN.type.coding">
      <path value="Patient.identifier.type.coding" />
      <min value="1" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.identifier:MRN.type.coding.system">
      <path value="Patient.identifier.type.coding.system" />
      <min value="1" />
      <fixedUri value="http://hl7.org/fhir/v2/0203" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.identifier:MRN.type.coding.code">
      <path value="Patient.identifier.type.coding.code" />
      <min value="1" />
      <fixedCode value="MR" />
      <mustSupport value="false" />
    </element>
    <element id="Patient.identifier:JHN">
      <path value="Patient.identifier" />
      <sliceName value="JHN" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.identifier:JHN.type">
      <path value="Patient.identifier.type" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.identifier:JHN.type.coding">
      <path value="Patient.identifier.type.coding" />
      <min value="1" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.identifier:JHN.type.coding.system">
      <path value="Patient.identifier.type.coding.system" />
      <min value="1" />
      <fixedUri value="http://hl7.org/fhir/v2/0203" />
    </element>
    <element id="Patient.identifier:JHN.type.coding.code">
      <path value="Patient.identifier.type.coding.code" />
      <min value="1" />
      <fixedCode value="JHN" />
    </element>
    <element id="Patient.name">
      <path value="Patient.name" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="use" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.name:LEGAL">
      <path value="Patient.name" />
      <sliceName value="LEGAL" />
      <min value="1" />
      <max value="1" />
      <constraint>
        <key value="legal-name-constraint-01" />
        <severity value="error" />
        <human value="testing" />
        <expression value="family.matches('^[a-zA-Z-]+$')" />
      </constraint>
      <mustSupport value="true" />
    </element>
    <element id="Patient.name:LEGAL.use">
      <path value="Patient.name.use" />
      <min value="1" />
      <fixedCode value="usual" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.name:LEGAL.family">
      <path value="Patient.name.family" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.name:LEGAL.given">
      <path value="Patient.name.given" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.name:PREFERRED">
      <path value="Patient.name" />
      <sliceName value="PREFERRED" />
      <definition value="The name the client prefers to go by." />
      <max value="1" />
      <constraint>
        <key value="preferred-name-constraint-01" />
        <severity value="error" />
        <human value="Family name or given name must be specified" />
        <expression value="family.exists() or given.exists()" />
      </constraint>
      <mustSupport value="true" />
    </element>
    <element id="Patient.name:PREFERRED.use">
      <path value="Patient.name.use" />
      <min value="1" />
      <fixedCode value="nickname" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.name:PREFERRED.family">
      <path value="Patient.name.family" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.name:PREFERRED.given">
      <path value="Patient.name.given" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.name:AT_BIRTH">
      <path value="Patient.name" />
      <sliceName value="AT_BIRTH" />
      <min value="1" />
      <max value="1" />
      <constraint>
        <key value="atbirth-constraint-01" />
        <severity value="error" />
        <human value="Only valid characters are allowed plus a hyphen, a period, and apostrophe." />
        <expression value="family.matches('^[a-zA-Z-]+$')" />
      </constraint>
      <mustSupport value="true" />
    </element>
    <element id="Patient.name:AT_BIRTH.use">
      <path value="Patient.name.use" />
      <min value="1" />
      <fixedCode value="old" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.name:AT_BIRTH.family">
      <path value="Patient.name.family" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.telecom">
      <path value="Patient.telecom" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="system" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <mustSupport value="true" />
    </element>
    <element id="Patient.telecom:PHONE_NUMBER">
      <path value="Patient.telecom" />
      <sliceName value="PHONE_NUMBER" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.telecom:PHONE_NUMBER.system">
      <path value="Patient.telecom.system" />
      <min value="1" />
      <fixedCode value="phone" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.telecom:PHONE_NUMBER.value">
      <path value="Patient.telecom.value" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.telecom:PHONE_NUMBER.use">
      <path value="Patient.telecom.use" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.telecom:PHONE_NUMBER.rank">
      <path value="Patient.telecom.rank" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.telecom:EMAIL">
      <path value="Patient.telecom" />
      <sliceName value="EMAIL" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.telecom:EMAIL.system">
      <path value="Patient.telecom.system" />
      <min value="1" />
      <fixedCode value="email" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.telecom:EMAIL.value">
      <path value="Patient.telecom.value" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.telecom:EMAIL.use">
      <path value="Patient.telecom.use" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.telecom:EMAIL.rank">
      <path value="Patient.telecom.rank" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.address">
      <path value="Patient.address" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.address.use">
      <path value="Patient.address.use" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.address.line">
      <path value="Patient.address.line" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.address.city">
      <path value="Patient.address.city" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.address.state">
      <path value="Patient.address.state" />
      <min value="1" />
      <mustSupport value="true" />
      <binding>
        <strength value="required" />
        <valueSetReference>
          <reference value="http://hl7.org/fhir/CodeSystem/canada-post-province-and-territory-codes" />
        </valueSetReference>
      </binding>
    </element>
    <element id="Patient.address.postalCode">
      <path value="Patient.address.postalCode" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.address.period">
      <path value="Patient.address.period" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.address.period.start">
      <path value="Patient.address.period.start" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
  </differential>
</StructureDefinition>