Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion Configuration/QualificationTokens.json
Original file line number Diff line number Diff line change
Expand Up @@ -1308,5 +1308,11 @@
"familyName": "XXX_Walsmit",
"bsn": "999909162",
"qualificationScript": "MP9 3-beta"
},
{
"accessToken": "Bearer e88e4448-43ea-43fb-95ab-34d4def9ffe7",
"resourceId": "patient-",
"familyName": "Reebeen",
"qualificationScript": "NL-PS-GPI-1-0"
}
]
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
<?xml version="1.0" encoding="UTF-8"?>
<TestScript xmlns="http://hl7.org/fhir" xmlns:nts="http://nictiz.nl/xsl/testscript">
<id value="nl-ps-gpi-retrieve-test-1-1"/>
<url value="http://nictiz.nl/fhir/TestScript/nl-ps-gpi-retrieve-test-1-1"/>
<version value="r4-1.0.0-patchlevel 2025.35"/>
<name value="NL-PS General Patient Information - Client - Test scenario 1.1"/>
<status value="active"/>
<publisher value="Nictiz"/>
<contact>
<name value="Nictiz"/>
<telecom>
<system value="email"/>
<value value="[email protected]"/>
<use value="work"/>
</telecom>
</contact>
<description value="Scenario 1.1 - Retrieve NL-PS General Patient Information resources of Reebeen"/>
<origin>
<extension url="http://fhir.interoplab.eu/fhir/StructureDefinition/Interoplab-CL-ext-SUT">
<valueBoolean value="true"/>
</extension>
<index value="1"/>
<profile>
<system value="http://terminology.hl7.org/CodeSystem/testscript-profile-origin-types"/>
<code value="FHIR-Client"/>
</profile>
</origin>
<destination>
<extension url="http://fhir.interoplab.eu/fhir/StructureDefinition/Interoplab-CL-ext-SUT">
<valueBoolean value="false"/>
</extension>
<index value="1"/>
<profile>
<system value="http://terminology.hl7.org/CodeSystem/testscript-profile-destination-types"/>
<code value="FHIR-Server"/>
</profile>
</destination>
<test id="scenario-1-1-retrieve-patient">
<name value="Scenario 1.1 - Patient"/>
<description value="Query Patient resource"/>
<action>
<operation>
<type>
<system value="http://hl7.org/fhir/restful-interaction"/>
<code value="search"/>
</type>
<resource value="Patient"/>
<description value="Test Client to retrieve Patient resources."/>
<destination value="1"/>
<encodeRequestUrl value="true"/>
<origin value="1"/>
<requestHeader>
<field value="Authorization"/>
<value value="Bearer e88e4448-43ea-43fb-95ab-34d4def9ffe7"/>
</requestHeader>
</operation>
</action>
<action>
<assert>
<description value="Make sure that the server of the test simulator gives a success response."/>
<operator value="in"/>
<responseCode value="200,201"/>
<stopTestOnFail value="true"/>
<warningOnly value="false"/>
</assert>
</action>
<action>
<assert>
<description value="Confirm that the server of the test simulator returns a Bundle."/>
<direction value="response"/>
<resource value="Bundle"/>
<stopTestOnFail value="false"/>
<warningOnly value="false"/>
</assert>
</action>
<action>
<assert>
<description value="Confirm that the response Bundle contains 1 Patient resource(s). "/>
<direction value="response"/>
<expression value="Bundle.entry.where(resource.is(Patient)).count() = 1"/>
<stopTestOnFail value="false"/>
<warningOnly value="false"/>
</assert>
</action>
</test>
</TestScript>
9 changes: 9 additions & 0 deletions output/R4/NL-PS-GPI-1-0/Test/Receiving-System/properties.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@

{ "goal" : "Test",
"fhirVersion" : "R4",
"informationStandard" : "NL-PS-GPI-1-0",
"usecase" : "NL-PS General Patient Information ",
"role" :
{ "name" : "Receiving-System",
"description" : "System that receives information from a sending system" },
"serverAlias" : "nictiz" }
Original file line number Diff line number Diff line change
@@ -0,0 +1,209 @@
<?xml version="1.0" encoding="UTF-8"?>
<TestScript xmlns="http://hl7.org/fhir" xmlns:nts="http://nictiz.nl/xsl/testscript">
<id value="nl-ps-gpi-serve-test-1-1-json"/>
<url value="http://nictiz.nl/fhir/TestScript/nl-ps-gpi-serve-test-1-1-json"/>
<version value="r4-1.0.0-patchlevel 2025.35"/>
<name value="NL-PS General Patient Information - XIS Server - Test scenario 1.1 - JSON Format"/>
<status value="active"/>
<publisher value="Nictiz"/>
<contact>
<name value="Nictiz"/>
<telecom>
<system value="email"/>
<value value="[email protected]"/>
<use value="work"/>
</telecom>
</contact>
<description value="Scenario 1.1 - Serve NL-PS General Patient Information resources of Reebeen"/>
<origin>
<extension url="http://fhir.interoplab.eu/fhir/StructureDefinition/Interoplab-CL-ext-SUT">
<valueBoolean value="false"/>
</extension>
<index value="1"/>
<profile>
<system value="http://terminology.hl7.org/CodeSystem/testscript-profile-origin-types"/>
<code value="FHIR-Client"/>
</profile>
</origin>
<destination>
<extension url="http://fhir.interoplab.eu/fhir/StructureDefinition/Interoplab-CL-ext-SUT">
<valueBoolean value="true"/>
</extension>
<index value="1"/>
<profile>
<system value="http://terminology.hl7.org/CodeSystem/testscript-profile-destination-types"/>
<code value="FHIR-Server"/>
</profile>
</destination>
<profile id="Bundle-profile"
value="http://hl7.org/fhir/StructureDefinition/Bundle"/>
<variable>
<name value="patient-token-id"/>
<defaultValue value="Bearer e88e4448-43ea-43fb-95ab-34d4def9ffe7"/>
<description value="OAuth Token for current patient"/>
</variable>
<test id="1 - serve General Patient Information">
<name value="Test scenario 1.1 - Patient Information"/>
<description value="Serve NL-PS General Patient Information resources"/>
<action>
<operation>
<type>
<system value="http://hl7.org/fhir/restful-interaction"/>
<code value="search"/>
</type>
<resource value="Patient"/>
<description value="Test Server to serve Patient resources."/>
<accept value="json"/>
<destination value="1"/>
<encodeRequestUrl value="true"/>
<origin value="1"/>
</operation>
</action>
<action>
<assert>
<description value="Confirm that the operation was successful"/>
<operator value="in"/>
<responseCode value="200,201"/>
<stopTestOnFail value="true"/>
<warningOnly value="false"/>
</assert>
</action>
<action>
<assert>
<description value="Confirm that the returned resource type is Bundle."/>
<direction value="response"/>
<resource value="Bundle"/>
<stopTestOnFail value="false"/>
<warningOnly value="false"/>
</assert>
</action>
<action>
<assert>
<description value="Confirm that the returned Bundle type is searchset."/>
<direction value="response"/>
<expression value="Bundle.type"/>
<operator value="equals"/>
<stopTestOnFail value="false"/>
<value value="searchset"/>
<warningOnly value="false"/>
</assert>
</action>
<action>
<assert>
<description value="Confirm that all returned resources contain an Resource.id except when temporary ids are used in the Bundle. The only time that a resource does not have an id is when it is being submitted to the server using a create operation: https://www.hl7.org/fhir/STU3/resource-definitions.html#Resource.id "/>
<direction value="response"/>
<expression value="Bundle.entry.all( $this.fullUrl.matches('^urn:oid:[0-2](\\.(0|[1-9]\\d*))*$') or $this.fullUrl.matches('^urn:uuid:[A-Fa-f\\d]{8}-[A-Fa-f\\d]{4}-[A-Fa-f\\d]{4}-[A-Fa-f\\d]{4}-[A-Fa-f\\d]{12}$') or $this.resource.id.exists())"/>
<stopTestOnFail value="false"/>
<warningOnly value="false"/>
</assert>
</action>
<action>
<assert>
<description value="Confirm that all returned resources except OperationOutcome and Binary contain a meta.profile tag."/>
<direction value="response"/>
<expression value="Bundle.entry.resource.where(is(OperationOutcome).not()).where(is(Binary).not()).where(meta.profile.empty()).empty()"/>
<stopTestOnFail value="false"/>
<warningOnly value="false"/>
</assert>
</action>
<action>
<assert>
<description value="Confirm that the fullUrl does not disagree with the id in the resource, see http://hl7.org/fhir/stu3/bundle-definitions.html#Bundle.entry.fullUrl"/>
<direction value="response"/>
<expression value="Bundle.entry.where(fullUrl.exists() and resource.id.exists()).all($this.fullUrl.endsWith($this.resource.id))"/>
<stopTestOnFail value="false"/>
<warningOnly value="false"/>
</assert>
</action>
<action>
<assert>
<description value="Confirm that the fullUrl is an absolute URL, an uuid or an oid."/>
<direction value="response"/>
<expression value="Bundle.entry.fullUrl.all( startsWith('http://') or startsWith('https://') or matches('^urn:oid:[0-2](\\.(0|[1-9]\\d*))*$') or matches('^urn:uuid:[A-Fa-f\\d]{8}-[A-Fa-f\\d]{4}-[A-Fa-f\\d]{4}-[A-Fa-f\\d]{4}-[A-Fa-f\\d]{12}$') )"/>
<stopTestOnFail value="false"/>
<warningOnly value="false"/>
</assert>
</action>
<action>
<assert>
<description value="Confirm that the returned Bundle conforms to the base FHIR specification and the resources to the stated profiles in the meta.profile tag."/>
<direction value="response"/>
<stopTestOnFail value="false"/>
<validateProfileId value="Bundle-profile"/>
<warningOnly value="false"/>
</assert>
</action>
<action>
<assert>
<description value="Confirm that all Coding elements contain both a .system and a .code."/>
<direction value="response"/>
<expression value="Bundle.descendants().where($this.is(Coding)).all(system.exists() and code.exists())"/>
<stopTestOnFail value="false"/>
<warningOnly value="false"/>
</assert>
</action>
<action>
<assert>
<description value="Confirm that the OID of the zib valueset is not used for the system of a coding element."/>
<direction value="response"/>
<expression value="Bundle.descendants().where($this.is(coding)).where(system.startsWith('urn:oid:2.16.840.1.113883.2.4.3.11.60.40.2')).exists().not()"/>
<stopTestOnFail value="false"/>
<warningOnly value="false"/>
</assert>
</action>
<action>
<assert>
<description value="Confirm that all CodeableConcept elements contain either a coding.display or a text value if no Coding exists or has an extension (e.g. a nullFlavor or data-absent-reason extension). For more information see https://informatiestandaarden.nictiz.nl/wiki/FHIR:V1.0_FHIR_IG_STU3Use_of_coded_concepts."/>
<direction value="response"/>
<expression value="Bundle.descendants().where($this.is(CodeableConcept)) .all(coding.display.exists() or text.exists() or extension.exists())"/>
<stopTestOnFail value="false"/>
<warningOnly value="false"/>
</assert>
</action>
<action>
<assert>
<description value="Confirm that all References have a display value, see https://informatiestandaarden.nictiz.nl/wiki/FHIR:V1.0_FHIR_IG_STU3#Use_of_the_reference_datatype."/>
<direction value="response"/>
<expression value="Bundle.descendants().where($this.is(Reference)).all(display.exists() or extension.where(url = 'http://hl7.org/fhir/StructureDefinition/data-absent-reason').exists() or extension.where(url = 'http://hl7.org/fhir/StructureDefinition/iso21090-nullFlavor').exists())"/>
<stopTestOnFail value="false"/>
<warningOnly value="false"/>
</assert>
</action>
<action>
<assert>
<description value="Confirm that all Identifiers have both a .system and a .value. In rare cases where a general category of identifiers can be used, .type can replace .system. Edge cases for both .system and .type to be unknown are not applicable to Nictiz. For more information, see https://www.hl7.org/fhir/stu3/datatypes.html#Identifier."/>
<direction value="response"/>
<expression value="Bundle.descendants().where($this.is(Identifier)).all((system.exists() or type.exists()) and value.exists())"/>
<stopTestOnFail value="false"/>
<warningOnly value="false"/>
</assert>
</action>
<action>
<assert>
<description value="Confirm that the returned Bundle total value matches or is less than the number of entries in the Bundle. The included resources should not be counted as entries in the Bundle.total."/>
<direction value="response"/>
<expression value="Bundle.total.exists() implies (Bundle.total.toInteger() &lt;= Bundle.entry.where(search.empty() or search.mode = 'match').count())"/>
<stopTestOnFail value="false"/>
<warningOnly value="false"/>
</assert>
</action>
<action>
<assert>
<description value="Confirm that the returned Bundle contains a self link."/>
<direction value="response"/>
<expression value="Bundle.link.where(relation = 'self' and url.exists()).exists()"/>
<stopTestOnFail value="false"/>
<warningOnly value="false"/>
</assert>
</action>
<action>
<assert>
<description value="Confirm that the response Bundle contains 1 Patient resource(s). "/>
<direction value="response"/>
<expression value="Bundle.entry.where(resource.is(Patient)).count() = 1"/>
<stopTestOnFail value="false"/>
<warningOnly value="false"/>
</assert>
</action>
</test>
</TestScript>
Loading