AEGIS Touchstone Testing Implementation Guide

This is the Version 1.4.0 Release of the Touchstone Testing Implementation Guide, based on FHIR Version 4.0.1. See the Directory of published versions

XML Format: TestScript-ndjson-assertion-prefix

Raw xml



<TestScript xmlns="http://hl7.org/fhir">
  <id value="ndjson-assertion-prefix"/>
  <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><b>Generated Narrative</b></p><p><b>url</b>: <code>http://touchstone.aegis.net/touchstone/fhir/testing/TestScript/ndjson-assertion-prefix</code></p><p><b>version</b>: 1.4.0</p><p><b>name</b>: NDJSONAssertionPrefixSyntax</p><p><b>title</b>: Demonstrate NDJSON Assertion Prefix Syntax</p><p><b>status</b>: active</p><p><b>date</b>: 2020-12-06</p><p><b>publisher</b>: AEGIS.net, Inc.</p><p><b>contact</b>: Touchstone Support: <a href="mailto:Touchstone_Support@aegis.net">Touchstone_Support@aegis.net</a></p><p><b>description</b>: Demonstrate NDJSON Assertion Prefix Syntax</p><p><b>jurisdiction</b>: <span title="Codes: {urn:iso:std:iso:3166 US}">United States of America</span></p><p><b>copyright</b>: (c) AEGIS.net, Inc. 2015+</p><blockquote><p><b>destination</b></p><p><b>index</b>: 1</p><p><b>profile</b>: <span title="{http://terminology.hl7.org/CodeSystem/testscript-profile-destination-types FHIR-Server}">FHIR Server</span></p></blockquote><p><b>profile</b>: </p><ul><li><a href="http://hl7.org/fhir/StructureDefinition/Patient">Generated Summary: url: http://hl7.org/fhir/StructureDefinition/Patient; version: 4.0.1; name: Patient; ACTIVE; date: Oct 31, 2019 6:29:23 PM; publisher: Health Level Seven International (Patient Administration); http://hl7.org/fhir, http://www.hl7.org/Special/com...; description: Demographics and other administrative information about an individual or animal receiving care or other health-related services.; purpose: Tracking patient is the center of the healthcare process.; 4.0.1; RESOURCE; type: Patient; baseDefinition: http://hl7.org/fhir/StructureDefinition/DomainResource; SPECIALIZATION</a></li><li><a href="{any}http://hl7.org/fhir/StructureDefinition/Patient">{any}http://hl7.org/fhir/StructureDefinition/Patient</a></li><li><a href="{1}http://hl7.org/fhir/StructureDefinition/Patient">{1}http://hl7.org/fhir/StructureDefinition/Patient</a></li><li><a href="{.name[?(@.family=='Gracia')]}http://hl7.org/fhir/StructureDefinition/Patient">{.name[?(@.family=='Gracia')]}http://hl7.org/fhir/StructureDefinition/Patient</a></li></ul><h3>Variables</h3><table class="grid"><tr><td>-</td><td><b>Name</b></td><td><b>DefaultValue</b></td></tr><tr><td>*</td><td>outputBaseUrl</td><td>http://localhost:33000/bulk-api/output</td></tr></table><blockquote><p><b>test</b></p><p><b>name</b>: AssertContentTypeResourceAndValidation</p><p><b>description</b>: Demonstrates contentType, resource and validateProfile assertions with no filters.</p><blockquote><p><b>action</b></p><h3>Operations</h3><table class="grid"><tr><td>-</td><td><b>Type</b></td><td><b>Description</b></td><td><b>Accept</b></td><td><b>Destination</b></td><td><b>EncodeRequestUrl</b></td><td><b>Url</b></td></tr><tr><td>*</td><td><span title="{http://touchstone.aegis.net/touchstone/fhir/testing/CodeSystem/codesystem-testscript-operation-codes get}">GET</span></td><td>Request BulkData</td><td>ndjson</td><td>1</td><td>true</td><td>${outputBaseUrl}/1/Patient.ndjson</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>HeaderField</b></td><td><b>Operator</b></td><td><b>Value</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>Confirm that the client requested an Accept of the FHIR JSON mime type 'application/fhir+json'.</td><td>request</td><td>Accept</td><td>contains</td><td>ndjson</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>Operator</b></td><td><b>ResponseCode</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>Confirm that the returned HTTP status is 200.</td><td>response</td><td>equals</td><td>200</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Direction</b></td><td><b>ContentType</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>response</td><td>ndjson</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Direction</b></td><td><b>Resource</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>response</td><td>Patient</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>ValidateProfileId</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>Validate that the returned resource conforms to the corresponding FHIR resource profile.</td><td>response</td><td>resource-profile</td><td>false</td></tr></table></blockquote></blockquote><blockquote><p><b>test</b></p><p><b>name</b>: AssertResourceType</p><p><b>description</b>: Demonstrates resource assertions.</p><blockquote><p><b>action</b></p><h3>Operations</h3><table class="grid"><tr><td>-</td><td><b>Type</b></td><td><b>Description</b></td><td><b>Accept</b></td><td><b>Destination</b></td><td><b>EncodeRequestUrl</b></td><td><b>Url</b></td></tr><tr><td>*</td><td><span title="{http://touchstone.aegis.net/touchstone/fhir/testing/CodeSystem/codesystem-testscript-operation-codes get}">GET</span></td><td>Retrieve invalid NDJSON that contains mix of Patient and Person resource types.</td><td>ndjson</td><td>1</td><td>true</td><td>${outputBaseUrl}/2/patient-person-mix.ndjson</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>Operator</b></td><td><b>ResponseCode</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>Confirm that the returned HTTP status is 200.</td><td>response</td><td>equals</td><td>200</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>Resource</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>&lt;resource value="Patient"/&gt;</td><td>response</td><td>Patient</td><td>false</td></tr></table></blockquote></blockquote><blockquote><p><b>test</b></p><p><b>name</b>: AssertResourceCount</p><p><b>description</b>: Demonstrates resource-count assertions (only works with NDJSON responses).</p><blockquote><p><b>action</b></p><h3>Operations</h3><table class="grid"><tr><td>-</td><td><b>Type</b></td><td><b>Description</b></td><td><b>Accept</b></td><td><b>Destination</b></td><td><b>EncodeRequestUrl</b></td><td><b>Url</b></td></tr><tr><td>*</td><td><span title="{http://touchstone.aegis.net/touchstone/fhir/testing/CodeSystem/codesystem-testscript-operation-codes get}">GET</span></td><td>Retrieve NDJSON response that contains 5 Patient resources.</td><td>ndjson</td><td>1</td><td>true</td><td>${outputBaseUrl}/1/Patient.ndjson</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>Operator</b></td><td><b>ResponseCode</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>Confirm that the returned HTTP status is 200.</td><td>response</td><td>equals</td><td>200</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Description</b></td><td><b>Direction</b></td><td><b>Operator</b></td><td><b>Path</b></td><td><b>Value</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td>&lt;path value="resource-count"/&gt;  &lt;operator value="equals"/&gt;  &lt;value value="5"/&gt;</td><td>response</td><td>equals</td><td>resource-count</td><td>5</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>Operator</b></td><td><b>Path</b></td><td><b>Value</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>&lt;path value="resource-count"/&gt;  &lt;operator value="equals"/&gt;  &lt;value value="6"/&gt;</td><td>response</td><td>equals</td><td>resource-count</td><td>6</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>Operator</b></td><td><b>Path</b></td><td><b>Value</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>&lt;path value="resource-count"/&gt;  &lt;operator value="greaterThan"/&gt;  &lt;value value="4"/&gt;</td><td>response</td><td>greaterThan</td><td>resource-count</td><td>4</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>Operator</b></td><td><b>Path</b></td><td><b>Value</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>&lt;path value="{generalPractitioner}resource-count"/&gt;  &lt;operator value="greaterThan"/&gt;  &lt;value value="4"/&gt;</td><td>response</td><td>greaterThan</td><td>{generalPractitioner}resource-count</td><td>4</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>Operator</b></td><td><b>Path</b></td><td><b>Value</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>&lt;path value="{generalPractitioner[?(@.reference=='Practitioner/4')]}resource-count"/&gt;  &lt;operator value="greaterThan"/&gt;  &lt;value value="4"/&gt;</td><td>response</td><td>greaterThan</td><td>{generalPractitioner[?(@.reference=='Practitioner/4')]}resource-count</td><td>4</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>Operator</b></td><td><b>Path</b></td><td><b>Value</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>&lt;path value="{generalPractitioner[?(@.reference=='Practitioner/4')]}resource-count"/&gt;  &lt;operator value="equals"/&gt;  &lt;value value="1"/&gt;</td><td>response</td><td>equals</td><td>{generalPractitioner[?(@.reference=='Practitioner/4')]}resource-count</td><td>1</td><td>false</td></tr></table></blockquote></blockquote><blockquote><p><b>test</b></p><p><b>name</b>: AssertPath</p><p><b>description</b>: Demonstrates path assertions.</p><blockquote><p><b>action</b></p><h3>Operations</h3><table class="grid"><tr><td>-</td><td><b>Type</b></td><td><b>Description</b></td><td><b>Accept</b></td><td><b>Destination</b></td><td><b>EncodeRequestUrl</b></td><td><b>Url</b></td></tr><tr><td>*</td><td><span title="{http://touchstone.aegis.net/touchstone/fhir/testing/CodeSystem/codesystem-testscript-operation-codes get}">GET</span></td><td>Retrieve NDJSON response that contains 5 Patient resources.</td><td>ndjson</td><td>1</td><td>true</td><td>${outputBaseUrl}/1/Patient.ndjson</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>Operator</b></td><td><b>ResponseCode</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>Confirm that the returned HTTP status is 200.</td><td>response</td><td>equals</td><td>200</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>Operator</b></td><td><b>Path</b></td><td><b>Value</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>&lt;path value="generalPractitioner.reference"/&gt;  &lt;operator value="contains"/&gt;  &lt;value value="Practitioner/"/&gt;</td><td>response</td><td>contains</td><td>generalPractitioner.reference</td><td>Practitioner/</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>Operator</b></td><td><b>Path</b></td><td><b>Value</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>&lt;path value="generalPractitioner.reference"/&gt;  &lt;operator value="equals"/&gt;  &lt;value value="Practitioner/2"/&gt;</td><td>response</td><td>equals</td><td>generalPractitioner.reference</td><td>Practitioner/2</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>Operator</b></td><td><b>Path</b></td><td><b>Value</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>&lt;path value="{any}generalPractitioner.reference"/&gt;  &lt;operator value="equals"/&gt;  &lt;value value="Practitioner/2"/&gt;</td><td>response</td><td>equals</td><td>{any}generalPractitioner.reference</td><td>Practitioner/2</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>Operator</b></td><td><b>Path</b></td><td><b>Value</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>&lt;path value="{2}generalPractitioner.reference"/&gt;  &lt;operator value="equals"/&gt;  &lt;value value="Practitioner/2"/&gt;</td><td>response</td><td>equals</td><td>{2}generalPractitioner.reference</td><td>Practitioner/2</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>Operator</b></td><td><b>Path</b></td><td><b>Value</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>&lt;path value="{3}generalPractitioner.reference"/&gt;  &lt;operator value="equals"/&gt;  &lt;value value="Practitioner/2"/&gt;</td><td>response</td><td>equals</td><td>{3}generalPractitioner.reference</td><td>Practitioner/2</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>Operator</b></td><td><b>Path</b></td><td><b>Value</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>&lt;path value="{2-5}generalPractitioner.reference"/&gt;  &lt;operator value="contains"/&gt;  &lt;value value="Practitioner/"/&gt;</td><td>response</td><td>contains</td><td>{2-5}generalPractitioner.reference</td><td>Practitioner/</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>Operator</b></td><td><b>Path</b></td><td><b>Value</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>&lt;path value="{2-100}generalPractitioner.reference"/&gt;  &lt;operator value="contains"/&gt;  &lt;value value="Practitioner/"/&gt;</td><td>response</td><td>contains</td><td>{2-100}generalPractitioner.reference</td><td>Practitioner/</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>Operator</b></td><td><b>Path</b></td><td><b>Value</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>&lt;path value="{6-100}generalPractitioner.reference"/&gt;  &lt;operator value="contains"/&gt;  &lt;value value="Practitioner/"/&gt;</td><td>response</td><td>contains</td><td>{6-100}generalPractitioner.reference</td><td>Practitioner/</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>Operator</b></td><td><b>Path</b></td><td><b>Value</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>&lt;path value="{generalPractitioner[?(@.reference=='Practitioner/3')]}name.family"/&gt;  &lt;operator value="equals"/&gt;  &lt;value value="Allen"/&gt;</td><td>response</td><td>equals</td><td>{generalPractitioner[?(@.reference=='Practitioner/3')]}name.family</td><td>Allen</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>Operator</b></td><td><b>Path</b></td><td><b>Value</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>&lt;path value="{generalPractitioner[?(@.reference=='Practitioner/3')]}name.family"/&gt;  &lt;operator value="equals"/&gt;  &lt;value value="Gracia"/&gt;</td><td>response</td><td>equals</td><td>{generalPractitioner[?(@.reference=='Practitioner/3')]}name.family</td><td>Gracia</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>Operator</b></td><td><b>Path</b></td><td><b>Value</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>&lt;path value="{generalPractitioner}name.family"/&gt;  &lt;operator value="in"/&gt;  &lt;value value="Gracia,McKay,Allen,Williams,Hill"/&gt;</td><td>response</td><td>in</td><td>{generalPractitioner}name.family</td><td>Gracia,McKay,Allen,Williams,Hill</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>Operator</b></td><td><b>Path</b></td><td><b>Value</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>&lt;path value="{generalPractitioner}name.family"/&gt;  &lt;operator value="in"/&gt;  &lt;value value="a,b,c,d,e"/&gt;</td><td>response</td><td>in</td><td>{generalPractitioner}name.family</td><td>a,b,c,d,e</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>Operator</b></td><td><b>Path</b></td><td><b>Value</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>&lt;path value="{generalPractitioner}name.family"/&gt;  &lt;operator value="in"/&gt;  &lt;value value="a,b,Allen,d,e"/&gt;</td><td>response</td><td>in</td><td>{generalPractitioner}name.family</td><td>a,b,Allen,d,e</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>Operator</b></td><td><b>Path</b></td><td><b>Value</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>&lt;path value="{any|generalPractitioner}name.family"/&gt;  &lt;operator value="in"/&gt;  &lt;value value="a,b,Allen,d,e"/&gt;</td><td>response</td><td>in</td><td>{any|generalPractitioner}name.family</td><td>a,b,Allen,d,e</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>Operator</b></td><td><b>Path</b></td><td><b>Value</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>&lt;path value="{any|generalPractiXXXXXXXXXXXXXioner}name.family"/&gt;  &lt;operator value="in"/&gt;  &lt;value value="a,b,Allen,d,e"/&gt;</td><td>response</td><td>in</td><td>{any|generalPractiXXXXXXXXXXXXXioner}name.family</td><td>a,b,Allen,d,e</td><td>false</td></tr></table></blockquote></blockquote><blockquote><p><b>test</b></p><p><b>name</b>: AssertFhirPath</p><p><b>description</b>: Demonstrates expression assertions.</p><blockquote><p><b>action</b></p><h3>Operations</h3><table class="grid"><tr><td>-</td><td><b>Type</b></td><td><b>Description</b></td><td><b>Accept</b></td><td><b>Destination</b></td><td><b>EncodeRequestUrl</b></td><td><b>Url</b></td></tr><tr><td>*</td><td><span title="{http://touchstone.aegis.net/touchstone/fhir/testing/CodeSystem/codesystem-testscript-operation-codes get}">GET</span></td><td>Retrieve NDJSON response that contains 5 Patient resources.</td><td>ndjson</td><td>1</td><td>true</td><td>${outputBaseUrl}/1/Patient.ndjson</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>Operator</b></td><td><b>ResponseCode</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>Confirm that the returned HTTP status is 200.</td><td>response</td><td>equals</td><td>200</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>Expression</b></td><td><b>Operator</b></td><td><b>Value</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>&lt;expression value="Patient.name.family"/&gt;  &lt;operator value="in"/&gt;  &lt;value value="Allen,Gracia"/&gt;</td><td>response</td><td>Patient.name.family</td><td>in</td><td>Allen,Gracia</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>Expression</b></td><td><b>Operator</b></td><td><b>Value</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>&lt;expression value="{any}Patient.name.family"/&gt;  &lt;operator value="in"/&gt;  &lt;value value="Allen,Gracia"/&gt;</td><td>response</td><td>{any}Patient.name.family</td><td>in</td><td>Allen,Gracia</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>Expression</b></td><td><b>Operator</b></td><td><b>Value</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>&lt;expression value="{all}Patient.name.family"/&gt;  &lt;operator value="equals"/&gt;  &lt;value value="Allen"/&gt;</td><td>response</td><td>{all}Patient.name.family</td><td>equals</td><td>Allen</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>Expression</b></td><td><b>Operator</b></td><td><b>Value</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>&lt;expression value="{1-3}Patient.name.family"/&gt;  &lt;operator value="in"/&gt;  &lt;value value="McKay,Gracia,Allen"/&gt;</td><td>response</td><td>{1-3}Patient.name.family</td><td>in</td><td>McKay,Gracia,Allen</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>Expression</b></td><td><b>Operator</b></td><td><b>Value</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>&lt;expression value="{1-100}Patient.name.family"/&gt;  &lt;operator value="in"/&gt;  &lt;value value="McKay,Gracia,Allen"/&gt;</td><td>response</td><td>{1-100}Patient.name.family</td><td>in</td><td>McKay,Gracia,Allen</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>Expression</b></td><td><b>Operator</b></td><td><b>Value</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>&lt;expression value="Patient.name.given"/&gt;  &lt;operator value="in"/&gt;  &lt;value value="Joshua,P"/&gt;</td><td>response</td><td>Patient.name.given</td><td>in</td><td>Joshua,P</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>Expression</b></td><td><b>Operator</b></td><td><b>Value</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>&lt;expression value="{any}Patient.name.given"/&gt;  &lt;operator value="equals"/&gt;  &lt;value value="George"/&gt;</td><td>response</td><td>{any}Patient.name.given</td><td>equals</td><td>George</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>Expression</b></td><td><b>Operator</b></td><td><b>Value</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>&lt;expression value="{1-3}Patient.name.given"/&gt;  &lt;operator value="in"/&gt;  &lt;value value="Brian,Q,George,Carol,G"/&gt;</td><td>response</td><td>{1-3}Patient.name.given</td><td>in</td><td>Brian,Q,George,Carol,G</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>Expression</b></td><td><b>Operator</b></td><td><b>Value</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>&lt;expression value="{1-100}Patient.name.given"/&gt;  &lt;operator value="in"/&gt;  &lt;value value="Brian,Q,George,Carol,G"/&gt;</td><td>response</td><td>{1-100}Patient.name.given</td><td>in</td><td>Brian,Q,George,Carol,G</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>Expression</b></td><td><b>Operator</b></td><td><b>Value</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>&lt;expression value="{1-100}Patient.name.given"/&gt;  &lt;operator value="in"/&gt;  &lt;value value="Brian,Q,George,Carol,G,Joshua,H,P"/&gt;</td><td>response</td><td>{1-100}Patient.name.given</td><td>in</td><td>Brian,Q,George,Carol,G,Joshua,H,P</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>Expression</b></td><td><b>Operator</b></td><td><b>Value</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>&lt;expression value="{.name[?(@.family=='Allen')]}Patient.name.given"/&gt;  &lt;operator value="in"/&gt;  &lt;value value="Carol,G"/&gt;</td><td>response</td><td>{.name[?(@.family=='Allen')]}Patient.name.given</td><td>in</td><td>Carol,G</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>Expression</b></td><td><b>Operator</b></td><td><b>Value</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>&lt;expression value="{.name[?(@.family=='McKay')]}Patient.name.given"/&gt;  &lt;operator value="equals"/&gt;  &lt;value value="George"/&gt;</td><td>response</td><td>{.name[?(@.family=='McKay')]}Patient.name.given</td><td>equals</td><td>George</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>Expression</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>&lt;expression value="Patient.name.where(family='Gracia')"/&gt;</td><td>response</td><td>Patient.name.where(family='Gracia')</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>Expression</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>&lt;expression value="{any}Patient.name.where(family='Gracia')"/&gt;</td><td>response</td><td>{any}Patient.name.where(family='Gracia')</td><td>false</td></tr></table></blockquote></blockquote><blockquote><p><b>test</b></p><p><b>name</b>: AssertProfileValidation</p><p><b>description</b>: Demonstrates validateProfileId assertions.</p><blockquote><p><b>action</b></p><h3>Operations</h3><table class="grid"><tr><td>-</td><td><b>Type</b></td><td><b>Description</b></td><td><b>Accept</b></td><td><b>Destination</b></td><td><b>EncodeRequestUrl</b></td><td><b>Url</b></td></tr><tr><td>*</td><td><span title="{http://touchstone.aegis.net/touchstone/fhir/testing/CodeSystem/codesystem-testscript-operation-codes get}">GET</span></td><td>Retrieve NDJSON response that contains 5 Patient resources. Some of the resources are invalid (will fail AEGIS Validator validation)</td><td>ndjson</td><td>1</td><td>true</td><td>${outputBaseUrl}/3/patient-some-invalid.ndjson</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>Operator</b></td><td><b>ResponseCode</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>Confirm that the returned HTTP status is 200.</td><td>response</td><td>equals</td><td>200</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>ValidateProfileId</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>Validate that the returned resource conforms to the corresponding FHIR resource profile.</td><td>response</td><td>resource-profile</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>ValidateProfileId</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>Validate that the returned resource conforms to the corresponding FHIR resource profile.</td><td>response</td><td>resource-profile-for-any</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>ValidateProfileId</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>Validate that the returned resource conforms to the corresponding FHIR resource profile.</td><td>response</td><td>resource-profile-for-first</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td>-</td><td><b>Extension</b></td><td><b>Description</b></td><td><b>Direction</b></td><td><b>ValidateProfileId</b></td><td><b>WarningOnly</b></td></tr><tr><td>*</td><td></td><td>Validate that the returned resource conforms to the corresponding FHIR resource profile.</td><td>response</td><td>resource-profile-for-Gracia</td><td>false</td></tr></table></blockquote></blockquote></div>
  </text>
  <url
       value="http://touchstone.aegis.net/touchstone/fhir/testing/TestScript/ndjson-assertion-prefix"/>
  <version value="1.4.0"/>
  <name value="NDJSONAssertionPrefixSyntax"/>
  <title value="Demonstrate NDJSON Assertion Prefix Syntax"/>
  <status value="active"/>
  <date value="2020-12-06"/>
  <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="Demonstrate NDJSON Assertion Prefix Syntax"/>
  <jurisdiction>
    <coding>
      <system value="urn:iso:std:iso:3166"/>
      <code value="US"/>
      <display value="United States of America"/>
    </coding>
  </jurisdiction>
  <copyright value="(c) AEGIS.net, Inc. 2015+"/>
  <destination id="Server">
    <index value="1"/>
    <profile>
      <system
              value="http://terminology.hl7.org/CodeSystem/testscript-profile-destination-types"/>
      <code value="FHIR-Server"/>
    </profile>
  </destination>
  <profile id="resource-profile">
    <reference value="http://hl7.org/fhir/StructureDefinition/Patient"/>
  </profile>
  <profile id="resource-profile-for-any">
    <reference value="{any}http://hl7.org/fhir/StructureDefinition/Patient"/>
  </profile>
  <profile id="resource-profile-for-first">
    <reference value="{1}http://hl7.org/fhir/StructureDefinition/Patient"/>
  </profile>
  <profile id="resource-profile-for-Gracia">
    <reference
               value="{.name[?(@.family==&#39;Gracia&#39;)]}http://hl7.org/fhir/StructureDefinition/Patient"/>
  </profile>
  <variable>
    <name value="outputBaseUrl"/>
    <defaultValue value="http://localhost:33000/bulk-api/output"/>
  </variable>
  <test id="AssertContentTypeResourceAndValidation">
    <name value="AssertContentTypeResourceAndValidation"/>
    <description
                 value="Demonstrates contentType, resource and validateProfile assertions with no filters."/>
    <action>
      <operation>
        <type>
          <system
                  value="http://touchstone.aegis.net/touchstone/fhir/testing/CodeSystem/codesystem-testscript-operation-codes"/>
          <code value="get"/>
        </type>
        <description value="Request BulkData"/>
        <accept value="ndjson"/>
        <destination value="1"/>
        <encodeRequestUrl value="true"/>
        <url value="${outputBaseUrl}/1/Patient.ndjson"/>
      </operation>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description
                     value="Confirm that the client requested an Accept of the FHIR JSON mime type &#39;application/fhir+json&#39;."/>
        <direction value="request"/>
        <headerField value="Accept"/>
        <operator value="contains"/>
        <value value="ndjson"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description value="Confirm that the returned HTTP status is 200."/>
        <direction value="response"/>
        <operator value="equals"/>
        <responseCode value="200"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <direction value="response"/>
        <contentType value="ndjson"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <direction value="response"/>
        <resource value="Patient"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description
                     value="Validate that the returned resource conforms to the corresponding FHIR resource profile."/>
        <direction value="response"/>
        <validateProfileId value="resource-profile"/>
        <warningOnly value="false"/>
      </assert>
    </action>
  </test>
  <test id="AssertResourceType">
    <name value="AssertResourceType"/>
    <description value="Demonstrates resource assertions."/>
    <action>
      <operation>
        <type>
          <system
                  value="http://touchstone.aegis.net/touchstone/fhir/testing/CodeSystem/codesystem-testscript-operation-codes"/>
          <code value="get"/>
        </type>
        <description
                     value="Retrieve invalid NDJSON that contains mix of Patient and Person resource types."/>
        <accept value="ndjson"/>
        <destination value="1"/>
        <encodeRequestUrl value="true"/>
        <url value="${outputBaseUrl}/2/patient-person-mix.ndjson"/>
      </operation>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description value="Confirm that the returned HTTP status is 200."/>
        <direction value="response"/>
        <operator value="equals"/>
        <responseCode value="200"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description value="&lt;resource value=&quot;Patient&quot;/&gt;"/>
        <direction value="response"/>
        <resource value="Patient"/>
        <warningOnly value="false"/>
      </assert>
    </action>
  </test>
  <test id="AssertResourceCount">
    <name value="AssertResourceCount"/>
    <description
                 value="Demonstrates resource-count assertions (only works with NDJSON responses)."/>
    <action>
      <operation>
        <type>
          <system
                  value="http://touchstone.aegis.net/touchstone/fhir/testing/CodeSystem/codesystem-testscript-operation-codes"/>
          <code value="get"/>
        </type>
        <description
                     value="Retrieve NDJSON response that contains 5 Patient resources."/>
        <accept value="ndjson"/>
        <destination value="1"/>
        <encodeRequestUrl value="true"/>
        <url value="${outputBaseUrl}/1/Patient.ndjson"/>
      </operation>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description value="Confirm that the returned HTTP status is 200."/>
        <direction value="response"/>
        <operator value="equals"/>
        <responseCode value="200"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <description
                     value="&lt;path value=&quot;resource-count&quot;/&gt;  &lt;operator value=&quot;equals&quot;/&gt;  &lt;value value=&quot;5&quot;/&gt;"/>
        <direction value="response"/>
        <operator value="equals"/>
        <path value="resource-count"/>
        <value value="5"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description
                     value="&lt;path value=&quot;resource-count&quot;/&gt;  &lt;operator value=&quot;equals&quot;/&gt;  &lt;value value=&quot;6&quot;/&gt;"/>
        <direction value="response"/>
        <operator value="equals"/>
        <path value="resource-count"/>
        <value value="6"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description
                     value="&lt;path value=&quot;resource-count&quot;/&gt;  &lt;operator value=&quot;greaterThan&quot;/&gt;  &lt;value value=&quot;4&quot;/&gt;"/>
        <direction value="response"/>
        <operator value="greaterThan"/>
        <path value="resource-count"/>
        <value value="4"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description
                     value="&lt;path value=&quot;{generalPractitioner}resource-count&quot;/&gt;  &lt;operator value=&quot;greaterThan&quot;/&gt;  &lt;value value=&quot;4&quot;/&gt;"/>
        <direction value="response"/>
        <operator value="greaterThan"/>
        <path value="{generalPractitioner}resource-count"/>
        <value value="4"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description
                     value="&lt;path value=&quot;{generalPractitioner[?(@.reference==&#39;Practitioner/4&#39;)]}resource-count&quot;/&gt;  &lt;operator value=&quot;greaterThan&quot;/&gt;  &lt;value value=&quot;4&quot;/&gt;"/>
        <direction value="response"/>
        <operator value="greaterThan"/>
        <path
              value="{generalPractitioner[?(@.reference==&#39;Practitioner/4&#39;)]}resource-count"/>
        <value value="4"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description
                     value="&lt;path value=&quot;{generalPractitioner[?(@.reference==&#39;Practitioner/4&#39;)]}resource-count&quot;/&gt;  &lt;operator value=&quot;equals&quot;/&gt;  &lt;value value=&quot;1&quot;/&gt;"/>
        <direction value="response"/>
        <operator value="equals"/>
        <path
              value="{generalPractitioner[?(@.reference==&#39;Practitioner/4&#39;)]}resource-count"/>
        <value value="1"/>
        <warningOnly value="false"/>
      </assert>
    </action>
  </test>
  <test id="AssertPath">
    <name value="AssertPath"/>
    <description value="Demonstrates path assertions."/>
    <action>
      <operation>
        <type>
          <system
                  value="http://touchstone.aegis.net/touchstone/fhir/testing/CodeSystem/codesystem-testscript-operation-codes"/>
          <code value="get"/>
        </type>
        <description
                     value="Retrieve NDJSON response that contains 5 Patient resources."/>
        <accept value="ndjson"/>
        <destination value="1"/>
        <encodeRequestUrl value="true"/>
        <url value="${outputBaseUrl}/1/Patient.ndjson"/>
      </operation>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description value="Confirm that the returned HTTP status is 200."/>
        <direction value="response"/>
        <operator value="equals"/>
        <responseCode value="200"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description
                     value="&lt;path value=&quot;generalPractitioner.reference&quot;/&gt;  &lt;operator value=&quot;contains&quot;/&gt;  &lt;value value=&quot;Practitioner/&quot;/&gt;"/>
        <direction value="response"/>
        <operator value="contains"/>
        <path value="generalPractitioner.reference"/>
        <value value="Practitioner/"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description
                     value="&lt;path value=&quot;generalPractitioner.reference&quot;/&gt;  &lt;operator value=&quot;equals&quot;/&gt;  &lt;value value=&quot;Practitioner/2&quot;/&gt;"/>
        <direction value="response"/>
        <operator value="equals"/>
        <path value="generalPractitioner.reference"/>
        <value value="Practitioner/2"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description
                     value="&lt;path value=&quot;{any}generalPractitioner.reference&quot;/&gt;  &lt;operator value=&quot;equals&quot;/&gt;  &lt;value value=&quot;Practitioner/2&quot;/&gt;"/>
        <direction value="response"/>
        <operator value="equals"/>
        <path value="{any}generalPractitioner.reference"/>
        <value value="Practitioner/2"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description
                     value="&lt;path value=&quot;{2}generalPractitioner.reference&quot;/&gt;  &lt;operator value=&quot;equals&quot;/&gt;  &lt;value value=&quot;Practitioner/2&quot;/&gt;"/>
        <direction value="response"/>
        <operator value="equals"/>
        <path value="{2}generalPractitioner.reference"/>
        <value value="Practitioner/2"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description
                     value="&lt;path value=&quot;{3}generalPractitioner.reference&quot;/&gt;  &lt;operator value=&quot;equals&quot;/&gt;  &lt;value value=&quot;Practitioner/2&quot;/&gt;"/>
        <direction value="response"/>
        <operator value="equals"/>
        <path value="{3}generalPractitioner.reference"/>
        <value value="Practitioner/2"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description
                     value="&lt;path value=&quot;{2-5}generalPractitioner.reference&quot;/&gt;  &lt;operator value=&quot;contains&quot;/&gt;  &lt;value value=&quot;Practitioner/&quot;/&gt;"/>
        <direction value="response"/>
        <operator value="contains"/>
        <path value="{2-5}generalPractitioner.reference"/>
        <value value="Practitioner/"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description
                     value="&lt;path value=&quot;{2-100}generalPractitioner.reference&quot;/&gt;  &lt;operator value=&quot;contains&quot;/&gt;  &lt;value value=&quot;Practitioner/&quot;/&gt;"/>
        <direction value="response"/>
        <operator value="contains"/>
        <path value="{2-100}generalPractitioner.reference"/>
        <value value="Practitioner/"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description
                     value="&lt;path value=&quot;{6-100}generalPractitioner.reference&quot;/&gt;  &lt;operator value=&quot;contains&quot;/&gt;  &lt;value value=&quot;Practitioner/&quot;/&gt;"/>
        <direction value="response"/>
        <operator value="contains"/>
        <path value="{6-100}generalPractitioner.reference"/>
        <value value="Practitioner/"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description
                     value="&lt;path value=&quot;{generalPractitioner[?(@.reference==&#39;Practitioner/3&#39;)]}name.family&quot;/&gt;  &lt;operator value=&quot;equals&quot;/&gt;  &lt;value value=&quot;Allen&quot;/&gt;"/>
        <direction value="response"/>
        <operator value="equals"/>
        <path
              value="{generalPractitioner[?(@.reference==&#39;Practitioner/3&#39;)]}name.family"/>
        <value value="Allen"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description
                     value="&lt;path value=&quot;{generalPractitioner[?(@.reference==&#39;Practitioner/3&#39;)]}name.family&quot;/&gt;  &lt;operator value=&quot;equals&quot;/&gt;  &lt;value value=&quot;Gracia&quot;/&gt;"/>
        <direction value="response"/>
        <operator value="equals"/>
        <path
              value="{generalPractitioner[?(@.reference==&#39;Practitioner/3&#39;)]}name.family"/>
        <value value="Gracia"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description
                     value="&lt;path value=&quot;{generalPractitioner}name.family&quot;/&gt;  &lt;operator value=&quot;in&quot;/&gt;  &lt;value value=&quot;Gracia,McKay,Allen,Williams,Hill&quot;/&gt;"/>
        <direction value="response"/>
        <operator value="in"/>
        <path value="{generalPractitioner}name.family"/>
        <value value="Gracia,McKay,Allen,Williams,Hill"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description
                     value="&lt;path value=&quot;{generalPractitioner}name.family&quot;/&gt;  &lt;operator value=&quot;in&quot;/&gt;  &lt;value value=&quot;a,b,c,d,e&quot;/&gt;"/>
        <direction value="response"/>
        <operator value="in"/>
        <path value="{generalPractitioner}name.family"/>
        <value value="a,b,c,d,e"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description
                     value="&lt;path value=&quot;{generalPractitioner}name.family&quot;/&gt;  &lt;operator value=&quot;in&quot;/&gt;  &lt;value value=&quot;a,b,Allen,d,e&quot;/&gt;"/>
        <direction value="response"/>
        <operator value="in"/>
        <path value="{generalPractitioner}name.family"/>
        <value value="a,b,Allen,d,e"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description
                     value="&lt;path value=&quot;{any|generalPractitioner}name.family&quot;/&gt;  &lt;operator value=&quot;in&quot;/&gt;  &lt;value value=&quot;a,b,Allen,d,e&quot;/&gt;"/>
        <direction value="response"/>
        <operator value="in"/>
        <path value="{any|generalPractitioner}name.family"/>
        <value value="a,b,Allen,d,e"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description
                     value="&lt;path value=&quot;{any|generalPractiXXXXXXXXXXXXXioner}name.family&quot;/&gt;  &lt;operator value=&quot;in&quot;/&gt;  &lt;value value=&quot;a,b,Allen,d,e&quot;/&gt;"/>
        <direction value="response"/>
        <operator value="in"/>
        <path value="{any|generalPractiXXXXXXXXXXXXXioner}name.family"/>
        <value value="a,b,Allen,d,e"/>
        <warningOnly value="false"/>
      </assert>
    </action>
  </test>
  <test id="AssertFhirPath">
    <name value="AssertFhirPath"/>
    <description value="Demonstrates expression assertions."/>
    <action>
      <operation>
        <type>
          <system
                  value="http://touchstone.aegis.net/touchstone/fhir/testing/CodeSystem/codesystem-testscript-operation-codes"/>
          <code value="get"/>
        </type>
        <description
                     value="Retrieve NDJSON response that contains 5 Patient resources."/>
        <accept value="ndjson"/>
        <destination value="1"/>
        <encodeRequestUrl value="true"/>
        <url value="${outputBaseUrl}/1/Patient.ndjson"/>
      </operation>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description value="Confirm that the returned HTTP status is 200."/>
        <direction value="response"/>
        <operator value="equals"/>
        <responseCode value="200"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description
                     value="&lt;expression value=&quot;Patient.name.family&quot;/&gt;  &lt;operator value=&quot;in&quot;/&gt;  &lt;value value=&quot;Allen,Gracia&quot;/&gt;"/>
        <direction value="response"/>
        <expression value="Patient.name.family"/>
        <operator value="in"/>
        <value value="Allen,Gracia"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description
                     value="&lt;expression value=&quot;{any}Patient.name.family&quot;/&gt;  &lt;operator value=&quot;in&quot;/&gt;  &lt;value value=&quot;Allen,Gracia&quot;/&gt;"/>
        <direction value="response"/>
        <expression value="{any}Patient.name.family"/>
        <operator value="in"/>
        <value value="Allen,Gracia"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description
                     value="&lt;expression value=&quot;{all}Patient.name.family&quot;/&gt;  &lt;operator value=&quot;equals&quot;/&gt;  &lt;value value=&quot;Allen&quot;/&gt;"/>
        <direction value="response"/>
        <expression value="{all}Patient.name.family"/>
        <operator value="equals"/>
        <value value="Allen"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description
                     value="&lt;expression value=&quot;{1-3}Patient.name.family&quot;/&gt;  &lt;operator value=&quot;in&quot;/&gt;  &lt;value value=&quot;McKay,Gracia,Allen&quot;/&gt;"/>
        <direction value="response"/>
        <expression value="{1-3}Patient.name.family"/>
        <operator value="in"/>
        <value value="McKay,Gracia,Allen"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description
                     value="&lt;expression value=&quot;{1-100}Patient.name.family&quot;/&gt;  &lt;operator value=&quot;in&quot;/&gt;  &lt;value value=&quot;McKay,Gracia,Allen&quot;/&gt;"/>
        <direction value="response"/>
        <expression value="{1-100}Patient.name.family"/>
        <operator value="in"/>
        <value value="McKay,Gracia,Allen"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description
                     value="&lt;expression value=&quot;Patient.name.given&quot;/&gt;  &lt;operator value=&quot;in&quot;/&gt;  &lt;value value=&quot;Joshua,P&quot;/&gt;"/>
        <direction value="response"/>
        <expression value="Patient.name.given"/>
        <operator value="in"/>
        <value value="Joshua,P"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description
                     value="&lt;expression value=&quot;{any}Patient.name.given&quot;/&gt;  &lt;operator value=&quot;equals&quot;/&gt;  &lt;value value=&quot;George&quot;/&gt;"/>
        <direction value="response"/>
        <expression value="{any}Patient.name.given"/>
        <operator value="equals"/>
        <value value="George"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description
                     value="&lt;expression value=&quot;{1-3}Patient.name.given&quot;/&gt;  &lt;operator value=&quot;in&quot;/&gt;  &lt;value value=&quot;Brian,Q,George,Carol,G&quot;/&gt;"/>
        <direction value="response"/>
        <expression value="{1-3}Patient.name.given"/>
        <operator value="in"/>
        <value value="Brian,Q,George,Carol,G"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description
                     value="&lt;expression value=&quot;{1-100}Patient.name.given&quot;/&gt;  &lt;operator value=&quot;in&quot;/&gt;  &lt;value value=&quot;Brian,Q,George,Carol,G&quot;/&gt;"/>
        <direction value="response"/>
        <expression value="{1-100}Patient.name.given"/>
        <operator value="in"/>
        <value value="Brian,Q,George,Carol,G"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description
                     value="&lt;expression value=&quot;{1-100}Patient.name.given&quot;/&gt;  &lt;operator value=&quot;in&quot;/&gt;  &lt;value value=&quot;Brian,Q,George,Carol,G,Joshua,H,P&quot;/&gt;"/>
        <direction value="response"/>
        <expression value="{1-100}Patient.name.given"/>
        <operator value="in"/>
        <value value="Brian,Q,George,Carol,G,Joshua,H,P"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description
                     value="&lt;expression value=&quot;{.name[?(@.family==&#39;Allen&#39;)]}Patient.name.given&quot;/&gt;  &lt;operator value=&quot;in&quot;/&gt;  &lt;value value=&quot;Carol,G&quot;/&gt;"/>
        <direction value="response"/>
        <expression
                    value="{.name[?(@.family==&#39;Allen&#39;)]}Patient.name.given"/>
        <operator value="in"/>
        <value value="Carol,G"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description
                     value="&lt;expression value=&quot;{.name[?(@.family==&#39;McKay&#39;)]}Patient.name.given&quot;/&gt;  &lt;operator value=&quot;equals&quot;/&gt;  &lt;value value=&quot;George&quot;/&gt;"/>
        <direction value="response"/>
        <expression
                    value="{.name[?(@.family==&#39;McKay&#39;)]}Patient.name.given"/>
        <operator value="equals"/>
        <value value="George"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description
                     value="&lt;expression value=&quot;Patient.name.where(family=&#39;Gracia&#39;)&quot;/&gt;"/>
        <direction value="response"/>
        <expression value="Patient.name.where(family=&#39;Gracia&#39;)"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description
                     value="&lt;expression value=&quot;{any}Patient.name.where(family=&#39;Gracia&#39;)&quot;/&gt;"/>
        <direction value="response"/>
        <expression value="{any}Patient.name.where(family=&#39;Gracia&#39;)"/>
        <warningOnly value="false"/>
      </assert>
    </action>
  </test>
  <test id="AssertProfileValidation">
    <name value="AssertProfileValidation"/>
    <description value="Demonstrates validateProfileId assertions."/>
    <action>
      <operation>
        <type>
          <system
                  value="http://touchstone.aegis.net/touchstone/fhir/testing/CodeSystem/codesystem-testscript-operation-codes"/>
          <code value="get"/>
        </type>
        <description
                     value="Retrieve NDJSON response that contains 5 Patient resources. Some of the resources are invalid (will fail AEGIS Validator validation)"/>
        <accept value="ndjson"/>
        <destination value="1"/>
        <encodeRequestUrl value="true"/>
        <url value="${outputBaseUrl}/3/patient-some-invalid.ndjson"/>
      </operation>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description value="Confirm that the returned HTTP status is 200."/>
        <direction value="response"/>
        <operator value="equals"/>
        <responseCode value="200"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description
                     value="Validate that the returned resource conforms to the corresponding FHIR resource profile."/>
        <direction value="response"/>
        <validateProfileId value="resource-profile"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description
                     value="Validate that the returned resource conforms to the corresponding FHIR resource profile."/>
        <direction value="response"/>
        <validateProfileId value="resource-profile-for-any"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description
                     value="Validate that the returned resource conforms to the corresponding FHIR resource profile."/>
        <direction value="response"/>
        <validateProfileId value="resource-profile-for-first"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <extension
                   url="http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript-assert-stopTestOnFail">
          <valueBoolean value="false"/>
        </extension>
        <description
                     value="Validate that the returned resource conforms to the corresponding FHIR resource profile."/>
        <direction value="response"/>
        <validateProfileId value="resource-profile-for-Gracia"/>
        <warningOnly value="false"/>
      </assert>
    </action>
  </test>
</TestScript>