Name | /FHIRSandbox/DaVinci/00-FHIR3-0-1-Test/DEQM/01-MRP/02-SubmitData/dv-deqm-r3-mrp-sd-01-observation-ok-xml |
Description | Da Vinci Measure $submit-data operation simple test against a known Measure resource where the expected outcome is a successful response. All $submit-data operations are performed using the FHIR Operation Framework HTTP POST method with Parameters of measureReport and resource. |
Version | 1 | Latest | 1 |
<?xml version="1.0" encoding="UTF-8"?>
<TestScript xmlns="http://hl7.org/fhir">
<id value="dv-deqm-r3-mrp-sd-01-observation-ok-xml"/>
<meta>
<profile value="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript"/>
</meta>
<text>
<status value="generated"/>
<div xmlns="http://www.w3.org/1999/xhtml">
<p>Da Vinci - DEQM - MRP - Submit Data</p>
</div>
</text>
<extension url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-rule">
<extension url="ruleId">
<valueId value="rule-validate-DEQM-Datax"/>
</extension>
<extension url="path">
<valueString value="/FHIRCommon/_reference/rule/AssertValidateXMLExtractProfileId-withFhirPath.groovy"/>
</extension>
<extension url="param">
<extension url="name">
<valueString value="xPath"/>
</extension>
<extension url="value">
<valueString value="Parameters/parameter/resource/MeasureReport"/>
</extension>
</extension>
<extension url="param">
<extension url="name">
<valueString value="fhirPath"/>
</extension>
<extension url="value">
<valueString value="Parameters.parameter.resource.as(MeasureReport)"/>
</extension>
</extension>
<extension url="param">
<extension url="name">
<valueString value="profileId"/>
</extension>
<extension url="value">
<valueString value="DataxProfileDEQM"/>
</extension>
</extension>
</extension>
<url value="http://wildfhir.aegis.net/fhir3-0-1/TestScript/dv-deqm-r3-mrp-sd-01-observation-ok-xml"/>
<name value="dv-deqm-r3-mrp-sd-01-observation-ok-xml"/>
<status value="active"/>
<date value="2019-05-23"/>
<publisher value="AEGIS.net, Inc."/>
<contact>
<name value="Touchstone Support"/>
<telecom>
<system value="email"/>
<value value="Touchstone_Support@aegis.net"/>
<use value="work"/>
</telecom>
</contact>
<description value="Da Vinci Measure $submit-data operation simple test against a known Measure resource where the expected outcome is a successful response. All $submit-data operations are performed using the FHIR Operation Framework HTTP POST method with Parameters of measureReport and resource."/>
<copyright value="(c) AEGIS.net, Inc. 2019"/>
<origin>
<index value="1"/>
<profile>
<system value="http://hl7.org/fhir/testscript-profile-origin-types"/>
<code value="FHIR-Client"/>
</profile>
</origin>
<destination>
<index value="1"/>
<profile>
<system value="http://hl7.org/fhir/testscript-profile-destination-types"/>
<code value="FHIR-Server"/>
</profile>
</destination>
<fixture id="submit-data-input-01">
<resource>
<reference value="./_reference/input/submit-data-input-01.xml"/>
</resource>
</fixture>
<profile id="BundleProfileBase">
<reference value="http://hl7.org/fhir/StructureDefinition/Bundle"/>
</profile>
<profile id="OperationOutcomeProfileBase">
<reference value="http://hl7.org/fhir/StructureDefinition/OperationOutcome"/>
</profile>
<profile id="ParametersProfileBase">
<reference value="http://hl7.org/fhir/StructureDefinition/Parameters"/>
</profile>
<profile id="DataxProfileDEQM">
<reference value="http://hl7.org/fhir/us/davinci-deqm/StructureDefinition/datax-measurereport-deqm"/>
</profile>
<variable>
<name value="MeasureId"/>
<defaultValue value="measure-mrp"/>
<description value="Enter a resource id for a valid Measure on the destination system."/>
<hint value="[Valid Measure Id]"/>
</variable>
<rule id="rule-assertTransactionResponseIfBundle">
<resource>
<reference value="/FHIRCommon/_reference/rule/AssertPathIfResource.groovy"/>
</resource>
<param>
<name value="fhirPath"/>
<value value="Bundle.type"/>
</param>
<param>
<name value="pathOperator"/>
<value value="equals"/>
</param>
<param>
<name value="pathExpectedValue"/>
<value value="transaction-response"/>
</param>
<param>
<name value="resource"/>
<value value="Bundle"/>
</param>
<param>
<name value="resourceOperator"/>
<value value="equals"/>
</param>
</rule>
<ruleset id="ruleset-operationok-headers-body">
<resource>
<reference value="/FHIRCommon/_reference/ruleset/RuleSet-OperationOkHeadersBody-Groovy.xml"/>
</resource>
<rule>
<ruleId value="assertContentTypeIfBody"/>
</rule>
<rule>
<ruleId value="assertContentTypeCharsetIfBody"/>
</rule>
<rule>
<ruleId value="assertResourceTypesIfBody"/>
<param>
<name value="resource"/>
<value value="Bundle,OperationOutcome"/>
</param>
</rule>
<rule>
<ruleId value="assertProfileIfOperationOutcome"/>
<param>
<name value="validateProfileId"/>
<value value="OperationOutcomeProfileBase"/>
</param>
</rule>
<rule>
<ruleId value="assertProfileIfResource"/>
<param>
<name value="resource"/>
<value value="Bundle"/>
</param>
<param>
<name value="validateProfileId"/>
<value value="BundleProfileBase"/>
</param>
</rule>
</ruleset>
<test id="01-Measure-Submit-Data">
<name value="01-Measure-Submit-Data"/>
<description value="Submit the required data for a known Measure using HTTP POST. Expected response is 200 (OK). Test the client system request."/>
<action>
<operation>
<type>
<system value="http://touchstone.com/fhir/testscript-operation-codes-extended"/>
<code value="submit-data"/>
</type>
<resource value="Measure"/>
<description value="Measure $submit-data operation for a known Measure."/>
<accept value="xml"/>
<contentType value="xml"/>
<destination value="1"/>
<encodeRequestUrl value="true"/>
<origin value="1"/>
<params value="/${MeasureId}/$submit-data"/>
<sourceId value="submit-data-input-01"/>
</operation>
</action>
<action>
<assert>
<description value="Confirm that the request HTTP Header Accept format is the FHIR mime-type 'application/fhir+xml'."/>
<direction value="request"/>
<headerField value="Accept"/>
<operator value="contains"/>
<value value="application/fhir+xml"/>
</assert>
</action>
<action>
<assert>
<description value="Confirm that the request HTTP Header Accept contains 'charset=utf-8'."/>
<direction value="request"/>
<headerField value="Accept"/>
<operator value="contains"/>
<value value="charset=utf-8"/>
<warningOnly value="true"/>
</assert>
</action>
<action>
<assert>
<description value="Confirm that the request HTTP Header Content-Type format is the FHIR mime-type 'application/fhir+xml'."/>
<direction value="request"/>
<headerField value="Content-Type"/>
<operator value="contains"/>
<value value="application/fhir+xml"/>
</assert>
</action>
<action>
<assert>
<description value="Confirm that the request HTTP Header Content-Type contains 'charset=utf-8'."/>
<direction value="request"/>
<headerField value="Content-Type"/>
<operator value="contains"/>
<value value="charset=utf-8"/>
<warningOnly value="true"/>
</assert>
</action>
<action>
<assert>
<description value="Confirm that the MeasureReport resource contains the DEQM MeasureReport Profile tag."/>
<direction value="request"/>
<expression value="Parameters.parameter.where(name = 'measure-report').resource.meta.profile.contains('http://hl7.org/fhir/us/davinci-deqm/StructureDefinition/datax-measurereport-deqm')"/>
</assert>
</action>
<action>
<assert>
<description value="Confirm that if present the Observation resource contains the Observation Profile tag."/>
<direction value="request"/>
<expression value="Parameters.parameter.where(name = 'resource').resource.ofType(Observation).empty() or Parameters.parameter.where(name = 'resource').resource.ofType(Observation).meta.where(profile = 'http://ncqa.org/fhir/us/hedis/StructureDefinition/hedis-observation').exists()"/>
</assert>
</action>
<action>
<assert>
<description value="Confirm that if present the Patient resource contains the QICORE Patient Profile tag."/>
<direction value="request"/>
<expression value="Parameters.parameter.where(name = 'resource').resource.ofType(Patient).empty() or Parameters.parameter.where(name = 'resource').resource.ofType(Patient).meta.where(profile = 'http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-patient').exists()"/>
</assert>
</action>
<action>
<assert>
<description value="Confirm that if present the Practitioner resource contains the Practitioner Profile tag."/>
<direction value="request"/>
<expression value="Parameters.parameter.where(name = 'resource').resource.ofType(Practitioner).empty() or Parameters.parameter.where(name = 'resource').resource.ofType(Practitioner).meta.where(profile = 'http://hl7.org/fhir/us/davinci-deqm/StructureDefinition/practitioner-deqm').exists()"/>
</assert>
</action>
<action>
<assert>
<description value="Confirm that if present the Encounter resource contains the QICORE Encounter Profile tag."/>
<direction value="request"/>
<expression value="Parameters.parameter.where(name = 'resource').resource.ofType(Encounter).empty() or Parameters.parameter.where(name = 'resource').resource.ofType(Encounter).meta.where(profile = 'http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter').exists()"/>
</assert>
</action>
<action>
<assert>
<description value="Confirm that if present the Organization resource contains the Organization Profile tag."/>
<direction value="request"/>
<expression value="Parameters.parameter.where(name = 'resource').resource.ofType(Organization).empty() or Parameters.parameter.where(name = 'resource').resource.ofType(Organization).meta.where(profile = 'http://hl7.org/fhir/us/davinci-deqm/StructureDefinition/organization-deqm').exists()"/>
</assert>
</action>
<action>
<assert>
<description value="Confirm that if present the Coverage resource contains the DEQM Coverage Profile tag."/>
<direction value="request"/>
<expression value="Parameters.parameter.where(name = 'resource').resource.ofType(Coverage).empty() or Parameters.parameter.where(name = 'resource').resource.ofType(Coverage).meta.where(profile = 'http://hl7.org/fhir/us/davinci-deqm/StructureDefinition/coverage-deqm').exists()"/>
</assert>
</action>
<action>
<assert>
<description value="Confirm that the request body resource type is Parameters."/>
<direction value="request"/>
<resource value="Parameters"/>
</assert>
</action>
<action>
<assert>
<extension url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-rule">
<extension url="ruleId">
<valueId value="rule-validate-DEQM-Datax"/>
</extension>
</extension>
<description value="(WARNING ONLY) Validate Datax DEQM within the Parameters. Warning only to allow review of all assert results."/>
<direction value="request"/>
<warningOnly value="true"/>
</assert>
</action>
<action>
<assert>
<description value="Confirm that the returned HTTP status is 200(OK) or 204(NO CONTENT)."/>
<direction value="response"/>
<operator value="in"/>
<responseCode value="200,204"/>
</assert>
</action>
<action>
<assert>
<description value="Confirm that the returned HTTP Header Location is present. Warning only as this is optional but servers are encouraged to return this."/>
<direction value="response"/>
<headerField value="Location"/>
<operator value="notEmpty"/>
<warningOnly value="true"/>
</assert>
</action>
<action>
<assert>
<description value="Complex ruleset assertion to conditionally validate expected $submit-date operation ok response HTTP Headers and body."/>
<direction value="response"/>
<ruleset>
<rulesetId value="ruleset-operationok-headers-body"/>
<rule>
<ruleId value="assertContentTypeMimeTypeIfBody"/>
<param>
<name value="headerExpectedValue"/>
<value value="application/fhir+xml"/>
</param>
</rule>
</ruleset>
</assert>
</action>
<action>
<assert>
<description value="Rule assertion to conditionally validate expected Bundle.type is transaction-response."/>
<direction value="response"/>
<rule>
<ruleId value="rule-assertTransactionResponseIfBundle"/>
</rule>
</assert>
</action>
</test>
</TestScript>