FHIR Frog AU Core Conformance Tests
0.1.0 - draft

FHIR Frog AU Core Conformance Tests, published by FHIR Frog. This guide is not an authorized publication; it is the continuous build for version 0.1.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/jgsuess/au-core-tests/ and changes regularly. See the Directory of published versions

TestScript: AU Core PractitionerRole — core search & profile conformance

Official URL: http://fhirfrog.org/fhir/au-core-tests/TestScript/au-core-practitionerrole Version: 0.1.0
Active as of 2026-08-16 Computable Name: AUCorePractitionerRole

Covers the AU Core PractitionerRole (2.0.0) requirements identified in fhirfrog/au-core-compiler#18: read, search by _id/identifier/practitioner/specialty/role/organization, the AU-specific chained-practitioner search (practitioner:Practitioner.identifier) combined with _include=PractitionerRole:practitioner, must-support element presence, and profile conformance validation. Mirrors au-fhir-core-inferno's PractitionerRoleGroup (practitioner_role_read_test, practitioner_role__id_search_test, practitioner_role_identifier_search_test, practitioner_role_identifier_medicare_search_test, practitioner_role_practitioner_search_test, practitioner_role_specialty_search_test, practitioner_role_role_search_test, practitioner_role_organization_search_test, practitioner_role_practitioner_chain_search_test, practitioner_role_practitioner_include_practitioner_test, practitioner_role_must_support_test, practitioner_role_validation_test). Issue #18's premise is that the chained-practitioner SearchParameter and the Medicare identifier search are plain query-string parameters that fhir-frog's byUrl-pass-through search executor already handles generically, so this TestScript exercises each as a single representative query rather than replicating Inferno's full SHOULD/MAY combinatorial variants (GET/POST comparison, multiple AND/OR reference forms, reference-form-only variants) — see fhirfrog/au-core-compiler#6 for the equivalent Patient-level scope rationale. The identifier fixture carries a Medicare-provider-number-typed identifier so the plain identifier search doubles as the Medicare identifier search. Per the Bundle-validation-gap caveat noted on fhirfrog/au-core-compiler#14, validateProfileId is not attempted against the _include'd search Bundle; PractitionerRole profile conformance is instead checked via a separate plain read.

url: TestScript AU Core PractitionerRole — core search & profile conformance

version: 0.1.0

name: AUCorePractitionerRole

title: AU Core PractitionerRole — core search & profile conformance

status: Active

date: 2026-08-16 05:55:37+0000

publisher: FHIR Frog

contact: FHIR Frog: https://gitlab.com/fhirfrog

description:

Covers the AU Core PractitionerRole (2.0.0) requirements identified in fhirfrog/au-core-compiler#18: read, search by _id/identifier/practitioner/specialty/role/organization, the AU-specific chained-practitioner search (practitioner:Practitioner.identifier) combined with _include=PractitionerRole:practitioner, must-support element presence, and profile conformance validation. Mirrors au-fhir-core-inferno's PractitionerRoleGroup (practitioner_role_read_test, practitioner_role__id_search_test, practitioner_role_identifier_search_test, practitioner_role_identifier_medicare_search_test, practitioner_role_practitioner_search_test, practitioner_role_specialty_search_test, practitioner_role_role_search_test, practitioner_role_organization_search_test, practitioner_role_practitioner_chain_search_test, practitioner_role_practitioner_include_practitioner_test, practitioner_role_must_support_test, practitioner_role_validation_test). Issue #18's premise is that the chained-practitioner SearchParameter and the Medicare identifier search are plain query-string parameters that fhir-frog's byUrl-pass-through search executor already handles generically, so this TestScript exercises each as a single representative query rather than replicating Inferno's full SHOULD/MAY combinatorial variants (GET/POST comparison, multiple AND/OR reference forms, reference-form-only variants) — see fhirfrog/au-core-compiler#6 for the equivalent Patient-level scope rationale. The identifier fixture carries a Medicare-provider-number-typed identifier so the plain identifier search doubles as the Medicare identifier search. Per the Bundle-validation-gap caveat noted on fhirfrog/au-core-compiler#14, validateProfileId is not attempted against the _include'd search Bundle; PractitionerRole profile conformance is instead checked via a separate plain read.

fixture

id

practitionerrole-practitioner-fixture

autocreate: true

autodelete: true

resource: AUCorePractitionerRolePractitioner

fixture

id

practitionerrole-organization-fixture

autocreate: true

autodelete: true

resource: au-core-practitionerrole-organization

fixture

id

practitionerrole-fixture

autocreate: true

autodelete: true

resource: au-core-practitionerrole-conformant

variable

name: practitionerRoleId

path: PractitionerRole.id

sourceId: practitionerrole-fixture

variable

name: practitionerId

path: Practitioner.id

sourceId: practitionerrole-practitioner-fixture

variable

name: organizationId

path: Organization.id

sourceId: practitionerrole-organization-fixture

test

name: Read

action

Operations

-TypeResourceEncodeRequestUrlParams
*Test script operation code: read (Read)PractitionerRoletrue/${practitionerRoleId}

action

Asserts

-ResponseWarningOnly
*okayfalse

test

name: SearchById

action

Operations

-TypeResourceEncodeRequestUrlParams
*Test script operation code: search (Search)PractitionerRoletrue?_id=${practitionerRoleId}

action

Asserts

-ResponseWarningOnly
*okayfalse

action

Asserts

-ExpressionWarningOnly
*Bundle.entry.resource.ofType(PractitionerRole).code.coding.code.where($this = '62247001').exists()false

test

name: SearchByIdentifier

action

Operations

-TypeResourceEncodeRequestUrlParams
*Test script operation code: search (Search)PractitionerRoletrue?identifier=http://ns.electronichealth.net.au/id/medicare-provider-number|2449001X

action

Asserts

-ResponseWarningOnly
*okayfalse

action

Asserts

-ExpressionWarningOnly
*Bundle.entry.resource.ofType(PractitionerRole).identifier.value.where($this = '2449001X').exists()false

test

name: SearchByPractitioner

action

Operations

-TypeResourceEncodeRequestUrlParams
*Test script operation code: search (Search)PractitionerRoletrue?practitioner=Practitioner/${practitionerId}

action

Asserts

-ResponseWarningOnly
*okayfalse

action

Asserts

-ExpressionWarningOnly
*Bundle.entry.resource.ofType(PractitionerRole).code.coding.code.where($this = '62247001').exists()false

test

name: SearchBySpecialty

action

Operations

-TypeResourceEncodeRequestUrlParams
*Test script operation code: search (Search)PractitionerRoletrue?specialty=http://snomed.info/sct|408443003

action

Asserts

-ResponseWarningOnly
*okayfalse

action

Asserts

-ExpressionWarningOnly
*Bundle.entry.resource.ofType(PractitionerRole).specialty.coding.code.where($this = '408443003').exists()false

test

name: SearchByRole

action

Operations

-TypeResourceEncodeRequestUrlParams
*Test script operation code: search (Search)PractitionerRoletrue?role=http://snomed.info/sct|62247001

action

Asserts

-ResponseWarningOnly
*okayfalse

action

Asserts

-ExpressionWarningOnly
*Bundle.entry.resource.ofType(PractitionerRole).code.coding.code.where($this = '62247001').exists()false

test

name: SearchByOrganization

action

Operations

-TypeResourceEncodeRequestUrlParams
*Test script operation code: search (Search)PractitionerRoletrue?organization=Organization/${organizationId}

action

Asserts

-ResponseWarningOnly
*okayfalse

action

Asserts

-ExpressionWarningOnly
*Bundle.entry.resource.ofType(PractitionerRole).code.coding.code.where($this = '62247001').exists()false

test

name: ChainedPractitionerIncludePractitioner

action

Operations

-TypeResourceEncodeRequestUrlParams
*Test script operation code: search (Search)PractitionerRoletrue?practitioner:Practitioner.identifier=http://ns.electronichealth.net.au/id/hi/hpii/1.0|8003614900041692&_include=PractitionerRole:practitioner

action

Asserts

-ResponseWarningOnly
*okayfalse

action

Asserts

-ExpressionWarningOnly
*Bundle.entry.resource.ofType(PractitionerRole).exists()false

action

Asserts

-ExpressionWarningOnly
*Bundle.entry.resource.ofType(Practitioner).name.family.where($this.contains('Frog')).exists()false

test

name: MustSupport

action

Operations

-TypeResourceEncodeRequestUrlParams
*Test script operation code: read (Read)PractitionerRoletrue/${practitionerRoleId}

action

Asserts

-ExpressionWarningOnly
*PractitionerRole.identifier.exists()false

action

Asserts

-ExpressionWarningOnly
*PractitionerRole.practitioner.exists()false

action

Asserts

-ExpressionWarningOnly
*PractitionerRole.organization.exists()false

action

Asserts

-ExpressionWarningOnly
*PractitionerRole.code.exists()false

action

Asserts

-ExpressionWarningOnly
*PractitionerRole.specialty.exists()false

action

Asserts

-ExpressionWarningOnly
*PractitionerRole.telecom.exists()false

action

Asserts

-ExpressionWarningOnly
*PractitionerRole.telecom.system.exists()false

action

Asserts

-ExpressionWarningOnly
*PractitionerRole.telecom.value.exists()false

test

name: ProfileValidation

action

Operations

-TypeResourceEncodeRequestUrlParams
*Test script operation code: read (Read)PractitionerRoletrue/${practitionerRoleId}

action

Asserts

-ValidateProfileIdWarningOnly
*http://hl7.org.au/fhir/core/StructureDefinition/au-core-practitionerrolefalse