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/AuDigitalHealth/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:

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:

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.

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. 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
.... 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.

doco 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

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. 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.
... 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.

doco 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()
NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. 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
... 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.

doco 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()

Key Elements View

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. 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
.... 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.

doco 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

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. 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.
... 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.

doco 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

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. 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
... 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.

doco 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()

 

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.