AU Provider Directory Implementation Guide
2.1.0-ci-build - Draft

AU Provider Directory Implementation Guide, published by HL7 Australia. This guide is not an authorized publication; it is the continuous build for version 2.1.0-ci-build built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/AuDigitalHealth/au-fhir-pd/ and changes regularly. See the Directory of published versions

## Resource Profile: AU PD Practitioner Role

Official URL: http://hl7.org.au/fhir/pd/StructureDefinition/au-pd-practitionerrole | Version: 2.1.0-ci-build
Standards status: Draft | Maturity Level: 0 | Computable Name: AUPDPractitionerRole
Copyright/Legal: HL7 Australia© 2018+; Licensed Under Creative Commons No Rights Reserved.

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

The Australian profile for practitioner role is for a single healthcare service only, this allows a single provider number to be associated with the role.

In the context of provider directories the practitioner role may include references to endpoints that describe channels of communication to the provider in this role.

### Usage Notes

Profile specific implementation guidance:

At least one of the following defined identifier types, known to this profile, SHALL be supplied:

- AU Medicare Provider Number
- AU National Provider Identifier At Organisation
- AU Employee Number
- AU Vendor Directory Identifier

Usages:

- Examples for this Profile: PractitionerRole/example0

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 TU | 0..* | AUBasePractitionerRole | A practitioner in a healthcare role in an Australian healthcare context Constraints: au-pd-pracrole-01
meta | Σ | 0..1 | Meta | Metadata on Practitioner Role
source | S Σ | 0..1 | uri | Identifies where the resource comes from
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored
Slices for identifier | S | 1..* | Identifier, AUMedicareProviderNumber, AUNationalProviderIdentifierAtOrganisation, AUEmployeeNumber | Business Identifiers that are specific to a role/location Slice: Unordered, Open by pattern:type
identifier:All Slices |  |  |  | Content/Rules for all slices
Slices for extension |  | 0..* | Extension | Extension Slice: Unordered, Open by value:url
extension:routability |  | 0..1 | (Complex) | Supports identifier selection for routing URL: http://hl7.org.au/fhir/StructureDefinition/identifier-routability
extension:assigningAuthority |  | 0..1 | (Complex) | HL7 V2 assigning authority URL: http://hl7.org.au/fhir/StructureDefinition/au-assigningauthority
use | ?!Σ | 0..1 | code | usual | official | temp | secondary | old (If known) Binding: IdentifierUse (required): Identifies the purpose for this identifier, if known .
identifier:medicareProviderNumber | S | 0..* | AUMedicareProviderNumber | Medicare Provider Number for Directory Entry Practitioner Role
identifier:nationalProviderAtOrganisation | S | 0..* | AUNationalProviderIdentifierAtOrganisation | National Provider at Organisation Identifier for Directory Entry Practitioner Role
identifier:auvdi | S | 0..* | AUVendorDirectoryIdentifier | Secure Messaging Vendor's Provider Identifier
active | S Σ | 1..1 | boolean | Required status
practitioner | S Σ | 1..1 | Reference(AU PD Practitioner) | Practitioner in the role
organization | S Σ | 1..1 | Reference(AU PD Organisation) | Organisation providing this role. Reference to be the same Organisation as the referenced HealthcareService for this role.
code | S Σ | 0..* | CodeableConcept | Directory SNOMED-CT Practitioner Role Code. Binding: Practitioner Role (preferred)
specialty | S Σ | 0..* | CodeableConcept | Directory SNOMED-CT Practitioner Specialty. Binding: Clinical Specialty (preferred)
location | S Σ | 1..1 | Reference(AU PD 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(AU PD Healthcare Service) | Healthcare service at which this role is provided.
telecom | S Σ | 0..* | ContactPoint | Contact details for the practitioner in this role.
endpoint | S | 0..* | Reference(AU PD Secure Messaging Endpoint) | Technical endpoints for this practitioner role.
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
PractitionerRole.identifier.​use | Base | required | IdentifierUse | 📍4.0.1 | FHIR Std.
PractitionerRole.code | Base | preferred | Practitioner Role | ⏿1.0.2 | tx.hl7.org.au
PractitionerRole.specialty | Base | preferred | Clinical Specialty | ⏿1.1.0 | tx.hl7.org.au

#### Constraints

Id | Grade | Path(s) | Description | Expression
au-pd-pracrole-01 | error | PractitionerRole | At least one defined identifier, known to this AU PD Practitioner Role profile, must be present | `identifier.exists() implies identifier.where(type.coding.where(code='VDI' or code='EI') or system='http://ns.electronichealth.net.au/id/medicare-provider-number' or system='http://hl7.org.au/id/npio').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()`

This structure is derived from AUBasePractitionerRole

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
PractitionerRole | C TU | 0..* | AUBasePractitionerRole | A practitioner in a healthcare role in an Australian healthcare context Constraints: au-pd-pracrole-01
meta |  | 0..1 | Meta | Metadata on Practitioner Role
source | S | 0..1 | uri | Identifies where the resource comes from
Slices for identifier | S | 1..* | Identifier, AUMedicareProviderNumber, AUNationalProviderIdentifierAtOrganisation, AUEmployeeNumber | Business Identifiers that are specific to a role/location Slice: Unordered, Open by pattern:type
identifier:All Slices |  |  |  | Content/Rules for all slices
Slices for extension |  | 0..* | Extension | Extension Slice: Unordered, Open by value:url
extension:routability |  | 0..1 | (Complex) | Supports identifier selection for routing URL: http://hl7.org.au/fhir/StructureDefinition/identifier-routability
extension:assigningAuthority |  | 0..1 | (Complex) | HL7 V2 assigning authority URL: http://hl7.org.au/fhir/StructureDefinition/au-assigningauthority
identifier:medicareProviderNumber | S | 0..* | AUMedicareProviderNumber | Medicare Provider Number for Directory Entry Practitioner Role
identifier:nationalProviderAtOrganisation | S | 0..* | AUNationalProviderIdentifierAtOrganisation | National Provider at Organisation Identifier for Directory Entry Practitioner Role
identifier:auvdi | S | 0..* | AUVendorDirectoryIdentifier | Secure Messaging Vendor's Provider Identifier
active | S | 1..1 | boolean | Required status
practitioner | S | 1..1 | Reference(AU PD Practitioner) | Practitioner in the role
organization | S | 1..1 | Reference(AU PD Organisation) | Organisation providing this role. Reference to be the same Organisation as the referenced HealthcareService for this role.
code | S | 0..* | CodeableConcept | Directory SNOMED-CT Practitioner Role Code.
specialty | S | 0..* | CodeableConcept | Directory SNOMED-CT Practitioner Specialty.
location | S | 1..1 | Reference(AU PD 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(AU PD Healthcare Service) | Healthcare service at which this role is provided.
telecom | S | 0..* | ContactPoint | Contact details for the practitioner in this role.
availableTime |  |  |  |
availableStartTime |  |  |  |
Slices for extension |  |  |  | Content/Rules for all slices
extension:timeZone |  | 0..1 | CodeableConcept | AU time zone URL: http://hl7.org.au/fhir/StructureDefinition/au-timezone Binding: AU Time Zone (required)
availableEndTime |  |  |  |
Slices for extension |  |  |  | Content/Rules for all slices
extension:timeZone |  | 0..1 | CodeableConcept | AU time zone URL: http://hl7.org.au/fhir/StructureDefinition/au-timezone Binding: AU Time Zone (required)
endpoint | S | 0..* | Reference(AU PD Secure Messaging Endpoint) | Technical endpoints for this practitioner role.
Documentation for this format

#### Constraints

Id | Grade | Path(s) | Description | Expression
au-pd-pracrole-01 | error | PractitionerRole | At least one defined identifier, known to this AU PD Practitioner Role profile, must be present | `identifier.exists() implies identifier.where(type.coding.where(code='VDI' or code='EI') or system='http://ns.electronichealth.net.au/id/medicare-provider-number' or system='http://hl7.org.au/id/npio').exists()`

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
PractitionerRole | C TU | 0..* | AUBasePractitionerRole | A practitioner in a healthcare role in an Australian healthcare context Constraints: au-pd-pracrole-01
id | Σ | 0..1 | id | Logical id of this artifact
meta | Σ | 0..1 | Meta | Metadata on Practitioner 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
versionId | Σ | 0..1 | id | Version specific identifier
lastUpdated | Σ | 0..1 | instant | When the resource version last changed
source | S Σ | 0..1 | uri | Identifies where the resource comes from
profile | Σ | 0..* | canonical(StructureDefinition) | Profiles this resource claims to conform to
security | Σ | 0..* | Coding | Security Labels applied to this resource Binding: All Security Labels (extensible): Security Labels from the Healthcare Privacy and Security Classification System.
tag | Σ | 0..* | Coding | Tags applied to this resource Binding: CommonTags (example): Codes that represent various types of tags, commonly workflow-related; e.g. "Needs review by Dr. Jones".
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
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored
Slices for identifier | S | 1..* | Identifier, AUMedicareProviderNumber, AUNationalProviderIdentifierAtOrganisation, AUEmployeeNumber | Business Identifiers that are specific to a role/location Slice: Unordered, Open by pattern:type
identifier:All Slices |  |  |  | Content/Rules for all slices
id |  | 0..1 | string | Unique id for inter-element referencing
Slices for extension |  | 0..* | Extension | Extension Slice: Unordered, Open by value:url
extension:routability |  | 0..1 | (Complex) | Supports identifier selection for routing URL: http://hl7.org.au/fhir/StructureDefinition/identifier-routability
extension:assigningAuthority |  | 0..1 | (Complex) | HL7 V2 assigning authority URL: http://hl7.org.au/fhir/StructureDefinition/au-assigningauthority
use | ?!Σ | 0..1 | code | usual | official | temp | secondary | old (If known) Binding: IdentifierUse (required): Identifies the purpose for this identifier, if known .
type | Σ | 0..1 | CodeableConcept | Description of identifier Binding: Identifier Type Codes (extensible): A coded type for an identifier that can be used to determine which identifier to use for a specific purpose.
system | Σ | 0..1 | uri | The namespace for the identifier value Example General: http://www.acme.com/identifiers/patient
value | Σ | 0..1 | string | The value that is unique Example General: 123456
period | Σ | 0..1 | Period | Time period when id is/was valid for use
assigner | Σ | 0..1 | Reference(Organization) | Organization that issued id (may be just text)
identifier:medicareProviderNumber | S | 0..* | AUMedicareProviderNumber | Medicare Provider Number for Directory Entry Practitioner Role
identifier:nationalProviderAtOrganisation | S | 0..* | AUNationalProviderIdentifierAtOrganisation | National Provider at Organisation Identifier for Directory Entry Practitioner Role
identifier:auvdi | S | 0..* | AUVendorDirectoryIdentifier | Secure Messaging Vendor's Provider Identifier
active | S Σ | 1..1 | boolean | Required status
period | Σ | 0..1 | Period | The period during which the practitioner is authorized to perform in these role(s)
practitioner | S Σ | 1..1 | Reference(AU PD Practitioner) | Practitioner in the role
organization | S Σ | 1..1 | Reference(AU PD Organisation) | Organisation providing this role. Reference to be the same Organisation as the referenced HealthcareService for this role.
code | S Σ | 0..* | CodeableConcept | Directory SNOMED-CT Practitioner Role Code. Binding: Practitioner Role (preferred)
specialty | S Σ | 0..* | CodeableConcept | Directory SNOMED-CT Practitioner Specialty. Binding: Clinical Specialty (preferred)
location | S Σ | 1..1 | Reference(AU PD 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(AU PD Healthcare Service) | Healthcare service at which this role is provided.
telecom | S Σ | 0..* | ContactPoint | Contact details for the practitioner in this role.
availableTime |  | 0..* | BackboneElement | Times the Service Site is available
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 |  | 0..1 | boolean | Always available? e.g. 24 hour service
availableStartTime |  | 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 | CodeableConcept | AU time zone URL: http://hl7.org.au/fhir/StructureDefinition/au-timezone Binding: AU Time Zone (required)
value |  | 0..1 | time | Primitive value for time
availableEndTime |  | 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 | CodeableConcept | AU time zone URL: http://hl7.org.au/fhir/StructureDefinition/au-timezone Binding: AU Time Zone (required)
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..* | Reference(AU PD Secure Messaging Endpoint) | Technical endpoints for this practitioner role.
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
PractitionerRole.meta.​security | Base | extensible | SecurityLabels | 📍4.0.1 | FHIR Std.
PractitionerRole.meta.​tag | Base | example | Common Tags | 📍4.0.1 | FHIR Std.
PractitionerRole.language | Base | preferred | Common Languages | 📦4.0.1 | FHIR Std.
PractitionerRole.identifier.​use | Base | required | IdentifierUse | 📍4.0.1 | FHIR Std.
PractitionerRole.identifier.​type | Base | extensible | IdentifierType | 📍4.0.1 | FHIR Std.
PractitionerRole.code | Base | preferred | Practitioner Role | ⏿1.0.2 | tx.hl7.org.au
PractitionerRole.specialty | Base | preferred | Clinical Specialty | ⏿1.1.0 | tx.hl7.org.au
PractitionerRole.availableTime.​daysOfWeek | Base | required | DaysOfWeek | 📍4.0.1 | FHIR Std.

#### Constraints

Id | Grade | Path(s) | Description | Expression
au-pd-pracrole-01 | error | PractitionerRole | At least one defined identifier, known to this AU PD Practitioner Role profile, must be present | `identifier.exists() implies identifier.where(type.coding.where(code='VDI' or code='EI') or system='http://ns.electronichealth.net.au/id/medicare-provider-number' or system='http://hl7.org.au/id/npio').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()`

This structure is derived from AUBasePractitionerRole

Summary

Mandatory: 6 elements
Must-Support: 14 elements

Structures

This structure refers to these other structures:

- AU Medicare Provider Number (http://hl7.org.au/fhir/StructureDefinition/au-medicareprovidernumber)
- AU National Provider Identifier At Organisation (http://hl7.org.au/fhir/StructureDefinition/au-nationalprovideridentifieratorganisation)
- AU Vendor Directory Identifier (http://hl7.org.au/fhir/pd/StructureDefinition/au-pd-vdi)
- AU PD Practitioner (http://hl7.org.au/fhir/pd/StructureDefinition/au-pd-practitioner)
- AU PD Organisation (http://hl7.org.au/fhir/pd/StructureDefinition/au-pd-organisation)
- AU PD Location (http://hl7.org.au/fhir/pd/StructureDefinition/au-pd-location)
- AU PD Healthcare Service (http://hl7.org.au/fhir/pd/StructureDefinition/au-pd-healthcareservice)
- AU PD Secure Messaging Endpoint (http://hl7.org.au/fhir/pd/StructureDefinition/au-pd-sm-endpoint)

Extensions

This structure refers to these extensions:

- http://hl7.org.au/fhir/StructureDefinition/identifier-routability
- http://hl7.org.au/fhir/StructureDefinition/au-assigningauthority
- http://hl7.org.au/fhir/StructureDefinition/au-timezone

Slices

This structure defines the following Slices:

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

Maturity: 0

Key Elements View

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
PractitionerRole | C TU | 0..* | AUBasePractitionerRole | A practitioner in a healthcare role in an Australian healthcare context Constraints: au-pd-pracrole-01
meta | Σ | 0..1 | Meta | Metadata on Practitioner Role
source | S Σ | 0..1 | uri | Identifies where the resource comes from
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored
Slices for identifier | S | 1..* | Identifier, AUMedicareProviderNumber, AUNationalProviderIdentifierAtOrganisation, AUEmployeeNumber | Business Identifiers that are specific to a role/location Slice: Unordered, Open by pattern:type
identifier:All Slices |  |  |  | Content/Rules for all slices
Slices for extension |  | 0..* | Extension | Extension Slice: Unordered, Open by value:url
extension:routability |  | 0..1 | (Complex) | Supports identifier selection for routing URL: http://hl7.org.au/fhir/StructureDefinition/identifier-routability
extension:assigningAuthority |  | 0..1 | (Complex) | HL7 V2 assigning authority URL: http://hl7.org.au/fhir/StructureDefinition/au-assigningauthority
use | ?!Σ | 0..1 | code | usual | official | temp | secondary | old (If known) Binding: IdentifierUse (required): Identifies the purpose for this identifier, if known .
identifier:medicareProviderNumber | S | 0..* | AUMedicareProviderNumber | Medicare Provider Number for Directory Entry Practitioner Role
identifier:nationalProviderAtOrganisation | S | 0..* | AUNationalProviderIdentifierAtOrganisation | National Provider at Organisation Identifier for Directory Entry Practitioner Role
identifier:auvdi | S | 0..* | AUVendorDirectoryIdentifier | Secure Messaging Vendor's Provider Identifier
active | S Σ | 1..1 | boolean | Required status
practitioner | S Σ | 1..1 | Reference(AU PD Practitioner) | Practitioner in the role
organization | S Σ | 1..1 | Reference(AU PD Organisation) | Organisation providing this role. Reference to be the same Organisation as the referenced HealthcareService for this role.
code | S Σ | 0..* | CodeableConcept | Directory SNOMED-CT Practitioner Role Code. Binding: Practitioner Role (preferred)
specialty | S Σ | 0..* | CodeableConcept | Directory SNOMED-CT Practitioner Specialty. Binding: Clinical Specialty (preferred)
location | S Σ | 1..1 | Reference(AU PD 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(AU PD Healthcare Service) | Healthcare service at which this role is provided.
telecom | S Σ | 0..* | ContactPoint | Contact details for the practitioner in this role.
endpoint | S | 0..* | Reference(AU PD Secure Messaging Endpoint) | Technical endpoints for this practitioner role.
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
PractitionerRole.identifier.​use | Base | required | IdentifierUse | 📍4.0.1 | FHIR Std.
PractitionerRole.code | Base | preferred | Practitioner Role | ⏿1.0.2 | tx.hl7.org.au
PractitionerRole.specialty | Base | preferred | Clinical Specialty | ⏿1.1.0 | tx.hl7.org.au

#### Constraints

Id | Grade | Path(s) | Description | Expression
au-pd-pracrole-01 | error | PractitionerRole | At least one defined identifier, known to this AU PD Practitioner Role profile, must be present | `identifier.exists() implies identifier.where(type.coding.where(code='VDI' or code='EI') or system='http://ns.electronichealth.net.au/id/medicare-provider-number' or system='http://hl7.org.au/id/npio').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()`

Differential View

This structure is derived from AUBasePractitionerRole

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
PractitionerRole | C TU | 0..* | AUBasePractitionerRole | A practitioner in a healthcare role in an Australian healthcare context Constraints: au-pd-pracrole-01
meta |  | 0..1 | Meta | Metadata on Practitioner Role
source | S | 0..1 | uri | Identifies where the resource comes from
Slices for identifier | S | 1..* | Identifier, AUMedicareProviderNumber, AUNationalProviderIdentifierAtOrganisation, AUEmployeeNumber | Business Identifiers that are specific to a role/location Slice: Unordered, Open by pattern:type
identifier:All Slices |  |  |  | Content/Rules for all slices
Slices for extension |  | 0..* | Extension | Extension Slice: Unordered, Open by value:url
extension:routability |  | 0..1 | (Complex) | Supports identifier selection for routing URL: http://hl7.org.au/fhir/StructureDefinition/identifier-routability
extension:assigningAuthority |  | 0..1 | (Complex) | HL7 V2 assigning authority URL: http://hl7.org.au/fhir/StructureDefinition/au-assigningauthority
identifier:medicareProviderNumber | S | 0..* | AUMedicareProviderNumber | Medicare Provider Number for Directory Entry Practitioner Role
identifier:nationalProviderAtOrganisation | S | 0..* | AUNationalProviderIdentifierAtOrganisation | National Provider at Organisation Identifier for Directory Entry Practitioner Role
identifier:auvdi | S | 0..* | AUVendorDirectoryIdentifier | Secure Messaging Vendor's Provider Identifier
active | S | 1..1 | boolean | Required status
practitioner | S | 1..1 | Reference(AU PD Practitioner) | Practitioner in the role
organization | S | 1..1 | Reference(AU PD Organisation) | Organisation providing this role. Reference to be the same Organisation as the referenced HealthcareService for this role.
code | S | 0..* | CodeableConcept | Directory SNOMED-CT Practitioner Role Code.
specialty | S | 0..* | CodeableConcept | Directory SNOMED-CT Practitioner Specialty.
location | S | 1..1 | Reference(AU PD 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(AU PD Healthcare Service) | Healthcare service at which this role is provided.
telecom | S | 0..* | ContactPoint | Contact details for the practitioner in this role.
availableTime |  |  |  |
availableStartTime |  |  |  |
Slices for extension |  |  |  | Content/Rules for all slices
extension:timeZone |  | 0..1 | CodeableConcept | AU time zone URL: http://hl7.org.au/fhir/StructureDefinition/au-timezone Binding: AU Time Zone (required)
availableEndTime |  |  |  |
Slices for extension |  |  |  | Content/Rules for all slices
extension:timeZone |  | 0..1 | CodeableConcept | AU time zone URL: http://hl7.org.au/fhir/StructureDefinition/au-timezone Binding: AU Time Zone (required)
endpoint | S | 0..* | Reference(AU PD Secure Messaging Endpoint) | Technical endpoints for this practitioner role.
Documentation for this format

#### Constraints

Id | Grade | Path(s) | Description | Expression
au-pd-pracrole-01 | error | PractitionerRole | At least one defined identifier, known to this AU PD Practitioner Role profile, must be present | `identifier.exists() implies identifier.where(type.coding.where(code='VDI' or code='EI') or system='http://ns.electronichealth.net.au/id/medicare-provider-number' or system='http://hl7.org.au/id/npio').exists()`

Snapshot View

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
PractitionerRole | C TU | 0..* | AUBasePractitionerRole | A practitioner in a healthcare role in an Australian healthcare context Constraints: au-pd-pracrole-01
id | Σ | 0..1 | id | Logical id of this artifact
meta | Σ | 0..1 | Meta | Metadata on Practitioner 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
versionId | Σ | 0..1 | id | Version specific identifier
lastUpdated | Σ | 0..1 | instant | When the resource version last changed
source | S Σ | 0..1 | uri | Identifies where the resource comes from
profile | Σ | 0..* | canonical(StructureDefinition) | Profiles this resource claims to conform to
security | Σ | 0..* | Coding | Security Labels applied to this resource Binding: All Security Labels (extensible): Security Labels from the Healthcare Privacy and Security Classification System.
tag | Σ | 0..* | Coding | Tags applied to this resource Binding: CommonTags (example): Codes that represent various types of tags, commonly workflow-related; e.g. "Needs review by Dr. Jones".
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
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored
Slices for identifier | S | 1..* | Identifier, AUMedicareProviderNumber, AUNationalProviderIdentifierAtOrganisation, AUEmployeeNumber | Business Identifiers that are specific to a role/location Slice: Unordered, Open by pattern:type
identifier:All Slices |  |  |  | Content/Rules for all slices
id |  | 0..1 | string | Unique id for inter-element referencing
Slices for extension |  | 0..* | Extension | Extension Slice: Unordered, Open by value:url
extension:routability |  | 0..1 | (Complex) | Supports identifier selection for routing URL: http://hl7.org.au/fhir/StructureDefinition/identifier-routability
extension:assigningAuthority |  | 0..1 | (Complex) | HL7 V2 assigning authority URL: http://hl7.org.au/fhir/StructureDefinition/au-assigningauthority
use | ?!Σ | 0..1 | code | usual | official | temp | secondary | old (If known) Binding: IdentifierUse (required): Identifies the purpose for this identifier, if known .
type | Σ | 0..1 | CodeableConcept | Description of identifier Binding: Identifier Type Codes (extensible): A coded type for an identifier that can be used to determine which identifier to use for a specific purpose.
system | Σ | 0..1 | uri | The namespace for the identifier value Example General: http://www.acme.com/identifiers/patient
value | Σ | 0..1 | string | The value that is unique Example General: 123456
period | Σ | 0..1 | Period | Time period when id is/was valid for use
assigner | Σ | 0..1 | Reference(Organization) | Organization that issued id (may be just text)
identifier:medicareProviderNumber | S | 0..* | AUMedicareProviderNumber | Medicare Provider Number for Directory Entry Practitioner Role
identifier:nationalProviderAtOrganisation | S | 0..* | AUNationalProviderIdentifierAtOrganisation | National Provider at Organisation Identifier for Directory Entry Practitioner Role
identifier:auvdi | S | 0..* | AUVendorDirectoryIdentifier | Secure Messaging Vendor's Provider Identifier
active | S Σ | 1..1 | boolean | Required status
period | Σ | 0..1 | Period | The period during which the practitioner is authorized to perform in these role(s)
practitioner | S Σ | 1..1 | Reference(AU PD Practitioner) | Practitioner in the role
organization | S Σ | 1..1 | Reference(AU PD Organisation) | Organisation providing this role. Reference to be the same Organisation as the referenced HealthcareService for this role.
code | S Σ | 0..* | CodeableConcept | Directory SNOMED-CT Practitioner Role Code. Binding: Practitioner Role (preferred)
specialty | S Σ | 0..* | CodeableConcept | Directory SNOMED-CT Practitioner Specialty. Binding: Clinical Specialty (preferred)
location | S Σ | 1..1 | Reference(AU PD 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(AU PD Healthcare Service) | Healthcare service at which this role is provided.
telecom | S Σ | 0..* | ContactPoint | Contact details for the practitioner in this role.
availableTime |  | 0..* | BackboneElement | Times the Service Site is available
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 |  | 0..1 | boolean | Always available? e.g. 24 hour service
availableStartTime |  | 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 | CodeableConcept | AU time zone URL: http://hl7.org.au/fhir/StructureDefinition/au-timezone Binding: AU Time Zone (required)
value |  | 0..1 | time | Primitive value for time
availableEndTime |  | 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 | CodeableConcept | AU time zone URL: http://hl7.org.au/fhir/StructureDefinition/au-timezone Binding: AU Time Zone (required)
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..* | Reference(AU PD Secure Messaging Endpoint) | Technical endpoints for this practitioner role.
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
PractitionerRole.meta.​security | Base | extensible | SecurityLabels | 📍4.0.1 | FHIR Std.
PractitionerRole.meta.​tag | Base | example | Common Tags | 📍4.0.1 | FHIR Std.
PractitionerRole.language | Base | preferred | Common Languages | 📦4.0.1 | FHIR Std.
PractitionerRole.identifier.​use | Base | required | IdentifierUse | 📍4.0.1 | FHIR Std.
PractitionerRole.identifier.​type | Base | extensible | IdentifierType | 📍4.0.1 | FHIR Std.
PractitionerRole.code | Base | preferred | Practitioner Role | ⏿1.0.2 | tx.hl7.org.au
PractitionerRole.specialty | Base | preferred | Clinical Specialty | ⏿1.1.0 | tx.hl7.org.au
PractitionerRole.availableTime.​daysOfWeek | Base | required | DaysOfWeek | 📍4.0.1 | FHIR Std.

#### Constraints

Id | Grade | Path(s) | Description | Expression
au-pd-pracrole-01 | error | PractitionerRole | At least one defined identifier, known to this AU PD Practitioner Role profile, must be present | `identifier.exists() implies identifier.where(type.coding.where(code='VDI' or code='EI') or system='http://ns.electronichealth.net.au/id/medicare-provider-number' or system='http://hl7.org.au/id/npio').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()`

This structure is derived from AUBasePractitionerRole

Summary

Mandatory: 6 elements
Must-Support: 14 elements

Structures

This structure refers to these other structures:

- AU Medicare Provider Number (http://hl7.org.au/fhir/StructureDefinition/au-medicareprovidernumber)
- AU National Provider Identifier At Organisation (http://hl7.org.au/fhir/StructureDefinition/au-nationalprovideridentifieratorganisation)
- AU Vendor Directory Identifier (http://hl7.org.au/fhir/pd/StructureDefinition/au-pd-vdi)
- AU PD Practitioner (http://hl7.org.au/fhir/pd/StructureDefinition/au-pd-practitioner)
- AU PD Organisation (http://hl7.org.au/fhir/pd/StructureDefinition/au-pd-organisation)
- AU PD Location (http://hl7.org.au/fhir/pd/StructureDefinition/au-pd-location)
- AU PD Healthcare Service (http://hl7.org.au/fhir/pd/StructureDefinition/au-pd-healthcareservice)
- AU PD Secure Messaging Endpoint (http://hl7.org.au/fhir/pd/StructureDefinition/au-pd-sm-endpoint)

Extensions

This structure refers to these extensions:

- http://hl7.org.au/fhir/StructureDefinition/identifier-routability
- http://hl7.org.au/fhir/StructureDefinition/au-assigningauthority
- http://hl7.org.au/fhir/StructureDefinition/au-timezone

Slices

This structure defines the following Slices:

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

Maturity: 0

Other representations of profile: CSV, Excel, Schematron

### Notes:

Read: PractitionerRole

Read identified practitioner role resource content.

`GET [base]/PractitionerRole/[id]`

Example: `GET [base]/PractitionerRole/1234`

Support:

- MUST support read PractitionerRole

Implementation Notes: [(how to read resource)

Search: Active Status

Search based on active status of the practitioner role record.

`GET [base]/PractitionerRole?active=[status]`

Example: `GET [base]/PractitionerRole?active=true`

Support: MUST support search PractitionerRole by active status (true | false).

Implementation Notes: (how to search by token)

Search: Provider Practitioner Name

Chained search (via Practitioner) based on family, given and/or any name. Chained search (via Practitioner) based on family, given and/or any name.

`GET [base]/PractitionerRole?practitioner.family=[string]`

`GET [base]/PractitionerRole?practitioner.family=[string]&practitioner.given=[string]`

`GET [base]/PractitionerRole?practitioner.name=[string]`

Example:

`GET [base]/PractitionerRole?practitioner.family=Smith`

`GET [base]/PractitionerRole?practitioner.family=Smith&practitioner.given=John`

`GET [base]/PractitionerRole?practitioner.name=Smith`

Support:

- MUST support search by Practitioner family, given and name.
- MUST support basic param=[string] search which is case and accent-insensitive search; field equals or starts with the string value.

Implementation Notes: (how to search by string)

Search: Provider Role

Search based on role.

`GET [base]/PractitionerRole?role=[system]|[code]`

Example: `GET [base]/PractitionerRole?role=http://snomed.info/sct|397897005`

Support:

- MUST support search PractitionerRole by role.

Implementation Notes: (how to search by token)

Search: Provider at a HealthcareService

Search based on role.

`GET [base]/PractitionerRole?service=[id]`

Example: `GET [base]/PractitionerRole?service=1234`

Support:

- MUST support search PractitionerRole by service.

Implementation Notes: (how to search by reference)

Search: Provider Specialty

Search based on specialty code.

`GET [base]/PractitionerRole?specialty=[system]|[code]`

Example: `GET [base]/PractitionerRole?specialty=http://snomed.info/sct|722165004`

Support:

- MUST support search PractitionerRole by specialty.

Implementation Notes: (how to search by token)

Search: Organisation of Provider HPI-O

Chained search (via Organisation) based on identifier token.

`GET [base]/PractitionerRole?organization.identifier=[system]|[value]`

Example: `GET [base]/PractitionerRole?organization.identifier=http://ns.electronichealth.net.au/id/hi/hpio/1.0|8003627500000328`

Support:

- MUST support search by HPI-O.

Implementation Notes: (how to search by token)

Search: Provider Practitioner HPI-I

Chained search (via Practitioner) based on identifier token.

`GET [base]/PractitionerRole?practitioner.identifier=[system]|[value]`

Example: `GET [base]/PractitionerRole?practitioner.identifier=http://ns.electronichealth.net.au/id/hi/hpii/1.0|8003610833334085`

Support:

- MUST support search PractitionerRole by HPI-I.

Implementation Notes: (how to search by token)

Search: Vendor Directory Identifier

Search based on identifier.

`GET [base]/PractitionerRole?identifier=[system]|[value]`

Example: `GET [base]/PractitionerRole?identifier=http://smvendor.com.au/id/provider-id|4412365432`

Support:

- MUST support search PractitionerRole by vendor directory identifier; [system] url will be defined by vendors. Effectively this is a general search for identifier capability.

Implementation Notes: (how to search by token)

Search: Provider Number

Search based on identifier.

`GET [base]/PractitionerRole?identifier=[system]|[value]`

Example: `GET [base]/PractitionerRole?identifier=http://ns.electronichealth.net.au/id/medicare-provider-number|2426621B`

Support:

- MUST support search PractitionerRole by Provider Number.

Implementation Notes: (how to search by token)

Search: National Provider at Organisation Identifier

Search based on identifier.

`GET [base]/PractitionerRole?identifier=[system]|[value]`

Example: `GET [base]/PractitionerRole?identifier=http://ns.electronichealth.net.au/id/npio|8003610833334085@8003627500000328`

Support:

- MUST support search PractitionerRole by National Provider at Organisation Identifier.

Implementation Notes: (how to search by token)

- Note NPIO format is [HPI-I]@[HPI-O].

Search: Location Address Parts

Chained search (via Location) based on address parts for postcode, suburb, and state.

`GET [base]/PractitionerRole?location.address-postalcode=[postcode]`

`GET [base]/PractitionerRole?location.address-postalcode=[postcode],[postcode]`

`GET [base]/PractitionerRole?location.address-postalcode=[postcode],[postcode],[postcode]` etc.

`GET [base]/PractitionerRole?location.address-city=[suburb]`

`GET [base]/PractitionerRole?location.address-state=[state]`

Example:

`GET [base]/PractitionerRole?location.address-postalcode=3101`

`GET [base]/PractitionerRole?location.address-postalcode=3101,3101`

`GET [base]/PractitionerRole?location.address-city=Bundaberg`

`GET [base]/PractitionerRole?location.address-state=VIC`

Support:

- MUST support search PractitionerRole by location address parts address-postalcode, address-city, address-state.
- MUST support basic param=[string] search which is case and accent-insensitive search; field equals or starts with the string value.

Implementation Notes: (how to search by string)

Search: Location Distance

Chained search (via Location) for a location within a nominated distance.

`GET [base]/PractitionerRole?location.near=[latitude]:[longitude]&location.near-distance=[prefix][value]|[units-system]|[units]`

Example: `GET [base]/PractitionerRole?location.near=-83.694810:42.256500&location.near-distance=le10.0|http://unitsofmeasure.org|km`

Support:

- SHOULD support search PractitionerRole by location within a distance.
- SHOULD support: [prefix] fixed 'le' is less than or equal to distance [value] is a decimal quantity number [units-system] fixed 'http://unitsofmeasure.org' identifies standard distance units are used [units] distance units must support 'km' or 'm'

Implementation Notes: (how to search by token) and (how to search by quantity)

Search: Connection Type (Service Interface)

Chaned search (via Endpoint) based on token for a protocol to be used to connnect to the endpoint.

`GET [base]/PractitionerRole?endpoint.connection-type=[system]|[code]`

Example: `GET [base]/PractitionerRole?endpoint.connection-type=http://hl7.org.au/fhir/CodeSystem/smd-interfaces|http://ns.electronichealth.net.au/smd/intf/SealedMessageDelivery/TLS/2010`

Support:

- MUST support search by PractitionerRole by endpoint connection type.

Implementation Notes: (how to search by token)

Search: Payload Type (Service Category)

Chaned search (via Endpoint) based on token for the type of content supported by the endpoint.

`GET [base]/PractitionerRole?endpoint.payload-type=[system]|[code]`

Example: `GET [base]/PractitionerRole?endpoint.payload-type=http://hl7.org.au/fhir/CodeSystem/smd-interfaces|http://ns.hl7.org.au/hl7v2/profiles/HL7AU-OO-REF-SIMPLIFIED-201706`

Support:

- MUST support search PractitionerRole by endpoint payload type.

Implementation Notes: (how to search by token)

Search: Include References

The _include argument allows the automatic inclusion of referenced resources in the response for a search; based on search parameters defined for this resource type1.

Example: `GET [base]/PractitionerRole?_include=PractitionerRole:practitioner&_include=PractitionerRole:organization&_include=PractitionerRole:endpoint&_include=PractitionerRole:location`

Support:

- MUST support _include PractitionerRole references practitioner (Practitioner), location (Location), organization (Organization), endpoint (Endpoint), service (HealthcareService).

Search: Combination

- Searches MUST be able to be perfomed in a single request using logical AND for criteria. e.g specialty cardiologist in post code 4846