<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="profile-DwPractitionerRole" />
  <meta>
    <lastUpdated value="2024-05-03T21:26:04.5901449+00:00" />
  </meta>
  <url value="https://www.telus.com/health/fhir/dwemrextract/StructureDefinition/DwPractitionerRole" />
  <version value="2.0.0" />
  <name value="DwPractitionerRole" />
  <status value="active" />
  <date value="2026-05-29" />
  <fhirVersion value="4.0.1" />
  <kind value="resource" />
  <abstract value="false" />
  <type value="PractitionerRole" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/PractitionerRole" />
  <derivation value="constraint" />
  <differential>
    <element id="PractitionerRole.id">
      <path value="PractitionerRole.id" />
      <comment value="urn:telus:emr:{sourceSystem}:{sourceSystemID}:practitionerRole:{userid}&#xD;&#xA;&#xD;&#xA;The only time that a resource does not have an id is when it is being submitted to the server using a create operation." />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="PractitionerRole.meta.lastUpdated">
      <path value="PractitionerRole.meta.lastUpdated" />
      <mustSupport value="true" />
    </element>
    <element id="PractitionerRole.meta.source">
      <path value="PractitionerRole.meta.source" />
      <mustSupport value="true" />
    </element>
    <element id="PractitionerRole.meta.security">
      <path value="PractitionerRole.meta.security" />
      <mustSupport value="true" />
    </element>
    <element id="PractitionerRole.text">
      <path value="PractitionerRole.text" />
      <mustSupport value="true" />
    </element>
    <element id="PractitionerRole.identifier">
      <path value="PractitionerRole.identifier" />
      <mustSupport value="true" />
    </element>
    <element id="PractitionerRole.active">
      <path value="PractitionerRole.active" />
      <mustSupport value="true" />
    </element>
    <element id="PractitionerRole.practitioner">
      <path value="PractitionerRole.practitioner" />
      <definition value="Refers to the practitioner that is able to provide the defined services for the organization." />
      <min value="1" />
      <type>
        <code value="Reference" />
        <targetProfile value="https://www.telus.com/health/fhir/dwemrextract/StructureDefinition/DwPractitioner" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="PractitionerRole.organization">
      <path value="PractitionerRole.organization" />
      <definition value="Refers to the parent organization where the Practitioner performs the roles associated." />
      <min value="1" />
      <type>
        <code value="Reference" />
        <targetProfile value="https://www.telus.com/health/fhir/dwemrextract/StructureDefinition/DwOrganization" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="PractitionerRole.code">
      <path value="PractitionerRole.code" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="coding.userSelected" />
        </discriminator>
        <discriminator>
          <type value="pattern" />
          <path value="coding.system" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <definition value="Roles which this practitioner is authorized to perform for the organization. &#xD;&#xA;For role within an EMR use urn:telus:emr:{EMR Type}:{EMR instance}:clinical-role" />
    </element>
    <element id="PractitionerRole.code:HL7Role">
      <path value="PractitionerRole.code" />
      <sliceName value="HL7Role" />
      <min value="0" />
      <max value="*" />
      <mustSupport value="true" />
      <binding>
        <strength value="preferred" />
        <valueSet value="http://hl7.org/fhir/ValueSet/practitioner-role" />
      </binding>
    </element>
    <element id="PractitionerRole.code:HL7Role.coding.system">
      <path value="PractitionerRole.code.coding.system" />
      <min value="1" />
      <fixedUri value="http://snomed.info/sct" />
      <mustSupport value="true" />
    </element>
    <element id="PractitionerRole.code:HL7Role.coding.version">
      <path value="PractitionerRole.code.coding.version" />
      <mustSupport value="true" />
    </element>
    <element id="PractitionerRole.code:HL7Role.coding.code">
      <path value="PractitionerRole.code.coding.code" />
      <mustSupport value="true" />
    </element>
    <element id="PractitionerRole.code:HL7Role.coding.display">
      <path value="PractitionerRole.code.coding.display" />
      <mustSupport value="true" />
    </element>
    <element id="PractitionerRole.code:HL7Role.coding.display.extension">
      <path value="PractitionerRole.code.coding.display.extension" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="url" />
        </discriminator>
        <ordered value="false" />
        <rules value="open" />
      </slicing>
    </element>
    <element id="PractitionerRole.code:HL7Role.coding.display.extension:translation">
      <path value="PractitionerRole.code.coding.display.extension" />
      <sliceName value="translation" />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://hl7.org/fhir/StructureDefinition/translation" />
      </type>
    </element>
    <element id="PractitionerRole.code:HL7Role.coding.display.extension:translation.extension">
      <path value="PractitionerRole.code.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="PractitionerRole.code:HL7Role.coding.userSelected">
      <path value="PractitionerRole.code.coding.userSelected" />
      <min value="1" />
      <patternBoolean value="false" />
      <mustSupport value="true" />
    </element>
    <element id="PractitionerRole.code:HL7Role.text">
      <path value="PractitionerRole.code.text" />
      <mustSupport value="true" />
    </element>
    <element id="PractitionerRole.code:TelusRole">
      <path value="PractitionerRole.code" />
      <sliceName value="TelusRole" />
      <min value="0" />
      <max value="*" />
      <mustSupport value="true" />
    </element>
    <element id="PractitionerRole.code:TelusRole.coding.system">
      <path value="PractitionerRole.code.coding.system" />
      <min value="1" />
      <constraint>
        <key value="dw-practitionerrole-telusrole-system" />
        <severity value="warning" />
        <human value="TelusRole coding.system must follow pattern urn:telus:emr:{emrType}:{instanceId}:clinical-role or urn:telus:emr:{emrType}:{region}:{instanceId}:clinical-role" />
        <expression value="matches('urn:telus:emr:([^:]+:){2,3}clinical-role')" />
        <source value="https://www.telus.com/health/fhir/dwemrextract/StructureDefinition/DwPractitionerRole" />
      </constraint>
      <mustSupport value="true" />
    </element>
    <element id="PractitionerRole.code:TelusRole.coding.code">
      <path value="PractitionerRole.code.coding.code" />
      <mustSupport value="true" />
    </element>
    <element id="PractitionerRole.code:TelusRole.coding.display">
      <path value="PractitionerRole.code.coding.display" />
      <mustSupport value="true" />
    </element>
    <element id="PractitionerRole.code:TelusRole.coding.userSelected">
      <path value="PractitionerRole.code.coding.userSelected" />
      <min value="1" />
      <patternBoolean value="true" />
      <mustSupport value="true" />
    </element>
    <element id="PractitionerRole.code:TelusRole.text">
      <path value="PractitionerRole.code.text" />
      <mustSupport value="true" />
    </element>
    <element id="PractitionerRole.code:InfowayRole">
      <path value="PractitionerRole.code" />
      <sliceName value="InfowayRole" />
      <min value="0" />
      <max value="*" />
      <mustSupport value="true" />
      <binding>
        <strength value="preferred" />
        <valueSet value="https://fhir.infoway-inforoute.ca/ValueSet/healthcareproviderroletype" />
      </binding>
    </element>
    <element id="PractitionerRole.code:InfowayRole.coding.system">
      <path value="PractitionerRole.code.coding.system" />
      <min value="1" />
      <fixedUri value="https://fhir.infoway-inforoute.ca/CodeSystem/scptype" />
      <mustSupport value="true" />
    </element>
    <element id="PractitionerRole.code:InfowayRole.coding.version">
      <path value="PractitionerRole.code.coding.version" />
      <mustSupport value="false" />
    </element>
    <element id="PractitionerRole.code:InfowayRole.coding.code">
      <path value="PractitionerRole.code.coding.code" />
      <mustSupport value="true" />
    </element>
    <element id="PractitionerRole.code:InfowayRole.coding.display">
      <path value="PractitionerRole.code.coding.display" />
      <mustSupport value="true" />
    </element>
    <element id="PractitionerRole.code:InfowayRole.coding.display.extension">
      <path value="PractitionerRole.code.coding.display.extension" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="url" />
        </discriminator>
        <ordered value="false" />
        <rules value="open" />
      </slicing>
    </element>
    <element id="PractitionerRole.code:InfowayRole.coding.display.extension:translation">
      <path value="PractitionerRole.code.coding.display.extension" />
      <sliceName value="translation" />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://hl7.org/fhir/StructureDefinition/translation" />
      </type>
    </element>
    <element id="PractitionerRole.code:InfowayRole.coding.display.extension:translation.extension">
      <path value="PractitionerRole.code.coding.display.extension.extension" />
      <min value="2" />
    </element>
    <element id="PractitionerRole.code:InfowayRole.coding.userSelected">
      <path value="PractitionerRole.code.coding.userSelected" />
      <min value="1" />
      <patternBoolean value="false" />
      <mustSupport value="true" />
    </element>
    <element id="PractitionerRole.code:InfowayRole.text">
      <path value="PractitionerRole.code.text" />
      <mustSupport value="true" />
    </element>
    <element id="PractitionerRole.specialty">
      <path value="PractitionerRole.specialty" />
      <comment value="Bound (preferred) to the Infoway `healthcareproviderspecialtycode` value set. Not all terminology uses fit this general pattern. In some cases, models should not use CodeableConcept and use Coding directly and provide their own structure for managing text, codings, translations and the relationship between elements and pre- and post-coordination.&#xD;&#xA;&#xD;&#xA;Usage note - Physicians may have multiple specialty, in which case there will be me more than 1 specialty code provided" />
      <mustSupport value="true" />
      <binding>
        <strength value="preferred" />
        <description value="Health care provider specialty codes from the Canada Health Infoway [healthcareproviderspecialtycode](https://fhir.infoway-inforoute.ca/ValueSet/healthcareproviderspecialtycode) value set (SNOMED CT Canadian Edition)." />
        <valueSet value="https://fhir.infoway-inforoute.ca/ValueSet/healthcareproviderspecialtycode" />
      </binding>
    </element>
    <element id="PractitionerRole.specialty.coding.system">
      <path value="PractitionerRole.specialty.coding.system" />
      <fixedUri value="http://snomed.info/sct" />
      <mustSupport value="true" />
    </element>
    <element id="PractitionerRole.specialty.coding.code">
      <path value="PractitionerRole.specialty.coding.code" />
      <mustSupport value="true" />
    </element>
    <element id="PractitionerRole.specialty.coding.display">
      <path value="PractitionerRole.specialty.coding.display" />
      <mustSupport value="true" />
    </element>
    <element id="PractitionerRole.specialty.coding.display.extension">
      <path value="PractitionerRole.specialty.coding.display.extension" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="url" />
        </discriminator>
        <ordered value="false" />
        <rules value="open" />
      </slicing>
    </element>
    <element id="PractitionerRole.specialty.coding.display.extension:myExtension">
      <path value="PractitionerRole.specialty.coding.display.extension" />
      <sliceName value="myExtension" />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://hl7.org/fhir/StructureDefinition/translation" />
      </type>
    </element>
    <element id="PractitionerRole.specialty.coding.display.extension:myExtension.extension">
      <path value="PractitionerRole.specialty.coding.display.extension.extension" />
      <min value="2" />
      <mustSupport value="true" />
    </element>
    <element id="PractitionerRole.specialty.text">
      <path value="PractitionerRole.specialty.text" />
      <comment value="Usage Note:  Speciality as identified in the EMR&#xD;&#xA;&#xD;&#xA;Very often the text is the same as a displayName of one of the codings." />
      <mustSupport value="true" />
    </element>
    <element id="PractitionerRole.location">
      <path value="PractitionerRole.location" />
      <type>
        <code value="Reference" />
        <targetProfile value="https://www.telus.com/health/fhir/dwemrextract/StructureDefinition/DwLocation" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="PractitionerRole.telecom">
      <path value="PractitionerRole.telecom" />
      <mustSupport value="true" />
    </element>
    <element id="PractitionerRole.telecom.system">
      <path value="PractitionerRole.telecom.system" />
      <mustSupport value="true" />
    </element>
    <element id="PractitionerRole.telecom.value">
      <path value="PractitionerRole.telecom.value" />
      <mustSupport value="true" />
    </element>
    <element id="PractitionerRole.telecom.use">
      <path value="PractitionerRole.telecom.use" />
      <mustSupport value="true" />
    </element>
    <element id="PractitionerRole.endpoint">
      <path value="PractitionerRole.endpoint" />
      <requirements value="Organizations have multiple systems that provide various services and may also be different for practitioners too.&#xD;&#xD;So the endpoint satisfies the need to be able to define the technical connection details for how to connect to them, and for what purpose." />
    </element>
  </differential>
</StructureDefinition>