<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="PatientPSAB" />
  <url value="https://www.alberta.ca/fhir/psab/StructureDefinition/PatientPSAB" />
  <version value="1.2.0" />
  <name value="PatientPSAB" />
  <title value="Patient (PS-AB)" />
  <status value="draft" />
  <description value="This profile defines a set of constraints to the FHIR Patient resource for use in Alberta Patient Summaries (PS-AB). It re-profiles the PS-CA Patient profile and refines constraints applied to the Patient resource by the PS-CA project to represent the minimum expectations for the Patient resource when used in the PS-AB Composition profile or in one of the referred resources." />
  <fhirVersion value="4.0.1" />
  <kind value="resource" />
  <abstract value="false" />
  <type value="Patient" />
  <baseDefinition value="http://fhir.infoway-inforoute.ca/io/psca/StructureDefinition/patient-ca-ps" />
  <derivation value="constraint" />
  <differential>
    <element id="Patient">
      <path value="Patient" />
      <comment value="Patient resources included in Alberta Patient Summary Document Bundles have rules that certain attributes are not to be contained in Patient resource. These are mechanically enforced through invariants at the PS-AB Bundle level." />
    </element>
    <element id="Patient.extension">
      <path value="Patient.extension" />
      <min value="1" />
    </element>
    <element id="Patient.extension:individual-recordedSexOrGender">
      <path value="Patient.extension" />
      <sliceName value="individual-recordedSexOrGender" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.extension:individual-recordedSexOrGender.extension:value">
      <path value="Patient.extension.extension" />
      <sliceName value="value" />
    </element>
    <element id="Patient.extension:individual-recordedSexOrGender.extension:value.value[x]">
      <path value="Patient.extension.extension.value[x]" />
      <binding>
        <strength value="required" />
        <valueSet value="https://www.alberta.ca/fhir/ValueSet/administrative-gender-ab" />
      </binding>
    </element>
    <element id="Patient.extension:individual-recordedSexOrGender.extension:type">
      <path value="Patient.extension.extension" />
      <sliceName value="type" />
    </element>
    <element id="Patient.extension:individual-recordedSexOrGender.extension:type.value[x]">
      <path value="Patient.extension.extension.value[x]" />
      <binding>
        <strength value="required" />
        <valueSet value="https://www.alberta.ca/fhir/ValueSet/recorded-sex-or-gender-type-AB" />
      </binding>
    </element>
    <element id="Patient.identifier">
      <path value="Patient.identifier" />
      <min value="1" />
    </element>
    <element id="Patient.identifier:JHN">
      <path value="Patient.identifier" />
      <sliceName value="JHN" />
      <sliceIsConstraining value="true" />
      <comment value="Patients must have at least an AB ULI identifier or another provincial JHN identifier. Implementers supplying ULIs shall use identifier.system of https://fhir.infoway-inforoute.ca/NamingSystem/ca-ab-patient-healthcare-id" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.identifier:JHN.type">
      <path value="Patient.identifier.type" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.identifier:JHN.system">
      <path value="Patient.identifier.system" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.identifier:JHN.value">
      <path value="Patient.identifier.value" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.name.text">
      <path value="Patient.name.text" />
      <comment value="Mandatory String: Max Character length: 200" />
      <min value="1" />
    </element>
    <element id="Patient.name.family">
      <path value="Patient.name.family" />
      <min value="1" />
    </element>
    <element id="Patient.telecom">
      <path value="Patient.telecom" />
      <slicing>
        <discriminator>
          <type value="pattern" />
          <path value="system" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <mustSupport value="true" />
    </element>
    <element id="Patient.telecom:Phone">
      <path value="Patient.telecom" />
      <sliceName value="Phone" />
      <min value="0" />
      <max value="*" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.telecom:Phone.system">
      <path value="Patient.telecom.system" />
      <min value="1" />
      <fixedCode value="phone" />
    </element>
    <element id="Patient.address">
      <path value="Patient.address" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.address.use">
      <path value="Patient.address.use" />
      <comment value="Assumed to be current home address if Address is present but no Use value is provided" />
    </element>
    <element id="Patient.address.type">
      <path value="Patient.address.type" />
      <comment value="Valid values: postal / physical / both. Assumed to be 'both' if no value is provided" />
    </element>
    <element id="Patient.address.line">
      <path value="Patient.address.line" />
      <min value="1" />
    </element>
    <element id="Patient.address.city">
      <path value="Patient.address.city" />
      <min value="1" />
    </element>
    <element id="Patient.address.state">
      <path value="Patient.address.state" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.address.postalCode">
      <path value="Patient.address.postalCode" />
      <min value="1" />
    </element>
    <element id="Patient.contact.relationship">
      <path value="Patient.contact.relationship" />
      <binding>
        <strength value="extensible" />
        <valueSet value="https://fhir.infoway-inforoute.ca/ValueSet/personalrelationshipcodes" />
      </binding>
    </element>
    <element id="Patient.contact.name">
      <path value="Patient.contact.name" />
      <min value="1" />
    </element>
  </differential>
</StructureDefinition>