# Health Connect Australia Provider Directory FHIR Implementation Guide

0.2.0-preview - Preview

Health Connect Australia Provider Directory FHIR Implementation Guide, published by Australian Digital Health Agency. This guide is not an authorized publication; it is the continuous build for version 0.2.0-preview built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/steveswinsburg/HealthConnect/ and changes regularly. See the Directory of published versions

## Resource Profile: HC PractitionerRole

Official URL: http://ns.electronichealth.net.au/hc/StructureDefinition/hc-practitionerrole | Version: 0.2.0-preview
Standards status: Draft | Computable Name: HCPractitionerRole
Usage:Jurisdiction: Australia
Copyright/Legal: Copyright © 2025 Australian Digital Health Agency - All rights reserved. This content is licensed under a Creative Commons Attribution 4.0 International License. See https://creativecommons.org/licenses/by/4.0/

This profile defines a practitioner in role for an organisation at a location providing a healthcare service.

### Extensions

Extensions introduced in this profile:

- PractitionerRole: HC PractitionerRole Communication
- PractitionerRole: HC Preferred Name

### Usage notes

#### Identifiers

Registration Identifiers (exactly one required for the role):

- Ahpra Registration Number - The specific Ahpra registration credential relevant to this practitioner role
- Professional Registration Number (PRN) - The specific professional registration credential relevant to this practitioner role

These registration identifiers must match corresponding registration identifiers held by the referenced Practitioner and should represent the professional credentials that authorize the practitioner to perform this specific role.

HC Practitioner Role resources may also have additional identifiers specific to other business partners, with identifier systems that may or may not match other identifier slices defined in AU Core Practitioner Role.

#### Preferred name in role context

The HC Preferred Name extension allows a practitioner to specify a preferred name for use in the context of a specific role. This name may differ from their registered name and allows practitioners to be known by their preferred name when delivering healthcare services in this role.

#### PractitionerRole code

Only the main role or job of the clinician should be provided, using a code from the SNOMED-CT-AU code system. The preferred value set is Practitioner Role 1. Publishing systems must supply a single code representing the clinician’s primary practitioner role. Any additional codes or roles will be ignored. When a PractitionerRole is provided to a subscribing system, only the primary role (as defined by the SNOMED-CT-AU code from the specified value set) will be included.

The SNOMED code is the authoritative, machine-readable representation and should be used for searching, filtering, and interoperability; the display is the user-facing label and may be normalised by subscribing systems. Additional codes MUST NOT be used to represent multiple roles and will be ignored by the HC service.

#### Guidance on PractitionerRole.specialty

The `PractitionerRole.specialty` element is marked as Must Support (MS) because this requirement is inherited from AU Core, which also imposes obligations on defined roles. None of the AU Core roles or obligations are relevant to this specification. There is no requirement for implementers of this specification to do anything this this data element.

- It SHOULD be ignored by Health Connect Provider Directory Requester Actors.
- It SHALL NOT be populated by Health Connect Provider Directory Actors.

### Data Integrity and Validation

This profile includes invariants to ensure data consistency and integrity between PractitionerRole and the referenced Practitioner resources.

#### Registration Identifier Matching

The `inv-02-identifier-registration-match` invariant ensures that registration identifiers on the PractitionerRole match those of the referenced Practitioner. This validation prevents data inconsistencies where a PractitionerRole might reference registration numbers that don't belong to the associated Practitioner.

Requirements:

- If the PractitionerRole has an Ahpra registration identifier, it must match one of the referenced Practitioner's Ahpra registration identifiers.
- If the PractitionerRole has a peak body registration identifier (PRN), it must match one of the referenced Practitioner's peak body registration identifiers.

Business Logic: This ensures referential integrity in provider directory implementations where:

- A PractitionerRole represents a specific professional role.
- The registration credentials for that role must be held by the actual Practitioner.
- Prevents scenarios where role assignments reference incorrect or mismatched professional registrations.

#### Registration Identifier Requirements

The invariant `inv-01-identifier-registration-required` ensures that at least one of the Professional Registration Number identifier types are present, either:

- an Ahpra registration number (AHPRA) OR
- a non-Ahpra Peak Body Registration Number (PRN).

While a practitioner can have more than one professional registration and professions (e.g. nurse and midwife), the relevant registration that is applicable for this role only is captured.

Usages:

- Refer to this Profile: HC Provenance
- Examples for this Profile: PractitionerRole/example-healthconnect-practitionerrole-1
- CapabilityStatements using this Profile: Health Connect Provider Directory Requester and Health Connect Provider Directory Responder

You can also check for usages in the FHIR IG Statistics

### Formal Views of Profile Content

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

- Key Elements Table
- Differential Table
- Snapshot Table
- Statistics/References
- All

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
PractitionerRole | C | 0..* | AUCorePractitionerRole(2.0.0-ballot) | A person with formal responsibility in a role providing one or more services Constraints: inv-01-identifier-registration-required, inv-02-identifier-registration-match
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created
Slices for extension |  | 0..* | Extension | Extension Slice: Unordered, Open by value:url Constraints: ext-1
extension:hc-practitioner-role-communication | SO | 0..* | CodeableConcept | Practitioner role communication preferences URL: http://ns.electronichealth.net.au/hc/StructureDefinition/hc-practitioner-role-communication Binding: Common Languages in Australia (required) Constraints: ext-1
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
extension:hc-preferred-name | SO | 0..1 | HumanName | Preferred name for this practitioner role URL: http://ns.electronichealth.net.au/hc/StructureDefinition/hc-preferred-name Constraints: ext-1
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored Constraints: ext-1
Slices for identifier | SO Σ | 1..* | Identifier(4.0.1), AUMedicareProviderNumber(6.0.0), AUNationalProviderIdentifierAtOrganisation(6.0.0), AUEmployeeNumber(6.0.0) | Business Identifiers that are specific to a role/location Slice: Unordered, Open by pattern:type
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
identifier:medicareProvider | SO Σ | 0..1 | AUMedicareProviderNumber(6.0.0) | Medicare provider number
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
identifier:peakbodyregistrationnumber | SO Σ | 0..1 | HCPeakBodyRegistrationNumber(0.2.0-preview) | Professional association / Peak body association (for non-Ahpra registered practitioners), as recorded against the HPI-I record
identifier:ahpraregistrationnumber | SO Σ | 0..1 | AUAhpraRegistrationNumber(6.0.0) | Ahpra Registration Number
period | SO Σ | 1..1 | Period | The period during which the practitioner is active in this role.
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
practitioner | SO Σ C | 1..1 | Reference(HC Practitioner(0.2.0-preview)) | Practitioner in the role Constraints: au-core-prarol-01
organization | SO Σ | 1..1 | Reference(HC Organization(0.2.0-preview)) | Organisation providing this role. Reference to be the same organisation as the referenced HealthcareService for this role.
code | SO Σ | 1..1 | CodeableConcept | The primary role of the practitioner Binding: Practitioner Role (preferred)
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
specialty | SO Σ | 0..* | CodeableConcept | Specific specialty of the practitioner Binding: Clinical Specialty (preferred)
location | SO Σ | 1..1 | Reference(HC Location(0.2.0-preview)) | Location at which this role is provided. Reference to be the same Location as the referenced HealthcareService for this role.
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
healthcareService | SO | 1..1 | Reference(HC HealthcareService(0.2.0-preview)) | Healthcare service at which this role is provided.
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
telecom | SO Σ | 0..* | ContactPoint | Contact details for the practitioner in this role.
system | SO Σ C | 0..1 | code | phone | fax | email | pager | url | sms | other Binding: ContactPointSystem (required): Telecommunications form for contact point.
value | SO Σ | 0..1 | string | The actual contact point details
use | ?!Σ | 0..1 | code | home | work | temp | old | mobile - purpose of this contact point Binding: ContactPointUse (required): Use of contact point.
availableTime | SO | 0..* | BackboneElement | Times that the practitioner provides the healthcare service in this role at this location.
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized Constraints: ext-1
daysOfWeek | SO | 0..* | code | mon | tue | wed | thu | fri | sat | sun Binding: DaysOfWeek (required): The days of the week.
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
allDay | SO | 0..1 | boolean | Always available? e.g. 24 hour service
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
availableStartTime | SO | 0..1 | time | Opening time of day (ignored if allDay = true)
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
Slices for extension |  |  |  | Content/Rules for all slices
extension:timeZone |  | 0..1 | code | IANA Timezone Code per BCP 175 URL: http://hl7.org/fhir/StructureDefinition/timezone Binding: IANATimezones (required): IANA Timezones (BCP 175) Constraints: ext-1
availableEndTime | SO | 0..1 | time | Closing time of day (ignored if allDay = true)
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
Slices for extension |  |  |  | Content/Rules for all slices
extension:timeZone |  | 0..1 | code | IANA Timezone Code per BCP 175 URL: http://hl7.org/fhir/StructureDefinition/timezone Binding: IANATimezones (required): IANA Timezones (BCP 175) Constraints: ext-1
endpoint | SO | 0..* | Reference(HC Endpoint(0.2.0-preview)) | Technical endpoints for this practitioner role.
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
PractitionerRole.code | Base | preferred | Practitioner Role | ⏿1.0.2 | tx.hl7.org.au
PractitionerRole.specialty | Base | preferred | Clinical Specialty | ⏿1.0.0 | tx.hl7.org.au
PractitionerRole.telecom.​system | Base | required | ContactPointSystem | 📍4.0.1 | FHIR Std.
PractitionerRole.telecom.​use | Base | required | ContactPointUse | 📍4.0.1 | FHIR Std.
PractitionerRole.availableTime.​daysOfWeek | Base | required | DaysOfWeek | 📍4.0.1 | FHIR Std.

#### Constraints

Id | Grade | Path(s) | Description | Expression
au-core-prarol-01 | error | PractitionerRole.practitioner | At least a reference, identifier or display shall be present, or, if neither is available, the Data Absent Reason extension shall be present | `(reference.exists() or identifier.exists() or display.exists()) xor extension('http://hl7.org/fhir/StructureDefinition/data-absent-reason').exists()`
dom-2 | error | PractitionerRole | If the resource is contained in another resource, it SHALL NOT contain nested Resources | `contained.contained.empty()`
dom-3 | error | PractitionerRole | If 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-4 | error | PractitionerRole | If 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-5 | error | PractitionerRole | If a resource is contained in another resource, it SHALL NOT have a security label | `contained.meta.security.empty()`
dom-6 | best practice | PractitionerRole | A resource should have narrative for robust management | `text.`div`.exists()`
ele-1 | error | PractitionerRole.implicitRules, PractitionerRole.extension, PractitionerRole.extension:hc-practitioner-role-communication, PractitionerRole.extension:hc-preferred-name, PractitionerRole.modifierExtension, PractitionerRole.identifier, PractitionerRole.identifier:medicareProvider, PractitionerRole.identifier:peakbodyregistrationnumber, PractitionerRole.identifier:ahpraregistrationnumber, PractitionerRole.period, PractitionerRole.practitioner, PractitionerRole.organization, PractitionerRole.code, PractitionerRole.specialty, PractitionerRole.location, PractitionerRole.healthcareService, PractitionerRole.telecom, PractitionerRole.telecom.system, PractitionerRole.telecom.value, PractitionerRole.telecom.use, PractitionerRole.availableTime, PractitionerRole.availableTime.modifierExtension, PractitionerRole.availableTime.daysOfWeek, PractitionerRole.availableTime.allDay, PractitionerRole.availableTime.availableStartTime, PractitionerRole.availableTime.availableStartTime.extension:timeZone, PractitionerRole.availableTime.availableEndTime, PractitionerRole.availableTime.availableEndTime.extension:timeZone, PractitionerRole.endpoint | All FHIR elements must have a @value or children | `hasValue() or (children().count() > id.count())`
ext-1 | error | PractitionerRole.extension, PractitionerRole.extension:hc-practitioner-role-communication, PractitionerRole.extension:hc-preferred-name, PractitionerRole.modifierExtension, PractitionerRole.availableTime.modifierExtension, PractitionerRole.availableTime.availableStartTime.extension:timeZone, PractitionerRole.availableTime.availableEndTime.extension:timeZone | Must have either extensions or value[x], not both | `extension.exists() != value.exists()`
inv-01-identifier-registration-required | error | PractitionerRole | Either Ahpra or PRN identifier SHALL exist, but not both. While a practitioner can have more than one professional registration and professions (e.g. nurse and midwife), the relevant registration that is applicable for this role only is captured. | `(identifier.type.coding.where(code = 'AHPRA').exists() and identifier.type.coding.where(code = 'PRN').exists().not()) or (identifier.type.coding.where(code = 'PRN').exists() and identifier.type.coding.where(code = 'AHPRA').exists().not())`
inv-02-identifier-registration-match | warning | PractitionerRole | PractitionerRole registration identifiers SHOULD match with the referenced Practitioner's registration identifiers in qualifications | `practitioner.resolve().qualification.identifier.where(type.coding.where(code = 'AHPRA').exists()).value.intersect(identifier.where(type.coding.where(code = 'AHPRA').exists()).value).exists() or practitioner.resolve().qualification.identifier.where(type.coding.where(code = 'PRN').exists()).value.intersect(identifier.where(type.coding.where(code = 'PRN').exists()).value).exists()`

This structure is derived from AUCorePractitionerRole

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
PractitionerRole | C | 0..* | AUCorePractitionerRole(2.0.0-ballot) | A person with formal responsibility in a role providing one or more services
Slices for extension |  | 0..* | Extension | Extension Slice: Unordered, Open by value:url
extension:hc-practitioner-role-communication | SO | 0..* | CodeableConcept | Practitioner role communication preferences URL: http://ns.electronichealth.net.au/hc/StructureDefinition/hc-practitioner-role-communication Binding: Common Languages in Australia (required)
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
extension:hc-preferred-name | SO | 0..1 | HumanName | Preferred name for this practitioner role URL: http://ns.electronichealth.net.au/hc/StructureDefinition/hc-preferred-name
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
Slices for identifier | O | 1..* | Identifier(4.0.1), AUMedicareProviderNumber(6.0.0), AUNationalProviderIdentifierAtOrganisation(6.0.0), AUEmployeeNumber(6.0.0) | Business Identifiers that are specific to a role/location Slice: Unordered, Open by pattern:type
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
identifier:medicareProvider | O | 0..1 | AUMedicareProviderNumber(6.0.0) | Medicare provider number
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
identifier:peakbodyregistrationnumber | S | 0..1 | HCPeakBodyRegistrationNumber(0.2.0-preview) | Professional association / Peak body association (for non-Ahpra registered practitioners), as recorded against the HPI-I record
identifier:ahpraregistrationnumber | S | 0..1 | AUAhpraRegistrationNumber(6.0.0) | Ahpra Registration Number
period | SO | 1..1 | Period | The period during which the practitioner is active in this role.
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
practitioner |  | 1..1 | Reference(HC Practitioner(0.2.0-preview)) | Practitioner in the role
organization |  | 1..1 | Reference(HC Organization(0.2.0-preview)) | Organisation providing this role. Reference to be the same organisation as the referenced HealthcareService for this role.
code | O | 1..1 | CodeableConcept | The primary role of the practitioner
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
location | SO | 1..1 | Reference(HC Location(0.2.0-preview)) | Location at which this role is provided. Reference to be the same Location as the referenced HealthcareService for this role.
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
healthcareService | SO | 1..1 | Reference(HC HealthcareService(0.2.0-preview)) | Healthcare service at which this role is provided.
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
telecom |  | 0..* | ContactPoint | Contact details for the practitioner in this role.
availableTime | SO | 0..* | BackboneElement | Times that the practitioner provides the healthcare service in this role at this location.
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
daysOfWeek | SO | 0..* | code | mon | tue | wed | thu | fri | sat | sun
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
allDay | SO | 0..1 | boolean | Always available? e.g. 24 hour service
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
availableStartTime | SO | 0..1 | time | Opening time of day (ignored if allDay = true)
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
availableEndTime | SO | 0..1 | time | Closing time of day (ignored if allDay = true)
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
endpoint | SO | 0..* | Reference(HC Endpoint(0.2.0-preview)) | Technical endpoints for this practitioner role.
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
Documentation for this format

#### Constraints

Id | Grade | Path(s) | Description | Expression

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
PractitionerRole | C | 0..* | AUCorePractitionerRole(2.0.0-ballot) | A person with formal responsibility in a role providing one or more services Constraints: inv-01-identifier-registration-required, inv-02-identifier-registration-match
id | Σ | 0..1 | id | Logical id of this artifact
meta | Σ | 0..1 | Meta | Metadata about the resource
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created
language |  | 0..1 | code | Language of the resource content Binding: CommonLanguages (preferred): A human language.
Additional Bindings | Purpose
AllLanguages | Max Binding
text |  | 0..1 | Narrative | Text summary of the resource, for human interpretation This profile does not constrain the narrative in regard to content, language, or traceability to data elements
contained |  | 0..* | Resource | Contained, inline Resources
Slices for extension |  | 0..* | Extension | Extension Slice: Unordered, Open by value:url Constraints: ext-1
extension:hc-practitioner-role-communication | SO | 0..* | CodeableConcept | Practitioner role communication preferences URL: http://ns.electronichealth.net.au/hc/StructureDefinition/hc-practitioner-role-communication Binding: Common Languages in Australia (required) Constraints: ext-1
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
extension:hc-preferred-name | SO | 0..1 | HumanName | Preferred name for this practitioner role URL: http://ns.electronichealth.net.au/hc/StructureDefinition/hc-preferred-name Constraints: ext-1
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored Constraints: ext-1
Slices for identifier | SO Σ | 1..* | Identifier(4.0.1), AUMedicareProviderNumber(6.0.0), AUNationalProviderIdentifierAtOrganisation(6.0.0), AUEmployeeNumber(6.0.0) | Business Identifiers that are specific to a role/location Slice: Unordered, Open by pattern:type
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
identifier:medicareProvider | SO Σ | 0..1 | AUMedicareProviderNumber(6.0.0) | Medicare provider number
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
identifier:peakbodyregistrationnumber | SO Σ | 0..1 | HCPeakBodyRegistrationNumber(0.2.0-preview) | Professional association / Peak body association (for non-Ahpra registered practitioners), as recorded against the HPI-I record
identifier:ahpraregistrationnumber | SO Σ | 0..1 | AUAhpraRegistrationNumber(6.0.0) | Ahpra Registration Number
active | Σ | 0..1 | boolean | Whether this practitioner role record is in active use
period | SO Σ | 1..1 | Period | The period during which the practitioner is active in this role.
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
practitioner | SO Σ C | 1..1 | Reference(HC Practitioner(0.2.0-preview)) | Practitioner in the role Constraints: au-core-prarol-01
organization | SO Σ | 1..1 | Reference(HC Organization(0.2.0-preview)) | Organisation providing this role. Reference to be the same organisation as the referenced HealthcareService for this role.
code | SO Σ | 1..1 | CodeableConcept | The primary role of the practitioner Binding: Practitioner Role (preferred)
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
specialty | SO Σ | 0..* | CodeableConcept | Specific specialty of the practitioner Binding: Clinical Specialty (preferred)
location | SO Σ | 1..1 | Reference(HC Location(0.2.0-preview)) | Location at which this role is provided. Reference to be the same Location as the referenced HealthcareService for this role.
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
healthcareService | SO | 1..1 | Reference(HC HealthcareService(0.2.0-preview)) | Healthcare service at which this role is provided.
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
telecom | SO Σ | 0..* | ContactPoint | Contact details for the practitioner in this role.
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url Constraints: ext-1
system | SO Σ C | 0..1 | code | phone | fax | email | pager | url | sms | other Binding: ContactPointSystem (required): Telecommunications form for contact point.
value | SO Σ | 0..1 | string | The actual contact point details
use | ?!Σ | 0..1 | code | home | work | temp | old | mobile - purpose of this contact point Binding: ContactPointUse (required): Use of contact point.
rank | Σ | 0..1 | positiveInt | Specify preferred order of use (1 = highest)
period | Σ | 0..1 | Period | Time period when the contact point was/is in use
availableTime | SO | 0..* | BackboneElement | Times that the practitioner provides the healthcare service in this role at this location.
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Constraints: ext-1
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized Constraints: ext-1
daysOfWeek | SO | 0..* | code | mon | tue | wed | thu | fri | sat | sun Binding: DaysOfWeek (required): The days of the week.
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
allDay | SO | 0..1 | boolean | Always available? e.g. 24 hour service
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
availableStartTime | SO | 0..1 | time | Opening time of day (ignored if allDay = true)
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
id |  | 0..1 | string | xml:id (or equivalent in JSON)
Slices for extension |  | 0..* | Extension | Extension Slice: Unordered, Open by value:url Constraints: ext-1
extension:timeZone |  | 0..1 | code | IANA Timezone Code per BCP 175 URL: http://hl7.org/fhir/StructureDefinition/timezone Binding: IANATimezones (required): IANA Timezones (BCP 175) Constraints: ext-1
value |  | 0..1 | time | Primitive value for time
availableEndTime | SO | 0..1 | time | Closing time of day (ignored if allDay = true)
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
id |  | 0..1 | string | xml:id (or equivalent in JSON)
Slices for extension |  | 0..* | Extension | Extension Slice: Unordered, Open by value:url Constraints: ext-1
extension:timeZone |  | 0..1 | code | IANA Timezone Code per BCP 175 URL: http://hl7.org/fhir/StructureDefinition/timezone Binding: IANATimezones (required): IANA Timezones (BCP 175) Constraints: ext-1
value |  | 0..1 | time | Primitive value for time
notAvailable |  | 0..* | BackboneElement | Not available during this time due to provided reason
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Constraints: ext-1
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized Constraints: ext-1
description |  | 1..1 | string | Reason presented to the user explaining why time not available
during |  | 0..1 | Period | Service not available from this date
availabilityExceptions |  | 0..1 | string | Description of availability exceptions
endpoint | SO | 0..* | Reference(HC Endpoint(0.2.0-preview)) | Technical endpoints for this practitioner role.
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
PractitionerRole.language | Base | preferred | Common Languages | 📍4.0.1 | FHIR Std.
PractitionerRole.code | Base | preferred | Practitioner Role | ⏿1.0.2 | tx.hl7.org.au
PractitionerRole.specialty | Base | preferred | Clinical Specialty | ⏿1.0.0 | tx.hl7.org.au
PractitionerRole.telecom.​system | Base | required | ContactPointSystem | 📍4.0.1 | FHIR Std.
PractitionerRole.telecom.​use | Base | required | ContactPointUse | 📍4.0.1 | FHIR Std.
PractitionerRole.availableTime.​daysOfWeek | Base | required | DaysOfWeek | 📍4.0.1 | FHIR Std.

#### Constraints

Id | Grade | Path(s) | Description | Expression
au-core-prarol-01 | error | PractitionerRole.practitioner | At least a reference, identifier or display shall be present, or, if neither is available, the Data Absent Reason extension shall be present | `(reference.exists() or identifier.exists() or display.exists()) xor extension('http://hl7.org/fhir/StructureDefinition/data-absent-reason').exists()`
dom-2 | error | PractitionerRole | If the resource is contained in another resource, it SHALL NOT contain nested Resources | `contained.contained.empty()`
dom-3 | error | PractitionerRole | If 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-4 | error | PractitionerRole | If 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-5 | error | PractitionerRole | If a resource is contained in another resource, it SHALL NOT have a security label | `contained.meta.security.empty()`
dom-6 | best practice | PractitionerRole | A resource should have narrative for robust management | `text.`div`.exists()`
ele-1 | error | PractitionerRole.meta, PractitionerRole.implicitRules, PractitionerRole.language, PractitionerRole.text, PractitionerRole.extension, PractitionerRole.extension:hc-practitioner-role-communication, PractitionerRole.extension:hc-preferred-name, PractitionerRole.modifierExtension, PractitionerRole.identifier, PractitionerRole.identifier:medicareProvider, PractitionerRole.identifier:peakbodyregistrationnumber, PractitionerRole.identifier:ahpraregistrationnumber, PractitionerRole.active, PractitionerRole.period, PractitionerRole.practitioner, PractitionerRole.organization, PractitionerRole.code, PractitionerRole.specialty, PractitionerRole.location, PractitionerRole.healthcareService, PractitionerRole.telecom, PractitionerRole.telecom.extension, PractitionerRole.telecom.system, PractitionerRole.telecom.value, PractitionerRole.telecom.use, PractitionerRole.telecom.rank, PractitionerRole.telecom.period, PractitionerRole.availableTime, PractitionerRole.availableTime.extension, PractitionerRole.availableTime.modifierExtension, PractitionerRole.availableTime.daysOfWeek, PractitionerRole.availableTime.allDay, PractitionerRole.availableTime.availableStartTime, PractitionerRole.availableTime.availableStartTime.extension, PractitionerRole.availableTime.availableStartTime.extension:timeZone, PractitionerRole.availableTime.availableEndTime, PractitionerRole.availableTime.availableEndTime.extension, PractitionerRole.availableTime.availableEndTime.extension:timeZone, PractitionerRole.notAvailable, PractitionerRole.notAvailable.extension, PractitionerRole.notAvailable.modifierExtension, PractitionerRole.notAvailable.description, PractitionerRole.notAvailable.during, PractitionerRole.availabilityExceptions, PractitionerRole.endpoint | All FHIR elements must have a @value or children | `hasValue() or (children().count() > id.count())`
ext-1 | error | PractitionerRole.extension, PractitionerRole.extension:hc-practitioner-role-communication, PractitionerRole.extension:hc-preferred-name, PractitionerRole.modifierExtension, PractitionerRole.telecom.extension, PractitionerRole.availableTime.extension, PractitionerRole.availableTime.modifierExtension, PractitionerRole.availableTime.availableStartTime.extension, PractitionerRole.availableTime.availableStartTime.extension:timeZone, PractitionerRole.availableTime.availableEndTime.extension, PractitionerRole.availableTime.availableEndTime.extension:timeZone, PractitionerRole.notAvailable.extension, PractitionerRole.notAvailable.modifierExtension | Must have either extensions or value[x], not both | `extension.exists() != value.exists()`
inv-01-identifier-registration-required | error | PractitionerRole | Either Ahpra or PRN identifier SHALL exist, but not both. While a practitioner can have more than one professional registration and professions (e.g. nurse and midwife), the relevant registration that is applicable for this role only is captured. | `(identifier.type.coding.where(code = 'AHPRA').exists() and identifier.type.coding.where(code = 'PRN').exists().not()) or (identifier.type.coding.where(code = 'PRN').exists() and identifier.type.coding.where(code = 'AHPRA').exists().not())`
inv-02-identifier-registration-match | warning | PractitionerRole | PractitionerRole registration identifiers SHOULD match with the referenced Practitioner's registration identifiers in qualifications | `practitioner.resolve().qualification.identifier.where(type.coding.where(code = 'AHPRA').exists()).value.intersect(identifier.where(type.coding.where(code = 'AHPRA').exists()).value).exists() or practitioner.resolve().qualification.identifier.where(type.coding.where(code = 'PRN').exists()).value.intersect(identifier.where(type.coding.where(code = 'PRN').exists()).value).exists()`

This structure is derived from AUCorePractitionerRole

Summary

Mandatory: 6 elements
Must-Support: 13 elements

Structures

This structure refers to these other structures:

- HC Peak Body Professional Registration Number (HC-PBPRN) (http://ns.electronichealth.net.au/hc/StructureDefinition/hc-pbprn|0.2.0-preview)
- AU Ahpra Registration Number (http://hl7.org.au/fhir/StructureDefinition/au-ahpraregistrationnumber|6.0.0)
- HC Practitioner (http://ns.electronichealth.net.au/hc/StructureDefinition/hc-practitioner|0.2.0-preview)
- HC Organization (http://ns.electronichealth.net.au/hc/StructureDefinition/hc-organization|0.2.0-preview)
- HC Location (http://ns.electronichealth.net.au/hc/StructureDefinition/hc-location|0.2.0-preview)
- HC HealthcareService (http://ns.electronichealth.net.au/hc/StructureDefinition/hc-healthcareservice|0.2.0-preview)
- HC Endpoint (http://ns.electronichealth.net.au/hc/StructureDefinition/hc-endpoint|0.2.0-preview)

Extensions

This structure refers to these extensions:

- http://ns.electronichealth.net.au/hc/StructureDefinition/hc-practitioner-role-communication|0.2.0-preview
- http://ns.electronichealth.net.au/hc/StructureDefinition/hc-preferred-name|0.2.0-preview

Slices

This structure defines the following Slices:

- The element 1 is sliced based on the value of PractitionerRole.identifier

Key Elements View

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
PractitionerRole | C | 0..* | AUCorePractitionerRole(2.0.0-ballot) | A person with formal responsibility in a role providing one or more services Constraints: inv-01-identifier-registration-required, inv-02-identifier-registration-match
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created
Slices for extension |  | 0..* | Extension | Extension Slice: Unordered, Open by value:url Constraints: ext-1
extension:hc-practitioner-role-communication | SO | 0..* | CodeableConcept | Practitioner role communication preferences URL: http://ns.electronichealth.net.au/hc/StructureDefinition/hc-practitioner-role-communication Binding: Common Languages in Australia (required) Constraints: ext-1
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
extension:hc-preferred-name | SO | 0..1 | HumanName | Preferred name for this practitioner role URL: http://ns.electronichealth.net.au/hc/StructureDefinition/hc-preferred-name Constraints: ext-1
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored Constraints: ext-1
Slices for identifier | SO Σ | 1..* | Identifier(4.0.1), AUMedicareProviderNumber(6.0.0), AUNationalProviderIdentifierAtOrganisation(6.0.0), AUEmployeeNumber(6.0.0) | Business Identifiers that are specific to a role/location Slice: Unordered, Open by pattern:type
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
identifier:medicareProvider | SO Σ | 0..1 | AUMedicareProviderNumber(6.0.0) | Medicare provider number
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
identifier:peakbodyregistrationnumber | SO Σ | 0..1 | HCPeakBodyRegistrationNumber(0.2.0-preview) | Professional association / Peak body association (for non-Ahpra registered practitioners), as recorded against the HPI-I record
identifier:ahpraregistrationnumber | SO Σ | 0..1 | AUAhpraRegistrationNumber(6.0.0) | Ahpra Registration Number
period | SO Σ | 1..1 | Period | The period during which the practitioner is active in this role.
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
practitioner | SO Σ C | 1..1 | Reference(HC Practitioner(0.2.0-preview)) | Practitioner in the role Constraints: au-core-prarol-01
organization | SO Σ | 1..1 | Reference(HC Organization(0.2.0-preview)) | Organisation providing this role. Reference to be the same organisation as the referenced HealthcareService for this role.
code | SO Σ | 1..1 | CodeableConcept | The primary role of the practitioner Binding: Practitioner Role (preferred)
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
specialty | SO Σ | 0..* | CodeableConcept | Specific specialty of the practitioner Binding: Clinical Specialty (preferred)
location | SO Σ | 1..1 | Reference(HC Location(0.2.0-preview)) | Location at which this role is provided. Reference to be the same Location as the referenced HealthcareService for this role.
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
healthcareService | SO | 1..1 | Reference(HC HealthcareService(0.2.0-preview)) | Healthcare service at which this role is provided.
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
telecom | SO Σ | 0..* | ContactPoint | Contact details for the practitioner in this role.
system | SO Σ C | 0..1 | code | phone | fax | email | pager | url | sms | other Binding: ContactPointSystem (required): Telecommunications form for contact point.
value | SO Σ | 0..1 | string | The actual contact point details
use | ?!Σ | 0..1 | code | home | work | temp | old | mobile - purpose of this contact point Binding: ContactPointUse (required): Use of contact point.
availableTime | SO | 0..* | BackboneElement | Times that the practitioner provides the healthcare service in this role at this location.
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized Constraints: ext-1
daysOfWeek | SO | 0..* | code | mon | tue | wed | thu | fri | sat | sun Binding: DaysOfWeek (required): The days of the week.
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
allDay | SO | 0..1 | boolean | Always available? e.g. 24 hour service
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
availableStartTime | SO | 0..1 | time | Opening time of day (ignored if allDay = true)
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
Slices for extension |  |  |  | Content/Rules for all slices
extension:timeZone |  | 0..1 | code | IANA Timezone Code per BCP 175 URL: http://hl7.org/fhir/StructureDefinition/timezone Binding: IANATimezones (required): IANA Timezones (BCP 175) Constraints: ext-1
availableEndTime | SO | 0..1 | time | Closing time of day (ignored if allDay = true)
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
Slices for extension |  |  |  | Content/Rules for all slices
extension:timeZone |  | 0..1 | code | IANA Timezone Code per BCP 175 URL: http://hl7.org/fhir/StructureDefinition/timezone Binding: IANATimezones (required): IANA Timezones (BCP 175) Constraints: ext-1
endpoint | SO | 0..* | Reference(HC Endpoint(0.2.0-preview)) | Technical endpoints for this practitioner role.
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
PractitionerRole.code | Base | preferred | Practitioner Role | ⏿1.0.2 | tx.hl7.org.au
PractitionerRole.specialty | Base | preferred | Clinical Specialty | ⏿1.0.0 | tx.hl7.org.au
PractitionerRole.telecom.​system | Base | required | ContactPointSystem | 📍4.0.1 | FHIR Std.
PractitionerRole.telecom.​use | Base | required | ContactPointUse | 📍4.0.1 | FHIR Std.
PractitionerRole.availableTime.​daysOfWeek | Base | required | DaysOfWeek | 📍4.0.1 | FHIR Std.

#### Constraints

Id | Grade | Path(s) | Description | Expression
au-core-prarol-01 | error | PractitionerRole.practitioner | At least a reference, identifier or display shall be present, or, if neither is available, the Data Absent Reason extension shall be present | `(reference.exists() or identifier.exists() or display.exists()) xor extension('http://hl7.org/fhir/StructureDefinition/data-absent-reason').exists()`
dom-2 | error | PractitionerRole | If the resource is contained in another resource, it SHALL NOT contain nested Resources | `contained.contained.empty()`
dom-3 | error | PractitionerRole | If 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-4 | error | PractitionerRole | If 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-5 | error | PractitionerRole | If a resource is contained in another resource, it SHALL NOT have a security label | `contained.meta.security.empty()`
dom-6 | best practice | PractitionerRole | A resource should have narrative for robust management | `text.`div`.exists()`
ele-1 | error | PractitionerRole.implicitRules, PractitionerRole.extension, PractitionerRole.extension:hc-practitioner-role-communication, PractitionerRole.extension:hc-preferred-name, PractitionerRole.modifierExtension, PractitionerRole.identifier, PractitionerRole.identifier:medicareProvider, PractitionerRole.identifier:peakbodyregistrationnumber, PractitionerRole.identifier:ahpraregistrationnumber, PractitionerRole.period, PractitionerRole.practitioner, PractitionerRole.organization, PractitionerRole.code, PractitionerRole.specialty, PractitionerRole.location, PractitionerRole.healthcareService, PractitionerRole.telecom, PractitionerRole.telecom.system, PractitionerRole.telecom.value, PractitionerRole.telecom.use, PractitionerRole.availableTime, PractitionerRole.availableTime.modifierExtension, PractitionerRole.availableTime.daysOfWeek, PractitionerRole.availableTime.allDay, PractitionerRole.availableTime.availableStartTime, PractitionerRole.availableTime.availableStartTime.extension:timeZone, PractitionerRole.availableTime.availableEndTime, PractitionerRole.availableTime.availableEndTime.extension:timeZone, PractitionerRole.endpoint | All FHIR elements must have a @value or children | `hasValue() or (children().count() > id.count())`
ext-1 | error | PractitionerRole.extension, PractitionerRole.extension:hc-practitioner-role-communication, PractitionerRole.extension:hc-preferred-name, PractitionerRole.modifierExtension, PractitionerRole.availableTime.modifierExtension, PractitionerRole.availableTime.availableStartTime.extension:timeZone, PractitionerRole.availableTime.availableEndTime.extension:timeZone | Must have either extensions or value[x], not both | `extension.exists() != value.exists()`
inv-01-identifier-registration-required | error | PractitionerRole | Either Ahpra or PRN identifier SHALL exist, but not both. While a practitioner can have more than one professional registration and professions (e.g. nurse and midwife), the relevant registration that is applicable for this role only is captured. | `(identifier.type.coding.where(code = 'AHPRA').exists() and identifier.type.coding.where(code = 'PRN').exists().not()) or (identifier.type.coding.where(code = 'PRN').exists() and identifier.type.coding.where(code = 'AHPRA').exists().not())`
inv-02-identifier-registration-match | warning | PractitionerRole | PractitionerRole registration identifiers SHOULD match with the referenced Practitioner's registration identifiers in qualifications | `practitioner.resolve().qualification.identifier.where(type.coding.where(code = 'AHPRA').exists()).value.intersect(identifier.where(type.coding.where(code = 'AHPRA').exists()).value).exists() or practitioner.resolve().qualification.identifier.where(type.coding.where(code = 'PRN').exists()).value.intersect(identifier.where(type.coding.where(code = 'PRN').exists()).value).exists()`

Differential View

This structure is derived from AUCorePractitionerRole

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
PractitionerRole | C | 0..* | AUCorePractitionerRole(2.0.0-ballot) | A person with formal responsibility in a role providing one or more services
Slices for extension |  | 0..* | Extension | Extension Slice: Unordered, Open by value:url
extension:hc-practitioner-role-communication | SO | 0..* | CodeableConcept | Practitioner role communication preferences URL: http://ns.electronichealth.net.au/hc/StructureDefinition/hc-practitioner-role-communication Binding: Common Languages in Australia (required)
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
extension:hc-preferred-name | SO | 0..1 | HumanName | Preferred name for this practitioner role URL: http://ns.electronichealth.net.au/hc/StructureDefinition/hc-preferred-name
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
Slices for identifier | O | 1..* | Identifier(4.0.1), AUMedicareProviderNumber(6.0.0), AUNationalProviderIdentifierAtOrganisation(6.0.0), AUEmployeeNumber(6.0.0) | Business Identifiers that are specific to a role/location Slice: Unordered, Open by pattern:type
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
identifier:medicareProvider | O | 0..1 | AUMedicareProviderNumber(6.0.0) | Medicare provider number
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
identifier:peakbodyregistrationnumber | S | 0..1 | HCPeakBodyRegistrationNumber(0.2.0-preview) | Professional association / Peak body association (for non-Ahpra registered practitioners), as recorded against the HPI-I record
identifier:ahpraregistrationnumber | S | 0..1 | AUAhpraRegistrationNumber(6.0.0) | Ahpra Registration Number
period | SO | 1..1 | Period | The period during which the practitioner is active in this role.
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
practitioner |  | 1..1 | Reference(HC Practitioner(0.2.0-preview)) | Practitioner in the role
organization |  | 1..1 | Reference(HC Organization(0.2.0-preview)) | Organisation providing this role. Reference to be the same organisation as the referenced HealthcareService for this role.
code | O | 1..1 | CodeableConcept | The primary role of the practitioner
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
location | SO | 1..1 | Reference(HC Location(0.2.0-preview)) | Location at which this role is provided. Reference to be the same Location as the referenced HealthcareService for this role.
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
healthcareService | SO | 1..1 | Reference(HC HealthcareService(0.2.0-preview)) | Healthcare service at which this role is provided.
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
telecom |  | 0..* | ContactPoint | Contact details for the practitioner in this role.
availableTime | SO | 0..* | BackboneElement | Times that the practitioner provides the healthcare service in this role at this location.
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
daysOfWeek | SO | 0..* | code | mon | tue | wed | thu | fri | sat | sun
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
allDay | SO | 0..1 | boolean | Always available? e.g. 24 hour service
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
availableStartTime | SO | 0..1 | time | Opening time of day (ignored if allDay = true)
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
availableEndTime | SO | 0..1 | time | Closing time of day (ignored if allDay = true)
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
endpoint | SO | 0..* | Reference(HC Endpoint(0.2.0-preview)) | Technical endpoints for this practitioner role.
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
Documentation for this format

#### Constraints

Id | Grade | Path(s) | Description | Expression

Snapshot View

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
PractitionerRole | C | 0..* | AUCorePractitionerRole(2.0.0-ballot) | A person with formal responsibility in a role providing one or more services Constraints: inv-01-identifier-registration-required, inv-02-identifier-registration-match
id | Σ | 0..1 | id | Logical id of this artifact
meta | Σ | 0..1 | Meta | Metadata about the resource
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created
language |  | 0..1 | code | Language of the resource content Binding: CommonLanguages (preferred): A human language.
Additional Bindings | Purpose
AllLanguages | Max Binding
text |  | 0..1 | Narrative | Text summary of the resource, for human interpretation This profile does not constrain the narrative in regard to content, language, or traceability to data elements
contained |  | 0..* | Resource | Contained, inline Resources
Slices for extension |  | 0..* | Extension | Extension Slice: Unordered, Open by value:url Constraints: ext-1
extension:hc-practitioner-role-communication | SO | 0..* | CodeableConcept | Practitioner role communication preferences URL: http://ns.electronichealth.net.au/hc/StructureDefinition/hc-practitioner-role-communication Binding: Common Languages in Australia (required) Constraints: ext-1
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
extension:hc-preferred-name | SO | 0..1 | HumanName | Preferred name for this practitioner role URL: http://ns.electronichealth.net.au/hc/StructureDefinition/hc-preferred-name Constraints: ext-1
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored Constraints: ext-1
Slices for identifier | SO Σ | 1..* | Identifier(4.0.1), AUMedicareProviderNumber(6.0.0), AUNationalProviderIdentifierAtOrganisation(6.0.0), AUEmployeeNumber(6.0.0) | Business Identifiers that are specific to a role/location Slice: Unordered, Open by pattern:type
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
identifier:medicareProvider | SO Σ | 0..1 | AUMedicareProviderNumber(6.0.0) | Medicare provider number
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
identifier:peakbodyregistrationnumber | SO Σ | 0..1 | HCPeakBodyRegistrationNumber(0.2.0-preview) | Professional association / Peak body association (for non-Ahpra registered practitioners), as recorded against the HPI-I record
identifier:ahpraregistrationnumber | SO Σ | 0..1 | AUAhpraRegistrationNumber(6.0.0) | Ahpra Registration Number
active | Σ | 0..1 | boolean | Whether this practitioner role record is in active use
period | SO Σ | 1..1 | Period | The period during which the practitioner is active in this role.
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
practitioner | SO Σ C | 1..1 | Reference(HC Practitioner(0.2.0-preview)) | Practitioner in the role Constraints: au-core-prarol-01
organization | SO Σ | 1..1 | Reference(HC Organization(0.2.0-preview)) | Organisation providing this role. Reference to be the same organisation as the referenced HealthcareService for this role.
code | SO Σ | 1..1 | CodeableConcept | The primary role of the practitioner Binding: Practitioner Role (preferred)
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
specialty | SO Σ | 0..* | CodeableConcept | Specific specialty of the practitioner Binding: Clinical Specialty (preferred)
location | SO Σ | 1..1 | Reference(HC Location(0.2.0-preview)) | Location at which this role is provided. Reference to be the same Location as the referenced HealthcareService for this role.
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
healthcareService | SO | 1..1 | Reference(HC HealthcareService(0.2.0-preview)) | Healthcare service at which this role is provided.
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
telecom | SO Σ | 0..* | ContactPoint | Contact details for the practitioner in this role.
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url Constraints: ext-1
system | SO Σ C | 0..1 | code | phone | fax | email | pager | url | sms | other Binding: ContactPointSystem (required): Telecommunications form for contact point.
value | SO Σ | 0..1 | string | The actual contact point details
use | ?!Σ | 0..1 | code | home | work | temp | old | mobile - purpose of this contact point Binding: ContactPointUse (required): Use of contact point.
rank | Σ | 0..1 | positiveInt | Specify preferred order of use (1 = highest)
period | Σ | 0..1 | Period | Time period when the contact point was/is in use
availableTime | SO | 0..* | BackboneElement | Times that the practitioner provides the healthcare service in this role at this location.
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Constraints: ext-1
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized Constraints: ext-1
daysOfWeek | SO | 0..* | code | mon | tue | wed | thu | fri | sat | sun Binding: DaysOfWeek (required): The days of the week.
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
allDay | SO | 0..1 | boolean | Always available? e.g. 24 hour service
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
availableStartTime | SO | 0..1 | time | Opening time of day (ignored if allDay = true)
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
id |  | 0..1 | string | xml:id (or equivalent in JSON)
Slices for extension |  | 0..* | Extension | Extension Slice: Unordered, Open by value:url Constraints: ext-1
extension:timeZone |  | 0..1 | code | IANA Timezone Code per BCP 175 URL: http://hl7.org/fhir/StructureDefinition/timezone Binding: IANATimezones (required): IANA Timezones (BCP 175) Constraints: ext-1
value |  | 0..1 | time | Primitive value for time
availableEndTime | SO | 0..1 | time | Closing time of day (ignored if allDay = true)
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
id |  | 0..1 | string | xml:id (or equivalent in JSON)
Slices for extension |  | 0..* | Extension | Extension Slice: Unordered, Open by value:url Constraints: ext-1
extension:timeZone |  | 0..1 | code | IANA Timezone Code per BCP 175 URL: http://hl7.org/fhir/StructureDefinition/timezone Binding: IANATimezones (required): IANA Timezones (BCP 175) Constraints: ext-1
value |  | 0..1 | time | Primitive value for time
notAvailable |  | 0..* | BackboneElement | Not available during this time due to provided reason
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Constraints: ext-1
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized Constraints: ext-1
description |  | 1..1 | string | Reason presented to the user explaining why time not available
during |  | 0..1 | Period | Service not available from this date
availabilityExceptions |  | 0..1 | string | Description of availability exceptions
endpoint | SO | 0..* | Reference(HC Endpoint(0.2.0-preview)) | Technical endpoints for this practitioner role.
Obligations | Actor
SHALL:populate-if-known | Health Connect Provider Directory Responder Actor
SHOULD:handle | Health Connect Provider Directory Requester Actor
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
PractitionerRole.language | Base | preferred | Common Languages | 📍4.0.1 | FHIR Std.
PractitionerRole.code | Base | preferred | Practitioner Role | ⏿1.0.2 | tx.hl7.org.au
PractitionerRole.specialty | Base | preferred | Clinical Specialty | ⏿1.0.0 | tx.hl7.org.au
PractitionerRole.telecom.​system | Base | required | ContactPointSystem | 📍4.0.1 | FHIR Std.
PractitionerRole.telecom.​use | Base | required | ContactPointUse | 📍4.0.1 | FHIR Std.
PractitionerRole.availableTime.​daysOfWeek | Base | required | DaysOfWeek | 📍4.0.1 | FHIR Std.

#### Constraints

Id | Grade | Path(s) | Description | Expression
au-core-prarol-01 | error | PractitionerRole.practitioner | At least a reference, identifier or display shall be present, or, if neither is available, the Data Absent Reason extension shall be present | `(reference.exists() or identifier.exists() or display.exists()) xor extension('http://hl7.org/fhir/StructureDefinition/data-absent-reason').exists()`
dom-2 | error | PractitionerRole | If the resource is contained in another resource, it SHALL NOT contain nested Resources | `contained.contained.empty()`
dom-3 | error | PractitionerRole | If 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-4 | error | PractitionerRole | If 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-5 | error | PractitionerRole | If a resource is contained in another resource, it SHALL NOT have a security label | `contained.meta.security.empty()`
dom-6 | best practice | PractitionerRole | A resource should have narrative for robust management | `text.`div`.exists()`
ele-1 | error | PractitionerRole.meta, PractitionerRole.implicitRules, PractitionerRole.language, PractitionerRole.text, PractitionerRole.extension, PractitionerRole.extension:hc-practitioner-role-communication, PractitionerRole.extension:hc-preferred-name, PractitionerRole.modifierExtension, PractitionerRole.identifier, PractitionerRole.identifier:medicareProvider, PractitionerRole.identifier:peakbodyregistrationnumber, PractitionerRole.identifier:ahpraregistrationnumber, PractitionerRole.active, PractitionerRole.period, PractitionerRole.practitioner, PractitionerRole.organization, PractitionerRole.code, PractitionerRole.specialty, PractitionerRole.location, PractitionerRole.healthcareService, PractitionerRole.telecom, PractitionerRole.telecom.extension, PractitionerRole.telecom.system, PractitionerRole.telecom.value, PractitionerRole.telecom.use, PractitionerRole.telecom.rank, PractitionerRole.telecom.period, PractitionerRole.availableTime, PractitionerRole.availableTime.extension, PractitionerRole.availableTime.modifierExtension, PractitionerRole.availableTime.daysOfWeek, PractitionerRole.availableTime.allDay, PractitionerRole.availableTime.availableStartTime, PractitionerRole.availableTime.availableStartTime.extension, PractitionerRole.availableTime.availableStartTime.extension:timeZone, PractitionerRole.availableTime.availableEndTime, PractitionerRole.availableTime.availableEndTime.extension, PractitionerRole.availableTime.availableEndTime.extension:timeZone, PractitionerRole.notAvailable, PractitionerRole.notAvailable.extension, PractitionerRole.notAvailable.modifierExtension, PractitionerRole.notAvailable.description, PractitionerRole.notAvailable.during, PractitionerRole.availabilityExceptions, PractitionerRole.endpoint | All FHIR elements must have a @value or children | `hasValue() or (children().count() > id.count())`
ext-1 | error | PractitionerRole.extension, PractitionerRole.extension:hc-practitioner-role-communication, PractitionerRole.extension:hc-preferred-name, PractitionerRole.modifierExtension, PractitionerRole.telecom.extension, PractitionerRole.availableTime.extension, PractitionerRole.availableTime.modifierExtension, PractitionerRole.availableTime.availableStartTime.extension, PractitionerRole.availableTime.availableStartTime.extension:timeZone, PractitionerRole.availableTime.availableEndTime.extension, PractitionerRole.availableTime.availableEndTime.extension:timeZone, PractitionerRole.notAvailable.extension, PractitionerRole.notAvailable.modifierExtension | Must have either extensions or value[x], not both | `extension.exists() != value.exists()`
inv-01-identifier-registration-required | error | PractitionerRole | Either Ahpra or PRN identifier SHALL exist, but not both. While a practitioner can have more than one professional registration and professions (e.g. nurse and midwife), the relevant registration that is applicable for this role only is captured. | `(identifier.type.coding.where(code = 'AHPRA').exists() and identifier.type.coding.where(code = 'PRN').exists().not()) or (identifier.type.coding.where(code = 'PRN').exists() and identifier.type.coding.where(code = 'AHPRA').exists().not())`
inv-02-identifier-registration-match | warning | PractitionerRole | PractitionerRole registration identifiers SHOULD match with the referenced Practitioner's registration identifiers in qualifications | `practitioner.resolve().qualification.identifier.where(type.coding.where(code = 'AHPRA').exists()).value.intersect(identifier.where(type.coding.where(code = 'AHPRA').exists()).value).exists() or practitioner.resolve().qualification.identifier.where(type.coding.where(code = 'PRN').exists()).value.intersect(identifier.where(type.coding.where(code = 'PRN').exists()).value).exists()`

This structure is derived from AUCorePractitionerRole

Summary

Mandatory: 6 elements
Must-Support: 13 elements

Structures

This structure refers to these other structures:

- HC Peak Body Professional Registration Number (HC-PBPRN) (http://ns.electronichealth.net.au/hc/StructureDefinition/hc-pbprn|0.2.0-preview)
- AU Ahpra Registration Number (http://hl7.org.au/fhir/StructureDefinition/au-ahpraregistrationnumber|6.0.0)
- HC Practitioner (http://ns.electronichealth.net.au/hc/StructureDefinition/hc-practitioner|0.2.0-preview)
- HC Organization (http://ns.electronichealth.net.au/hc/StructureDefinition/hc-organization|0.2.0-preview)
- HC Location (http://ns.electronichealth.net.au/hc/StructureDefinition/hc-location|0.2.0-preview)
- HC HealthcareService (http://ns.electronichealth.net.au/hc/StructureDefinition/hc-healthcareservice|0.2.0-preview)
- HC Endpoint (http://ns.electronichealth.net.au/hc/StructureDefinition/hc-endpoint|0.2.0-preview)

Extensions

This structure refers to these extensions:

- http://ns.electronichealth.net.au/hc/StructureDefinition/hc-practitioner-role-communication|0.2.0-preview
- http://ns.electronichealth.net.au/hc/StructureDefinition/hc-preferred-name|0.2.0-preview

Slices

This structure defines the following Slices:

- The element 1 is sliced based on the value of PractitionerRole.identifier

Other representations of profile: CSV, Excel, Schematron

### Notes:

### Search parameters

This IG defines and introduces several search parameters in addition to those inherited that make it easier to find and filter `HC PractitionerRole` resources in Health Connect implementations.

#### Search parameters defined in FHIR R4

The following standard FHIR R4 search parameters are recommended for PractitionerRole searching:

- `identifier` (PractitionerRole.identifier)
- This search parameter supports searching by any identifier including:
- Medicare Provider Number (system defined in AU Base)
- Ahpra Registration Number (system defined in AU Base)
- Professional Registration Number (PRN) (peak body identifiers)
- How search queries can be performed using Medicare Provider Number or Ahpra identifier are described in AU Core.
- This search parameter supports the following query use cases where:
- A peakbodyregistrationnumber OR Ahpra number value is supplied with or without an accompanying system. note that when a system is not supplied this may result in duplicate value matches, originating from multiple different issuing organizations.
- Examples:
- Medicare Provider Number: `GET /PractitionerRole?identifier=http://ns.electronichealth.net.au/id/medicare-provider-number|2426621B`
- Ahpra Registration Number: `GET /PractitionerRole?identifier=http://hl7.org.au/id/ahpra-registration-number|MED0000932945`
- PRN (with system): `GET /PractitionerRole?identifier=http://example.org/fhir/identifier/examplesystem|PRN-123456`
- PRN (without system): `GET /PractitionerRole?identifier=PRN-123456`

#### Search parameters defined in this IG

The following search parameters are defined by this IG and SHOULD be supported:

- `languages` (PractitionerRole.extension where url = HC practitioner role communication). Supports both `:contains` & `:exact` modifiers.
- Find practitioner roles by the languages spoken by the practitioner in this role, stored in the HC communication extension. This is a shared SearchParameter that works across both HealthcareService and PractitionerRole resources.
- Supports `:contains` modifier for partial matching, `:exact` modifier for precise matching.

- Example: `GET /PractitionerRole?languages=Italian`

- `roletype` (PractitionerRole.code.coding.display). Supports both `:contains` & `:exact` modifiers.
- Search for PractitionerRoles by their role type display name (for example, "Medical pathologist"). Uses string matching for display text.
- Example: `GET /PractitionerRole?roletype=Medical%20pathologist`

##### Availability

- `allday` (PractitionerRole.availableTime.allDay)
- Search for practitioner roles that are available all day, i.e. 24 hours. This shared SearchParameter works for both HealthcareService and PractitionerRole resources.
- Example (all day): `GET /PractitionerRole?allday=true`

- Example (not all day): `GET /PractitionerRole?allday=false`

- `daysofweek` (PractitionerRole.availableTime.daysOfWeek)
- Search for practitioner roles by days of the week they are available. This shared SearchParameter works for both HealthcareService and PractitionerRole resources.
- Example (Monday): `GET /PractitionerRole?daysofweek=mon`
- Example (weekend): `GET /PractitionerRole?daysofweek=sat,sun`

Availability (Start/End Time)

- Shared parameters: starttime and endtime work for both HealthcareService and PractitionerRole.
- Format: Numeric HHMM (e.g., 0800 for 8:00 AM, 1730 for 5:30 PM). Do not include colons in queries.
- Matching: Numeric comparisons with prefix operators.
- Prefix operators: `eq` (=), `ge` (>=), `gt` (>), `le` (<=), `lt` (<), `ne` (!=). When no prefix is specified, `eq` is implied.
- Examples:
- Exact start: GET /PractitionerRole?starttime=0900
- Starts before 10 AM: GET /PractitionerRole?starttime=lt1000
- Exact end: GET /PractitionerRole?endtime=1700
- Ends after 6 PM: GET /PractitionerRole?endtime=gt1800

Limitation: Combination in a query cannot guarantee the correct pairing of `starttime` and `endtime` from the same availableTime block. Use of `daysofweek` can help filter, but may still return mixed results when multiple blocks exist for a day. At an implementation layer further filtering may be needed to ensure correct pairing.

Note: Support for _id is mandatory for a responder and optional for a requester. Where the expectation for a search parameter differs between actors, the table below will reflect the stronger conformance requirement.

Parameter(s) | Conformance | Type(s) | Requirements (when used alone or in combination)
--- | --- | --- | ---
_id | SHOULD | `token` |
identifier | SHALL | `token` | Requester Actors SHOULD support search using Medicare Provider Number or Ahpra number as defined in the profile.
roletype | SHOULD | `string` |
languages | SHOULD | `string` |
identifier+languages | SHOULD | `token`+`string` |
allday | SHOULD | `token` | Shared SearchParameter for availability across HealthcareService and PractitionerRole
daysofweek | SHOULD | `token` | Shared SearchParameter for availability across HealthcareService and PractitionerRole
starttime | SHOULD | `number` | Shared SearchParameter. Numeric HHMM format (e.g., 0800).
endtime | SHOULD | `number` | Shared SearchParameter. Numeric HHMM format (e.g., 1700).
identifier+daysofweek | SHOULD | `token`+`token` |
identifier+starttime | SHOULD | `token`+`number` |
roletype+daysofweek | SHOULD | `string`+`token` |
roletype+starttime | SHOULD | `string`+`number` |
daysofweek+starttime+endtime | SHOULD | `token`+`number`+`number` |

### Search include parameters

This implementation supports the following `_include` parameters when searching for PractitionerRole resources:

- `_include=PractitionerRole:practitioner` - Include Practitioner resources referenced by the `practitioner` element
- `_include=PractitionerRole:healthcareService` - Include HealthcareService resources referenced by the `healthcareService` element
- `_include=PractitionerRole:organization` - Include Organization resources referenced by the `organization` element
- `_include=PractitionerRole:location` - Include Location resources referenced by the `location` element
- `_include=PractitionerRole:endpoint` - Include Endpoint resources referenced by the `endpoint` element

### Search reverse include parameters

This implementation supports the following `_revinclude` parameters when searching for PractitionerRole resources:

- `_revinclude=Provenance:target` - Include Provenance resources that track changes to this PractitionerRole

#### Example usage

    GET /PractitionerRole/101?_include=PractitionerRole:practitioner&_include=PractitionerRole:organization&_include=PractitionerRole:location

This query returns the PractitionerRole with the associated Practitioner, Organization, and Location details.