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 Healthcare Service

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

This profile defines a provider directory entry for a healthcare service or category of services delivered at a location by an organisation.

In a provider directory this allows the association of endpoints with the healthcare service and thus a channel for delivery to that service.

### Usage Notes

Profile specific implementation guidance:

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

- AU HPI-O
- AU Residential Aged Care Service Identifier
- AU Vendor Directory Identifier

Usages:

- Refer to this Profile: AU PD Practitioner Role
- Examples for this Profile: Downunder Hospital Accident and Emergency

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
--- | --- | --- | --- | ---
HealthcareService | C TU | 0..* | AUBaseHealthcareService | A healthcare service in an Australian healthcare context Constraints: au-pd-hs-01
meta | Σ | 0..1 | Meta | Metadata on Healthcare Service
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, AUHPIO, AUResidentialAgedCareServiceIdentifier | External identifiers for this item 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) | Identifier routability 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:hpio | S | 0..* | AUHPIO | HPI-O for Directory Entry Organisation
identifier:auvdi | S | 0..* | AUVendorDirectoryIdentifier | Secure Messaging Vendor's Healthcare Service Identifier
active | ?!S Σ | 1..1 | boolean | Required status
providedBy | S Σ | 1..1 | Reference(AU PD Organisation) | Providing organisation
type | S Σ | 0..* | CodeableConcept | Directory SNOMED-CT service types Binding: Service Type (preferred)
specialty | S Σ | 0..* | CodeableConcept | Directory SNOMED-CT specialities offered by the HealthcareService Binding: Clinical Specialty (preferred)
location | S Σ | 1..1 | Reference(AU PD Location) | Single location for this service
name | S Σ | 1..1 | string | Healthcare service name
telecom | S | 0..* | ContactPoint | Contact details
endpoint | S | 0..* | Reference(AU PD Secure Messaging Endpoint) | Technical endpoints for this healthcare service.
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
HealthcareService.identifier.​use | Base | required | IdentifierUse | 📍4.0.1 | FHIR Std.
HealthcareService.type | Base | preferred | Service Type | ⏿1.0.0 | tx.hl7.org.au
HealthcareService.specialty | Base | preferred | Clinical Specialty | ⏿1.1.0 | tx.hl7.org.au

#### Constraints

Id | Grade | Path(s) | Description | Expression
au-pd-hs-01 | error | HealthcareService | At least one defined identifier, known to this AU PD Healthcare Service profile, must be present | `identifier.exists() implies identifier.where(type.coding.code='VDI' or system='http://ns.electronichealth.net.au/id/hi/hpio/1.0' or system='http://ns.electronichealth.net.au/id/residential-aged-care-service-id').exists()`
dom-2 | error | HealthcareService | If the resource is contained in another resource, it SHALL NOT contain nested Resources | `contained.contained.empty()`
dom-3 | error | HealthcareService | 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 | HealthcareService | 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 | HealthcareService | If a resource is contained in another resource, it SHALL NOT have a security label | `contained.meta.security.empty()`
dom-6 | best practice | HealthcareService | 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 AUBaseHealthcareService

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
HealthcareService | C TU | 0..* | AUBaseHealthcareService | A healthcare service in an Australian healthcare context Constraints: au-pd-hs-01
meta |  | 0..1 | Meta | Metadata on Healthcare Service
source | S | 0..1 | uri | Identifies where the resource comes from
Slices for identifier | S | 1..* | Identifier, AUHPIO, AUResidentialAgedCareServiceIdentifier | External identifiers for this item 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) | Identifier routability 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:hpio | S | 0..* | AUHPIO | HPI-O for Directory Entry Organisation
identifier:auvdi | S | 0..* | AUVendorDirectoryIdentifier | Secure Messaging Vendor's Healthcare Service Identifier
active | S | 1..1 | boolean | Required status
providedBy | S | 1..1 | Reference(AU PD Organisation) | Providing organisation
type | S | 0..* | CodeableConcept | Directory SNOMED-CT service types
specialty | S | 0..* | CodeableConcept | Directory SNOMED-CT specialities offered by the HealthcareService
location | S | 1..1 | Reference(AU PD Location) | Single location for this service
name | S | 1..1 | string | Healthcare service name
telecom | S | 0..* | ContactPoint | Contact details
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 healthcare service.
Documentation for this format

#### Constraints

Id | Grade | Path(s) | Description | Expression
au-pd-hs-01 | error | HealthcareService | At least one defined identifier, known to this AU PD Healthcare Service profile, must be present | `identifier.exists() implies identifier.where(type.coding.code='VDI' or system='http://ns.electronichealth.net.au/id/hi/hpio/1.0' or system='http://ns.electronichealth.net.au/id/residential-aged-care-service-id').exists()`

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
HealthcareService | C TU | 0..* | AUBaseHealthcareService | A healthcare service in an Australian healthcare context Constraints: au-pd-hs-01
id | Σ | 0..1 | id | Logical id of this artifact
meta | Σ | 0..1 | Meta | Metadata on Healthcare Service
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, AUHPIO, AUResidentialAgedCareServiceIdentifier | External identifiers for this item 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) | Identifier routability 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:hpio | S | 0..* | AUHPIO | HPI-O for Directory Entry Organisation
identifier:auvdi | S | 0..* | AUVendorDirectoryIdentifier | Secure Messaging Vendor's Healthcare Service Identifier
active | ?!S Σ | 1..1 | boolean | Required status
providedBy | S Σ | 1..1 | Reference(AU PD Organisation) | Providing organisation
category | Σ | 0..* | CodeableConcept | Broad category of service being performed or delivered Binding: ServiceCategory (example): A category of the service(s) that could be provided.
type | S Σ | 0..* | CodeableConcept | Directory SNOMED-CT service types Binding: Service Type (preferred)
specialty | S Σ | 0..* | CodeableConcept | Directory SNOMED-CT specialities offered by the HealthcareService Binding: Clinical Specialty (preferred)
location | S Σ | 1..1 | Reference(AU PD Location) | Single location for this service
name | S Σ | 1..1 | string | Healthcare service name
comment | Σ | 0..1 | string | Additional description and/or any specific issues not covered elsewhere
extraDetails |  | 0..1 | markdown | Extra details about the service that can't be placed in the other fields
photo | Σ | 0..1 | Attachment | Facilitates quick identification of the service
telecom | S | 0..* | ContactPoint | Contact details
coverageArea |  | 0..* | Reference(Location) | Location(s) service is intended for/available to
serviceProvisionCode |  | 0..* | CodeableConcept | Conditions under which service is available/offered Binding: Service Provision Conditions Australian Concepts (preferred)
eligibility |  | 0..* | BackboneElement | Specific eligibility requirements required to use the service
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
code |  | 0..1 | CodeableConcept | Coded value for the eligibility Binding Description: (example): Coded values underwhich a specific service is made available.
comment |  | 0..1 | markdown | Describes the eligibility conditions for the service
program |  | 0..* | CodeableConcept | Programs that this service is applicable to Binding: Program (example): Government or local programs that this service applies to.
characteristic |  | 0..* | CodeableConcept | Collection of characteristics (attributes) Binding Description: (example): A custom attribute that could be provided at a service (e.g. Wheelchair accessibiliy).
communication |  | 0..* | CodeableConcept | The language that this service is offered in Binding: CommonLanguages (preferred): A human language.
Additional Bindings | Purpose
AllLanguages | Max Binding
referralMethod |  | 0..* | CodeableConcept | Ways that the service accepts referrals Binding: ReferralMethod (example): The methods of referral can be used when referring to a specific HealthCareService resource.
appointmentRequired |  | 0..1 | boolean | If an appointment is required for access to this service
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 healthcare service.
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
HealthcareService.meta.​security | Base | extensible | SecurityLabels | 📍4.0.1 | FHIR Std.
HealthcareService.meta.​tag | Base | example | Common Tags | 📍4.0.1 | FHIR Std.
HealthcareService.language | Base | preferred | Common Languages | 📦4.0.1 | FHIR Std.
HealthcareService.identifier.​use | Base | required | IdentifierUse | 📍4.0.1 | FHIR Std.
HealthcareService.identifier.​type | Base | extensible | IdentifierType | 📍4.0.1 | FHIR Std.
HealthcareService.category | Base | example | Service category | 📦4.0.1 | FHIR Std.
HealthcareService.type | Base | preferred | Service Type | ⏿1.0.0 | tx.hl7.org.au
HealthcareService.specialty | Base | preferred | Clinical Specialty | ⏿1.1.0 | tx.hl7.org.au
HealthcareService.serviceProvisionCode | Base | preferred | Service Provision Conditions Australian Concepts | 📦4.1.0 | AU Base Implementation Guide v4.1
HealthcareService.eligibility.​code | Base | example |  | Not State | Unknown
HealthcareService.program | Base | example | Program | 📦4.0.1 | FHIR Std.
HealthcareService.characteristic | Base | example |  | Not State | Unknown
HealthcareService.communication | Base | preferred | Common Languages | 📦4.0.1 | FHIR Std.
HealthcareService.referralMethod | Base | example | ReferralMethod | 📦4.0.1 | FHIR Std.
HealthcareService.availableTime.​daysOfWeek | Base | required | DaysOfWeek | 📍4.0.1 | FHIR Std.

#### Constraints

Id | Grade | Path(s) | Description | Expression
au-pd-hs-01 | error | HealthcareService | At least one defined identifier, known to this AU PD Healthcare Service profile, must be present | `identifier.exists() implies identifier.where(type.coding.code='VDI' or system='http://ns.electronichealth.net.au/id/hi/hpio/1.0' or system='http://ns.electronichealth.net.au/id/residential-aged-care-service-id').exists()`
dom-2 | error | HealthcareService | If the resource is contained in another resource, it SHALL NOT contain nested Resources | `contained.contained.empty()`
dom-3 | error | HealthcareService | 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 | HealthcareService | 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 | HealthcareService | If a resource is contained in another resource, it SHALL NOT have a security label | `contained.meta.security.empty()`
dom-6 | best practice | HealthcareService | 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 AUBaseHealthcareService

Summary

Mandatory: 5 elements
Must-Support: 12 elements

Structures

This structure refers to these other structures:

- AU HPI-O (http://hl7.org.au/fhir/StructureDefinition/au-hpio)
- AU Vendor Directory Identifier (http://hl7.org.au/fhir/pd/StructureDefinition/au-pd-vdi)
- 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 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 HealthcareService.identifier

Maturity: 0

Key Elements View

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
HealthcareService | C TU | 0..* | AUBaseHealthcareService | A healthcare service in an Australian healthcare context Constraints: au-pd-hs-01
meta | Σ | 0..1 | Meta | Metadata on Healthcare Service
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, AUHPIO, AUResidentialAgedCareServiceIdentifier | External identifiers for this item 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) | Identifier routability 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:hpio | S | 0..* | AUHPIO | HPI-O for Directory Entry Organisation
identifier:auvdi | S | 0..* | AUVendorDirectoryIdentifier | Secure Messaging Vendor's Healthcare Service Identifier
active | ?!S Σ | 1..1 | boolean | Required status
providedBy | S Σ | 1..1 | Reference(AU PD Organisation) | Providing organisation
type | S Σ | 0..* | CodeableConcept | Directory SNOMED-CT service types Binding: Service Type (preferred)
specialty | S Σ | 0..* | CodeableConcept | Directory SNOMED-CT specialities offered by the HealthcareService Binding: Clinical Specialty (preferred)
location | S Σ | 1..1 | Reference(AU PD Location) | Single location for this service
name | S Σ | 1..1 | string | Healthcare service name
telecom | S | 0..* | ContactPoint | Contact details
endpoint | S | 0..* | Reference(AU PD Secure Messaging Endpoint) | Technical endpoints for this healthcare service.
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
HealthcareService.identifier.​use | Base | required | IdentifierUse | 📍4.0.1 | FHIR Std.
HealthcareService.type | Base | preferred | Service Type | ⏿1.0.0 | tx.hl7.org.au
HealthcareService.specialty | Base | preferred | Clinical Specialty | ⏿1.1.0 | tx.hl7.org.au

#### Constraints

Id | Grade | Path(s) | Description | Expression
au-pd-hs-01 | error | HealthcareService | At least one defined identifier, known to this AU PD Healthcare Service profile, must be present | `identifier.exists() implies identifier.where(type.coding.code='VDI' or system='http://ns.electronichealth.net.au/id/hi/hpio/1.0' or system='http://ns.electronichealth.net.au/id/residential-aged-care-service-id').exists()`
dom-2 | error | HealthcareService | If the resource is contained in another resource, it SHALL NOT contain nested Resources | `contained.contained.empty()`
dom-3 | error | HealthcareService | 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 | HealthcareService | 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 | HealthcareService | If a resource is contained in another resource, it SHALL NOT have a security label | `contained.meta.security.empty()`
dom-6 | best practice | HealthcareService | 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 AUBaseHealthcareService

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
HealthcareService | C TU | 0..* | AUBaseHealthcareService | A healthcare service in an Australian healthcare context Constraints: au-pd-hs-01
meta |  | 0..1 | Meta | Metadata on Healthcare Service
source | S | 0..1 | uri | Identifies where the resource comes from
Slices for identifier | S | 1..* | Identifier, AUHPIO, AUResidentialAgedCareServiceIdentifier | External identifiers for this item 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) | Identifier routability 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:hpio | S | 0..* | AUHPIO | HPI-O for Directory Entry Organisation
identifier:auvdi | S | 0..* | AUVendorDirectoryIdentifier | Secure Messaging Vendor's Healthcare Service Identifier
active | S | 1..1 | boolean | Required status
providedBy | S | 1..1 | Reference(AU PD Organisation) | Providing organisation
type | S | 0..* | CodeableConcept | Directory SNOMED-CT service types
specialty | S | 0..* | CodeableConcept | Directory SNOMED-CT specialities offered by the HealthcareService
location | S | 1..1 | Reference(AU PD Location) | Single location for this service
name | S | 1..1 | string | Healthcare service name
telecom | S | 0..* | ContactPoint | Contact details
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 healthcare service.
Documentation for this format

#### Constraints

Id | Grade | Path(s) | Description | Expression
au-pd-hs-01 | error | HealthcareService | At least one defined identifier, known to this AU PD Healthcare Service profile, must be present | `identifier.exists() implies identifier.where(type.coding.code='VDI' or system='http://ns.electronichealth.net.au/id/hi/hpio/1.0' or system='http://ns.electronichealth.net.au/id/residential-aged-care-service-id').exists()`

Snapshot View

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
HealthcareService | C TU | 0..* | AUBaseHealthcareService | A healthcare service in an Australian healthcare context Constraints: au-pd-hs-01
id | Σ | 0..1 | id | Logical id of this artifact
meta | Σ | 0..1 | Meta | Metadata on Healthcare Service
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, AUHPIO, AUResidentialAgedCareServiceIdentifier | External identifiers for this item 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) | Identifier routability 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:hpio | S | 0..* | AUHPIO | HPI-O for Directory Entry Organisation
identifier:auvdi | S | 0..* | AUVendorDirectoryIdentifier | Secure Messaging Vendor's Healthcare Service Identifier
active | ?!S Σ | 1..1 | boolean | Required status
providedBy | S Σ | 1..1 | Reference(AU PD Organisation) | Providing organisation
category | Σ | 0..* | CodeableConcept | Broad category of service being performed or delivered Binding: ServiceCategory (example): A category of the service(s) that could be provided.
type | S Σ | 0..* | CodeableConcept | Directory SNOMED-CT service types Binding: Service Type (preferred)
specialty | S Σ | 0..* | CodeableConcept | Directory SNOMED-CT specialities offered by the HealthcareService Binding: Clinical Specialty (preferred)
location | S Σ | 1..1 | Reference(AU PD Location) | Single location for this service
name | S Σ | 1..1 | string | Healthcare service name
comment | Σ | 0..1 | string | Additional description and/or any specific issues not covered elsewhere
extraDetails |  | 0..1 | markdown | Extra details about the service that can't be placed in the other fields
photo | Σ | 0..1 | Attachment | Facilitates quick identification of the service
telecom | S | 0..* | ContactPoint | Contact details
coverageArea |  | 0..* | Reference(Location) | Location(s) service is intended for/available to
serviceProvisionCode |  | 0..* | CodeableConcept | Conditions under which service is available/offered Binding: Service Provision Conditions Australian Concepts (preferred)
eligibility |  | 0..* | BackboneElement | Specific eligibility requirements required to use the service
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
code |  | 0..1 | CodeableConcept | Coded value for the eligibility Binding Description: (example): Coded values underwhich a specific service is made available.
comment |  | 0..1 | markdown | Describes the eligibility conditions for the service
program |  | 0..* | CodeableConcept | Programs that this service is applicable to Binding: Program (example): Government or local programs that this service applies to.
characteristic |  | 0..* | CodeableConcept | Collection of characteristics (attributes) Binding Description: (example): A custom attribute that could be provided at a service (e.g. Wheelchair accessibiliy).
communication |  | 0..* | CodeableConcept | The language that this service is offered in Binding: CommonLanguages (preferred): A human language.
Additional Bindings | Purpose
AllLanguages | Max Binding
referralMethod |  | 0..* | CodeableConcept | Ways that the service accepts referrals Binding: ReferralMethod (example): The methods of referral can be used when referring to a specific HealthCareService resource.
appointmentRequired |  | 0..1 | boolean | If an appointment is required for access to this service
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 healthcare service.
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
HealthcareService.meta.​security | Base | extensible | SecurityLabels | 📍4.0.1 | FHIR Std.
HealthcareService.meta.​tag | Base | example | Common Tags | 📍4.0.1 | FHIR Std.
HealthcareService.language | Base | preferred | Common Languages | 📦4.0.1 | FHIR Std.
HealthcareService.identifier.​use | Base | required | IdentifierUse | 📍4.0.1 | FHIR Std.
HealthcareService.identifier.​type | Base | extensible | IdentifierType | 📍4.0.1 | FHIR Std.
HealthcareService.category | Base | example | Service category | 📦4.0.1 | FHIR Std.
HealthcareService.type | Base | preferred | Service Type | ⏿1.0.0 | tx.hl7.org.au
HealthcareService.specialty | Base | preferred | Clinical Specialty | ⏿1.1.0 | tx.hl7.org.au
HealthcareService.serviceProvisionCode | Base | preferred | Service Provision Conditions Australian Concepts | 📦4.1.0 | AU Base Implementation Guide v4.1
HealthcareService.eligibility.​code | Base | example |  | Not State | Unknown
HealthcareService.program | Base | example | Program | 📦4.0.1 | FHIR Std.
HealthcareService.characteristic | Base | example |  | Not State | Unknown
HealthcareService.communication | Base | preferred | Common Languages | 📦4.0.1 | FHIR Std.
HealthcareService.referralMethod | Base | example | ReferralMethod | 📦4.0.1 | FHIR Std.
HealthcareService.availableTime.​daysOfWeek | Base | required | DaysOfWeek | 📍4.0.1 | FHIR Std.

#### Constraints

Id | Grade | Path(s) | Description | Expression
au-pd-hs-01 | error | HealthcareService | At least one defined identifier, known to this AU PD Healthcare Service profile, must be present | `identifier.exists() implies identifier.where(type.coding.code='VDI' or system='http://ns.electronichealth.net.au/id/hi/hpio/1.0' or system='http://ns.electronichealth.net.au/id/residential-aged-care-service-id').exists()`
dom-2 | error | HealthcareService | If the resource is contained in another resource, it SHALL NOT contain nested Resources | `contained.contained.empty()`
dom-3 | error | HealthcareService | 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 | HealthcareService | 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 | HealthcareService | If a resource is contained in another resource, it SHALL NOT have a security label | `contained.meta.security.empty()`
dom-6 | best practice | HealthcareService | 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 AUBaseHealthcareService

Summary

Mandatory: 5 elements
Must-Support: 12 elements

Structures

This structure refers to these other structures:

- AU HPI-O (http://hl7.org.au/fhir/StructureDefinition/au-hpio)
- AU Vendor Directory Identifier (http://hl7.org.au/fhir/pd/StructureDefinition/au-pd-vdi)
- 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 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 HealthcareService.identifier

Maturity: 0

Other representations of profile: CSV, Excel, Schematron

### Notes:

Read: HealthcareService

Read identified healthcare service resource content.

`GET [base]/HealthcareService/[id]`

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

Support:

- MUST support read HealthcareService

Implementation Notes: [(how to read resource)

Search: Active Status

Search based on active status of the healthcare service record.

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

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

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

Implementation Notes: (how to search by token)

Search: Name

Search for a healthcare service by name.

`GET [base]/HealthcareService?name=[string]`

Example: `GET [base]/HealthcareService?name=southern%20clinic`

Support:

- MUST support search by HealthcareService name.

Implementation Notes: (how to search by string)

Search: Organisation Provider of Healthcare Service Name

Chained search (via Organisation) based on text name.

`GET [base]/HealthcareService?organization.name=[string]`

Example: `GET [base]/HealthcareService?organization.name=clinigroup`

Support:

- MUST support search by Organization name.

Implementation Notes: (how to search by string)

Search: Healthcare Service Type

Search for healthcare service based on type of service

`GET [base]/HealthcareService?service-type=[system]|[code]`

Example: `GET [base]/HealthcareService?service-type=http://snomed.info/sct|310030000`

Support:

- MUST support search by HealthcareService service-type.

Implementation Notes: (how to search by token)

Search: Healthcare Service offered Specialties

Search for healthcare service based on specialties offered

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

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

Support:

- MUST support search by HealthcareService specialty offered.

Implementation Notes: (how to search by token)

Search: Organisation provider of Healthcare Service HPI-O

Chained search (via Organisation) based on identifier token.

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

Example: `GET [base]/HealthcareService?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: HPI-O Search based on identifier token. Direct HPI-O allocation to the service; may be different than the providing organisation but within the HPI-O hierarchy (networked HPI-O).

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

Example: `GET [base]/HealthcareService?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: Location Address Parts

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

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

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

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

Example:

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

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

`GET [base]/HealthcareService?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 token)

Search: Location Distance

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

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

Example: `GET [base]/HealthcareService?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)

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

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

Example: `GET [base]/HealthcareService?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 HealthcareService by endpoint connection type.

Implementation Notes: (how to search by token)

Search: Payload Type (Service Category)

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

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

Example: `GET [base]/HealthcareService?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 HealthcareService by endpoint payload type.

Implementation Notes: (how to search by token)

Search: Active Practitioner Role by Identifier Exists

Reverse chained search _has argument based on token to ensure practitioner role with a specific identifier is active and is referring to this service.

This uses existing search parameters on PractitionerRole search capability where PractitionerRole.healthcareService is referencing the subject healthcare service.

`GET [base]/HealthcareService?_has:PractitionerRole:service:identifier=[system]|[value]&_has:PractitionerRole:service:active=[status]`

Example: `GET [base]/HealthcareService?_has:PractitionerRole:service:identifier=http://ns.electronichealth.net.au/id/medicare-provider-number|444455AA&_has:PractitionerRole:service:active=true`

Support:

- MAY support search HealthcareService for existence of active practitioner role with specific identifier.

Implementation Notes: (how to search by token), (how to check for existence of referring resource)

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]/HealthcareService?_include=HealthcareService:organization&_include=HealthcareService:endpoint&_include=HealthcareService:location`

Support:

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

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