# Health Connect Australia Provider Directory FHIR Implementation Guide

0.1.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.1.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.1.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.

### 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 `hc-practitionerrole-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 Professional Registration Number (PRN), it must match one of the referenced Practitioner's professional 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 `hc-practitionerrole-practitioner-registration-required` invariant ensures that exactly one registration identifier is present - either an Ahpra registration number OR a Professional Registration Number (PRN), but not both and not neither.

Usages:

- Refer to this Profile: HC Provenance
- Examples for this Profile: PractitionerRole/example-healthconnect-practitionerrole-1
- CapabilityStatements using this Profile: Health Connect Reader

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 | A person with formal responsibility in a role providing one or more services Constraints: hc-practitionerrole-practitioner-registration-required, hc-practitionerrole-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
extension:hc-practitioner-role-communication | S | 0..* | CodeableConcept | Practitioner role communication preferences URL: http://ns.electronichealth.net.au/hc/StructureDefinition/hc-practitioner-role-communication Binding: Common Languages in Australia (required)
extension:hc-preferred-name | S | 0..1 | HumanName | Preferred name for this practitioner role URL: http://ns.electronichealth.net.au/hc/StructureDefinition/hc-preferred-name
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored
Slices for identifier | SO Σ | 1..* | Identifier, AUMedicareProviderNumber, AUNationalProviderIdentifierAtOrganisation, AUEmployeeNumber | Business Identifiers that are specific to a role/location Slice: Unordered, Open by pattern:type
identifier:medicareProvider | SO Σ | 0..1 | AUMedicareProviderNumber | Medicare provider number
identifier:professionalregistrationnumber | SO Σ | 0..1 | HCProfessionalRegistrationNumber | Professional association / Peak body association (for non-Ahpra registered practitioners), as recorded against the HPI-I record
identifier:ahpraregistrationnumber | SO Σ | 0..1 | AUAhpraRegistrationNumber | Ahpra Registration Number
period | S Σ | 1..1 | Period | The period during which the practitioner is active in this role.
practitioner | SO Σ C | 1..1 | Reference(HC Practitioner) | Practitioner in the role Constraints: au-core-prarol-01
organization | SO Σ | 1..1 | Reference(HC Organization) | 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)
specialty | SO Σ | 0..* | CodeableConcept | Specific specialty of the practitioner Binding: Clinical Specialty (preferred)
location | S Σ | 1..1 | Reference(HC Location) | Location at which this role is provided. Reference to be the same Location as the referenced HealthcareService for this role.
healthcareService | S | 1..1 | Reference(HC HealthcareService) | Healthcare service at which this role is provided.
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 | S | 0..* | BackboneElement | Times that the practitioner provides the healthcare service in this role at this location.
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
allDay | S | 0..1 | boolean | Always available? e.g. 24 hour service
availableStartTime | S | 0..1 | time | Opening time of day (ignored if allDay = true)
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)
availableEndTime | S | 0..1 | time | Closing time of day (ignored if allDay = true)
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)
endpoint | S | 0..1 | Reference(HC Endpoint) | Technical endpoints for this practitioner role.
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
PractitionerRole.code | Base | preferred | Practitioner Role | ⏿1.0.2 | tx.ontoserver.csiro.au
PractitionerRole.specialty | Base | preferred | Clinical Specialty | ⏿1.0.0 | tx.ontoserver.csiro.au
PractitionerRole.telecom.​system | Base | required | ContactPointSystem | 📍4.0.1 | FHIR Std.
PractitionerRole.telecom.​use | Base | required | ContactPointUse | 📍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 | **ALL** elements | All FHIR elements must have a @value or children | `hasValue() or (children().count() > id.count())`
ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both | `extension.exists() != value.exists()`
hc-practitionerrole-practitioner-registration-required | error | PractitionerRole | Either Ahpra or PRN identifier shall exist, and the total count shall be exactly 1 | `(identifier.where(type.coding.code.contains('AHPRA')).exists() or identifier.where(type.coding.code.contains('PRN')).exists()) and (identifier.where(type.coding.code.contains('AHPRA')).count() + identifier.where(type.coding.code.contains('PRN')).count()) = 1`
hc-practitionerrole-registration-match | error | PractitionerRole | PractitionerRole registration identifiers must match with the referenced Practitioner's registration identifiers in qualifications | `practitioner.resolve().qualification.identifier.where(type.coding.code = 'AHPRA').value.intersect(identifier.where(type.coding.code = 'AHPRA').value).exists() or practitioner.resolve().qualification.identifier.where(type.coding.code = 'PRN').value.intersect(identifier.where(type.coding.code = 'PRN').value).exists()`

This structure is derived from AUCorePractitionerRole

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

#### Constraints

Id | Grade | Path(s) | Description | Expression
hc-practitionerrole-practitioner-registration-required | error | PractitionerRole | Either Ahpra or PRN identifier shall exist, and the total count shall be exactly 1 | `(identifier.where(type.coding.code.contains('AHPRA')).exists() or identifier.where(type.coding.code.contains('PRN')).exists()) and (identifier.where(type.coding.code.contains('AHPRA')).count() + identifier.where(type.coding.code.contains('PRN')).count()) = 1`
hc-practitionerrole-registration-match | error | PractitionerRole | PractitionerRole registration identifiers must match with the referenced Practitioner's registration identifiers in qualifications | `practitioner.resolve().qualification.identifier.where(type.coding.code = 'AHPRA').value.intersect(identifier.where(type.coding.code = 'AHPRA').value).exists() or practitioner.resolve().qualification.identifier.where(type.coding.code = 'PRN').value.intersect(identifier.where(type.coding.code = 'PRN').value).exists()`

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
PractitionerRole | C | 0..* | AUCorePractitionerRole | A person with formal responsibility in a role providing one or more services Constraints: hc-practitionerrole-practitioner-registration-required, hc-practitionerrole-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
extension:hc-practitioner-role-communication | S | 0..* | CodeableConcept | Practitioner role communication preferences URL: http://ns.electronichealth.net.au/hc/StructureDefinition/hc-practitioner-role-communication Binding: Common Languages in Australia (required)
extension:hc-preferred-name | S | 0..1 | HumanName | Preferred name for this practitioner role URL: http://ns.electronichealth.net.au/hc/StructureDefinition/hc-preferred-name
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored
Slices for identifier | SO Σ | 1..* | Identifier, AUMedicareProviderNumber, AUNationalProviderIdentifierAtOrganisation, AUEmployeeNumber | Business Identifiers that are specific to a role/location Slice: Unordered, Open by pattern:type
identifier:medicareProvider | SO Σ | 0..1 | AUMedicareProviderNumber | Medicare provider number
identifier:professionalregistrationnumber | SO Σ | 0..1 | HCProfessionalRegistrationNumber | Professional association / Peak body association (for non-Ahpra registered practitioners), as recorded against the HPI-I record
identifier:ahpraregistrationnumber | SO Σ | 0..1 | AUAhpraRegistrationNumber | Ahpra Registration Number
active | Σ | 0..1 | boolean | Whether this practitioner role record is in active use
period | S Σ | 1..1 | Period | The period during which the practitioner is active in this role.
practitioner | SO Σ C | 1..1 | Reference(HC Practitioner) | Practitioner in the role Constraints: au-core-prarol-01
organization | SO Σ | 1..1 | Reference(HC Organization) | 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)
specialty | SO Σ | 0..* | CodeableConcept | Specific specialty of the practitioner Binding: Clinical Specialty (preferred)
location | S Σ | 1..1 | Reference(HC Location) | Location at which this role is provided. Reference to be the same Location as the referenced HealthcareService for this role.
healthcareService | S | 1..1 | Reference(HC HealthcareService) | Healthcare service at which this role is provided.
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
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 | S | 0..* | BackboneElement | Times that the practitioner provides the healthcare service in this role at this location.
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
daysOfWeek |  | 0..* | code | mon | tue | wed | thu | fri | sat | sun Binding: DaysOfWeek (required): The days of the week.
allDay | S | 0..1 | boolean | Always available? e.g. 24 hour service
availableStartTime | S | 0..1 | time | Opening time of day (ignored if allDay = true)
id |  | 0..1 | string | xml:id (or equivalent in JSON)
Slices for extension |  | 0..* | Extension | Extension Slice: Unordered, Open by value:url
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)
value |  | 0..1 | time | Primitive value for time
availableEndTime | S | 0..1 | time | Closing time of day (ignored if allDay = true)
id |  | 0..1 | string | xml:id (or equivalent in JSON)
Slices for extension |  | 0..* | Extension | Extension Slice: Unordered, Open by value:url
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)
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
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
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 | S | 0..1 | Reference(HC Endpoint) | Technical endpoints for this practitioner role.
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.ontoserver.csiro.au
PractitionerRole.specialty | Base | preferred | Clinical Specialty | ⏿1.0.0 | tx.ontoserver.csiro.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 | **ALL** elements | All FHIR elements must have a @value or children | `hasValue() or (children().count() > id.count())`
ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both | `extension.exists() != value.exists()`
hc-practitionerrole-practitioner-registration-required | error | PractitionerRole | Either Ahpra or PRN identifier shall exist, and the total count shall be exactly 1 | `(identifier.where(type.coding.code.contains('AHPRA')).exists() or identifier.where(type.coding.code.contains('PRN')).exists()) and (identifier.where(type.coding.code.contains('AHPRA')).count() + identifier.where(type.coding.code.contains('PRN')).count()) = 1`
hc-practitionerrole-registration-match | error | PractitionerRole | PractitionerRole registration identifiers must match with the referenced Practitioner's registration identifiers in qualifications | `practitioner.resolve().qualification.identifier.where(type.coding.code = 'AHPRA').value.intersect(identifier.where(type.coding.code = 'AHPRA').value).exists() or practitioner.resolve().qualification.identifier.where(type.coding.code = 'PRN').value.intersect(identifier.where(type.coding.code = 'PRN').value).exists()`

This structure is derived from AUCorePractitionerRole

Summary

Mandatory: 6 elements
Must-Support: 12 elements

Structures

This structure refers to these other structures:

- HC Professional Registration Number (HC-PRN) (http://ns.electronichealth.net.au/hc/StructureDefinition/hc-prn)
- AU Ahpra Registration Number (http://hl7.org.au/fhir/StructureDefinition/au-ahpraregistrationnumber)
- HC Practitioner (http://ns.electronichealth.net.au/hc/StructureDefinition/hc-practitioner)
- HC Organization (http://ns.electronichealth.net.au/hc/StructureDefinition/hc-organization)
- HC Location (http://ns.electronichealth.net.au/hc/StructureDefinition/hc-location)
- HC HealthcareService (http://ns.electronichealth.net.au/hc/StructureDefinition/hc-healthcareservice)
- HC Endpoint (http://ns.electronichealth.net.au/hc/StructureDefinition/hc-endpoint)

Extensions

This structure refers to these extensions:

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

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 | A person with formal responsibility in a role providing one or more services Constraints: hc-practitionerrole-practitioner-registration-required, hc-practitionerrole-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
extension:hc-practitioner-role-communication | S | 0..* | CodeableConcept | Practitioner role communication preferences URL: http://ns.electronichealth.net.au/hc/StructureDefinition/hc-practitioner-role-communication Binding: Common Languages in Australia (required)
extension:hc-preferred-name | S | 0..1 | HumanName | Preferred name for this practitioner role URL: http://ns.electronichealth.net.au/hc/StructureDefinition/hc-preferred-name
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored
Slices for identifier | SO Σ | 1..* | Identifier, AUMedicareProviderNumber, AUNationalProviderIdentifierAtOrganisation, AUEmployeeNumber | Business Identifiers that are specific to a role/location Slice: Unordered, Open by pattern:type
identifier:medicareProvider | SO Σ | 0..1 | AUMedicareProviderNumber | Medicare provider number
identifier:professionalregistrationnumber | SO Σ | 0..1 | HCProfessionalRegistrationNumber | Professional association / Peak body association (for non-Ahpra registered practitioners), as recorded against the HPI-I record
identifier:ahpraregistrationnumber | SO Σ | 0..1 | AUAhpraRegistrationNumber | Ahpra Registration Number
period | S Σ | 1..1 | Period | The period during which the practitioner is active in this role.
practitioner | SO Σ C | 1..1 | Reference(HC Practitioner) | Practitioner in the role Constraints: au-core-prarol-01
organization | SO Σ | 1..1 | Reference(HC Organization) | 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)
specialty | SO Σ | 0..* | CodeableConcept | Specific specialty of the practitioner Binding: Clinical Specialty (preferred)
location | S Σ | 1..1 | Reference(HC Location) | Location at which this role is provided. Reference to be the same Location as the referenced HealthcareService for this role.
healthcareService | S | 1..1 | Reference(HC HealthcareService) | Healthcare service at which this role is provided.
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 | S | 0..* | BackboneElement | Times that the practitioner provides the healthcare service in this role at this location.
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
allDay | S | 0..1 | boolean | Always available? e.g. 24 hour service
availableStartTime | S | 0..1 | time | Opening time of day (ignored if allDay = true)
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)
availableEndTime | S | 0..1 | time | Closing time of day (ignored if allDay = true)
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)
endpoint | S | 0..1 | Reference(HC Endpoint) | Technical endpoints for this practitioner role.
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
PractitionerRole.code | Base | preferred | Practitioner Role | ⏿1.0.2 | tx.ontoserver.csiro.au
PractitionerRole.specialty | Base | preferred | Clinical Specialty | ⏿1.0.0 | tx.ontoserver.csiro.au
PractitionerRole.telecom.​system | Base | required | ContactPointSystem | 📍4.0.1 | FHIR Std.
PractitionerRole.telecom.​use | Base | required | ContactPointUse | 📍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 | **ALL** elements | All FHIR elements must have a @value or children | `hasValue() or (children().count() > id.count())`
ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both | `extension.exists() != value.exists()`
hc-practitionerrole-practitioner-registration-required | error | PractitionerRole | Either Ahpra or PRN identifier shall exist, and the total count shall be exactly 1 | `(identifier.where(type.coding.code.contains('AHPRA')).exists() or identifier.where(type.coding.code.contains('PRN')).exists()) and (identifier.where(type.coding.code.contains('AHPRA')).count() + identifier.where(type.coding.code.contains('PRN')).count()) = 1`
hc-practitionerrole-registration-match | error | PractitionerRole | PractitionerRole registration identifiers must match with the referenced Practitioner's registration identifiers in qualifications | `practitioner.resolve().qualification.identifier.where(type.coding.code = 'AHPRA').value.intersect(identifier.where(type.coding.code = 'AHPRA').value).exists() or practitioner.resolve().qualification.identifier.where(type.coding.code = 'PRN').value.intersect(identifier.where(type.coding.code = 'PRN').value).exists()`

Differential View

This structure is derived from AUCorePractitionerRole

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

#### Constraints

Id | Grade | Path(s) | Description | Expression
hc-practitionerrole-practitioner-registration-required | error | PractitionerRole | Either Ahpra or PRN identifier shall exist, and the total count shall be exactly 1 | `(identifier.where(type.coding.code.contains('AHPRA')).exists() or identifier.where(type.coding.code.contains('PRN')).exists()) and (identifier.where(type.coding.code.contains('AHPRA')).count() + identifier.where(type.coding.code.contains('PRN')).count()) = 1`
hc-practitionerrole-registration-match | error | PractitionerRole | PractitionerRole registration identifiers must match with the referenced Practitioner's registration identifiers in qualifications | `practitioner.resolve().qualification.identifier.where(type.coding.code = 'AHPRA').value.intersect(identifier.where(type.coding.code = 'AHPRA').value).exists() or practitioner.resolve().qualification.identifier.where(type.coding.code = 'PRN').value.intersect(identifier.where(type.coding.code = 'PRN').value).exists()`

Snapshot View

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
PractitionerRole | C | 0..* | AUCorePractitionerRole | A person with formal responsibility in a role providing one or more services Constraints: hc-practitionerrole-practitioner-registration-required, hc-practitionerrole-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
extension:hc-practitioner-role-communication | S | 0..* | CodeableConcept | Practitioner role communication preferences URL: http://ns.electronichealth.net.au/hc/StructureDefinition/hc-practitioner-role-communication Binding: Common Languages in Australia (required)
extension:hc-preferred-name | S | 0..1 | HumanName | Preferred name for this practitioner role URL: http://ns.electronichealth.net.au/hc/StructureDefinition/hc-preferred-name
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored
Slices for identifier | SO Σ | 1..* | Identifier, AUMedicareProviderNumber, AUNationalProviderIdentifierAtOrganisation, AUEmployeeNumber | Business Identifiers that are specific to a role/location Slice: Unordered, Open by pattern:type
identifier:medicareProvider | SO Σ | 0..1 | AUMedicareProviderNumber | Medicare provider number
identifier:professionalregistrationnumber | SO Σ | 0..1 | HCProfessionalRegistrationNumber | Professional association / Peak body association (for non-Ahpra registered practitioners), as recorded against the HPI-I record
identifier:ahpraregistrationnumber | SO Σ | 0..1 | AUAhpraRegistrationNumber | Ahpra Registration Number
active | Σ | 0..1 | boolean | Whether this practitioner role record is in active use
period | S Σ | 1..1 | Period | The period during which the practitioner is active in this role.
practitioner | SO Σ C | 1..1 | Reference(HC Practitioner) | Practitioner in the role Constraints: au-core-prarol-01
organization | SO Σ | 1..1 | Reference(HC Organization) | 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)
specialty | SO Σ | 0..* | CodeableConcept | Specific specialty of the practitioner Binding: Clinical Specialty (preferred)
location | S Σ | 1..1 | Reference(HC Location) | Location at which this role is provided. Reference to be the same Location as the referenced HealthcareService for this role.
healthcareService | S | 1..1 | Reference(HC HealthcareService) | Healthcare service at which this role is provided.
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
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 | S | 0..* | BackboneElement | Times that the practitioner provides the healthcare service in this role at this location.
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
daysOfWeek |  | 0..* | code | mon | tue | wed | thu | fri | sat | sun Binding: DaysOfWeek (required): The days of the week.
allDay | S | 0..1 | boolean | Always available? e.g. 24 hour service
availableStartTime | S | 0..1 | time | Opening time of day (ignored if allDay = true)
id |  | 0..1 | string | xml:id (or equivalent in JSON)
Slices for extension |  | 0..* | Extension | Extension Slice: Unordered, Open by value:url
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)
value |  | 0..1 | time | Primitive value for time
availableEndTime | S | 0..1 | time | Closing time of day (ignored if allDay = true)
id |  | 0..1 | string | xml:id (or equivalent in JSON)
Slices for extension |  | 0..* | Extension | Extension Slice: Unordered, Open by value:url
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)
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
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
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 | S | 0..1 | Reference(HC Endpoint) | Technical endpoints for this practitioner role.
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.ontoserver.csiro.au
PractitionerRole.specialty | Base | preferred | Clinical Specialty | ⏿1.0.0 | tx.ontoserver.csiro.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 | **ALL** elements | All FHIR elements must have a @value or children | `hasValue() or (children().count() > id.count())`
ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both | `extension.exists() != value.exists()`
hc-practitionerrole-practitioner-registration-required | error | PractitionerRole | Either Ahpra or PRN identifier shall exist, and the total count shall be exactly 1 | `(identifier.where(type.coding.code.contains('AHPRA')).exists() or identifier.where(type.coding.code.contains('PRN')).exists()) and (identifier.where(type.coding.code.contains('AHPRA')).count() + identifier.where(type.coding.code.contains('PRN')).count()) = 1`
hc-practitionerrole-registration-match | error | PractitionerRole | PractitionerRole registration identifiers must match with the referenced Practitioner's registration identifiers in qualifications | `practitioner.resolve().qualification.identifier.where(type.coding.code = 'AHPRA').value.intersect(identifier.where(type.coding.code = 'AHPRA').value).exists() or practitioner.resolve().qualification.identifier.where(type.coding.code = 'PRN').value.intersect(identifier.where(type.coding.code = 'PRN').value).exists()`

This structure is derived from AUCorePractitionerRole

Summary

Mandatory: 6 elements
Must-Support: 12 elements

Structures

This structure refers to these other structures:

- HC Professional Registration Number (HC-PRN) (http://ns.electronichealth.net.au/hc/StructureDefinition/hc-prn)
- AU Ahpra Registration Number (http://hl7.org.au/fhir/StructureDefinition/au-ahpraregistrationnumber)
- HC Practitioner (http://ns.electronichealth.net.au/hc/StructureDefinition/hc-practitioner)
- HC Organization (http://ns.electronichealth.net.au/hc/StructureDefinition/hc-organization)
- HC Location (http://ns.electronichealth.net.au/hc/StructureDefinition/hc-location)
- HC HealthcareService (http://ns.electronichealth.net.au/hc/StructureDefinition/hc-healthcareservice)
- HC Endpoint (http://ns.electronichealth.net.au/hc/StructureDefinition/hc-endpoint)

Extensions

This structure refers to these extensions:

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

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 within AU Core

How search queries can be performed using the Medicare Provider Number or Ahpra identifier are described in AU Core. See AU Core documentation for further information.

- Medicare Provider Number and Ahpra Registration Number are both found using the standard `identifier` search parameter, specifying the appropriate system:

- 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`

#### Search parameters defined in this IG

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

- `prn` (PractitionerRole.identifier where system = http://ns.electronichealth.net.au/hc/id/prn)
- Find PractitionerRoles by their Professional Registration Number (PRN).

- Example: `GET /PractitionerRole?prn=PRN-123456`

- `languages` (PractitionerRole.extension where url = HC practitioner role communication)
- 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.

- Example (display text): `GET /PractitionerRole?languages=Italian`

- `roletype` (PractitionerRole.code.coding.display)
- 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

- `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?availability-allday=true`

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

- `availability-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?availability-daysofweek=mon`

- Example (weekend): `GET /PractitionerRole?availability-daysofweek=sat,sun`

- `availability-starttime` (PractitionerRole.availableTime.availableStartTime)
- Search for practitioner roles by their availability start time. This shared SearchParameter works for both HealthcareService and PractitionerRole resources.
- Format: Use time format HH:mm:ss (e.g., "09:00:00" for 9 AM)
- String matching: Supports exact match and prefix match
- Example (exact time): `GET /PractitionerRole?availability-starttime=09:00:00`

- Example (prefix - morning): `GET /PractitionerRole?availability-starttime=09`

- `availability-endtime` (PractitionerRole.availableTime.availableEndTime)
- Search for practitioner roles by their availability end time. This shared SearchParameter works for both HealthcareService and PractitionerRole resources.
- Format: Use time format HH:mm:ss (e.g., "17:00:00" for 5 PM)
- String matching: Supports exact match and prefix match
- Example (exact time): `GET /PractitionerRole?availability-endtime=17:00:00`
- Example (prefix - afternoon): `GET /PractitionerRole?availability-endtime=17`

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 | SHALL | `token` |
identifier | SHALL | `token` | The requester SHALL provide both the code values. The responder SHALL support. The requester SHOULD support search using Medicare Provider Number or Ahpra number as defined in the profile. The responder SHOULD support search using the using Medicare Provider Number or Ahphra number as defined in the profile.
prn | SHALL | `string` | Shared SearchParameter for availability across Practitioner and PractitionerRole
roletype | SHOULD | `string` |
languages | SHOULD | `string` |
identifier+languages | SHOULD | `token`+`string` |
availability-allday | SHOULD | `token` | Shared SearchParameter for availability across HealthcareService and PractitionerRole
availability-daysofweek | SHOULD | `token` | Shared SearchParameter for availability across HealthcareService and PractitionerRole
availability-starttime | SHOULD | `string` | Shared SearchParameter. Time format HH:mm:ss.
availability-endtime | SHOULD | `string` | Shared SearchParameter. Time format HH:mm:ss.
identifier+availability-daysofweek | SHOULD | `token`+`token` |
identifier+availability-starttime | SHOULD | `token`+`string` |
roletype+availability-daysofweek | SHOULD | `string`+`string` |
roletype+availability-starttime | SHOULD | `string`+`string` |
availability-daysofweek+availability-starttime+availability-endtime | SHOULD | `token`+`string`+`string` |

### 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.