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

AU Core Procedure

AU Core Procedure — SHALL-level conformance

Covers the AU Core Procedure (2.0.0) requirements: read, search by patient (SHALL), search by code/date/status (individually MAY-level in AU Core, but included here because issue #19 explicitly calls for code/date/status/patient search coverage on the generic search mechanism, following the same precedent as fhirfrog/au-core-compiler#17's Practitioner TestScript), must-support element presence, and profile conformance validation. Mirrors the relevant subset of au-fhir-core-inferno's ProcedureGroup (procedure_read_test, procedure_patient_search_test, procedure_code_search_test, procedure_date_search_test, procedure_status_search_test, procedure_must_support_test, procedure_validation_test). The combinatorial SHOULD/MAY search tests (patient+date, patient+status, patient+code+date, multiple-or on code/status, multiple-and on date, the DVA/IHI/Medicare identifier chain searches on patient, and the reference-resolution test) are not replicated here, per the same scope rationale used for Patient/Condition/Organization/Practitioner; see fhirfrog/au-core-compiler#6 and #19.

Name
AUCoreProcedure
URL
http://fhirfrog.org/fhir/au-core-tests/TestScript/au-core-procedure
Status
active

Fixtures

  • patient-fixture: au-core-patient-conformant (created before, and removed after, the run)
  • procedure-fixture: au-core-procedure-conformant (created before, and removed after, the run)

Variables

  • ${patientId} = Patient.id of patient-fixture
  • ${procedureId} = Procedure.id of procedure-fixture

Read

  1. Read Procedure by id (${procedureId}) READ Procedure/${procedureId}
  2. Response status is okay response = okay

SearchByPatient

  1. Search Procedure where patient = ${patientId} SEARCH Procedure?patient=${patientId}
  2. Response status is okay response = okay
  3. Check: Bundle.entry.resource.ofType(Procedure).code.coding.code.where($this = '80146002').exists() expression = Bundle.entry.resource.ofType(Procedure).code.coding.code.where($this = '80146002').exists()

SearchByCode

  1. Search Procedure where code = http://snomed.info/sct|80146002 SEARCH Procedure?code=http://snomed.info/sct|80146002
  2. Response status is okay response = okay
  3. Check: Bundle.entry.resource.ofType(Procedure).code.coding.code.where($this = '80146002').exists() expression = Bundle.entry.resource.ofType(Procedure).code.coding.code.where($this = '80146002').exists()

SearchByDate

  1. Search Procedure where date = 2020-06-15 SEARCH Procedure?date=2020-06-15
  2. Response status is okay response = okay
  3. Check: Bundle.entry.resource.ofType(Procedure).performed.ofType(dateTime).toString().where($this.contains('2020-06-15')).exists() expression = Bundle.entry.resource.ofType(Procedure).performed.ofType(dateTime).toString().where($this.contains('2020-06-15')).exists()

SearchByStatus

  1. Search Procedure where status = completed SEARCH Procedure?status=completed
  2. Response status is okay response = okay
  3. Check: Bundle.entry.resource.ofType(Procedure).status.where($this = 'completed').exists() expression = Bundle.entry.resource.ofType(Procedure).status.where($this = 'completed').exists()

MustSupport

  1. Read Procedure by id (${procedureId}) READ Procedure/${procedureId}
  2. Check: Procedure.code.exists() expression = Procedure.code.exists()
  3. Check: Procedure.encounter.exists() expression = Procedure.encounter.exists()
  4. Check: Procedure.performed.exists() expression = Procedure.performed.exists()
  5. Check: Procedure.reasonCode.exists() expression = Procedure.reasonCode.exists()
  6. Check: Procedure.reasonReference.exists() expression = Procedure.reasonReference.exists()
  7. Check: Procedure.status.exists() expression = Procedure.status.exists()
  8. Check: Procedure.subject.exists() expression = Procedure.subject.exists()

ProfileValidation

  1. Read Procedure by id (${procedureId}) READ Procedure/${procedureId}
  2. Validate the response against profile http://hl7.org.au/fhir/core/StructureDefinition/au-core-procedure validateProfileId = http://hl7.org.au/fhir/core/StructureDefinition/au-core-procedure