Given the Test Description: "The system under test MUST find the previously created resource when searched using the parameter and return it in the search results (SEARCH)."
Given the Preconditions: - The Appointment-Read test case must have been executed successfully beforehand.
Then Get FHIR resource at "http://fhirserver/metadata" with content type "json"
And CapabilityStatement contains interaction "search-type" for resource "Appointment"
Then Get FHIR resource at "http://fhirserver/Appointment/?_id=${data.appointment-read-id}" with content type "xml"
And response bundle contains resource with ID "${data.appointment-read-id}" with error message "The requested appointment ${data.appointment-read-id} is not contained in the response bundle"
And Check if current response of resource "Appointment" is valid isik5 resource and conforms to profile "https://gematik.de/fhir/isik/StructureDefinition/ISiKTermin"
When Get FHIR resource at "http://fhirserver/Appointment/?_tag=${data.tag-system}%7C${data.tag-value}&_id=${data.appointment-read-id}" with content type "xml"
And FHIR current response body evaluates the FHIRPath 'entry.resource.count() } 0' with error message 'No search results were found'
And FHIR current response body evaluates the FHIRPath "entry.resource.all(meta.tag.where(code='${data.tag-value}').exists())" with error message 'There are search results, but they do not fully match the search criteria'
And response bundle contains resource with ID "${data.appointment-read-id}" with error message "The requested appointment ${data.appointment-read-id} is not contained in the response bundle"
When Get FHIR resource at "http://fhirserver/Appointment/?_count=1" with content type "xml"
And FHIR current response body evaluates the FHIRPath 'entry.resource.count() } 0 and entry.resource.count() {= 1' with error message 'The _count parameter was not applied as expected'
Then Get FHIR resource at "http://fhirserver/Appointment/?status=cancelled&actor=Patient/${data.appointment-patient-id}" with content type "json"
And FHIR current response body evaluates the FHIRPath 'entry.resource.ofType(Appointment).count() } 0' with error message 'No search results were found'
And FHIR current response body evaluates the FHIRPath "entry.resource.ofType(Appointment).all(status = 'cancelled')" with error message 'There are search results, but they do not fully match the search criteria.'
And response bundle contains resource with ID "${data.appointment-read-id}" with error message "The requested appointment ${data.appointment-read-id} is not contained in the response bundle"
Then Get FHIR resource at "http://fhirserver/Appointment/?service-type=${data.schedule-read-servicetype-code}&actor=Patient/${data.appointment-patient-id}" with content type "json"
And FHIR current response body evaluates the FHIRPath 'entry.resource.ofType(Appointment).count() } 0' with error message 'No search results were found'
And FHIR current response body evaluates the FHIRPath "entry.resource.ofType(Appointment).all(serviceType.coding.where(code='${data.schedule-read-servicetype-code}' and system='${data.schedule-read-servicetype-system}').exists())" with error message 'There are search results, but they do not fully match the search criteria.'
Then Get FHIR resource at "http://fhirserver/Appointment/?actor=Patient/${data.appointment-patient-id}&specialty=http://ihe-d.de/CodeSystems/AerztlicheFachrichtungen%7CNEUR" with content type "json"
And FHIR current response body evaluates the FHIRPath 'entry.resource.ofType(Appointment).count() } 0' with error message 'No search results were found'
And FHIR current response body evaluates the FHIRPath "entry.resource.ofType(Appointment).all(specialty.coding.where(code = 'NEUR' and system ='http://ihe-d.de/CodeSystems/AerztlicheFachrichtungen').exists())" with error message 'There are search results, but they do not fully match the search criteria.'
Then Get FHIR resource at "http://fhirserver/Appointment/?date=${data.slot-read-start}&actor=Patient/${data.appointment-patient-id}" with content type "xml"
And FHIR current response body evaluates the FHIRPath 'entry.resource.ofType(Appointment).count() } 0' with error message 'No search results were found'
And FHIR current response body evaluates the FHIRPath "entry.resource.ofType(Appointment).all(start.toString().contains('${data.slot-read-start}') or start ~ @${data.slot-read-start})" with error message 'There are search results, but they do not fully match the search criteria.'
Then Get FHIR resource at "http://fhirserver/Appointment/?slot=${data.slot-read-id}&actor=Patient/${data.appointment-patient-id}" with content type "xml"
And FHIR current response body evaluates the FHIRPath 'entry.resource.ofType(Appointment).count() } 0' with error message 'No search results were found'
And FHIR current response body evaluates the FHIRPath "entry.resource.ofType(Appointment).all(slot.where(reference.replaceMatches('/_history/.+','').matches('\b${data.slot-read-id}$')).exists())" with error message 'There are search results, but they do not fully match the search criteria.'
| Number of Scenarios | 11 | Total Duration | 28s |
| Total Number of Test Cases | 19 | Fastest Test | 287ms |
| Number of Manual Test Cases | 0 | Slowest Test | 12s |
| Tests Started | Sep 01, 2026 07:09:33 | Average Execution Time | 1s |
| Tests Finished | Sep 01, 2026 07:10:01 |
Cumulative Test Time
(sum of all individual test durations) |
28s |
| feature | Scenario | Context | Steps | Started | Total Duration | Result |
|---|---|---|---|---|---|---|
| Testing search parameters against the Appointment resource (@Appointment-Search) | Precondition | 2 | 07:09:33 | 438ms | ||
| Testing search parameters against the Appointment resource (@Appointment-Search) | Read and Validation of the CapabilityStatement | 2 | 07:09:33 | 7s 655ms | ||
| Testing search parameters against the Appointment resource (@Appointment-Search) |
Validation of the search parameter definitions in the CapabilityStatement
9 passing test cases |
1 | 07:09:41 | 2s 732ms | ||
| Testing search parameters against the Appointment resource (@Appointment-Search) | Search for the Appointment by ID | 3 | 07:09:44 | 12s 183ms | ||
| Testing search parameters against the Appointment resource (@Appointment-Search) | Optional Search for the Appointment by Tag and ID | 4 | 07:09:56 | 917ms | ||
| Testing search parameters against the Appointment resource (@Appointment-Search) | Search for the Appointment by Count | 2 | 07:09:57 | 497ms | ||
| Testing search parameters against the Appointment resource (@Appointment-Search) | Search for the Appointment that belong to a Patient, by Status | 4 | 07:09:57 | 917ms | ||
| Testing search parameters against the Appointment resource (@Appointment-Search) | Search for the Appointment that belong to a Patient, by Service Type | 3 | 07:09:58 | 735ms | ||
| Testing search parameters against the Appointment resource (@Appointment-Search) | Search for the Appointment that belong to a Patient, by Specialty | 3 | 07:09:59 | 696ms | ||
| Testing search parameters against the Appointment resource (@Appointment-Search) | Search for the Appointment that belong to a Patient, by Date | 3 | 07:09:59 | 725ms | ||
| Testing search parameters against the Appointment resource (@Appointment-Search) | Search for the Appointment that belong to a Patient, by Slot | 3 | 07:10:00 | 706ms |
| Scenario | Title | Details |
|---|---|---|
| Precondition | RBellog 0 | Download Evidence |
| Read and Validation of the CapabilityStatement | INFO - rest.where(mode = 'server').resource.where(type = 'Appointment' and interaction.where(code = 'search-type').exists()).exists() | Details |
| Read and Validation of the CapabilityStatement | RBellog 0 | Download Evidence |
| Read and Validation of the CapabilityStatement | Evidence Report | Download Evidence |
| Validation of the search parameter definitions in the CapabilityStatement | INFO - rest.where(mode = 'server').resource.where(type = 'Appointment' and searchParam.where(name = '_id' and type = 'token').exists()).exists() | Details |
| Validation of the search parameter definitions in the CapabilityStatement | RBellog 1 | Download Evidence |
| Validation of the search parameter definitions in the CapabilityStatement | Evidence Report | Download Evidence |
| Validation of the search parameter definitions in the CapabilityStatement | INFO - rest.where(mode = 'server').resource.where(type = 'Appointment' and searchParam.where(name = '_tag' and type = 'token').exists()).exists() | Details |
| Validation of the search parameter definitions in the CapabilityStatement | RBellog 2 | Download Evidence |
| Validation of the search parameter definitions in the CapabilityStatement | Evidence Report | Download Evidence |
| Validation of the search parameter definitions in the CapabilityStatement | INFO - rest.where(mode = 'server').resource.where(type = 'Appointment' and searchParam.where(name = '_count' and type = 'number').exists()).exists() | Details |
| Validation of the search parameter definitions in the CapabilityStatement | RBellog 3 | Download Evidence |
| Validation of the search parameter definitions in the CapabilityStatement | Evidence Report | Download Evidence |
| Validation of the search parameter definitions in the CapabilityStatement | INFO - rest.where(mode = 'server').resource.where(type = 'Appointment' and searchParam.where(name = 'status' and type = 'token').exists()).exists() | Details |
| Validation of the search parameter definitions in the CapabilityStatement | RBellog 4 | Download Evidence |
| Validation of the search parameter definitions in the CapabilityStatement | Evidence Report | Download Evidence |
| Validation of the search parameter definitions in the CapabilityStatement | INFO - rest.where(mode = 'server').resource.where(type = 'Appointment' and searchParam.where(name = 'service-type' and type = 'token').exists()).exists() | Details |
| Validation of the search parameter definitions in the CapabilityStatement | RBellog 5 | Download Evidence |
| Validation of the search parameter definitions in the CapabilityStatement | Evidence Report | Download Evidence |
| Validation of the search parameter definitions in the CapabilityStatement | INFO - rest.where(mode = 'server').resource.where(type = 'Appointment' and searchParam.where(name = 'specialty' and type = 'token').exists()).exists() | Details |
| Validation of the search parameter definitions in the CapabilityStatement | RBellog 6 | Download Evidence |
| Validation of the search parameter definitions in the CapabilityStatement | Evidence Report | Download Evidence |
| Validation of the search parameter definitions in the CapabilityStatement | INFO - rest.where(mode = 'server').resource.where(type = 'Appointment' and searchParam.where(name = 'date' and type = 'date').exists()).exists() | Details |
| Validation of the search parameter definitions in the CapabilityStatement | RBellog 7 | Download Evidence |
| Validation of the search parameter definitions in the CapabilityStatement | Evidence Report | Download Evidence |
| Validation of the search parameter definitions in the CapabilityStatement | INFO - rest.where(mode = 'server').resource.where(type = 'Appointment' and searchParam.where(name = 'slot' and type = 'reference').exists()).exists() | Details |
| Validation of the search parameter definitions in the CapabilityStatement | RBellog 8 | Download Evidence |
| Validation of the search parameter definitions in the CapabilityStatement | Evidence Report | Download Evidence |
| Validation of the search parameter definitions in the CapabilityStatement | INFO - rest.where(mode = 'server').resource.where(type = 'Appointment' and searchParam.where(name = 'actor' and type = 'reference').exists()).exists() | Details |
| Validation of the search parameter definitions in the CapabilityStatement | RBellog 9 | Download Evidence |
| Validation of the search parameter definitions in the CapabilityStatement | Evidence Report | Download Evidence |
| Search for the Appointment by ID | INFO - entry.resource.where(id.replaceMatches('/_history/.+','').matches('\\bAppointment-Read-Example$')).count() = 1 | Details |
| Search for the Appointment by ID | INFO - This element does not match any known slice defined in the profile https://gematik.de/fhir/isik/StructureDefinition/ISiKTermin|5.1.2 | Details |
| Search for the Appointment by ID | WARN - Value set https://gematik.de/fhir/isik/ValueSet/ISiKTerminPriority has been ignored due to module configuration | Details |
| Search for the Appointment by ID | INFO - Code system definition is missing for 'http://snomed.info/sct#394848005' | Details |
| Search for the Appointment by ID | RBellog 0 | Download Evidence |
| Search for the Appointment by ID | Evidence Report | Download Evidence |
| Optional Search for the Appointment by Tag and ID | INFO - entry.resource.count() > 0 | Details |
| Optional Search for the Appointment by Tag and ID | INFO - entry.resource.all(meta.tag.where(code='external').exists()) | Details |
| Optional Search for the Appointment by Tag and ID | INFO - entry.resource.where(id.replaceMatches('/_history/.+','').matches('\\bAppointment-Read-Example$')).count() = 1 | Details |
| Optional Search for the Appointment by Tag and ID | RBellog 0 | Download Evidence |
| Optional Search for the Appointment by Tag and ID | Evidence Report | Download Evidence |
| Search for the Appointment by Count | INFO - entry.resource.count() > 0 and entry.resource.count() <= 1 | Details |
| Search for the Appointment by Count | RBellog 0 | Download Evidence |
| Search for the Appointment by Count | Evidence Report | Download Evidence |
| Search for the Appointment that belong to a Patient, by Status | INFO - entry.resource.ofType(Appointment).count() > 0 | Details |
| Search for the Appointment that belong to a Patient, by Status | INFO - entry.resource.ofType(Appointment).all(status = 'cancelled') | Details |
| Search for the Appointment that belong to a Patient, by Status | INFO - entry.resource.where(id.replaceMatches('/_history/.+','').matches('\\bAppointment-Read-Example$')).count() = 1 | Details |
| Search for the Appointment that belong to a Patient, by Status | RBellog 0 | Download Evidence |
| Search for the Appointment that belong to a Patient, by Status | Evidence Report | Download Evidence |
| Search for the Appointment that belong to a Patient, by Service Type | INFO - entry.resource.ofType(Appointment).count() > 0 | Details |
| Search for the Appointment that belong to a Patient, by Service Type | INFO - entry.resource.ofType(Appointment).all(serviceType.coding.where(code='177' and system='http://terminology.hl7.org/CodeSystem/service-type').exists()) | Details |
| Search for the Appointment that belong to a Patient, by Service Type | RBellog 0 | Download Evidence |
| Search for the Appointment that belong to a Patient, by Service Type | Evidence Report | Download Evidence |
| Search for the Appointment that belong to a Patient, by Specialty | INFO - entry.resource.ofType(Appointment).count() > 0 | Details |
| Search for the Appointment that belong to a Patient, by Specialty | INFO - entry.resource.ofType(Appointment).all(specialty.coding.where(code = 'NEUR' and system ='http://ihe-d.de/CodeSystems/AerztlicheFachrichtungen').exists()) | Details |
| Search for the Appointment that belong to a Patient, by Specialty | RBellog 0 | Download Evidence |
| Search for the Appointment that belong to a Patient, by Specialty | Evidence Report | Download Evidence |
| Search for the Appointment that belong to a Patient, by Date | INFO - entry.resource.ofType(Appointment).count() > 0 | Details |
| Search for the Appointment that belong to a Patient, by Date | INFO - entry.resource.ofType(Appointment).all(start.toString().contains('2027-01-01') or start ~ @2027-01-01) | Details |
| Search for the Appointment that belong to a Patient, by Date | RBellog 0 | Download Evidence |
| Search for the Appointment that belong to a Patient, by Date | Evidence Report | Download Evidence |
| Search for the Appointment that belong to a Patient, by Slot | INFO - entry.resource.ofType(Appointment).count() > 0 | Details |
| Search for the Appointment that belong to a Patient, by Slot | INFO - entry.resource.ofType(Appointment).all(slot.where(reference.replaceMatches('/_history/.+','').matches('\\bSlot-Read-Example$')).exists()) | Details |
| Search for the Appointment that belong to a Patient, by Slot | RBellog 0 | Download Evidence |
| Search for the Appointment that belong to a Patient, by Slot | Evidence Report | Download Evidence |