R6 Ballot (2nd Draft)

Publish-box (todo)

Example TestScript/testscript-example-readtest (XML)

FHIR Infrastructure Work GroupMaturity Level: N/AStandards Status: InformativeCompartments: No defined compartments

Raw XML (canonical form + also see XML Format Specification)

Read TestScript Example (id = "testscript-example-readtest")

<?xml version="1.0" encoding="UTF-8"?>

<TestScript xmlns="http://hl7.org/fhir">
  <id value="testscript-example-readtest"/> 
  <extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-wg">
    <valueCode value="fhir"/> 
  </extension> 
  <url value="http://hl7.org/fhir/TestScript/testscript-example-readtest"/> 
  <identifier> 
    <system value="urn:ietf:rfc:3986"/> 
    <value value="urn:oid:2.16.840.1.113883.4.642.12.2"/> 
  </identifier> 
  <version value="1.0"/> 
  <name value="TestScript Example Read Test"/> 
  <status value="draft"/> 
  <experimental value="true"/> 
  <date value="2017-01-18"/> 
  <publisher value="HL7 International / FHIR Infrastructure"/> 
  <contact> 
    <telecom> 
      <system value="url"/> 
      <value value="http://www.hl7.org/Special/committees/fiwg"/> 
    </telecom> 
  </contact> 
  <description value="TestScript example resource with ported Sprinkler basic read tests R001, R002,
   R003, R004. The read tests will utilize user defined dynamic variables that will
   hold the Patient resource id values."/> 
  <jurisdiction> 
    <coding> 
      <system value="urn:iso:std:iso:3166"/> 
      <code value="US"/> 
      <display value="United States of America"/> 
    </coding> 
  </jurisdiction> 
  <purpose value="Patient Read 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 Read Operation"/> 
      <link value="http://hl7.org/fhir/http.html#read"/> 
      <capabilities value="http://hl7.org/fhir/CapabilityStatement/example"/> 
    </capability> 
  </metadata> 
  <scope> 
    <artifact value="http://hl7.org/fhir/StructureDefinition/Patient"/> 
    <conformance> 
      <coding> 
        <system value="http://hl7.org/fhir/testscript-scope-conformance-codes"/> 
        <code value="optional"/> 
      </coding> 
    </conformance> 
    <phase> 
      <coding> 
        <system value="http://hl7.org/fhir/testscript-scope-phase-codes"/> 
        <code value="unit"/> 
      </coding> 
    </phase> 
  </scope> 
  <profile value="http://hl7.org/fhir/StructureDefinition/Patient">
    <id value="patient-profile"/> 
  </profile> 
  <variable> 
    <name value="KnownPatientResourceId"/> 
    <defaultValue value="example"/> 
  </variable> 
  <variable> 
    <name value="NonExistsPatientResourceId"/> 
    <defaultValue value="does-not-exist"/> 
  </variable> 
  <test id="R001">
    <name value="Sprinkler Read Test R001"/> 
    <description value="Read a known Patient and validate response."/> 
    <action> 
      <operation> 
        <type> 
          <system value="http://hl7.org/fhir/restful-interaction"/> 
          <code value="read"/> 
        </type> 
        <resource value="Patient"/> 
        <description value="Read the known Patient resource on the destination test system using the user defined
         dynamic variable ${KnownPatientResourceId}."/> 
        <accept value="xml"/> 
        <encodeRequestUrl value="true"/> 
        <params value="/${KnownPatientResourceId}"/> 
      </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 HTTP Header Last-Modified is present. Warning only as
         the server might not support versioning."/> 
        <headerField value="Last-Modified"/> 
        <operator value="notEmpty"/> 
        <stopTestOnFail value="false"/> 
        <warningOnly value="true"/> 
      </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> 
    <action> 
      <assert> 
        <description value="Confirm that the returned Patient conforms to the base FHIR specification."/> 
        <stopTestOnFail value="false"/> 
        <validateProfileId value="patient-profile"/> 
        <warningOnly value="false"/> 
      </assert> 
    </action> 
  </test> 
  <test id="R002">
    <name value="Sprinkler Read Test R002"/> 
    <description value="Read an unknown Resource Type and validate response."/> 
    <action> 
      <operation> 
        <type> 
          <system value="http://hl7.org/fhir/restful-interaction"/> 
          <code value="read"/> 
        </type> 
        <resource value="Patient"/> 
        <description value="Attempt to read the Parameters resource type. What we really want here is an illegal
         type but the build process won't allow that. Parameters is a valid resource which
         doesn't have an end-point so, this should fail."/> 
        <accept value="xml"/> 
        <encodeRequestUrl value="true"/> 
        <params value="/1"/> 
      </operation> 
    </action> 
    <action> 
      <assert> 
        <description value="Confirm that the returned HTTP status is 404(Not Found)."/> 
        <response value="notFound"/> 
        <stopTestOnFail value="false"/> 
        <warningOnly value="false"/> 
      </assert> 
    </action> 
  </test> 
  <test id="R003">
    <name value="Sprinkler Read Test R003"/> 
    <description value="Read a known, non-existing Patient and validate response."/> 
    <action> 
      <operation> 
        <type> 
          <system value="http://hl7.org/fhir/restful-interaction"/> 
          <code value="read"/> 
        </type> 
        <resource value="Patient"/> 
        <description value="Attempt to read the non-existing Patient resource on the destination test system
         using the user defined dynamic variable ${NonExistsPatientResourceId}."/> 
        <accept value="xml"/> 
        <encodeRequestUrl value="true"/> 
        <params value="/${NonExistsPatientResourceId}"/> 
      </operation> 
    </action> 
    <action> 
      <assert> 
        <description value="Confirm that the returned HTTP status is 404(Not Found)."/> 
        <response value="notFound"/> 
        <stopTestOnFail value="false"/> 
        <warningOnly value="false"/> 
      </assert> 
    </action> 
  </test> 
  <test id="R004">
    <name value="Sprinkler Read Test R004"/> 
    <description value="Read a Patient using a known bad formatted resource id and validate response."/> 
    <action> 
      <operation> 
        <type> 
          <system value="http://hl7.org/fhir/restful-interaction"/> 
          <code value="read"/> 
        </type> 
        <resource value="Patient"/> 
        <description value="Attempt to read a Patient resource on the destination test system using known bad
         formatted resource id."/> 
        <accept value="xml"/> 
        <encodeRequestUrl value="true"/> 
        <params value="/ID-may-not-contain-CAPITALS"/> 
      </operation> 
    </action> 
    <action> 
      <assert> 
        <description value="Confirm that the returned HTTP status is 400(Bad Request)."/> 
        <response value="badRequest"/> 
        <stopTestOnFail value="false"/> 
        <warningOnly value="false"/> 
      </assert> 
    </action> 
  </test> 
</TestScript> 

Usage note: every effort has been made to ensure that the examples are correct and useful, but they are not a normative part of the specification.