<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="profile-DwPractitioner" />
  <meta>
    <lastUpdated value="2024-06-10T14:18:22.4080067+00:00" />
  </meta>
  <url value="https://www.telus.com/health/fhir/dwemrextract/StructureDefinition/DwPractitioner" />
  <version value="2.0.0" />
  <name value="DwPractitioner" />
  <status value="active" />
  <date value="2026-05-29" />
  <fhirVersion value="4.0.1" />
  <kind value="resource" />
  <abstract value="false" />
  <type value="Practitioner" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/Practitioner" />
  <derivation value="constraint" />
  <differential>
    <element id="Practitioner">
      <path value="Practitioner" />
      <comment value="A practitioner may have multiple identifiers, namely internal userID and  provider ID issued by the EMR, Jurisdictional billing number, and License number." />
    </element>
    <element id="Practitioner.id">
      <path value="Practitioner.id" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.meta.lastUpdated">
      <path value="Practitioner.meta.lastUpdated" />
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.meta.source">
      <path value="Practitioner.meta.source" />
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.meta.security">
      <path value="Practitioner.meta.security" />
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.text">
      <path value="Practitioner.text" />
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.identifier">
      <path value="Practitioner.identifier" />
      <slicing>
        <discriminator>
          <type value="pattern" />
          <path value="type.coding" />
        </discriminator>
        <ordered value="false" />
        <rules value="open" />
      </slicing>
      <definition value="An identifier that applies to this person in this role. A practitioner may have multiple identifiers, namely userID and providerId issued by the EMR, and Jurisdictional billing number" />
    </element>
    <element id="Practitioner.identifier:UserId">
      <path value="Practitioner.identifier" />
      <sliceName value="UserId" />
      <definition value="EMR Identifier assigned to a person using the EMR instance. An identifier that applies to this person in this role." />
      <min value="0" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.identifier:UserId.type">
      <path value="Practitioner.identifier.type" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.identifier:UserId.type.coding">
      <path value="Practitioner.identifier.type.coding" />
      <min value="1" />
      <patternCoding>
        <system value="http://terminology.hl7.org/CodeSystem/v2-0203" />
        <code value="EI" />
        <display value="Employee number" />
      </patternCoding>
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.identifier:UserId.type.text">
      <path value="Practitioner.identifier.type.text" />
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.identifier:UserId.system">
      <path value="Practitioner.identifier.system" />
      <definition value="Internal practitioners: urn:telus:emr:{emrType}:{region}:{emrInstanceId}:userid. External contact providers (HDT-900): urn:telus:emr:{emrType}:{region}:{emrInstanceId}:contactid." />
      <min value="1" />
      <constraint>
        <key value="dw-practitioner-userid-system" />
        <severity value="warning" />
        <human value="UserId system must follow pattern urn:telus:emr:{emrType}:{instanceId}:userid or urn:telus:emr:{emrType}:{region}:{instanceId}:userid" />
        <expression value="matches('urn:telus:emr:([^:]+:){2,3}[Uu][Ss][Ee][Rr][Ii][Dd]')" />
        <source value="https://www.telus.com/health/fhir/dwemrextract/StructureDefinition/DwPractitioner" />
      </constraint>
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.identifier:UserId.value">
      <path value="Practitioner.identifier.value" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.identifier:ProviderId">
      <path value="Practitioner.identifier" />
      <sliceName value="ProviderId" />
      <definition value="Doctor number asigned by the EMR system. An identifier that applies to this person in this role.&#xD;&#xA;A doctor may have more than 1 ProviderID if they have multiple bill books." />
      <min value="0" />
      <max value="*" />
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.identifier:ProviderId.extension">
      <path value="Practitioner.identifier.extension" />
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.identifier:ProviderId.type">
      <path value="Practitioner.identifier.type" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.identifier:ProviderId.type.coding">
      <path value="Practitioner.identifier.type.coding" />
      <min value="1" />
      <patternCoding>
        <system value="http://terminology.hl7.org/CodeSystem/v2-0203" />
        <code value="PRN" />
        <display value="Provider number" />
      </patternCoding>
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.identifier:ProviderId.type.text">
      <path value="Practitioner.identifier.type.text" />
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.identifier:ProviderId.system">
      <path value="Practitioner.identifier.system" />
      <definition value="Establishes the namespace for the value - that is, a URL that describes a set values that are unique.&#xD;&#xA;Follow the pattern urn:telus:emr:{emrType}:{emrInstanceId}:providerid or urn:telus:emr:{emrType}:{region}:{emrInstanceId}:providerid" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.identifier:ProviderId.value">
      <path value="Practitioner.identifier.value" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.identifier:LicenseNumber">
      <path value="Practitioner.identifier" />
      <sliceName value="LicenseNumber" />
      <definition value="Professional license number issued by a licensing authority (e.g., College of Physicians and Surgeons)" />
      <min value="0" />
      <max value="*" />
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.identifier:LicenseNumber.use">
      <path value="Practitioner.identifier.use" />
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.identifier:LicenseNumber.type">
      <path value="Practitioner.identifier.type" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.identifier:LicenseNumber.type.coding">
      <path value="Practitioner.identifier.type.coding" />
      <min value="1" />
      <patternCoding>
        <system value="http://terminology.hl7.org/CodeSystem/v2-0203" />
        <code value="LN" />
        <display value="License number" />
      </patternCoding>
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.identifier:LicenseNumber.type.text">
      <path value="Practitioner.identifier.type.text" />
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.identifier:LicenseNumber.system">
      <path value="Practitioner.identifier.system" />
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.identifier:LicenseNumber.value">
      <path value="Practitioner.identifier.value" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.identifier:LicenseNumber.assigner">
      <path value="Practitioner.identifier.assigner" />
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.active">
      <path value="Practitioner.active" />
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.name">
      <path value="Practitioner.name" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.name.use">
      <path value="Practitioner.name.use" />
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.name.text">
      <path value="Practitioner.name.text" />
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.name.family">
      <path value="Practitioner.name.family" />
      <comment value="Family Name may be decomposed into specific parts using extensions (de, nl, es related cultures).&#xD;&#xA;&#xD;&#xA;Usage note: Practitioner coming from MA and PSS will have family name in the extracts as they are required fields. The constraint on FHIR profile is open to allow other data sources that may not have family names as required field." />
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.name.given">
      <path value="Practitioner.name.given" />
      <example>
        <label value="Firstname" />
        <valueString value="Angela" />
      </example>
      <example>
        <label value="Middle name" />
        <valueString value="Coffee" />
      </example>
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.name.prefix">
      <path value="Practitioner.name.prefix" />
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.name.suffix">
      <path value="Practitioner.name.suffix" />
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.telecom">
      <path value="Practitioner.telecom" />
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.telecom.system">
      <path value="Practitioner.telecom.system" />
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.telecom.value">
      <path value="Practitioner.telecom.value" />
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.telecom.use">
      <path value="Practitioner.telecom.use" />
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.address">
      <path value="Practitioner.address" />
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.address.use">
      <path value="Practitioner.address.use" />
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.address.type">
      <path value="Practitioner.address.type" />
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.address.text">
      <path value="Practitioner.address.text" />
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.address.line">
      <path value="Practitioner.address.line" />
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.address.city">
      <path value="Practitioner.address.city" />
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.address.state">
      <path value="Practitioner.address.state" />
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.address.postalCode">
      <path value="Practitioner.address.postalCode" />
      <mustSupport value="true" />
    </element>
    <element id="Practitioner.address.country">
      <path value="Practitioner.address.country" />
      <mustSupport value="true" />
    </element>
  </differential>
</StructureDefinition>