FHIR Testing IG
0.1.0-SNAPSHOT - Draft International flag

FHIR Testing IG, published by HL7 International / FHIR Infrastructure. This guide is not an authorized publication; it is the continuous build for version 0.1.0-SNAPSHOT built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/HL7/fhir-testing-ig/ and changes regularly. See the Directory of published versions

: TestScript Example Search

Raw xml | Download


<TestScript xmlns="http://hl7.org/fhir">
  <id value="testscript-example-search"/>
  <language value="en"/>
  <text>
    <status value="generated"/>
    <div xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><p class="res-header-id"><b>Generated Narrative: TestScript testscript-example-search</b></p><a name="testscript-example-search"> </a><a name="hctestscript-example-search"> </a><div style="display: inline-block; background-color: #d9e0e7; padding: 6px; margin: 4px; border: 1px solid #8da1b4; border-radius: 5px; line-height: 60%"><p style="margin-bottom: 0px">Language: en</p></div><p><b>url</b>: <a href="http://hl7.org/fhir/TestScript/testscript-example-search">http://hl7.org/fhir/TestScript/testscript-example-search</a></p><p><b>identifier</b>: <a href="http://terminology.hl7.org/6.5.0/NamingSystem-uri.html" title="As defined by RFC 3986 (http://www.ietf.org/rfc/rfc3986.txt)(with many schemes defined in many RFCs). For OIDs and UUIDs, use the URN form (urn:oid:(note: lowercase) and urn:uuid:). See http://www.ietf.org/rfc/rfc3001.txt and http://www.ietf.org/rfc/rfc4122.txt 

This oid is used as an identifier II.root to indicate the the extension is an absolute URI (technically, an IRI). Typically, this is used for OIDs and GUIDs. Note that when this OID is used with OIDs and GUIDs, the II.extension should start with urn:oid or urn:uuid: 

Note that this OID is created to aid with interconversion between CDA and FHIR - FHIR uses urn:ietf:rfc:3986 as equivalent to this OID. URIs as identifiers appear more commonly in FHIR.

This OID may also be used in CD.codeSystem.">Uniform Resource Identifier (URI)</a>/urn:oid:2.16.840.1.113883.4.642.12.3</p><p><b>version</b>: 1.0</p><p><b>name</b>: TestScriptExampleSearch</p><p><b>title</b>: TestScript Example Search</p><p><b>status</b>: Draft</p><p><b>experimental</b>: true</p><p><b>date</b>: 2017-01-18</p><p><b>publisher</b>: HL7</p><p><b>contact</b>: Support: <a href="mailto:support@HL7.org">support@HL7.org</a></p><p><b>description</b>: </p><div><p>TestScript example resource with simple Patient search test. The read tests will utilize user defined dynamic variables that will hold the Patient search parameter values.</p>
</div><p><b>jurisdiction</b>: <span title="Codes:{urn:iso:std:iso:3166 US}">United States of America</span></p><p><b>purpose</b>: </p><div><p>Patient Search Operation</p>
</div><p><b>copyright</b>: </p><div><p>© HL7.org 2011+</p>
</div><blockquote><p><b>metadata</b></p><h3>Links</h3><table class="grid"><tr><td style="display: none">-</td><td><b>Url</b></td><td><b>Description</b></td></tr><tr><td style="display: none">*</td><td><a href="http://hl7.org/fhir/patient.html">http://hl7.org/fhir/patient.html</a></td><td>Demographics and other administrative information about an individual or animal receiving care or other health-related services.</td></tr></table><h3>Capabilities</h3><table class="grid"><tr><td style="display: none">-</td><td><b>Required</b></td><td><b>Validated</b></td><td><b>Description</b></td><td><b>Link</b></td><td><b>Capabilities</b></td></tr><tr><td style="display: none">*</td><td>true</td><td>false</td><td>Patient Search Operation</td><td><a href="http://hl7.org/fhir/http.html#search">http://hl7.org/fhir/http.html#search</a></td><td><code>http://hl7.org/fhir/CapabilityStatement/example</code></td></tr></table></blockquote><blockquote><p><b>fixture</b></p><blockquote><p><b>id</b></p>fixture-patient-create</blockquote><p><b>autocreate</b>: false</p><p><b>autodelete</b>: false</p><p><b>resource</b>: <a href="Patient/example">Peter Chalmers</a></p></blockquote><p><b>profile</b>: <a href="http://hl7.org/fhir/R5/bundle.html">Bundle</a></p><blockquote><p><b>variable</b></p><p><b>name</b>: PatientCreateLocation</p><p><b>headerField</b>: Location</p><p><b>sourceId</b>: PatientCreateResponse</p></blockquote><blockquote><p><b>variable</b></p><p><b>name</b>: PatientSearchFamilyName</p><p><b>description</b>: Enter patient search criteria for a known family name on the target system</p><p><b>hint</b>: [Family name]</p></blockquote><blockquote><p><b>variable</b></p><p><b>name</b>: PatientSearchGivenName</p><p><b>description</b>: Enter patient search criteria for a known given name on the target system</p><p><b>hint</b>: [Given name]</p></blockquote><blockquote><p><b>variable</b></p><p><b>name</b>: PatientSearchBundleTotal</p><p><b>description</b>: Evaluate the returned Patient searchset Bundle.total value</p><h3>Expressions</h3><table class="grid"><tr><td style="display: none">-</td><td><b>Language</b></td><td><b>Expression</b></td></tr><tr><td style="display: none">*</td><td>text/fhirpath</td><td>Bundle.total.toInteger()</td></tr></table></blockquote><blockquote><p><b>setup</b></p><blockquote><p><b>action</b></p><h3>Operations</h3><table class="grid"><tr><td style="display: none">-</td><td><b>Type</b></td><td><b>Resource</b></td><td><b>Description</b></td><td><b>Accept</b></td><td><b>EncodeRequestUrl</b></td><td><b>Params</b></td></tr><tr><td style="display: none">*</td><td><a href="http://hl7.org/fhir/R5/codesystem-restful-interaction.html#restful-interaction-search">FHIR Restful Interactions: search</a> (search)</td><td><a href="http://hl7.org/fhir/R5/patient.html">http://hl7.org/fhir/StructureDefinition/Patient</a></td><td>Test simple search to verify server support.</td><td>xml</td><td>true</td><td>?family=DONTEXPECTAMATCH&amp;given=DONTEXPECTAMATCH</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td style="display: none">-</td><td><b>Description</b></td><td><b>Direction</b></td><td><b>Operator</b></td><td><b>RequestURL</b></td><td><b>StopTestOnFail</b></td><td><b>WarningOnly</b></td></tr><tr><td style="display: none">*</td><td>Confirm that the request url contains the family search parameter.</td><td>request</td><td>contains</td><td>family</td><td>false</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td style="display: none">-</td><td><b>Description</b></td><td><b>Direction</b></td><td><b>ResponseCode</b></td><td><b>StopTestOnFail</b></td><td><b>WarningOnly</b></td></tr><tr><td style="display: none">*</td><td>Confirm that the returned HTTP status is 200(OK).</td><td>response</td><td>200</td><td>false</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td style="display: none">-</td><td><b>Description</b></td><td><b>Resource</b></td><td><b>StopTestOnFail</b></td><td><b>WarningOnly</b></td></tr><tr><td style="display: none">*</td><td>Confirm that the returned resource type is Bundle.</td><td><a href="http://hl7.org/fhir/R5/bundle.html">http://hl7.org/fhir/StructureDefinition/Bundle</a></td><td>false</td><td>false</td></tr></table></blockquote><blockquote><p><b>action</b></p><h3>Asserts</h3><table class="grid"><tr><td style="display: none">-</td><td><b>Description</b></td><td><b>NavigationLinks</b></td><td><b>StopTestOnFail</b></td><td><b>WarningOnly</b></td></tr><tr><td style="display: none">*</td><td>Confirm that the returned Bundle correctly defines the navigation links.</td><td>true</td><td>false</td><td>false</td></tr></table></blockquote></blockquote><blockquote><p><b>test</b></p><blockquote><p><b>id</b></p>01-PatientCreateSearch</blockquote><p><b>name</b>: Patient Create Search</p><p><b>description</b>: Create a Patient resource and capture the returned HTTP Header Location. Then search for (read) that Patient using the Location URL value and validate the response.</p><blockquote><p><b>action</b></p></blockquote></blockquote><p><b style="color: maroon">Exception Generating Narrative: Unable to resolve content reference http://hl7.org/fhir/StructureDefinition/TestScript#TestScript.setup.action.operation trying to resolve TestScript.test.action.operation </b></p></div>
  </text>
  <url value="http://hl7.org/fhir/TestScript/testscript-example-search"/>
  <identifier>
    <system value="urn:ietf:rfc:3986"/>
    <value value="urn:oid:2.16.840.1.113883.4.642.12.3"/>
  </identifier>
  <version value="1.0"/>
  <name value="TestScriptExampleSearch"/>
  <title value="TestScript Example Search"/>
  <status value="draft"/>
  <experimental value="true"/>
  <date value="2017-01-18"/>
  <publisher value="HL7"/>
  <contact>
    <name value="Support"/>
    <telecom>
      <system value="email"/>
      <value value="support@HL7.org"/>
      <use value="work"/>
    </telecom>
  </contact>
  <description
               value="TestScript example resource with simple Patient search test. The read tests will utilize user defined dynamic variables that will hold the Patient search parameter values."/>
  <jurisdiction>
    <coding>
      <system value="urn:iso:std:iso:3166"/>
      <code value="US"/>
      <display value="United States of America"/>
    </coding>
  </jurisdiction>
  <purpose value="Patient Search Operation"/>
  <copyright value="© HL7.org 2011+"/>
  <metadata>
    <link>
      <url value="http://hl7.org/fhir/patient.html"/>
      <description
                   value="Demographics and other administrative information about an individual or animal receiving care or other health-related services."/>
    </link>
    <capability>
      <required value="true"/>
      <validated value="false"/>
      <description value="Patient Search Operation"/>
      <link value="http://hl7.org/fhir/http.html#search"/>
      <capabilities value="http://hl7.org/fhir/CapabilityStatement/example"/>
    </capability>
  </metadata>
  <fixture id="fixture-patient-create">
    <autocreate value="false"/>
    <autodelete value="false"/>
    <resource>
      <reference value="Patient/example"/>
      <display value="Peter Chalmers"/>
    </resource>
  </fixture>
  <profile value="http://hl7.org/fhir/StructureDefinition/Bundle">🔗 
    <id value="bundle-profile"/>
  </profile>
  <variable>
    <name value="PatientCreateLocation"/>
    <headerField value="Location"/>
    <sourceId value="PatientCreateResponse"/>
  </variable>
  <variable>
    <name value="PatientSearchFamilyName"/>
    <description
                 value="Enter patient search criteria for a known family name on the target system"/>
    <hint value="[Family name]"/>
  </variable>
  <variable>
    <name value="PatientSearchGivenName"/>
    <description
                 value="Enter patient search criteria for a known given name on the target system"/>
    <hint value="[Given name]"/>
  </variable>
  <variable>
    <name value="PatientSearchBundleTotal"/>
    <description
                 value="Evaluate the returned Patient searchset Bundle.total value"/>
    <expression>
      <language value="text/fhirpath"/>
      <expression value="Bundle.total.toInteger()"/>
    </expression>
  </variable>
  <setup>
    <action>
      <operation>
        <type>
          <system value="http://hl7.org/fhir/restful-interaction"/>
          <code value="search"/>
        </type>
        <resource value="Patient"/>
        <description value="Test simple search to verify server support."/>
        <accept value="xml"/>
        <encodeRequestUrl value="true"/>
        <params value="?family=DONTEXPECTAMATCH&amp;given=DONTEXPECTAMATCH"/>
      </operation>
    </action>
    <action>
      <assert>
        <description
                     value="Confirm that the request url contains the family search parameter."/>
        <direction value="request"/>
        <operator value="contains"/>
        <requestURL value="family"/>
        <stopTestOnFail value="false"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <description
                     value="Confirm that the returned HTTP status is 200(OK)."/>
        <direction value="response"/>
        <responseCode value="200"/>
        <stopTestOnFail value="false"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <description
                     value="Confirm that the returned resource type is Bundle."/>
        <resource value="Bundle"/>
        <stopTestOnFail value="false"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <description
                     value="Confirm that the returned Bundle correctly defines the navigation links."/>
        <navigationLinks value="true"/>
        <stopTestOnFail value="false"/>
        <warningOnly value="false"/>
      </assert>
    </action>
  </setup>
  <test id="01-PatientCreateSearch">
    <name value="Patient Create Search"/>
    <description
                 value="Create a Patient resource and capture the returned HTTP Header Location. Then search for (read) that Patient using the Location URL value and validate the response."/>
    <action>
      <operation>
        <type>
          <system value="http://hl7.org/fhir/restful-interaction"/>
          <code value="create"/>
        </type>
        <resource value="Patient"/>
        <description
                     value="Create a Patient resource and capture the returned HTTP Header Location."/>
        <accept value="xml"/>
        <contentType value="xml"/>
        <encodeRequestUrl value="true"/>
        <responseId value="PatientCreateResponse"/>
        <sourceId value="fixture-patient-create"/>
      </operation>
    </action>
    <action>
      <assert>
        <description
                     value="Confirm that the returned HTTP status is 201(Created)."/>
        <response value="created"/>
        <stopTestOnFail value="false"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <description
                     value="Confirm that the returned HTTP Header Location is present."/>
        <direction value="response"/>
        <headerField value="Location"/>
        <operator value="notEmpty"/>
        <stopTestOnFail value="false"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <operation>
        <type>
          <system value="http://hl7.org/fhir/restful-interaction"/>
          <code value="read"/>
        </type>
        <description
                     value="Read the created Patient using the captured Location URL value."/>
        <accept value="xml"/>
        <encodeRequestUrl value="true"/>
        <url value="${PatientCreateLocation}"/>
      </operation>
    </action>
    <action>
      <assert>
        <description
                     value="Confirm that the returned HTTP status is 200(OK)."/>
        <response value="okay"/>
        <stopTestOnFail value="false"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <description
                     value="Confirm that the returned resource type is Patient."/>
        <resource value="Patient"/>
        <stopTestOnFail value="false"/>
        <warningOnly value="false"/>
      </assert>
    </action>
  </test>
  <test id="02-PatientSearchDynamic">
    <name value="Patient Search Dynamic"/>
    <description
                 value="Search for Patient resources using the user defined dynamic variables ${PatientSearchFamilyName} and ${PatientSearchGivenName} and validate response."/>
    <action>
      <operation>
        <type>
          <system value="http://hl7.org/fhir/restful-interaction"/>
          <code value="search"/>
        </type>
        <resource value="Patient"/>
        <description
                     value="Search for Patient resources on the destination test system."/>
        <accept value="xml"/>
        <encodeRequestUrl value="true"/>
        <params
                value="?family=${PatientSearchFamilyName}&amp;given=${PatientSearchGivenName}"/>
      </operation>
    </action>
    <action>
      <assert>
        <description
                     value="Confirm that the returned HTTP status is 200(OK)."/>
        <response value="okay"/>
        <stopTestOnFail value="false"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <description value="Confirm that the returned format is XML."/>
        <contentType value="xml"/>
        <stopTestOnFail value="false"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <description
                     value="Confirm that the returned resource type is Bundle."/>
        <resource value="Bundle"/>
        <stopTestOnFail value="true"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <description
                     value="Confirm that the returned Bundle conforms to the base FHIR specification."/>
        <stopTestOnFail value="false"/>
        <validateProfileId value="bundle-profile"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <description
                     value="Confirm that the returned Bundle type equals 'searchset'."/>
        <expression>
          <language value="application/xml"/>
          <expression value="fhir:Bundle/fhir:type/@value"/>
        </expression>
        <operator value="equals"/>
        <stopTestOnFail value="false"/>
        <value value="searchset"/>
        <warningOnly value="false"/>
      </assert>
    </action>
    <action>
      <assert>
        <description
                     value="Confirm that the returned Bundle total is greater than or equal to the number of returned entries."/>
        <expression>
          <language value="text/fhirpath"/>
          <expression value="Bundle.total.toInteger() &gt;= entry.count()"/>
        </expression>
        <stopTestOnFail value="false"/>
        <warningOnly value="false"/>
      </assert>
    </action>
  </test>
</TestScript>