Serenity BDD Report
Home > Requirements > Stufe5 > Vitalparameter > Read information from a resource of type observation for arterial oxygen saturation (@observation-read-arterial-oxygen-saturation)
Report generated 01-09-2026 07:04

Feature: Read information from a resource of type observation for arterial oxygen saturation (@observation-read-arterial-oxygen-saturation)

Scenarios

Given the Test Description: "The system under test MUST return the complete resource in response to an HTTP GET request to its URL (READ)."

Given the Preconditions: - The test data set must have been recorded in the system under test according to the specifications (manually).

  • The ID of the corresponding FHIR resource for this test data set must be stored in the configuration variable 'observation-read-arterial-oxygen-saturation-id'.

Create an Observation resource in your system with the following values:

  • Id: the value of the configuration variable 'observation-read-arterial-oxygen-saturation-id'
  • Profile: ISiKSauerstoffsaettigungArteriell
  • Status: final
  • Category: vital-signs
  • Code:
    • Coding:
      • Code: 2708-6
      • Display: Oxygen saturation in Arterial blood by Pulse oximetry
      • System: http://loinc.org
      • Version: 2.81 (can be configured with the property 'loinc-version')
  • Patient: any (the linked Patient resource must conform to ISiKPatient; store the ID in 'observation-patient-id')
  • Encounter: any (the linked Encounter resource must conform to ISiKKontaktGesundheitseinrichtung; store the ID in 'observation-encounter-id')
  • Performer: any (the linked Practitioner resource must conform to ISiKPersonImGesundheitsberuf; store the ID in 'observation-practitioner-id')
  • Effective date/time: 2026-03-05
  • Value: 98 %
  • (Optional) Device: any (store the ID in 'observation-read-device-id')
  • (Optional) Method:
    • Coding:
      • Code: 252465000
      • Display: Pulsoximetrie
      • System: http://snomed.info/sct
      • Version: can be configured with the property 'snomed-ct-version'

Then Get FHIR resource at "http://fhirserver/metadata" with content type "json"

And CapabilityStatement contains interaction "read" for resource "Observation"

Then Get FHIR resource at "http://fhirserver/Observation/${data.observation-read-arterial-oxygen-saturation-id}" with content type "xml"

And resource has ID "${data.observation-read-arterial-oxygen-saturation-id}"

And FHIR current response body is a valid isik5 resource and conforms to profile "https://gematik.de/fhir/isik/StructureDefinition/ISiKSauerstoffsaettigungArteriell"

And TGR current response with attribute "$..status.value" matches "final"

And FHIR current response body evaluates the FHIRPath "category.coding.where(code = 'vital-signs' and system = 'http://terminology.hl7.org/CodeSystem/observation-category').exists()" with error message 'The category does not match the expected value'

And FHIR current response body evaluates the FHIRPath "code.coding.where(code = '2708-6' and system = 'http://loinc.org' and version = '${data.loinc-version}' and display.empty().not()).exists()" with error message 'The code does not match the expected value'

And element "subject" references resource with ID "Patient/${data.observation-patient-id}" with error message "The referenced patient does not match the expected value"

And element "encounter" references resource with ID "Encounter/${data.observation-encounter-id}" with error message "The referenced encounter does not match the expected value"

And element "performer" references resource with ID "Practitioner/${data.observation-practitioner-id}" with error message "The referenced performer does not match the expected value"

And FHIR current response body evaluates the FHIRPath "effective.toString().contains('2026-03-05')" with error message 'The effective date does not match the expected value'

And FHIR current response body evaluates the FHIRPath "value.where(value ~ 98 and code = '%' and unit.exists() and system = 'http://unitsofmeasure.org').exists()" with error message 'The value does not match the expected value'

Then Get FHIR resource at "http://fhirserver/Observation/${data.observation-read-arterial-oxygen-saturation-id}" with content type "xml"

And FHIR current response body evaluates the FHIRPath "method.coding.where(code = '252465000' and system = 'http://snomed.info/sct' and version = 'http://snomed.info/sct/11000274103/version/${data.snomed-ct-version}' and display.empty().not()).exists()" with error message 'The method does not match the expected value'

And element "device" references resource with ID "Device/${data.observation-device-id}" with error message "The referenced device does not match the expected value"

Given the Test Description: "The system under test MUST return the complete resource in response to an HTTP GET request to its URL (READ)."

Given the Preconditions: - The test data set must have been recorded in the system under test according to the specifications (manually).

  • The ID of the corresponding FHIR resource for this test data set must be stored in the configuration variable 'observation-read-arterial-oxygen-saturation-absent-id'.

Create an Observation resource in your system with the following values:

  • Id: the value of the configuration variable 'observation-read-arterial-oxygen-saturation-absent-id'
  • Profile: ISiKSauerstoffsaettigungArteriell
  • Status: final
  • Data Absent Reason:
    • Coding:
      • System: http://terminology.hl7.org/CodeSystem/data-absent-reason
      • Code: not-performed
      • Display: not-performed

Then Get FHIR resource at "http://fhirserver/Observation/${data.observation-read-arterial-oxygen-saturation-absent-id}" with content type "xml"

And resource has ID "${data.observation-read-arterial-oxygen-saturation-absent-id}"

And FHIR current response body is a valid isik5 resource and conforms to profile "https://gematik.de/fhir/isik/StructureDefinition/ISiKSauerstoffsaettigungArteriell"

And FHIR current response body evaluates the FHIRPath "dataAbsentReason.coding.where(code = 'not-performed' and system = 'http://terminology.hl7.org/CodeSystem/data-absent-reason' and display.empty().not()).exists()" with error message 'The dataAbsentReason does not match the expected value'

Feature Coverage By Scenario

Test Outcomes

Test Performance

Key Statistics

Number of Scenarios 6 Total Duration 16s
Total Number of Test Cases 6 Fastest Test 422ms
Number of Manual Test Cases 0 Slowest Test 9s
Tests Started Sep 01, 2026 07:04:29 Average Execution Time 2s
Tests Finished Sep 01, 2026 07:04:46 Cumulative Test Time
(sum of all individual test durations)
16s

Automated Tests

feature Scenario Context Steps Started Total Duration Result
Read Information from a resource of type Observation for arterial oxygen saturation (@Observation-Read-Arterial-Oxygen-Saturation) Precondition 2 07:04:29 427ms SUCCESS
Read Information from a resource of type Observation for arterial oxygen saturation (@Observation-Read-Arterial-Oxygen-Saturation) Read and Validation of the CapabilityStatement 2 07:04:30 2s 284ms SUCCESS
Read Information from a resource of type Observation for arterial oxygen saturation (@Observation-Read-Arterial-Oxygen-Saturation) Read and Validate the Observation by its ID 11 07:04:32 9s 470ms SUCCESS
Read Information from a resource of type Observation for arterial oxygen saturation (@Observation-Read-Arterial-Oxygen-Saturation) Read optional Method from Observation 3 07:04:42 669ms SUCCESS
Read Information from a resource of type Observation for arterial oxygen saturation (@Observation-Read-Arterial-Oxygen-Saturation) Precondition for Reading a Resource with "dataAbsentReason" 2 07:04:42 422ms SUCCESS
Read Information from a resource of type Observation for arterial oxygen saturation (@Observation-Read-Arterial-Oxygen-Saturation) Read and Validate the Observation with DataAbsentReason by its ID 4 07:04:43 3s 416ms SUCCESS

Manual Tests

No manual tests were recorded

Evidence

Scenario Title Details
Precondition RBellog 0  Download Evidence
Read and Validation of the CapabilityStatement INFO - rest.where(mode = 'server').resource.where(type = 'Observation' and interaction.where(code = 'read').exists()).exists()  Details
Read and Validation of the CapabilityStatement RBellog 0  Download Evidence
Read and Validation of the CapabilityStatement Evidence Report  Download Evidence
Read and Validate the Observation by its ID INFO - id.replaceMatches('/_history/.+','').matches('\\bArterial-Oxygen-Saturation-Read-Example$')  Details
Read and Validate the Observation by its ID INFO - Code system definition is missing for 'http://loinc.org#2708-6'  Details
Read and Validate the Observation by its ID INFO - Code system definition is missing for 'http://snomed.info/sct#252465000'  Details
Read and Validate the Observation by its ID INFO - category.coding.where(code = 'vital-signs' and system = 'http://terminology.hl7.org/CodeSystem/observation-category').exists()  Details
Read and Validate the Observation by its ID INFO - code.coding.where(code = '2708-6' and system = 'http://loinc.org' and version = '2.81' and display.empty().not()).exists()  Details
Read and Validate the Observation by its ID INFO - subject.reference.replaceMatches('/_history/.+','').matches('\\bPatient/Patient-Read-Example$')  Details
Read and Validate the Observation by its ID INFO - encounter.reference.replaceMatches('/_history/.+','').matches('\\bEncounter/Encounter-Read-In-Progress-Example$')  Details
Read and Validate the Observation by its ID INFO - performer.reference.replaceMatches('/_history/.+','').matches('\\bPractitioner/Practitioner-Read-Example$')  Details
Read and Validate the Observation by its ID INFO - effective.toString().contains('2026-03-05')  Details
Read and Validate the Observation by its ID INFO - value.where(value ~ 98 and code = '%' and unit.exists() and system = 'http://unitsofmeasure.org').exists()  Details
Read and Validate the Observation by its ID RBellog 0  Download Evidence
Read and Validate the Observation by its ID Evidence Report  Download Evidence
Read optional Method from Observation INFO - method.coding.where(code = '252465000' and system = 'http://snomed.info/sct' and version = 'http://snomed.info/sct/11000274103/version/20251115' and display.empty().not()).exists()  Details
Read optional Method from Observation INFO - device.reference.replaceMatches('/_history/.+','').matches('\\bDevice/Device-Read-Example$')  Details
Read optional Method from Observation RBellog 0  Download Evidence
Read optional Method from Observation Evidence Report  Download Evidence
Precondition for Reading a Resource with "dataAbsentReason" RBellog 0  Download Evidence
Read and Validate the Observation with DataAbsentReason by its ID INFO - id.replaceMatches('/_history/.+','').matches('\\bArterial-Oxygen-Saturation-DataAbsentReason-Example$')  Details
Read and Validate the Observation with DataAbsentReason by its ID INFO - Code system definition is missing for 'http://loinc.org#2708-6'  Details
Read and Validate the Observation with DataAbsentReason by its ID INFO - dataAbsentReason.coding.where(code = 'not-performed' and system = 'http://terminology.hl7.org/CodeSystem/data-absent-reason' and display.empty().not()).exists()  Details
Read and Validate the Observation with DataAbsentReason by its ID RBellog 0  Download Evidence
Read and Validate the Observation with DataAbsentReason by its ID Evidence Report  Download Evidence
Serenity BDD version 5.3.10