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
| Official URL: http://fhirfrog.org/fhir/au-core-tests/TestScript/au-core-diagnosticresult | Version: 0.1.0 | |||
| Active as of 2026-08-16 | Computable Name: AUCoreDiagnosticResult | |||
Covers the AU Core Diagnostic Result Observation (2.0.0) requirements identified in fhirfrog/au-core-compiler#21 (AUC-016): read, search by patient+code/patient+category/patient+category+date (mirroring au-fhir-core-inferno's DiagnosticresultGroup patient_code/patient_category/patient_category_date search tests), must-support element presence across all 14 MS elements (status, category, code, subject, effective[x], performer, value[x], dataAbsentReason, bodySite, hasMember, component, component.code, component.value[x], component.dataAbsentReason), and profile conformance validation. The 14 MS elements are split across two fixtures reflecting how AU Core's paired obligation extensions (SHALL:populate-if-known on the responder, SHALL:no-error on the requester) actually manifest: 'diagnosticresult-fixture' is the ordinary case (value[x] known and populated, plus a component sub-observation), and 'diagnosticresult-absent-fixture' is the case where the underlying result genuinely isn't known - dataAbsentReason/component.dataAbsentReason populated instead of value[x]/component.value[x] (satisfying the profile's au-core-obs-01 invariant), with hasMember linking back to the ordinary fixture as a panel would. The ObligationNoError test exercises the requester side directly: searching for the absent-value observation must still return a clean 200 (not an error) - this only became testable once fhirfrog/fhir-frog's AssertionEvaluator gained assert.responseCode support and OperationExecutor's executeSearch started catching BaseServerResponseException instead of letting it abort the run (see that engine commit for details). ProfileValidationObligationPair runs validateProfileId against the absent-value fixture specifically, which is what actually machine-checks the au-core-obs-01 invariant now that ProfileValidator's profileUrl handling is fixed (fhirfrog/au-core-compiler#6). Reference-resolution and the remaining SHOULD/MAY search variants (code/status/date multiple-OR, chained patient search, IHI/Medicare/DVA identifier chains) are not replicated - see fhirfrog/au-core-compiler#6 for the general scope rationale.
url: TestScript AU Core Diagnostic Result Observation — search & obligation-pair conformance
version: 0.1.0
name: AUCoreDiagnosticResult
title: AU Core Diagnostic Result Observation — search & obligation-pair 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 Diagnostic Result Observation (2.0.0) requirements identified in fhirfrog/au-core-compiler#21 (AUC-016): read, search by patient+code/patient+category/patient+category+date (mirroring au-fhir-core-inferno's DiagnosticresultGroup patient_code/patient_category/patient_category_date search tests), must-support element presence across all 14 MS elements (status, category, code, subject, effective[x], performer, value[x], dataAbsentReason, bodySite, hasMember, component, component.code, component.value[x], component.dataAbsentReason), and profile conformance validation. The 14 MS elements are split across two fixtures reflecting how AU Core's paired obligation extensions (SHALL:populate-if-known on the responder, SHALL:no-error on the requester) actually manifest: 'diagnosticresult-fixture' is the ordinary case (value[x] known and populated, plus a component sub-observation), and 'diagnosticresult-absent-fixture' is the case where the underlying result genuinely isn't known - dataAbsentReason/component.dataAbsentReason populated instead of value[x]/component.value[x] (satisfying the profile's au-core-obs-01 invariant), with hasMember linking back to the ordinary fixture as a panel would. The ObligationNoError test exercises the requester side directly: searching for the absent-value observation must still return a clean 200 (not an error) - this only became testable once fhirfrog/fhir-frog's AssertionEvaluator gained assert.responseCode support and OperationExecutor's executeSearch started catching BaseServerResponseException instead of letting it abort the run (see that engine commit for details). ProfileValidationObligationPair runs validateProfileId against the absent-value fixture specifically, which is what actually machine-checks the au-core-obs-01 invariant now that ProfileValidator's profileUrl handling is fixed (fhirfrog/au-core-compiler#6). Reference-resolution and the remaining SHOULD/MAY search variants (code/status/date multiple-OR, chained patient search, IHI/Medicare/DVA identifier chains) are not replicated - see fhirfrog/au-core-compiler#6 for the general scope rationale.
fixture
id
patient-fixtureautocreate: true
autodelete: true
resource:
au-core-patient-conformant
fixture
id
diagnosticresult-fixtureautocreate: true
autodelete: true
resource:
au-core-diagnosticresult-conformant
fixture
id
diagnosticresult-absent-fixtureautocreate: true
autodelete: true
resource:
au-core-diagnosticresult-absent
variable
name: patientId
path: Patient.id
sourceId: patient-fixture
variable
name: diagnosticResultId
path: Observation.id
sourceId: diagnosticresult-fixture
variable
name: diagnosticResultAbsentId
path: Observation.id
sourceId: diagnosticresult-absent-fixture
test
name: Read
action
Operations
Type Resource EncodeRequestUrl Params Test script operation code: read (Read) Observation true /${diagnosticResultId} action
Asserts
Response WarningOnly okay false
test
name: SearchByPatientCode
action
Operations
Type Resource EncodeRequestUrl Params Test script operation code: search (Search) Observation true ?patient=Patient/${patientId}&code=http://loinc.org|89024-4 action
Asserts
Response WarningOnly okay false action
Asserts
Expression WarningOnly Bundle.entry.resource.ofType(Observation).code.coding.code.where($this = '89024-4').exists() false
test
name: SearchByPatientCategory
action
Operations
Type Resource EncodeRequestUrl Params Test script operation code: search (Search) Observation true ?patient=Patient/${patientId}&category=http://terminology.hl7.org/CodeSystem/v2-0074|AU action
Asserts
Response WarningOnly okay false action
Asserts
Expression WarningOnly Bundle.entry.resource.ofType(Observation).category.coding.code.where($this = 'AU').exists() false
test
name: SearchByPatientCategoryDate
action
Operations
Type Resource EncodeRequestUrl Params Test script operation code: search (Search) Observation true ?patient=Patient/${patientId}&category=http://terminology.hl7.org/CodeSystem/v2-0074|AU&date=2026-01-15 action
Asserts
Response WarningOnly okay false action
Asserts
Expression WarningOnly Bundle.entry.resource.ofType(Observation).code.coding.code.where($this = '89024-4').exists() false
test
name: MustSupport
action
Operations
Type Resource EncodeRequestUrl Params Test script operation code: read (Read) Observation true /${diagnosticResultId} action
Asserts
Expression WarningOnly Observation.status.exists() false action
Asserts
Expression WarningOnly Observation.category.exists() false action
Asserts
Expression WarningOnly Observation.code.exists() false action
Asserts
Expression WarningOnly Observation.subject.exists() false action
Asserts
Expression WarningOnly Observation.effective.exists() false action
Asserts
Expression WarningOnly Observation.performer.exists() false action
Asserts
Expression WarningOnly Observation.value.exists() false action
Asserts
Expression WarningOnly Observation.bodySite.exists() false action
Asserts
Expression WarningOnly Observation.component.exists() false action
Asserts
Expression WarningOnly Observation.component.code.exists() false action
Asserts
Expression WarningOnly Observation.component.value.exists() false
test
name: MustSupportObligationPair
action
Operations
Type Resource EncodeRequestUrl Params Test script operation code: read (Read) Observation true /${diagnosticResultAbsentId} action
Asserts
Expression WarningOnly Observation.dataAbsentReason.exists() false action
Asserts
Expression WarningOnly Observation.component.dataAbsentReason.exists() false action
Asserts
Expression WarningOnly Observation.hasMember.exists() false
test
name: ObligationNoError
action
Operations
Type Resource EncodeRequestUrl Params Test script operation code: search (Search) Observation true ?patient=Patient/${patientId}&code=http://loinc.org|89026-9 action
Asserts
ResponseCode WarningOnly 200 false action
Asserts
Expression WarningOnly Bundle.entry.resource.ofType(Observation).dataAbsentReason.coding.code.where($this = 'not-performed').exists() false
test
name: ProfileValidation
action
Operations
Type Resource EncodeRequestUrl Params Test script operation code: read (Read) Observation true /${diagnosticResultId} action
Asserts
ValidateProfileId WarningOnly http://hl7.org.au/fhir/core/StructureDefinition/au-core-diagnosticresult false
test
name: ProfileValidationObligationPair
action
Operations
Type Resource EncodeRequestUrl Params Test script operation code: read (Read) Observation true /${diagnosticResultAbsentId} action
Asserts
ValidateProfileId WarningOnly http://hl7.org.au/fhir/core/StructureDefinition/au-core-diagnosticresult false