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