Generated Narrative: TestScript au-core-practitionerrole 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 - Type Resource EncodeRequestUrl Params * Test script operation code: read (Read) PractitionerRole true /${practitionerRoleId} action Asserts - Response WarningOnly * okay false test name: SearchById action Operations - Type Resource EncodeRequestUrl Params * Test script operation code: search (Search) PractitionerRole true ?_id=${practitionerRoleId} action Asserts - Response WarningOnly * okay false action Asserts - Expression WarningOnly * Bundle.entry.resource.ofType(PractitionerRole).code.coding.code.where($this = '62247001').exists() false test name: SearchByIdentifier action Operations - Type Resource EncodeRequestUrl Params * Test script operation code: search (Search) PractitionerRole true ?identifier=http://ns.electronichealth.net.au/id/medicare-provider-number|2449001X action Asserts - Response WarningOnly * okay false action Asserts - Expression WarningOnly * Bundle.entry.resource.ofType(PractitionerRole).identifier.value.where($this = '2449001X').exists() false test name: SearchByPractitioner action Operations - Type Resource EncodeRequestUrl Params * Test script operation code: search (Search) PractitionerRole true ?practitioner=Practitioner/${practitionerId} action Asserts - Response WarningOnly * okay false action Asserts - Expression WarningOnly * Bundle.entry.resource.ofType(PractitionerRole).code.coding.code.where($this = '62247001').exists() false test name: SearchBySpecialty action Operations - Type Resource EncodeRequestUrl Params * Test script operation code: search (Search) PractitionerRole true ?specialty=http://snomed.info/sct|408443003 action Asserts - Response WarningOnly * okay false action Asserts - Expression WarningOnly * Bundle.entry.resource.ofType(PractitionerRole).specialty.coding.code.where($this = '408443003').exists() false test name: SearchByRole action Operations - Type Resource EncodeRequestUrl Params * Test script operation code: search (Search) PractitionerRole true ?role=http://snomed.info/sct|62247001 action Asserts - Response WarningOnly * okay false action Asserts - Expression WarningOnly * Bundle.entry.resource.ofType(PractitionerRole).code.coding.code.where($this = '62247001').exists() false test name: SearchByOrganization action Operations - Type Resource EncodeRequestUrl Params * Test script operation code: search (Search) PractitionerRole true ?organization=Organization/${organizationId} action Asserts - Response WarningOnly * okay false action Asserts - Expression WarningOnly * Bundle.entry.resource.ofType(PractitionerRole).code.coding.code.where($this = '62247001').exists() false test name: ChainedPractitionerIncludePractitioner action Operations - Type Resource EncodeRequestUrl Params * Test script operation code: search (Search) PractitionerRole true ?practitioner:Practitioner.identifier=http://ns.electronichealth.net.au/id/hi/hpii/1.0|8003614900041692&_include=PractitionerRole:practitioner action Asserts - Response WarningOnly * okay false action Asserts - Expression WarningOnly * Bundle.entry.resource.ofType(PractitionerRole).exists() false action Asserts - Expression WarningOnly * Bundle.entry.resource.ofType(Practitioner).name.family.where($this.contains('Frog')).exists() false test name: MustSupport action Operations - Type Resource EncodeRequestUrl Params * Test script operation code: read (Read) PractitionerRole true /${practitionerRoleId} action Asserts - Expression WarningOnly * PractitionerRole.identifier.exists() false action Asserts - Expression WarningOnly * PractitionerRole.practitioner.exists() false action Asserts - Expression WarningOnly * PractitionerRole.organization.exists() false action Asserts - Expression WarningOnly * PractitionerRole.code.exists() false action Asserts - Expression WarningOnly * PractitionerRole.specialty.exists() false action Asserts - Expression WarningOnly * PractitionerRole.telecom.exists() false action Asserts - Expression WarningOnly * PractitionerRole.telecom.system.exists() false action Asserts - Expression WarningOnly * PractitionerRole.telecom.value.exists() false test name: ProfileValidation action Operations - Type Resource EncodeRequestUrl Params * Test script operation code: read (Read) PractitionerRole true /${practitionerRoleId} action Asserts - ValidateProfileId WarningOnly * http://hl7.org.au/fhir/core/StructureDefinition/au-core-practitionerrole false
AU Core PractitionerRole — core search & profile conformance
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.
Bundle.entry.resource.ofType(PractitionerRole).code.coding.code.where($this = '62247001').exists()
Bundle.entry.resource.ofType(PractitionerRole).identifier.value.where($this = '2449001X').exists()
Bundle.entry.resource.ofType(PractitionerRole).specialty.coding.code.where($this = '408443003').exists()