R6 Ballot (2nd Draft)

Publish-box (todo)

Example TestScript/testscript-example (JSON)

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

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

General TestScript Example

{
  "resourceType" : "TestScript",
  "id" : "testscript-example",
  "extension" : [{
    "url" : "http://hl7.org/fhir/StructureDefinition/structuredefinition-wg",
    "valueCode" : "fhir"
  }],
  "url" : "http://hl7.org/fhir/TestScript/testscript-example",
  "identifier" : [{
    "system" : "urn:ietf:rfc:3986",
    "value" : "urn:oid:2.16.840.1.113883.4.642.12.4"
  }],
  "version" : "1.0",
  "name" : "TestScriptExample",
  "title" : "TestScript Example",
  "status" : "draft",
  "experimental" : true,
  "date" : "2017-01-18",
  "publisher" : "HL7 International / FHIR Infrastructure",
  "contact" : [{
    "telecom" : [{
      "system" : "url",
      "value" : "http://www.hl7.org/Special/committees/fiwg"
    }]
  }],
  "description" : "TestScript example resource with setup to delete if present and create a new instance of a Patient; and single test definition to read the created Patient with various asserts.",
  "useContext" : [{
    "code" : {
      "system" : "http://terminology.hl7.org/CodeSystem/usage-context-type",
      "code" : "focus"
    },
    "valueCodeableConcept" : {
      "coding" : [{
        "system" : "http://terminology.hl7.org/CodeSystem/variant-state",
        "code" : "positive"
      }]
    }
  },
  {
    "code" : {
      "system" : "http://terminology.hl7.org/CodeSystem/usage-context-type",
      "code" : "program"
    },
    "valueRange" : {
      "low" : {
        "value" : 2018,
        "unit" : "year",
        "system" : "http://unitsofmeasure.org",
        "code" : "a"
      }
    }
  }],
  "jurisdiction" : [{
    "coding" : [{
      "system" : "urn:iso:std:iso:3166",
      "code" : "US",
      "display" : "United States of America"
    }]
  }],
  "purpose" : "Patient Conditional Create (Update), Read and Delete Operations",
  "copyright" : "© HL7.org 2011+",
  "metadata" : {
    "link" : [{
      "url" : "http://hl7.org/fhir/patient.html",
      "description" : "Demographics and other administrative information about an individual or animal receiving care or other health-related services."
    }],
    "capability" : [{
      "required" : true,
      "validated" : false,
      "description" : "Patient Update, Read and Delete Operations",
      "link" : ["http://hl7.org/fhir/http.html#delete",
      "http://hl7.org/fhir/http.html#read",
      "http://hl7.org/fhir/http.html#update"],
      "capabilities" : "http://hl7.org/fhir/CapabilityStatement/example"
    }]
  },
  "fixture" : [{
    "id" : "fixture-patient-create",
    "autocreate" : false,
    "autodelete" : false,
    "resource" : {
      "reference" : "Patient/example",
      "display" : "Peter Chalmers"
    }
  },
  {
    "id" : "fixture-patient-minimum",
    "autocreate" : false,
    "autodelete" : false,
    "resource" : {
      "reference" : "Patient/example",
      "display" : "Peter Chalmers (minimum)"
    }
  }],
  "profile" : ["http://hl7.org/fhir/StructureDefinition/Patient"],
  "variable" : [{
    "name" : "createResourceId",
    "path" : "Patient/id",
    "sourceId" : "fixture-patient-create"
  }],
  "setup" : {
    "action" : [{
      "operation" : {
        "type" : {
          "system" : "http://hl7.org/fhir/restful-interaction",
          "code" : "delete"
        },
        "resource" : "Patient",
        "label" : "SetupDeletePatient",
        "description" : "Execute a delete operation to insure the patient does not exist on the server.",
        "accept" : "json",
        "encodeRequestUrl" : true,
        "params" : "/${createResourceId}"
      }
    },
    {
      "assert" : {
        "description" : "Confirm that the returned HTTP status is 200(OK) or 204(No Content).",
        "direction" : "response",
        "operator" : "in",
        "responseCode" : "200,204",
        "stopTestOnFail" : false,
        "warningOnly" : false
      }
    },
    {
      "operation" : {
        "type" : {
          "system" : "http://hl7.org/fhir/restful-interaction",
          "code" : "update"
        },
        "resource" : "Patient",
        "label" : "SetupCreatePatient",
        "description" : "Create patient resource on test server using the contents of fixture-patient-create",
        "accept" : "json",
        "contentType" : "json",
        "encodeRequestUrl" : true,
        "params" : "/${createResourceId}",
        "sourceId" : "fixture-patient-create"
      }
    },
    {
      "assert" : {
        "description" : "Confirm that the returned HTTP status is 201(Created).",
        "direction" : "response",
        "responseCode" : "201",
        "stopTestOnFail" : false,
        "warningOnly" : false
      }
    },
    {
      "operation" : {
        "type" : {
          "system" : "http://hl7.org/fhir/restful-interaction",
          "code" : "read"
        },
        "resource" : "Patient",
        "description" : "Read the created patient resource on the test server using the id from fixture-patient-create. Verify contents.",
        "encodeRequestUrl" : true,
        "targetId" : "fixture-patient-create"
      }
    },
    {
      "assert" : {
        "description" : "Confirm that the returned HTTP status is 200(OK).",
        "direction" : "response",
        "response" : "okay",
        "stopTestOnFail" : false,
        "warningOnly" : false
      }
    },
    {
      "assert" : {
        "description" : "Confirm that the returned Patient contains the expected family name 'Chalmers'. Uses explicit compareToSourceId reference to fixture-patient-create used to create the Patient.",
        "compareToSourceId" : "fixture-patient-create",
        "compareToSourceExpression" : "Patient.name.first().family",
        "operator" : "equals",
        "stopTestOnFail" : false,
        "warningOnly" : false
      }
    }]
  },
  "test" : [{
    "id" : "01-ReadPatient",
    "name" : "Read Patient",
    "description" : "Read a Patient and validate response.",
    "action" : [{
      "operation" : {
        "type" : {
          "system" : "http://hl7.org/fhir/restful-interaction",
          "code" : "read"
        },
        "resource" : "Patient",
        "description" : "Read the patient resource on the test server using the id from fixture-patient-create. Prevent URL encoding of the request.",
        "encodeRequestUrl" : false,
        "responseId" : "fixture-patient-read",
        "targetId" : "fixture-patient-create"
      }
    },
    {
      "assert" : {
        "label" : "01-ReadPatientOK",
        "description" : "Confirm that the returned HTTP status is 200(OK).",
        "direction" : "response",
        "response" : "okay",
        "stopTestOnFail" : false,
        "warningOnly" : false
      }
    },
    {
      "assert" : {
        "description" : "Confirm that the returned HTTP Header Last-Modified is present. Warning only as the server might not support versioning.",
        "direction" : "response",
        "headerField" : "Last-Modified",
        "operator" : "notEmpty",
        "stopTestOnFail" : false,
        "warningOnly" : true
      }
    },
    {
      "assert" : {
        "description" : "Confirm that the returned resource type is Patient.",
        "resource" : "Patient",
        "stopTestOnFail" : false,
        "warningOnly" : false
      }
    },
    {
      "assert" : {
        "description" : "Confirm that the returned Patient conforms to the base FHIR specification.",
        "stopTestOnFail" : false,
        "validateProfileId" : "patient-profile",
        "warningOnly" : false
      }
    },
    {
      "assert" : {
        "description" : "Confirm that the returned Patient contains the expected family name 'Chalmers'. Uses explicit sourceId reference to read responseId fixture.",
        "operator" : "equals",
        "path" : "fhir:Patient/fhir:name/fhir:family/@value",
        "sourceId" : "fixture-patient-read",
        "stopTestOnFail" : false,
        "value" : "Chalmers",
        "warningOnly" : false
      }
    },
    {
      "assert" : {
        "description" : "Confirm that the returned Patient contains the expected given name 'Peter'. Uses explicit sourceId reference to read responseId fixture.",
        "operator" : "equals",
        "path" : "fhir:Patient/fhir:name/fhir:given/@value",
        "sourceId" : "fixture-patient-read",
        "stopTestOnFail" : false,
        "value" : "Peter",
        "warningOnly" : false
      }
    },
    {
      "assert" : {
        "description" : "Confirm that the returned Patient contains the expected family name 'Chalmers'. Uses explicit compareToSourceId reference to fixture-patient-create used to create the Patient and implicit reference to read response payload.",
        "compareToSourceId" : "fixture-patient-create",
        "compareToSourcePath" : "fhir:Patient/fhir:name/fhir:family/@value",
        "operator" : "equals",
        "path" : "fhir:Patient/fhir:name/fhir:family/@value",
        "stopTestOnFail" : false,
        "warningOnly" : false
      }
    },
    {
      "assert" : {
        "description" : "Confirm that the returned Patient contains the expected family name 'Chalmers'. Uses explicit compareToSourceId reference to fixture-patient-create used to create the Patient and explicit reference to read response payload and default operator of 'equals'.",
        "compareToSourceId" : "fixture-patient-create",
        "compareToSourcePath" : "fhir:Patient/fhir:name/fhir:given/@value",
        "path" : "fhir:Patient/fhir:name/fhir:given/@value",
        "sourceId" : "fixture-patient-read",
        "stopTestOnFail" : false,
        "warningOnly" : false
      }
    },
    {
      "assert" : {
        "description" : "Confirm that the returned resource contains the expected retained elements and values. Warning only to provide users with reviewable results.",
        "minimumId" : "fixture-patient-minimum",
        "stopTestOnFail" : false,
        "warningOnly" : true
      }
    }]
  }],
  "teardown" : {
    "action" : [{
      "operation" : {
        "type" : {
          "system" : "http://hl7.org/fhir/restful-interaction",
          "code" : "delete"
        },
        "resource" : "Patient",
        "description" : "Delete the patient resource on the test server using the id from fixture-patient-create.",
        "encodeRequestUrl" : true,
        "targetId" : "fixture-patient-create"
      }
    }]
  }
}

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.