Canadian Core
0.1.0 - CI Build

Canadian Core, published by Canadian FHIR Implementor Working Group. This is not an authorized publication; it is the continuous build for version 0.1.0). This version is based on the current content of https://github.com/scratch-fhir-profiles/CA-Core/ and changes regularly. See the Directory of published versions

Resource Profile: PractitionerRole Profile (General)

Defining URL:http://hl7.org/fhir/ca/core/StructureDefinition/profile-practitionerrole
Version:0.1.0
Name:PractitionerRoleProfile
Title:PractitionerRole Profile (General)
Status:Draft as of 2020-03-09
Definition:

Proposed constraints and extensions on the PractitionerRole Resource for general use.

Publisher:Canadian FHIR Implementor Working Group
Source Resource:XML / JSON / Turtle

The official URL for this profile is:

http://hl7.org/fhir/ca/core/StructureDefinition/profile-practitionerrole

CA Baseline PractitionerRole Profile

This PractitionerRole profile sets minimum expectations for the PractitionerRole resource to record, search and fetch the recording of the location and types of services that Practitioner is able to provide for an organization.

This profile defines localization concepts for use in an Canadian context.

Mandatory Data Elements

All elements or attributes defined in FHIR have cardinality as part of their definition - a minimum number of required appearances and a maximum number.

Most elements in FHIR specification have a minimum cardinality of 0, which means that they may be missing from a resource when it is exchanged between systems.

In this Canadian Baseline PractitionerRole Profile all elements are optional, i.e., there is no element with a minimum cardinality of 1. However, some optional elements (e.g., identifier) have required components that MUST be present if that optional element is provided.

Data Absent Reason

In situations where the minimum cardinality of an element or attribute is 1 and information is missing and the Responder knows the precise reason for the absence of data, Responders SHALL send the reason for the missing information using values (such as NullFlavor) from the value set where they exist or using the DataAbsentReason extension.

Must Support Data Elements

Some elements are labeled as MustSupport meaning that implementations that produce or consume resources SHALL provide “support” for the element in some meaningful way (see Must Support definition).

Following elements are marked as Must Support in the PractitionerRole profile to aid record matching in databases with many pediatric records.

Must Support elements:

  • an identifier
  • reference to a practitioner
  • contact detail (e.g. a telephone number or an email address)
  • speciality

Usage Note

This PractitionerRole profile is intended for general use, e.g. to be included into a Bundle along with the Practitioner resource.

Formal Views of Profile Content

Description of Profiles, Differentials, Snapshots and how the different presentations work.

This structure is derived from PractitionerRole

Summary

Mandatory: 0 element (4 nested mandatory elements)
Must-Support: 4 elements

Structures

This structure refers to these other structures:

This structure is derived from PractitionerRole

NameFlagsCard.TypeDescription & Constraintsdoco
.. PractitionerRole 0..*PractitionerRolePractitionerRole Profile
... identifier S0..*IdentifierBusiness Identifiers that are specific to a role/location
.... system 1..1uriThe namespace for the identifier value
.... value 1..1stringThe value that is unique
... practitioner S0..1Reference(Practitioner Profile (General))Practitioner that is able to provide the defined services for the organization.
... code 0..*CodeableConceptHealthcareProviderRoleType
Binding: https://fhir.infoway-inforoute.ca/ValueSet/healthcareproviderroletype (preferred): A role type that is used to categorize an entity that delivers health care in an expected and professional manner to an entity in need of health care services. Examples: Registered Nurse, Chiropractor, Physician, Custodial Care Clinic.

... telecom S0..*ContactPointContact details that are specific to the role/location/service
.... system 1..1codephone | fax | email | pager | url | sms | other
.... value 1..1stringThe actual contact point details

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraintsdoco
.. PractitionerRole 0..*PractitionerRolePractitionerRole Profile
... id Σ0..1stringLogical id of this artifact
... meta Σ0..1MetaMetadata about the resource
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... text 0..1NarrativeText summary of the resource, for human interpretation
... contained 0..*ResourceContained, inline Resources
... extension 0..*ExtensionAdditional content defined by implementations
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... identifier SΣ0..*IdentifierBusiness Identifiers that are specific to a role/location
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
.... use ?!Σ0..1codeusual | official | temp | secondary | old (If known)
Binding: IdentifierUse (required): Identifies the purpose for this identifier, if known .

.... type Σ0..1CodeableConceptDescription of identifier
Binding: Identifier Type Codes (extensible): A coded type for an identifier that can be used to determine which identifier to use for a specific purpose.

.... system Σ1..1uriThe namespace for the identifier value
Example General: http://www.acme.com/identifiers/patient
.... value Σ1..1stringThe value that is unique
Example General: 123456
.... period Σ0..1PeriodTime period when id is/was valid for use
.... assigner Σ0..1Reference(Organization)Organization that issued id (may be just text)
... active Σ0..1booleanWhether this practitioner role record is in active use
... period Σ0..1PeriodThe period during which the practitioner is authorized to perform in these role(s)
... practitioner SΣ0..1Reference(Practitioner Profile (General))Practitioner that is able to provide the defined services for the organization.
... organization Σ0..1Reference(Organization)Organization where the roles are available
... code Σ0..*CodeableConceptHealthcareProviderRoleType
Binding: https://fhir.infoway-inforoute.ca/ValueSet/healthcareproviderroletype (preferred): A role type that is used to categorize an entity that delivers health care in an expected and professional manner to an entity in need of health care services. Examples: Registered Nurse, Chiropractor, Physician, Custodial Care Clinic.


... specialty SΣ0..*CodeableConceptPractitionerSpecialty
Binding: https://fhir.infoway-inforoute.ca/ValueSet/practitionerspecialty (preferred): Defines the clinical, medical, surgical or other healthcare-related service specialty of a practitioner who interacts, treats or provides such services to or for a patient.


... location Σ0..*Reference(Location)The location(s) at which this practitioner provides care
... healthcareService 0..*Reference(HealthcareService)The list of healthcare services that this worker provides for this role's Organization/Location(s)
... telecom SΣ0..*ContactPointContact details that are specific to the role/location/service
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
.... system ΣI1..1codephone | fax | email | pager | url | sms | other
Binding: ContactPointSystem (required): Telecommunications form for contact point.

.... value Σ1..1stringThe actual contact point details
.... use ?!Σ0..1codehome | work | temp | old | mobile - purpose of this contact point
Binding: ContactPointUse (required): Use of contact point.

.... rank Σ0..1positiveIntSpecify preferred order of use (1 = highest)
.... period Σ0..1PeriodTime period when the contact point was/is in use
... availableTime 0..*BackboneElementTimes the Service Site is available
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... daysOfWeek 0..*codemon | tue | wed | thu | fri | sat | sun
Binding: DaysOfWeek (required): The days of the week.


.... allDay 0..1booleanAlways available? e.g. 24 hour service
.... availableStartTime 0..1timeOpening time of day (ignored if allDay = true)
.... availableEndTime 0..1timeClosing time of day (ignored if allDay = true)
... notAvailable 0..*BackboneElementNot available during this time due to provided reason
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... description 1..1stringReason presented to the user explaining why time not available
.... during 0..1PeriodService not available from this date
... availabilityExceptions 0..1stringDescription of availability exceptions
... endpoint 0..*Reference(Endpoint)Technical endpoints providing access to services operated for the practitioner with this role

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraintsdoco
.. PractitionerRole 0..*PractitionerRolePractitionerRole Profile
... identifier Σ0..*IdentifierBusiness Identifiers that are specific to a role/location
... practitioner Σ0..1Reference(Practitioner Profile (General))Practitioner that is able to provide the defined services for the organization.
... specialty Σ0..*CodeableConceptPractitionerSpecialty
Binding: https://fhir.infoway-inforoute.ca/ValueSet/practitionerspecialty (preferred): Defines the clinical, medical, surgical or other healthcare-related service specialty of a practitioner who interacts, treats or provides such services to or for a patient.



doco Documentation for this format

This structure is derived from PractitionerRole

Summary

Mandatory: 0 element (4 nested mandatory elements)
Must-Support: 4 elements

Structures

This structure refers to these other structures:

Differential View

This structure is derived from PractitionerRole

NameFlagsCard.TypeDescription & Constraintsdoco
.. PractitionerRole 0..*PractitionerRolePractitionerRole Profile
... identifier S0..*IdentifierBusiness Identifiers that are specific to a role/location
.... system 1..1uriThe namespace for the identifier value
.... value 1..1stringThe value that is unique
... practitioner S0..1Reference(Practitioner Profile (General))Practitioner that is able to provide the defined services for the organization.
... code 0..*CodeableConceptHealthcareProviderRoleType
Binding: https://fhir.infoway-inforoute.ca/ValueSet/healthcareproviderroletype (preferred): A role type that is used to categorize an entity that delivers health care in an expected and professional manner to an entity in need of health care services. Examples: Registered Nurse, Chiropractor, Physician, Custodial Care Clinic.

... telecom S0..*ContactPointContact details that are specific to the role/location/service
.... system 1..1codephone | fax | email | pager | url | sms | other
.... value 1..1stringThe actual contact point details

doco Documentation for this format

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. PractitionerRole 0..*PractitionerRolePractitionerRole Profile
... id Σ0..1stringLogical id of this artifact
... meta Σ0..1MetaMetadata about the resource
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... text 0..1NarrativeText summary of the resource, for human interpretation
... contained 0..*ResourceContained, inline Resources
... extension 0..*ExtensionAdditional content defined by implementations
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... identifier SΣ0..*IdentifierBusiness Identifiers that are specific to a role/location
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
.... use ?!Σ0..1codeusual | official | temp | secondary | old (If known)
Binding: IdentifierUse (required): Identifies the purpose for this identifier, if known .

.... type Σ0..1CodeableConceptDescription of identifier
Binding: Identifier Type Codes (extensible): A coded type for an identifier that can be used to determine which identifier to use for a specific purpose.

.... system Σ1..1uriThe namespace for the identifier value
Example General: http://www.acme.com/identifiers/patient
.... value Σ1..1stringThe value that is unique
Example General: 123456
.... period Σ0..1PeriodTime period when id is/was valid for use
.... assigner Σ0..1Reference(Organization)Organization that issued id (may be just text)
... active Σ0..1booleanWhether this practitioner role record is in active use
... period Σ0..1PeriodThe period during which the practitioner is authorized to perform in these role(s)
... practitioner SΣ0..1Reference(Practitioner Profile (General))Practitioner that is able to provide the defined services for the organization.
... organization Σ0..1Reference(Organization)Organization where the roles are available
... code Σ0..*CodeableConceptHealthcareProviderRoleType
Binding: https://fhir.infoway-inforoute.ca/ValueSet/healthcareproviderroletype (preferred): A role type that is used to categorize an entity that delivers health care in an expected and professional manner to an entity in need of health care services. Examples: Registered Nurse, Chiropractor, Physician, Custodial Care Clinic.


... specialty SΣ0..*CodeableConceptPractitionerSpecialty
Binding: https://fhir.infoway-inforoute.ca/ValueSet/practitionerspecialty (preferred): Defines the clinical, medical, surgical or other healthcare-related service specialty of a practitioner who interacts, treats or provides such services to or for a patient.


... location Σ0..*Reference(Location)The location(s) at which this practitioner provides care
... healthcareService 0..*Reference(HealthcareService)The list of healthcare services that this worker provides for this role's Organization/Location(s)
... telecom SΣ0..*ContactPointContact details that are specific to the role/location/service
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
.... system ΣI1..1codephone | fax | email | pager | url | sms | other
Binding: ContactPointSystem (required): Telecommunications form for contact point.

.... value Σ1..1stringThe actual contact point details
.... use ?!Σ0..1codehome | work | temp | old | mobile - purpose of this contact point
Binding: ContactPointUse (required): Use of contact point.

.... rank Σ0..1positiveIntSpecify preferred order of use (1 = highest)
.... period Σ0..1PeriodTime period when the contact point was/is in use
... availableTime 0..*BackboneElementTimes the Service Site is available
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... daysOfWeek 0..*codemon | tue | wed | thu | fri | sat | sun
Binding: DaysOfWeek (required): The days of the week.


.... allDay 0..1booleanAlways available? e.g. 24 hour service
.... availableStartTime 0..1timeOpening time of day (ignored if allDay = true)
.... availableEndTime 0..1timeClosing time of day (ignored if allDay = true)
... notAvailable 0..*BackboneElementNot available during this time due to provided reason
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... description 1..1stringReason presented to the user explaining why time not available
.... during 0..1PeriodService not available from this date
... availabilityExceptions 0..1stringDescription of availability exceptions
... endpoint 0..*Reference(Endpoint)Technical endpoints providing access to services operated for the practitioner with this role

doco Documentation for this format

 

Other representations of profile: Schematron

Terminology Bindings

PathConformanceValueSet
PractitionerRole.languagepreferredCommonLanguages
Max Binding: AllLanguages
PractitionerRole.identifier.userequiredIdentifierUse
PractitionerRole.identifier.typeextensibleIdentifier Type Codes
PractitionerRole.codepreferredhttps://fhir.infoway-inforoute.ca/ValueSet/healthcareproviderroletype
PractitionerRole.specialtypreferredhttps://fhir.infoway-inforoute.ca/ValueSet/practitionerspecialty
PractitionerRole.telecom.systemrequiredContactPointSystem
PractitionerRole.telecom.userequiredContactPointUse
PractitionerRole.availableTime.daysOfWeekrequiredDaysOfWeek

Constraints

IdPathDetailsRequirements
dom-2PractitionerRoleIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3PractitionerRoleIf the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource
: contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4PractitionerRoleIf a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated
: contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5PractitionerRoleIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6PractitionerRoleA resource should have narrative for robust management
: text.`div`.exists()
ele-1PractitionerRole.metaAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1PractitionerRole.implicitRulesAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1PractitionerRole.languageAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1PractitionerRole.textAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1PractitionerRole.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1PractitionerRole.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1PractitionerRole.modifierExtensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1PractitionerRole.modifierExtensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1PractitionerRole.identifierAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1PractitionerRole.identifier.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1PractitionerRole.identifier.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1PractitionerRole.identifier.useAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1PractitionerRole.identifier.typeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1PractitionerRole.identifier.systemAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1PractitionerRole.identifier.valueAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1PractitionerRole.identifier.periodAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1PractitionerRole.identifier.assignerAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1PractitionerRole.activeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1PractitionerRole.periodAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1PractitionerRole.practitionerAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1PractitionerRole.organizationAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1PractitionerRole.codeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1PractitionerRole.specialtyAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1PractitionerRole.locationAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1PractitionerRole.healthcareServiceAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1PractitionerRole.telecomAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1PractitionerRole.telecom.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1PractitionerRole.telecom.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1PractitionerRole.telecom.systemAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1PractitionerRole.telecom.valueAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1PractitionerRole.telecom.useAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1PractitionerRole.telecom.rankAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1PractitionerRole.telecom.periodAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1PractitionerRole.availableTimeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1PractitionerRole.availableTime.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1PractitionerRole.availableTime.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1PractitionerRole.availableTime.modifierExtensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1PractitionerRole.availableTime.modifierExtensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1PractitionerRole.availableTime.daysOfWeekAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1PractitionerRole.availableTime.allDayAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1PractitionerRole.availableTime.availableStartTimeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1PractitionerRole.availableTime.availableEndTimeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1PractitionerRole.notAvailableAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1PractitionerRole.notAvailable.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1PractitionerRole.notAvailable.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1PractitionerRole.notAvailable.modifierExtensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1PractitionerRole.notAvailable.modifierExtensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1PractitionerRole.notAvailable.descriptionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1PractitionerRole.notAvailable.duringAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1PractitionerRole.availabilityExceptionsAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1PractitionerRole.endpointAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())

Notes:

Identifiers

Multiple types of provider identifiers may be used in PractitionerRole.identifier element in the Canadian context:

  • Provincial health plan provider/ Billing number
  • Licence Number
  • Medical Doctor Number

Implementers may use other identifiers to capture in a more specific way such as internal provider number, jurisdictions providing credentials. The full list of possible identifier types is in Canadian URI Registry

In some cases, the same license number can be used as the provider identifier and provider’s qualification identifier.

Telecom

A provider may have multiple ways to be contacted with different uses or applicable periods. This PractitionerRole profile allows multiple contact points (e.g. a telephone number or an email address) by which the individual may be contacted.

To indicate the preferred way to contact use Practitioner.telecom.rank attribute (i.e., the ContactPoint.rank component) that specifies a preferred order in which to use a set of contacts. ContactPoints with lower rank values are more preferred than those with higher rank values.

Role

Roles which this practitioner is authorized to perform for the organization are defined by Canadian HealthcareProviderRoleType value set as the coded representation of the provider’s credentials. Credential defines a role type that is used to categorize an entity that delivers health care in an expected and professional manner to an entity in need of health care services.

The binding strength for the PractitionerRole.code element is Preferred meaning that implementers are encouraged to draw codes from the specified code system for interoperability purposes but are not required to do so to be considered conformant.

Specialty

Specific specialty of the practitioner defines the clinical, medical, surgical or other healthcare-related service specialty of a practitioner who interacts, treats or provides such services to or for a patient. This profile recommends to use Canadian PractitionerSpecialty value set for speciality codes.

The binding strength for the PractitionerRole.speciality element is Preferred meaning that implementers are encouraged to draw codes from the specified code system for interoperability purposes but are not required to do so to be considered conformant.