Release 4

This page is part of the FHIR Specification (v4.0.1: R4 - Mixed Normative and STU) in it's permanent home (it will always be available at this URL). The current version which supercedes this version is 5.0.0. For a full list of available versions, see the Directory of published versions . Page versions: R5 R4B R4 R3 R2

7.3 Resource TestScript - Content

FHIR Infrastructure Work GroupMaturity Level: 2 Trial UseSecurity Category: Anonymous Compartments: Not linked to any defined compartments

A structured set of tests against a FHIR server or client implementation to determine compliance against the FHIR specification.

The TestScript resource is used to define tests that can be executed on one or more FHIR servers. The TestScript resource would typically contain

  • a list of fixtures (required resources used in the tests)
  • setup procedures
  • a suite of thematically related tests
  • teardown procedures

For example, one TestScript might feature a set of tests focusing on searching Patients and validating the Bundle responses. The fixtures for such a test would contain a list of Patient resources that are required for the test to complete successfully. The setup procedures create the fixtures on the FHIR server being tested. A series of tests execute various search parameters and search for the fixtures in the results. The teardown procedures would then clean up (delete) the fixtures on FHIR server that were created during the setup procedures.

The purpose of the TestScript is to encode in an executable representation tests that can be used to

  1. determine whether a given FHIR server adheres to the FHIR specification and
  2. determine whether two or more FHIR servers implement capabilities in a compatible or interoperable manner.
It might not be possible to fully automate the latter goal (especially with regards to business rules that might ride on top of different implementations), however the tests should be able to determine whether two servers support the operations, value sets, profiles, and extensions to exchange Bundles of Resources (such as returned from the Patient $everything operation).

The TestScript resource should NOT be used to represent Clinical tests, Prescriptions, or any other Healthcare related concept. The TestScript resource is an infrastructure support resource used to represent standardized tests to determine an implementation's level of adherence to the FHIR specification.

TestScript is a part of the conformance framework and is used to validate the behavior of FHIR systems, specifically their correct implementation of StructureDefinition, ValueSet, OperationDefinition, CapabilityStatement and other FHIR resources that govern system behavior. TestScript instances may be included as part of ImplementationGuides to help define and test the desired behavior of systems that choose to comply with the implementation guide.

The following resources represent the FHIR conformance framework that are used to express the expected behavior of a FHIR compliant system:

The TestScript resource is designed to establish testing as a first class artifact within the FHIR specification. This resource allows defining a suite of tests that can be executed on one or more FHIR servers and clients.

Implementers should be familiar with the testing concepts and descriptions found in Testing FHIR before working with this resource.

This resource is referenced by TestReport

Structure

NameFlagsCard.TypeDescription & Constraintsdoco
.. TestScript ITUDomainResourceDescribes a set of tests
+ Warning: Name should be usable as an identifier for the module by machine processing applications such as code generation
Elements defined in Ancestors: id, meta, implicitRules, language, text, contained, extension, modifierExtension
... url Σ1..1uriCanonical identifier for this test script, represented as a URI (globally unique)
... identifier Σ0..1IdentifierAdditional identifier for the test script
... version Σ0..1stringBusiness version of the test script
... name ΣI1..1stringName for this test script (computer friendly)
... title Σ0..1stringName for this test script (human friendly)
... status ?!Σ1..1codedraft | active | retired | unknown
PublicationStatus (Required)
... experimental Σ0..1booleanFor testing purposes, not real usage
... date Σ0..1dateTimeDate last changed
... publisher Σ0..1stringName of the publisher (organization or individual)
... contact Σ0..*ContactDetailContact details for the publisher
... description 0..1markdownNatural language description of the test script
... useContext Σ0..*UsageContextThe context that the content is intended to support
... jurisdiction Σ0..*CodeableConceptIntended jurisdiction for test script (if applicable)
Jurisdiction (Extensible)
... purpose 0..1markdownWhy this test script is defined
... copyright 0..1markdownUse and/or publishing restrictions
... origin 0..*BackboneElementAn abstract server representing a client or sender in a message exchange
.... index 1..1integerThe index of the abstract origin server starting at 1
.... profile 1..1CodingFHIR-Client | FHIR-SDC-FormFiller
Test script profile origin type (Extensible)
... destination 0..*BackboneElementAn abstract server representing a destination or receiver in a message exchange
.... index 1..1integerThe index of the abstract destination server starting at 1
.... profile 1..1CodingFHIR-Server | FHIR-SDC-FormManager | FHIR-SDC-FormReceiver | FHIR-SDC-FormProcessor
Test script profile destination type (Extensible)
... metadata I0..1BackboneElementRequired capability that is assumed to function correctly on the FHIR server being tested
+ Rule: TestScript metadata capability SHALL contain required or validated or both.
.... link 0..*BackboneElementLinks to the FHIR specification
..... url 1..1uriURL to the specification
..... description 0..1stringShort description
.... capability 1..*BackboneElementCapabilities that are assumed to function correctly on the FHIR server being tested
..... required 1..1booleanAre the capabilities required?
..... validated 1..1booleanAre the capabilities validated?
..... description 0..1stringThe expected capabilities of the server
..... origin 0..*integerWhich origin server these requirements apply to
..... destination 0..1integerWhich server these requirements apply to
..... link 0..*uriLinks to the FHIR specification
..... capabilities 1..1canonical(CapabilityStatement)Required Capability Statement
... fixture 0..*BackboneElementFixture in the test script - by reference (uri)
.... autocreate 1..1booleanWhether or not to implicitly create the fixture during setup
.... autodelete 1..1booleanWhether or not to implicitly delete the fixture during teardown
.... resource 0..1Reference(Any)Reference of the resource
... profile 0..*Reference(Any)Reference of the validation profile
... variable I0..*BackboneElementPlaceholder for evaluated elements
+ Rule: Variable can only contain one of expression, headerField or path.
.... name 1..1stringDescriptive name for this variable
.... defaultValue 0..1stringDefault, hard-coded, or user-defined value for this variable
.... description 0..1stringNatural language description of the variable
.... expression 0..1stringThe FHIRPath expression against the fixture body
.... headerField 0..1stringHTTP header field name for source
.... hint 0..1stringHint help text for default value to enter
.... path 0..1stringXPath or JSONPath against the fixture body
.... sourceId 0..1idFixture Id of source expression or headerField within this variable
... setup 0..1BackboneElementA series of required setup operations before tests are executed
.... action I1..*BackboneElementA setup operation or assert to perform
+ Rule: Setup action SHALL contain either an operation or assert but not both.
..... operation I0..1BackboneElementThe setup operation to perform
+ Rule: Setup operation SHALL contain either sourceId or targetId or params or url.
...... type 0..1CodingThe operation code type that will be executed
Test script operation code (Extensible)
...... resource 0..1codeResource type
FHIRDefinedType (Required)
...... label 0..1stringTracking/logging operation label
...... description 0..1stringTracking/reporting operation description
...... accept 0..1codeMime type to accept in the payload of the response, with charset etc.
MimeType (Required)
...... contentType 0..1codeMime type of the request payload contents, with charset etc.
MimeType (Required)
...... destination 0..1integerServer responding to the request
...... encodeRequestUrl 1..1booleanWhether or not to send the request url in encoded format
...... method 0..1codedelete | get | options | patch | post | put | head
TestScriptRequestMethodCode (Required)
...... origin 0..1integerServer initiating the request
...... params 0..1stringExplicitly defined path parameters
...... requestHeader 0..*BackboneElementEach operation can have one or more header elements
....... field 1..1stringHTTP header field name
....... value 1..1stringHTTP headerfield value
...... requestId 0..1idFixture Id of mapped request
...... responseId 0..1idFixture Id of mapped response
...... sourceId 0..1idFixture Id of body for PUT and POST requests
...... targetId 0..1idId of fixture used for extracting the [id], [type], and [vid] for GET requests
...... url 0..1stringRequest URL
..... assert I0..1BackboneElementThe assertion to perform
+ Rule: Only a single assertion SHALL be present within setup action assert element.
+ Rule: Setup action assert SHALL contain either compareToSourceId and compareToSourceExpression, compareToSourceId and compareToSourcePath or neither.
+ Rule: Setup action assert response and responseCode SHALL be empty when direction equals request
...... label 0..1stringTracking/logging assertion label
...... description 0..1stringTracking/reporting assertion description
...... direction 0..1coderesponse | request
AssertionDirectionType (Required)
...... compareToSourceId 0..1stringId of the source fixture to be evaluated
...... compareToSourceExpression 0..1stringThe FHIRPath expression to evaluate against the source fixture
...... compareToSourcePath 0..1stringXPath or JSONPath expression to evaluate against the source fixture
...... contentType 0..1codeMime type to compare against the 'Content-Type' header
MimeType (Required)
...... expression 0..1stringThe FHIRPath expression to be evaluated
...... headerField 0..1stringHTTP header field name
...... minimumId 0..1stringFixture Id of minimum content resource
...... navigationLinks 0..1booleanPerform validation on navigation links?
...... operator 0..1codeequals | notEquals | in | notIn | greaterThan | lessThan | empty | notEmpty | contains | notContains | eval
AssertionOperatorType (Required)
...... path 0..1stringXPath or JSONPath expression
...... requestMethod 0..1codedelete | get | options | patch | post | put | head
TestScriptRequestMethodCode (Required)
...... requestURL 0..1stringRequest URL comparison value
...... resource 0..1codeResource type
FHIRDefinedType (Required)
...... response 0..1codeokay | created | noContent | notModified | bad | forbidden | notFound | methodNotAllowed | conflict | gone | preconditionFailed | unprocessable
AssertionResponseTypes (Required)
...... responseCode 0..1stringHTTP response code to test
...... sourceId 0..1idFixture Id of source expression or headerField
...... validateProfileId 0..1idProfile Id of validation profile reference
...... value 0..1stringThe value to compare to
...... warningOnly 1..1booleanWill this assert produce a warning only on error?
... test 0..*BackboneElementA test in this script
.... name 0..1stringTracking/logging name of this test
.... description 0..1stringTracking/reporting short description of the test
.... action I1..*BackboneElementA test operation or assert to perform
+ Rule: Test action SHALL contain either an operation or assert but not both.
..... operation I0..1see operationThe setup operation to perform
+ Rule: Test operation SHALL contain either sourceId or targetId or params or url.
..... assert I0..1see assertThe setup assertion to perform
+ Rule: Only a single assertion SHALL be present within test action assert element.
+ Rule: Test action assert SHALL contain either compareToSourceId and compareToSourceExpression, compareToSourceId and compareToSourcePath or neither.
+ Rule: Test action assert response and response and responseCode SHALL be empty when direction equals request
... teardown 0..1BackboneElementA series of required clean up steps
.... action 1..*BackboneElementOne or more teardown operations to perform
..... operation I1..1see operationThe teardown operation to perform
+ Rule: Teardown operation SHALL contain either sourceId or targetId or params or url.

doco Documentation for this format

UML Diagram (Legend)

TestScript (DomainResource)📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนurl : uri [1..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนidentifier : Identifier [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนversion : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนname : string [1..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนtitle : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนstatus : code [1..1] « 📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนPublicationStatus! »📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนexperimental : boolean [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนdate : dateTime [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนpublisher : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนcontact : ContactDetail [0..*]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนdescription : markdown [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนuseContext : UsageContext [0..*]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนjurisdiction : CodeableConcept [0..*] « 📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนJurisdiction ValueSet+ »📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนpurpose : markdown [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนcopyright : markdown [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนprofile : Reference [0..*] « Any »Origin📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนindex : integer [1..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนprofile : Coding [1..1] « 📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนTestScriptProfileOriginType+ »Destination📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนindex : integer [1..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนprofile : Coding [1..1] « 📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนTestScriptProfileDestinationT...+ »MetadataLink📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนurl : uri [1..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนdescription : string [0..1]Capability📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนrequired : boolean [1..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนvalidated : boolean [1..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนdescription : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนorigin : integer [0..*]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนdestination : integer [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนlink : uri [0..*]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนcapabilities : canonical [1..1] « CapabilityStatement »Fixture📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนautocreate : boolean [1..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนautodelete : boolean [1..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนresource : Reference [0..1] « Any »Variable📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนname : string [1..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนdefaultValue : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนdescription : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนexpression : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนheaderField : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนhint : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนpath : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนsourceId : id [0..1]SetupSetupActionOperation📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนtype : Coding [0..1] « 📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนTestScriptOperationCode+ »📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนresource : code [0..1] « 📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนFHIRDefinedType! »📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนlabel : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนdescription : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนaccept : code [0..1] « 📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนMime Types! »📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนcontentType : code [0..1] « 📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนMime Types! »📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนdestination : integer [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนencodeRequestUrl : boolean [1..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนmethod : code [0..1] « 📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนTestScriptRequestMethodCode! »📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนorigin : integer [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนparams : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนrequestId : id [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนresponseId : id [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนsourceId : id [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนtargetId : id [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนurl : string [0..1]RequestHeader📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนfield : string [1..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนvalue : string [1..1]Assert📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนlabel : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนdescription : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนdirection : code [0..1] « 📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนAssertionDirectionType! »📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนcompareToSourceId : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนcompareToSourceExpression : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนcompareToSourcePath : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนcontentType : code [0..1] « 📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนMime Types! »📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนexpression : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนheaderField : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนminimumId : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนnavigationLinks : boolean [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนoperator : code [0..1] « 📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนAssertionOperatorType! »📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนpath : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนrequestMethod : code [0..1] « 📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนTestScriptRequestMethodCode! »📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนrequestURL : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนresource : code [0..1] « 📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนFHIRDefinedType! »📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนresponse : code [0..1] « 📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนAssertionResponseTypes! »📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนresponseCode : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนsourceId : id [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนvalidateProfileId : id [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนvalue : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนwarningOnly : boolean [1..1]Test📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนname : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนdescription : string [0..1]TestActionTeardownTeardownAction📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนorigin[0..*]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนdestination[0..*]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนlink[0..*]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนcapability[1..*]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนmetadata[0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนfixture[0..*]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนvariable[0..*]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนrequestHeader[0..*]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนoperation[0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนassert[0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนaction[1..*]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนsetup[0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนoperation[0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนassert[0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนaction[1..*]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนtest[0..*]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนoperation[1..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนaction[1..*]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนteardown[0..1]

XML Template

<TestScript xmlns="http://hl7.org/fhir"> doco
 <!-- from Resource: id, meta, implicitRules, and language -->
 <!-- from DomainResource: text, contained, extension, and modifierExtension -->
 <url value="[uri]"/><!-- 1..1 Canonical identifier for this test script, represented as a URI (globally unique) -->
 <identifier><!-- 0..1 Identifier Additional identifier for the test script --></identifier>
 <version value="[string]"/><!-- 0..1 Business version of the test script -->
 <name value="[string]"/><!-- ?? 1..1 Name for this test script (computer friendly) -->
 <title value="[string]"/><!-- 0..1 Name for this test script (human friendly) -->
 <status value="[code]"/><!-- 1..1 draft | active | retired | unknown -->
 <experimental value="[boolean]"/><!-- 0..1 For testing purposes, not real usage -->
 <date value="[dateTime]"/><!-- 0..1 Date last changed -->
 <publisher value="[string]"/><!-- 0..1 Name of the publisher (organization or individual) -->
 <contact><!-- 0..* ContactDetail Contact details for the publisher --></contact>
 <description value="[markdown]"/><!-- 0..1 Natural language description of the test script -->
 <useContext><!-- 0..* UsageContext The context that the content is intended to support --></useContext>
 <jurisdiction><!-- 0..* CodeableConcept Intended jurisdiction for test script (if applicable) --></jurisdiction>
 <purpose value="[markdown]"/><!-- 0..1 Why this test script is defined -->
 <copyright value="[markdown]"/><!-- 0..1 Use and/or publishing restrictions -->
 <origin>  <!-- 0..* An abstract server representing a client or sender in a message exchange -->
  <index value="[integer]"/><!-- 1..1 The index of the abstract origin server starting at 1 -->
  <profile><!-- 1..1 Coding FHIR-Client | FHIR-SDC-FormFiller --></profile>
 </origin>
 <destination>  <!-- 0..* An abstract server representing a destination or receiver in a message exchange -->
  <index value="[integer]"/><!-- 1..1 The index of the abstract destination server starting at 1 -->
  <profile><!-- 1..1 Coding FHIR-Server | FHIR-SDC-FormManager | FHIR-SDC-FormReceiver | FHIR-SDC-FormProcessor --></profile>
 </destination>
 <metadata>  <!-- 0..1 Required capability that is assumed to function correctly on the FHIR server being tested -->
  <link>  <!-- 0..* Links to the FHIR specification -->
   <url value="[uri]"/><!-- 1..1 URL to the specification -->
   <description value="[string]"/><!-- 0..1 Short description -->
  </link>
  <capability>  <!-- 1..* Capabilities  that are assumed to function correctly on the FHIR server being tested -->
   <required value="[boolean]"/><!-- 1..1 Are the capabilities required? -->
   <validated value="[boolean]"/><!-- 1..1 Are the capabilities validated? -->
   <description value="[string]"/><!-- 0..1 The expected capabilities of the server -->
   <origin value="[integer]"/><!-- 0..* Which origin server these requirements apply to -->
   <destination value="[integer]"/><!-- 0..1 Which server these requirements apply to -->
   <link value="[uri]"/><!-- 0..* Links to the FHIR specification -->
   <capabilities><!-- 1..1 canonical(CapabilityStatement) Required Capability Statement --></capabilities>
  </capability>
 </metadata>
 <fixture>  <!-- 0..* Fixture in the test script - by reference (uri) -->
  <autocreate value="[boolean]"/><!-- 1..1 Whether or not to implicitly create the fixture during setup -->
  <autodelete value="[boolean]"/><!-- 1..1 Whether or not to implicitly delete the fixture during teardown -->
  <resource><!-- 0..1 Reference(Any) Reference of the resource --></resource>
 </fixture>
 <profile><!-- 0..* Reference(Any) Reference of the validation profile --></profile>
 <variable>  <!-- 0..* Placeholder for evaluated elements -->
  <name value="[string]"/><!-- 1..1 Descriptive name for this variable -->
  <defaultValue value="[string]"/><!-- 0..1 Default, hard-coded, or user-defined value for this variable -->
  <description value="[string]"/><!-- 0..1 Natural language description of the variable -->
  <expression value="[string]"/><!-- 0..1 The FHIRPath expression against the fixture body -->
  <headerField value="[string]"/><!-- 0..1 HTTP header field name for source -->
  <hint value="[string]"/><!-- 0..1 Hint help text for default value to enter -->
  <path value="[string]"/><!-- 0..1 XPath or JSONPath against the fixture body -->
  <sourceId value="[id]"/><!-- 0..1 Fixture Id of source expression or headerField within this variable -->
 </variable>
 <setup>  <!-- 0..1 A series of required setup operations before tests are executed -->
  <action>  <!-- 1..* A setup operation or assert to perform -->
   <operation>  <!-- 0..1 The setup operation to perform -->
    <type><!-- 0..1 Coding The operation code type that will be executed --></type>
    <resource value="[code]"/><!-- 0..1 Resource type -->
    <label value="[string]"/><!-- 0..1 Tracking/logging operation label -->
    <description value="[string]"/><!-- 0..1 Tracking/reporting operation description -->
    <accept value="[code]"/><!-- 0..1 Mime type to accept in the payload of the response, with charset etc. -->
    <contentType value="[code]"/><!-- 0..1 Mime type of the request payload contents, with charset etc. -->
    <destination value="[integer]"/><!-- 0..1 Server responding to the request -->
    <encodeRequestUrl value="[boolean]"/><!-- 1..1 Whether or not to send the request url in encoded format -->
    <method value="[code]"/><!-- 0..1 delete | get | options | patch | post | put | head -->
    <origin value="[integer]"/><!-- 0..1 Server initiating the request -->
    <params value="[string]"/><!-- 0..1 Explicitly defined path parameters -->
    <requestHeader>  <!-- 0..* Each operation can have one or more header elements -->
     <field value="[string]"/><!-- 1..1 HTTP header field name -->
     <value value="[string]"/><!-- 1..1 HTTP headerfield value -->
    </requestHeader>
    <requestId value="[id]"/><!-- 0..1 Fixture Id of mapped request -->
    <responseId value="[id]"/><!-- 0..1 Fixture Id of mapped response -->
    <sourceId value="[id]"/><!-- 0..1 Fixture Id of body for PUT and POST requests -->
    <targetId value="[id]"/><!-- 0..1 Id of fixture used for extracting the [id],  [type], and [vid] for GET requests -->
    <url value="[string]"/><!-- 0..1 Request URL -->
   </operation>
   <assert>  <!-- 0..1 The assertion to perform -->
    <label value="[string]"/><!-- 0..1 Tracking/logging assertion label -->
    <description value="[string]"/><!-- 0..1 Tracking/reporting assertion description -->
    <direction value="[code]"/><!-- 0..1 response | request -->
    <compareToSourceId value="[string]"/><!-- 0..1 Id of the source fixture to be evaluated -->
    <compareToSourceExpression value="[string]"/><!-- 0..1 The FHIRPath expression to evaluate against the source fixture -->
    <compareToSourcePath value="[string]"/><!-- 0..1 XPath or JSONPath expression to evaluate against the source fixture -->
    <contentType value="[code]"/><!-- 0..1 Mime type to compare against the 'Content-Type' header -->
    <expression value="[string]"/><!-- 0..1 The FHIRPath expression to be evaluated -->
    <headerField value="[string]"/><!-- 0..1 HTTP header field name -->
    <minimumId value="[string]"/><!-- 0..1 Fixture Id of minimum content resource -->
    <navigationLinks value="[boolean]"/><!-- 0..1 Perform validation on navigation links? -->
    <operator value="[code]"/><!-- 0..1 equals | notEquals | in | notIn | greaterThan | lessThan | empty | notEmpty | contains | notContains | eval -->
    <path value="[string]"/><!-- 0..1 XPath or JSONPath expression -->
    <requestMethod value="[code]"/><!-- 0..1 delete | get | options | patch | post | put | head -->
    <requestURL value="[string]"/><!-- 0..1 Request URL comparison value -->
    <resource value="[code]"/><!-- 0..1 Resource type -->
    <response value="[code]"/><!-- 0..1 okay | created | noContent | notModified | bad | forbidden | notFound | methodNotAllowed | conflict | gone | preconditionFailed | unprocessable -->
    <responseCode value="[string]"/><!-- 0..1 HTTP response code to test -->
    <sourceId value="[id]"/><!-- 0..1 Fixture Id of source expression or headerField -->
    <validateProfileId value="[id]"/><!-- 0..1 Profile Id of validation profile reference -->
    <value value="[string]"/><!-- 0..1 The value to compare to -->
    <warningOnly value="[boolean]"/><!-- 1..1 Will this assert produce a warning only on error? -->
   </assert>
  </action>
 </setup>
 <test>  <!-- 0..* A test in this script -->
  <name value="[string]"/><!-- 0..1 Tracking/logging name of this test -->
  <description value="[string]"/><!-- 0..1 Tracking/reporting short description of the test -->
  <action>  <!-- 1..* A test operation or assert to perform -->
   <operation><!-- 0..1 Content as for TestScript.setup.action.operation The setup operation to perform --></operation>
   <assert><!-- 0..1 Content as for TestScript.setup.action.assert The setup assertion to perform --></assert>
  </action>
 </test>
 <teardown>  <!-- 0..1 A series of required clean up steps -->
  <action>  <!-- 1..* One or more teardown operations to perform -->
   <operation><!-- 1..1 Content as for TestScript.setup.action.operation The teardown operation to perform --></operation>
  </action>
 </teardown>
</TestScript>

JSON Template

{doco
  "resourceType" : "TestScript",
  // from Resource: id, meta, implicitRules, and language
  // from DomainResource: text, contained, extension, and modifierExtension
  "url" : "<uri>", // R!  Canonical identifier for this test script, represented as a URI (globally unique)
  "identifier" : { Identifier }, // Additional identifier for the test script
  "version" : "<string>", // Business version of the test script
  "name" : "<string>", // C? R!  Name for this test script (computer friendly)
  "title" : "<string>", // Name for this test script (human friendly)
  "status" : "<code>", // R!  draft | active | retired | unknown
  "experimental" : <boolean>, // For testing purposes, not real usage
  "date" : "<dateTime>", // Date last changed
  "publisher" : "<string>", // Name of the publisher (organization or individual)
  "contact" : [{ ContactDetail }], // Contact details for the publisher
  "description" : "<markdown>", // Natural language description of the test script
  "useContext" : [{ UsageContext }], // The context that the content is intended to support
  "jurisdiction" : [{ CodeableConcept }], // Intended jurisdiction for test script (if applicable)
  "purpose" : "<markdown>", // Why this test script is defined
  "copyright" : "<markdown>", // Use and/or publishing restrictions
  "origin" : [{ // An abstract server representing a client or sender in a message exchange
    "index" : <integer>, // R!  The index of the abstract origin server starting at 1
    "profile" : { Coding } // R!  FHIR-Client | FHIR-SDC-FormFiller
  }],
  "destination" : [{ // An abstract server representing a destination or receiver in a message exchange
    "index" : <integer>, // R!  The index of the abstract destination server starting at 1
    "profile" : { Coding } // R!  FHIR-Server | FHIR-SDC-FormManager | FHIR-SDC-FormReceiver | FHIR-SDC-FormProcessor
  }],
  "metadata" : { // Required capability that is assumed to function correctly on the FHIR server being tested
    "link" : [{ // Links to the FHIR specification
      "url" : "<uri>", // R!  URL to the specification
      "description" : "<string>" // Short description
    }],
    "capability" : [{ // R!  Capabilities  that are assumed to function correctly on the FHIR server being tested
      "required" : <boolean>, // R!  Are the capabilities required?
      "validated" : <boolean>, // R!  Are the capabilities validated?
      "description" : "<string>", // The expected capabilities of the server
      "origin" : [<integer>], // Which origin server these requirements apply to
      "destination" : <integer>, // Which server these requirements apply to
      "link" : ["<uri>"], // Links to the FHIR specification
      "capabilities" : { canonical(CapabilityStatement) } // R!  Required Capability Statement
    }]
  },
  "fixture" : [{ // Fixture in the test script - by reference (uri)
    "autocreate" : <boolean>, // R!  Whether or not to implicitly create the fixture during setup
    "autodelete" : <boolean>, // R!  Whether or not to implicitly delete the fixture during teardown
    "resource" : { Reference(Any) } // Reference of the resource
  }],
  "profile" : [{ Reference(Any) }], // Reference of the validation profile
  "variable" : [{ // Placeholder for evaluated elements
    "name" : "<string>", // R!  Descriptive name for this variable
    "defaultValue" : "<string>", // Default, hard-coded, or user-defined value for this variable
    "description" : "<string>", // Natural language description of the variable
    "expression" : "<string>", // The FHIRPath expression against the fixture body
    "headerField" : "<string>", // HTTP header field name for source
    "hint" : "<string>", // Hint help text for default value to enter
    "path" : "<string>", // XPath or JSONPath against the fixture body
    "sourceId" : "<id>" // Fixture Id of source expression or headerField within this variable
  }],
  "setup" : { // A series of required setup operations before tests are executed
    "action" : [{ // R!  A setup operation or assert to perform
      "operation" : { // The setup operation to perform
        "type" : { Coding }, // The operation code type that will be executed
        "resource" : "<code>", // Resource type
        "label" : "<string>", // Tracking/logging operation label
        "description" : "<string>", // Tracking/reporting operation description
        "accept" : "<code>", // Mime type to accept in the payload of the response, with charset etc.
        "contentType" : "<code>", // Mime type of the request payload contents, with charset etc.
        "destination" : <integer>, // Server responding to the request
        "encodeRequestUrl" : <boolean>, // R!  Whether or not to send the request url in encoded format
        "method" : "<code>", // delete | get | options | patch | post | put | head
        "origin" : <integer>, // Server initiating the request
        "params" : "<string>", // Explicitly defined path parameters
        "requestHeader" : [{ // Each operation can have one or more header elements
          "field" : "<string>", // R!  HTTP header field name
          "value" : "<string>" // R!  HTTP headerfield value
        }],
        "requestId" : "<id>", // Fixture Id of mapped request
        "responseId" : "<id>", // Fixture Id of mapped response
        "sourceId" : "<id>", // Fixture Id of body for PUT and POST requests
        "targetId" : "<id>", // Id of fixture used for extracting the [id],  [type], and [vid] for GET requests
        "url" : "<string>" // Request URL
      },
      "assert" : { // The assertion to perform
        "label" : "<string>", // Tracking/logging assertion label
        "description" : "<string>", // Tracking/reporting assertion description
        "direction" : "<code>", // response | request
        "compareToSourceId" : "<string>", // Id of the source fixture to be evaluated
        "compareToSourceExpression" : "<string>", // The FHIRPath expression to evaluate against the source fixture
        "compareToSourcePath" : "<string>", // XPath or JSONPath expression to evaluate against the source fixture
        "contentType" : "<code>", // Mime type to compare against the 'Content-Type' header
        "expression" : "<string>", // The FHIRPath expression to be evaluated
        "headerField" : "<string>", // HTTP header field name
        "minimumId" : "<string>", // Fixture Id of minimum content resource
        "navigationLinks" : <boolean>, // Perform validation on navigation links?
        "operator" : "<code>", // equals | notEquals | in | notIn | greaterThan | lessThan | empty | notEmpty | contains | notContains | eval
        "path" : "<string>", // XPath or JSONPath expression
        "requestMethod" : "<code>", // delete | get | options | patch | post | put | head
        "requestURL" : "<string>", // Request URL comparison value
        "resource" : "<code>", // Resource type
        "response" : "<code>", // okay | created | noContent | notModified | bad | forbidden | notFound | methodNotAllowed | conflict | gone | preconditionFailed | unprocessable
        "responseCode" : "<string>", // HTTP response code to test
        "sourceId" : "<id>", // Fixture Id of source expression or headerField
        "validateProfileId" : "<id>", // Profile Id of validation profile reference
        "value" : "<string>", // The value to compare to
        "warningOnly" : <boolean> // R!  Will this assert produce a warning only on error?
      }
    }]
  },
  "test" : [{ // A test in this script
    "name" : "<string>", // Tracking/logging name of this test
    "description" : "<string>", // Tracking/reporting short description of the test
    "action" : [{ // R!  A test operation or assert to perform
      "operation" : { Content as for TestScript.setup.action.operation }, // The setup operation to perform
      "assert" : { Content as for TestScript.setup.action.assert } // The setup assertion to perform
    }]
  }],
  "teardown" : { // A series of required clean up steps
    "action" : [{ // R!  One or more teardown operations to perform
      "operation" : { Content as for TestScript.setup.action.operation } // R!  The teardown operation to perform
    }]
  }
}

Turtle Template

@prefix fhir: <http://hl7.org/fhir/> .doco


[ a fhir:TestScript;
  fhir:nodeRole fhir:treeRoot; # if this is the parser root

  # from Resource: .id, .meta, .implicitRules, and .language
  # from DomainResource: .text, .contained, .extension, and .modifierExtension
  fhir:TestScript.url [ uri ]; # 1..1 Canonical identifier for this test script, represented as a URI (globally unique)
  fhir:TestScript.identifier [ Identifier ]; # 0..1 Additional identifier for the test script
  fhir:TestScript.version [ string ]; # 0..1 Business version of the test script
  fhir:TestScript.name [ string ]; # 1..1 Name for this test script (computer friendly)
  fhir:TestScript.title [ string ]; # 0..1 Name for this test script (human friendly)
  fhir:TestScript.status [ code ]; # 1..1 draft | active | retired | unknown
  fhir:TestScript.experimental [ boolean ]; # 0..1 For testing purposes, not real usage
  fhir:TestScript.date [ dateTime ]; # 0..1 Date last changed
  fhir:TestScript.publisher [ string ]; # 0..1 Name of the publisher (organization or individual)
  fhir:TestScript.contact [ ContactDetail ], ... ; # 0..* Contact details for the publisher
  fhir:TestScript.description [ markdown ]; # 0..1 Natural language description of the test script
  fhir:TestScript.useContext [ UsageContext ], ... ; # 0..* The context that the content is intended to support
  fhir:TestScript.jurisdiction [ CodeableConcept ], ... ; # 0..* Intended jurisdiction for test script (if applicable)
  fhir:TestScript.purpose [ markdown ]; # 0..1 Why this test script is defined
  fhir:TestScript.copyright [ markdown ]; # 0..1 Use and/or publishing restrictions
  fhir:TestScript.origin [ # 0..* An abstract server representing a client or sender in a message exchange
    fhir:TestScript.origin.index [ integer ]; # 1..1 The index of the abstract origin server starting at 1
    fhir:TestScript.origin.profile [ Coding ]; # 1..1 FHIR-Client | FHIR-SDC-FormFiller
  ], ...;
  fhir:TestScript.destination [ # 0..* An abstract server representing a destination or receiver in a message exchange
    fhir:TestScript.destination.index [ integer ]; # 1..1 The index of the abstract destination server starting at 1
    fhir:TestScript.destination.profile [ Coding ]; # 1..1 FHIR-Server | FHIR-SDC-FormManager | FHIR-SDC-FormReceiver | FHIR-SDC-FormProcessor
  ], ...;
  fhir:TestScript.metadata [ # 0..1 Required capability that is assumed to function correctly on the FHIR server being tested
    fhir:TestScript.metadata.link [ # 0..* Links to the FHIR specification
      fhir:TestScript.metadata.link.url [ uri ]; # 1..1 URL to the specification
      fhir:TestScript.metadata.link.description [ string ]; # 0..1 Short description
    ], ...;
    fhir:TestScript.metadata.capability [ # 1..* Capabilities  that are assumed to function correctly on the FHIR server being tested
      fhir:TestScript.metadata.capability.required [ boolean ]; # 1..1 Are the capabilities required?
      fhir:TestScript.metadata.capability.validated [ boolean ]; # 1..1 Are the capabilities validated?
      fhir:TestScript.metadata.capability.description [ string ]; # 0..1 The expected capabilities of the server
      fhir:TestScript.metadata.capability.origin [ integer ], ... ; # 0..* Which origin server these requirements apply to
      fhir:TestScript.metadata.capability.destination [ integer ]; # 0..1 Which server these requirements apply to
      fhir:TestScript.metadata.capability.link [ uri ], ... ; # 0..* Links to the FHIR specification
      fhir:TestScript.metadata.capability.capabilities [ canonical(CapabilityStatement) ]; # 1..1 Required Capability Statement
    ], ...;
  ];
  fhir:TestScript.fixture [ # 0..* Fixture in the test script - by reference (uri)
    fhir:TestScript.fixture.autocreate [ boolean ]; # 1..1 Whether or not to implicitly create the fixture during setup
    fhir:TestScript.fixture.autodelete [ boolean ]; # 1..1 Whether or not to implicitly delete the fixture during teardown
    fhir:TestScript.fixture.resource [ Reference(Any) ]; # 0..1 Reference of the resource
  ], ...;
  fhir:TestScript.profile [ Reference(Any) ], ... ; # 0..* Reference of the validation profile
  fhir:TestScript.variable [ # 0..* Placeholder for evaluated elements
    fhir:TestScript.variable.name [ string ]; # 1..1 Descriptive name for this variable
    fhir:TestScript.variable.defaultValue [ string ]; # 0..1 Default, hard-coded, or user-defined value for this variable
    fhir:TestScript.variable.description [ string ]; # 0..1 Natural language description of the variable
    fhir:TestScript.variable.expression [ string ]; # 0..1 The FHIRPath expression against the fixture body
    fhir:TestScript.variable.headerField [ string ]; # 0..1 HTTP header field name for source
    fhir:TestScript.variable.hint [ string ]; # 0..1 Hint help text for default value to enter
    fhir:TestScript.variable.path [ string ]; # 0..1 XPath or JSONPath against the fixture body
    fhir:TestScript.variable.sourceId [ id ]; # 0..1 Fixture Id of source expression or headerField within this variable
  ], ...;
  fhir:TestScript.setup [ # 0..1 A series of required setup operations before tests are executed
    fhir:TestScript.setup.action [ # 1..* A setup operation or assert to perform
      fhir:TestScript.setup.action.operation [ # 0..1 The setup operation to perform
        fhir:TestScript.setup.action.operation.type [ Coding ]; # 0..1 The operation code type that will be executed
        fhir:TestScript.setup.action.operation.resource [ code ]; # 0..1 Resource type
        fhir:TestScript.setup.action.operation.label [ string ]; # 0..1 Tracking/logging operation label
        fhir:TestScript.setup.action.operation.description [ string ]; # 0..1 Tracking/reporting operation description
        fhir:TestScript.setup.action.operation.accept [ code ]; # 0..1 Mime type to accept in the payload of the response, with charset etc.
        fhir:TestScript.setup.action.operation.contentType [ code ]; # 0..1 Mime type of the request payload contents, with charset etc.
        fhir:TestScript.setup.action.operation.destination [ integer ]; # 0..1 Server responding to the request
        fhir:TestScript.setup.action.operation.encodeRequestUrl [ boolean ]; # 1..1 Whether or not to send the request url in encoded format
        fhir:TestScript.setup.action.operation.method [ code ]; # 0..1 delete | get | options | patch | post | put | head
        fhir:TestScript.setup.action.operation.origin [ integer ]; # 0..1 Server initiating the request
        fhir:TestScript.setup.action.operation.params [ string ]; # 0..1 Explicitly defined path parameters
        fhir:TestScript.setup.action.operation.requestHeader [ # 0..* Each operation can have one or more header elements
          fhir:TestScript.setup.action.operation.requestHeader.field [ string ]; # 1..1 HTTP header field name
          fhir:TestScript.setup.action.operation.requestHeader.value [ string ]; # 1..1 HTTP headerfield value
        ], ...;
        fhir:TestScript.setup.action.operation.requestId [ id ]; # 0..1 Fixture Id of mapped request
        fhir:TestScript.setup.action.operation.responseId [ id ]; # 0..1 Fixture Id of mapped response
        fhir:TestScript.setup.action.operation.sourceId [ id ]; # 0..1 Fixture Id of body for PUT and POST requests
        fhir:TestScript.setup.action.operation.targetId [ id ]; # 0..1 Id of fixture used for extracting the [id],  [type], and [vid] for GET requests
        fhir:TestScript.setup.action.operation.url [ string ]; # 0..1 Request URL
      ];
      fhir:TestScript.setup.action.assert [ # 0..1 The assertion to perform
        fhir:TestScript.setup.action.assert.label [ string ]; # 0..1 Tracking/logging assertion label
        fhir:TestScript.setup.action.assert.description [ string ]; # 0..1 Tracking/reporting assertion description
        fhir:TestScript.setup.action.assert.direction [ code ]; # 0..1 response | request
        fhir:TestScript.setup.action.assert.compareToSourceId [ string ]; # 0..1 Id of the source fixture to be evaluated
        fhir:TestScript.setup.action.assert.compareToSourceExpression [ string ]; # 0..1 The FHIRPath expression to evaluate against the source fixture
        fhir:TestScript.setup.action.assert.compareToSourcePath [ string ]; # 0..1 XPath or JSONPath expression to evaluate against the source fixture
        fhir:TestScript.setup.action.assert.contentType [ code ]; # 0..1 Mime type to compare against the 'Content-Type' header
        fhir:TestScript.setup.action.assert.expression [ string ]; # 0..1 The FHIRPath expression to be evaluated
        fhir:TestScript.setup.action.assert.headerField [ string ]; # 0..1 HTTP header field name
        fhir:TestScript.setup.action.assert.minimumId [ string ]; # 0..1 Fixture Id of minimum content resource
        fhir:TestScript.setup.action.assert.navigationLinks [ boolean ]; # 0..1 Perform validation on navigation links?
        fhir:TestScript.setup.action.assert.operator [ code ]; # 0..1 equals | notEquals | in | notIn | greaterThan | lessThan | empty | notEmpty | contains | notContains | eval
        fhir:TestScript.setup.action.assert.path [ string ]; # 0..1 XPath or JSONPath expression
        fhir:TestScript.setup.action.assert.requestMethod [ code ]; # 0..1 delete | get | options | patch | post | put | head
        fhir:TestScript.setup.action.assert.requestURL [ string ]; # 0..1 Request URL comparison value
        fhir:TestScript.setup.action.assert.resource [ code ]; # 0..1 Resource type
        fhir:TestScript.setup.action.assert.response [ code ]; # 0..1 okay | created | noContent | notModified | bad | forbidden | notFound | methodNotAllowed | conflict | gone | preconditionFailed | unprocessable
        fhir:TestScript.setup.action.assert.responseCode [ string ]; # 0..1 HTTP response code to test
        fhir:TestScript.setup.action.assert.sourceId [ id ]; # 0..1 Fixture Id of source expression or headerField
        fhir:TestScript.setup.action.assert.validateProfileId [ id ]; # 0..1 Profile Id of validation profile reference
        fhir:TestScript.setup.action.assert.value [ string ]; # 0..1 The value to compare to
        fhir:TestScript.setup.action.assert.warningOnly [ boolean ]; # 1..1 Will this assert produce a warning only on error?
      ];
    ], ...;
  ];
  fhir:TestScript.test [ # 0..* A test in this script
    fhir:TestScript.test.name [ string ]; # 0..1 Tracking/logging name of this test
    fhir:TestScript.test.description [ string ]; # 0..1 Tracking/reporting short description of the test
    fhir:TestScript.test.action [ # 1..* A test operation or assert to perform
      fhir:TestScript.test.action.operation [ See TestScript.setup.action.operation ]; # 0..1 The setup operation to perform
      fhir:TestScript.test.action.assert [ See TestScript.setup.action.assert ]; # 0..1 The setup assertion to perform
    ], ...;
  ], ...;
  fhir:TestScript.teardown [ # 0..1 A series of required clean up steps
    fhir:TestScript.teardown.action [ # 1..* One or more teardown operations to perform
      fhir:TestScript.teardown.action.operation [ See TestScript.setup.action.operation ]; # 1..1 The teardown operation to perform
    ], ...;
  ];
]

Changes since R3

TestScript
TestScript.status
  • Change value set from http://hl7.org/fhir/ValueSet/publication-status to http://hl7.org/fhir/ValueSet/publication-status|4.0.1
TestScript.experimental
  • No longer marked as Modifier
TestScript.origin.profile
  • Change code system for extensibly bound codes from "http://hl7.org/fhir/testscript-profile-origin-types" to "http://terminology.hl7.org/CodeSystem/testscript-profile-origin-types"
TestScript.destination.profile
  • Change code system for extensibly bound codes from "http://hl7.org/fhir/testscript-profile-destination-types" to "http://terminology.hl7.org/CodeSystem/testscript-profile-destination-types"
TestScript.metadata.capability.required
  • Min Cardinality changed from 0 to 1
  • Default Value "false" removed
TestScript.metadata.capability.validated
  • Min Cardinality changed from 0 to 1
  • Default Value "false" removed
TestScript.metadata.capability.capabilities
  • Type changed from Reference(CapabilityStatement) to canonical(CapabilityStatement)
TestScript.fixture.autocreate
  • Min Cardinality changed from 0 to 1
  • Default Value "false" removed
TestScript.fixture.autodelete
  • Min Cardinality changed from 0 to 1
  • Default Value "false" removed
TestScript.setup.action.operation.type
  • Change code system for extensibly bound codes from "http://hl7.org/fhir/testscript-operation-codes" to "http://terminology.hl7.org/CodeSystem/testscript-operation-codes"
TestScript.setup.action.operation.resource
  • Change value set from http://hl7.org/fhir/ValueSet/defined-types to http://hl7.org/fhir/ValueSet/defined-types|4.0.1
TestScript.setup.action.operation.accept
  • Change value set from http://hl7.org/fhir/ValueSet/content-type to http://hl7.org/fhir/ValueSet/mimetypes|4.0.1
TestScript.setup.action.operation.contentType
  • Change value set from http://hl7.org/fhir/ValueSet/content-type to http://hl7.org/fhir/ValueSet/mimetypes|4.0.1
TestScript.setup.action.operation.encodeRequestUrl
  • Min Cardinality changed from 0 to 1
  • Default Value "true" removed
TestScript.setup.action.operation.method
  • Added Element
TestScript.setup.action.assert.direction
  • Change value set from http://hl7.org/fhir/ValueSet/assert-direction-codes to http://hl7.org/fhir/ValueSet/assert-direction-codes|4.0.1
TestScript.setup.action.assert.contentType
  • Change value set from http://hl7.org/fhir/ValueSet/content-type to http://hl7.org/fhir/ValueSet/mimetypes|4.0.1
TestScript.setup.action.assert.operator
  • Change value set from http://hl7.org/fhir/ValueSet/assert-operator-codes to http://hl7.org/fhir/ValueSet/assert-operator-codes|4.0.1
TestScript.setup.action.assert.requestMethod
  • Change value set from http://hl7.org/fhir/ValueSet/http-operations to http://hl7.org/fhir/ValueSet/http-operations|4.0.1
TestScript.setup.action.assert.resource
  • Change value set from http://hl7.org/fhir/ValueSet/defined-types to http://hl7.org/fhir/ValueSet/defined-types|4.0.1
TestScript.setup.action.assert.response
  • Change value set from http://hl7.org/fhir/ValueSet/assert-response-code-types to http://hl7.org/fhir/ValueSet/assert-response-code-types|4.0.1
TestScript.setup.action.assert.warningOnly
  • Min Cardinality changed from 0 to 1
  • Default Value "false" removed
TestScript.rule
  • deleted
TestScript.ruleset
  • deleted
TestScript.setup.action.assert.rule
  • deleted
TestScript.setup.action.assert.ruleset
  • deleted

See the Full Difference for further information

This analysis is available as XML or JSON.

See R3 <--> R4 Conversion Maps (status = 7 tests that all execute ok. 1 fail round-trip testing and 7 r3 resources are invalid (0 errors).)

Structure

NameFlagsCard.TypeDescription & Constraintsdoco
.. TestScript ITUDomainResourceDescribes a set of tests
+ Warning: Name should be usable as an identifier for the module by machine processing applications such as code generation
Elements defined in Ancestors: id, meta, implicitRules, language, text, contained, extension, modifierExtension
... url Σ1..1uriCanonical identifier for this test script, represented as a URI (globally unique)
... identifier Σ0..1IdentifierAdditional identifier for the test script
... version Σ0..1stringBusiness version of the test script
... name ΣI1..1stringName for this test script (computer friendly)
... title Σ0..1stringName for this test script (human friendly)
... status ?!Σ1..1codedraft | active | retired | unknown
PublicationStatus (Required)
... experimental Σ0..1booleanFor testing purposes, not real usage
... date Σ0..1dateTimeDate last changed
... publisher Σ0..1stringName of the publisher (organization or individual)
... contact Σ0..*ContactDetailContact details for the publisher
... description 0..1markdownNatural language description of the test script
... useContext Σ0..*UsageContextThe context that the content is intended to support
... jurisdiction Σ0..*CodeableConceptIntended jurisdiction for test script (if applicable)
Jurisdiction (Extensible)
... purpose 0..1markdownWhy this test script is defined
... copyright 0..1markdownUse and/or publishing restrictions
... origin 0..*BackboneElementAn abstract server representing a client or sender in a message exchange
.... index 1..1integerThe index of the abstract origin server starting at 1
.... profile 1..1CodingFHIR-Client | FHIR-SDC-FormFiller
Test script profile origin type (Extensible)
... destination 0..*BackboneElementAn abstract server representing a destination or receiver in a message exchange
.... index 1..1integerThe index of the abstract destination server starting at 1
.... profile 1..1CodingFHIR-Server | FHIR-SDC-FormManager | FHIR-SDC-FormReceiver | FHIR-SDC-FormProcessor
Test script profile destination type (Extensible)
... metadata I0..1BackboneElementRequired capability that is assumed to function correctly on the FHIR server being tested
+ Rule: TestScript metadata capability SHALL contain required or validated or both.
.... link 0..*BackboneElementLinks to the FHIR specification
..... url 1..1uriURL to the specification
..... description 0..1stringShort description
.... capability 1..*BackboneElementCapabilities that are assumed to function correctly on the FHIR server being tested
..... required 1..1booleanAre the capabilities required?
..... validated 1..1booleanAre the capabilities validated?
..... description 0..1stringThe expected capabilities of the server
..... origin 0..*integerWhich origin server these requirements apply to
..... destination 0..1integerWhich server these requirements apply to
..... link 0..*uriLinks to the FHIR specification
..... capabilities 1..1canonical(CapabilityStatement)Required Capability Statement
... fixture 0..*BackboneElementFixture in the test script - by reference (uri)
.... autocreate 1..1booleanWhether or not to implicitly create the fixture during setup
.... autodelete 1..1booleanWhether or not to implicitly delete the fixture during teardown
.... resource 0..1Reference(Any)Reference of the resource
... profile 0..*Reference(Any)Reference of the validation profile
... variable I0..*BackboneElementPlaceholder for evaluated elements
+ Rule: Variable can only contain one of expression, headerField or path.
.... name 1..1stringDescriptive name for this variable
.... defaultValue 0..1stringDefault, hard-coded, or user-defined value for this variable
.... description 0..1stringNatural language description of the variable
.... expression 0..1stringThe FHIRPath expression against the fixture body
.... headerField 0..1stringHTTP header field name for source
.... hint 0..1stringHint help text for default value to enter
.... path 0..1stringXPath or JSONPath against the fixture body
.... sourceId 0..1idFixture Id of source expression or headerField within this variable
... setup 0..1BackboneElementA series of required setup operations before tests are executed
.... action I1..*BackboneElementA setup operation or assert to perform
+ Rule: Setup action SHALL contain either an operation or assert but not both.
..... operation I0..1BackboneElementThe setup operation to perform
+ Rule: Setup operation SHALL contain either sourceId or targetId or params or url.
...... type 0..1CodingThe operation code type that will be executed
Test script operation code (Extensible)
...... resource 0..1codeResource type
FHIRDefinedType (Required)
...... label 0..1stringTracking/logging operation label
...... description 0..1stringTracking/reporting operation description
...... accept 0..1codeMime type to accept in the payload of the response, with charset etc.
MimeType (Required)
...... contentType 0..1codeMime type of the request payload contents, with charset etc.
MimeType (Required)
...... destination 0..1integerServer responding to the request
...... encodeRequestUrl 1..1booleanWhether or not to send the request url in encoded format
...... method 0..1codedelete | get | options | patch | post | put | head
TestScriptRequestMethodCode (Required)
...... origin 0..1integerServer initiating the request
...... params 0..1stringExplicitly defined path parameters
...... requestHeader 0..*BackboneElementEach operation can have one or more header elements
....... field 1..1stringHTTP header field name
....... value 1..1stringHTTP headerfield value
...... requestId 0..1idFixture Id of mapped request
...... responseId 0..1idFixture Id of mapped response
...... sourceId 0..1idFixture Id of body for PUT and POST requests
...... targetId 0..1idId of fixture used for extracting the [id], [type], and [vid] for GET requests
...... url 0..1stringRequest URL
..... assert I0..1BackboneElementThe assertion to perform
+ Rule: Only a single assertion SHALL be present within setup action assert element.
+ Rule: Setup action assert SHALL contain either compareToSourceId and compareToSourceExpression, compareToSourceId and compareToSourcePath or neither.
+ Rule: Setup action assert response and responseCode SHALL be empty when direction equals request
...... label 0..1stringTracking/logging assertion label
...... description 0..1stringTracking/reporting assertion description
...... direction 0..1coderesponse | request
AssertionDirectionType (Required)
...... compareToSourceId 0..1stringId of the source fixture to be evaluated
...... compareToSourceExpression 0..1stringThe FHIRPath expression to evaluate against the source fixture
...... compareToSourcePath 0..1stringXPath or JSONPath expression to evaluate against the source fixture
...... contentType 0..1codeMime type to compare against the 'Content-Type' header
MimeType (Required)
...... expression 0..1stringThe FHIRPath expression to be evaluated
...... headerField 0..1stringHTTP header field name
...... minimumId 0..1stringFixture Id of minimum content resource
...... navigationLinks 0..1booleanPerform validation on navigation links?
...... operator 0..1codeequals | notEquals | in | notIn | greaterThan | lessThan | empty | notEmpty | contains | notContains | eval
AssertionOperatorType (Required)
...... path 0..1stringXPath or JSONPath expression
...... requestMethod 0..1codedelete | get | options | patch | post | put | head
TestScriptRequestMethodCode (Required)
...... requestURL 0..1stringRequest URL comparison value
...... resource 0..1codeResource type
FHIRDefinedType (Required)
...... response 0..1codeokay | created | noContent | notModified | bad | forbidden | notFound | methodNotAllowed | conflict | gone | preconditionFailed | unprocessable
AssertionResponseTypes (Required)
...... responseCode 0..1stringHTTP response code to test
...... sourceId 0..1idFixture Id of source expression or headerField
...... validateProfileId 0..1idProfile Id of validation profile reference
...... value 0..1stringThe value to compare to
...... warningOnly 1..1booleanWill this assert produce a warning only on error?
... test 0..*BackboneElementA test in this script
.... name 0..1stringTracking/logging name of this test
.... description 0..1stringTracking/reporting short description of the test
.... action I1..*BackboneElementA test operation or assert to perform
+ Rule: Test action SHALL contain either an operation or assert but not both.
..... operation I0..1see operationThe setup operation to perform
+ Rule: Test operation SHALL contain either sourceId or targetId or params or url.
..... assert I0..1see assertThe setup assertion to perform
+ Rule: Only a single assertion SHALL be present within test action assert element.
+ Rule: Test action assert SHALL contain either compareToSourceId and compareToSourceExpression, compareToSourceId and compareToSourcePath or neither.
+ Rule: Test action assert response and response and responseCode SHALL be empty when direction equals request
... teardown 0..1BackboneElementA series of required clean up steps
.... action 1..*BackboneElementOne or more teardown operations to perform
..... operation I1..1see operationThe teardown operation to perform
+ Rule: Teardown operation SHALL contain either sourceId or targetId or params or url.

doco Documentation for this format

UML Diagram (Legend)

TestScript (DomainResource)📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนurl : uri [1..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนidentifier : Identifier [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนversion : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนname : string [1..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนtitle : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนstatus : code [1..1] « 📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนPublicationStatus! »📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนexperimental : boolean [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนdate : dateTime [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนpublisher : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนcontact : ContactDetail [0..*]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนdescription : markdown [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนuseContext : UsageContext [0..*]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนjurisdiction : CodeableConcept [0..*] « 📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนJurisdiction ValueSet+ »📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนpurpose : markdown [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนcopyright : markdown [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนprofile : Reference [0..*] « Any »Origin📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนindex : integer [1..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนprofile : Coding [1..1] « 📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนTestScriptProfileOriginType+ »Destination📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนindex : integer [1..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนprofile : Coding [1..1] « 📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนTestScriptProfileDestinationT...+ »MetadataLink📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนurl : uri [1..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนdescription : string [0..1]Capability📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนrequired : boolean [1..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนvalidated : boolean [1..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนdescription : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนorigin : integer [0..*]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนdestination : integer [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนlink : uri [0..*]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนcapabilities : canonical [1..1] « CapabilityStatement »Fixture📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนautocreate : boolean [1..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนautodelete : boolean [1..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนresource : Reference [0..1] « Any »Variable📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนname : string [1..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนdefaultValue : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนdescription : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนexpression : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนheaderField : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนhint : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนpath : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนsourceId : id [0..1]SetupSetupActionOperation📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนtype : Coding [0..1] « 📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนTestScriptOperationCode+ »📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนresource : code [0..1] « 📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนFHIRDefinedType! »📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนlabel : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนdescription : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนaccept : code [0..1] « 📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนMime Types! »📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนcontentType : code [0..1] « 📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนMime Types! »📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนdestination : integer [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนencodeRequestUrl : boolean [1..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนmethod : code [0..1] « 📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนTestScriptRequestMethodCode! »📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนorigin : integer [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนparams : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนrequestId : id [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนresponseId : id [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนsourceId : id [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนtargetId : id [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนurl : string [0..1]RequestHeader📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนfield : string [1..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนvalue : string [1..1]Assert📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนlabel : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนdescription : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนdirection : code [0..1] « 📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนAssertionDirectionType! »📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนcompareToSourceId : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนcompareToSourceExpression : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนcompareToSourcePath : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนcontentType : code [0..1] « 📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนMime Types! »📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนexpression : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนheaderField : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนminimumId : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนnavigationLinks : boolean [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนoperator : code [0..1] « 📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนAssertionOperatorType! »📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนpath : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนrequestMethod : code [0..1] « 📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนTestScriptRequestMethodCode! »📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนrequestURL : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนresource : code [0..1] « 📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนFHIRDefinedType! »📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนresponse : code [0..1] « 📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนAssertionResponseTypes! »📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนresponseCode : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนsourceId : id [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนvalidateProfileId : id [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนvalue : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนwarningOnly : boolean [1..1]Test📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนname : string [0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนdescription : string [0..1]TestActionTeardownTeardownAction📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนorigin[0..*]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนdestination[0..*]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนlink[0..*]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนcapability[1..*]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนmetadata[0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนfixture[0..*]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนvariable[0..*]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนrequestHeader[0..*]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนoperation[0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนassert[0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนaction[1..*]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนsetup[0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนoperation[0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนassert[0..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนaction[1..*]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนtest[0..*]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนoperation[1..1]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนaction[1..*]📢 แจ้งเตือน: fhir/R/testscript.html - ประเด็นร้อนteardown[0..1]

XML Template

<TestScript xmlns="http://hl7.org/fhir"> doco
 <!-- from Resource: id, meta, implicitRules, and language -->
 <!-- from DomainResource: text, contained, extension, and modifierExtension -->
 <url value="[uri]"/><!-- 1..1 Canonical identifier for this test script, represented as a URI (globally unique) -->
 <identifier><!-- 0..1 Identifier Additional identifier for the test script --></identifier>
 <version value="[string]"/><!-- 0..1 Business version of the test script -->
 <name value="[string]"/><!-- ?? 1..1 Name for this test script (computer friendly) -->
 <title value="[string]"/><!-- 0..1 Name for this test script (human friendly) -->
 <status value="[code]"/><!-- 1..1 draft | active | retired | unknown -->
 <experimental value="[boolean]"/><!-- 0..1 For testing purposes, not real usage -->
 <date value="[dateTime]"/><!-- 0..1 Date last changed -->
 <publisher value="[string]"/><!-- 0..1 Name of the publisher (organization or individual) -->
 <contact><!-- 0..* ContactDetail Contact details for the publisher --></contact>
 <description value="[markdown]"/><!-- 0..1 Natural language description of the test script -->
 <useContext><!-- 0..* UsageContext The context that the content is intended to support --></useContext>
 <jurisdiction><!-- 0..* CodeableConcept Intended jurisdiction for test script (if applicable) --></jurisdiction>
 <purpose value="[markdown]"/><!-- 0..1 Why this test script is defined -->
 <copyright value="[markdown]"/><!-- 0..1 Use and/or publishing restrictions -->
 <origin>  <!-- 0..* An abstract server representing a client or sender in a message exchange -->
  <index value="[integer]"/><!-- 1..1 The index of the abstract origin server starting at 1 -->
  <profile><!-- 1..1 Coding FHIR-Client | FHIR-SDC-FormFiller --></profile>
 </origin>
 <destination>  <!-- 0..* An abstract server representing a destination or receiver in a message exchange -->
  <index value="[integer]"/><!-- 1..1 The index of the abstract destination server starting at 1 -->
  <profile><!-- 1..1 Coding FHIR-Server | FHIR-SDC-FormManager | FHIR-SDC-FormReceiver | FHIR-SDC-FormProcessor --></profile>
 </destination>
 <metadata>  <!-- 0..1 Required capability that is assumed to function correctly on the FHIR server being tested -->
  <link>  <!-- 0..* Links to the FHIR specification -->
   <url value="[uri]"/><!-- 1..1 URL to the specification -->
   <description value="[string]"/><!-- 0..1 Short description -->
  </link>
  <capability>  <!-- 1..* Capabilities  that are assumed to function correctly on the FHIR server being tested -->
   <required value="[boolean]"/><!-- 1..1 Are the capabilities required? -->
   <validated value="[boolean]"/><!-- 1..1 Are the capabilities validated? -->
   <description value="[string]"/><!-- 0..1 The expected capabilities of the server -->
   <origin value="[integer]"/><!-- 0..* Which origin server these requirements apply to -->
   <destination value="[integer]"/><!-- 0..1 Which server these requirements apply to -->
   <link value="[uri]"/><!-- 0..* Links to the FHIR specification -->
   <capabilities><!-- 1..1 canonical(CapabilityStatement) Required Capability Statement --></capabilities>
  </capability>
 </metadata>
 <fixture>  <!-- 0..* Fixture in the test script - by reference (uri) -->
  <autocreate value="[boolean]"/><!-- 1..1 Whether or not to implicitly create the fixture during setup -->
  <autodelete value="[boolean]"/><!-- 1..1 Whether or not to implicitly delete the fixture during teardown -->
  <resource><!-- 0..1 Reference(Any) Reference of the resource --></resource>
 </fixture>
 <profile><!-- 0..* Reference(Any) Reference of the validation profile --></profile>
 <variable>  <!-- 0..* Placeholder for evaluated elements -->
  <name value="[string]"/><!-- 1..1 Descriptive name for this variable -->
  <defaultValue value="[string]"/><!-- 0..1 Default, hard-coded, or user-defined value for this variable -->
  <description value="[string]"/><!-- 0..1 Natural language description of the variable -->
  <expression value="[string]"/><!-- 0..1 The FHIRPath expression against the fixture body -->
  <headerField value="[string]"/><!-- 0..1 HTTP header field name for source -->
  <hint value="[string]"/><!-- 0..1 Hint help text for default value to enter -->
  <path value="[string]"/><!-- 0..1 XPath or JSONPath against the fixture body -->
  <sourceId value="[id]"/><!-- 0..1 Fixture Id of source expression or headerField within this variable -->
 </variable>
 <setup>  <!-- 0..1 A series of required setup operations before tests are executed -->
  <action>  <!-- 1..* A setup operation or assert to perform -->
   <operation>  <!-- 0..1 The setup operation to perform -->
    <type><!-- 0..1 Coding The operation code type that will be executed --></type>
    <resource value="[code]"/><!-- 0..1 Resource type -->
    <label value="[string]"/><!-- 0..1 Tracking/logging operation label -->
    <description value="[string]"/><!-- 0..1 Tracking/reporting operation description -->
    <accept value="[code]"/><!-- 0..1 Mime type to accept in the payload of the response, with charset etc. -->
    <contentType value="[code]"/><!-- 0..1 Mime type of the request payload contents, with charset etc. -->
    <destination value="[integer]"/><!-- 0..1 Server responding to the request -->
    <encodeRequestUrl value="[boolean]"/><!-- 1..1 Whether or not to send the request url in encoded format -->
    <method value="[code]"/><!-- 0..1 delete | get | options | patch | post | put | head -->
    <origin value="[integer]"/><!-- 0..1 Server initiating the request -->
    <params value="[string]"/><!-- 0..1 Explicitly defined path parameters -->
    <requestHeader>  <!-- 0..* Each operation can have one or more header elements -->
     <field value="[string]"/><!-- 1..1 HTTP header field name -->
     <value value="[string]"/><!-- 1..1 HTTP headerfield value -->
    </requestHeader>
    <requestId value="[id]"/><!-- 0..1 Fixture Id of mapped request -->
    <responseId value="[id]"/><!-- 0..1 Fixture Id of mapped response -->
    <sourceId value="[id]"/><!-- 0..1 Fixture Id of body for PUT and POST requests -->
    <targetId value="[id]"/><!-- 0..1 Id of fixture used for extracting the [id],  [type], and [vid] for GET requests -->
    <url value="[string]"/><!-- 0..1 Request URL -->
   </operation>
   <assert>  <!-- 0..1 The assertion to perform -->
    <label value="[string]"/><!-- 0..1 Tracking/logging assertion label -->
    <description value="[string]"/><!-- 0..1 Tracking/reporting assertion description -->
    <direction value="[code]"/><!-- 0..1 response | request -->
    <compareToSourceId value="[string]"/><!-- 0..1 Id of the source fixture to be evaluated -->
    <compareToSourceExpression value="[string]"/><!-- 0..1 The FHIRPath expression to evaluate against the source fixture -->
    <compareToSourcePath value="[string]"/><!-- 0..1 XPath or JSONPath expression to evaluate against the source fixture -->
    <contentType value="[code]"/><!-- 0..1 Mime type to compare against the 'Content-Type' header -->
    <expression value="[string]"/><!-- 0..1 The FHIRPath expression to be evaluated -->
    <headerField value="[string]"/><!-- 0..1 HTTP header field name -->
    <minimumId value="[string]"/><!-- 0..1 Fixture Id of minimum content resource -->
    <navigationLinks value="[boolean]"/><!-- 0..1 Perform validation on navigation links? -->
    <operator value="[code]"/><!-- 0..1 equals | notEquals | in | notIn | greaterThan | lessThan | empty | notEmpty | contains | notContains | eval -->
    <path value="[string]"/><!-- 0..1 XPath or JSONPath expression -->
    <requestMethod value="[code]"/><!-- 0..1 delete | get | options | patch | post | put | head -->
    <requestURL value="[string]"/><!-- 0..1 Request URL comparison value -->
    <resource value="[code]"/><!-- 0..1 Resource type -->
    <response value="[code]"/><!-- 0..1 okay | created | noContent | notModified | bad | forbidden | notFound | methodNotAllowed | conflict | gone | preconditionFailed | unprocessable -->
    <responseCode value="[string]"/><!-- 0..1 HTTP response code to test -->
    <sourceId value="[id]"/><!-- 0..1 Fixture Id of source expression or headerField -->
    <validateProfileId value="[id]"/><!-- 0..1 Profile Id of validation profile reference -->
    <value value="[string]"/><!-- 0..1 The value to compare to -->
    <warningOnly value="[boolean]"/><!-- 1..1 Will this assert produce a warning only on error? -->
   </assert>
  </action>
 </setup>
 <test>  <!-- 0..* A test in this script -->
  <name value="[string]"/><!-- 0..1 Tracking/logging name of this test -->
  <description value="[string]"/><!-- 0..1 Tracking/reporting short description of the test -->
  <action>  <!-- 1..* A test operation or assert to perform -->
   <operation><!-- 0..1 Content as for TestScript.setup.action.operation The setup operation to perform --></operation>
   <assert><!-- 0..1 Content as for TestScript.setup.action.assert The setup assertion to perform --></assert>
  </action>
 </test>
 <teardown>  <!-- 0..1 A series of required clean up steps -->
  <action>  <!-- 1..* One or more teardown operations to perform -->
   <operation><!-- 1..1 Content as for TestScript.setup.action.operation The teardown operation to perform --></operation>
  </action>
 </teardown>
</TestScript>

JSON Template

{doco
  "resourceType" : "TestScript",
  // from Resource: id, meta, implicitRules, and language
  // from DomainResource: text, contained, extension, and modifierExtension
  "url" : "<uri>", // R!  Canonical identifier for this test script, represented as a URI (globally unique)
  "identifier" : { Identifier }, // Additional identifier for the test script
  "version" : "<string>", // Business version of the test script
  "name" : "<string>", // C? R!  Name for this test script (computer friendly)
  "title" : "<string>", // Name for this test script (human friendly)
  "status" : "<code>", // R!  draft | active | retired | unknown
  "experimental" : <boolean>, // For testing purposes, not real usage
  "date" : "<dateTime>", // Date last changed
  "publisher" : "<string>", // Name of the publisher (organization or individual)
  "contact" : [{ ContactDetail }], // Contact details for the publisher
  "description" : "<markdown>", // Natural language description of the test script
  "useContext" : [{ UsageContext }], // The context that the content is intended to support
  "jurisdiction" : [{ CodeableConcept }], // Intended jurisdiction for test script (if applicable)
  "purpose" : "<markdown>", // Why this test script is defined
  "copyright" : "<markdown>", // Use and/or publishing restrictions
  "origin" : [{ // An abstract server representing a client or sender in a message exchange
    "index" : <integer>, // R!  The index of the abstract origin server starting at 1
    "profile" : { Coding } // R!  FHIR-Client | FHIR-SDC-FormFiller
  }],
  "destination" : [{ // An abstract server representing a destination or receiver in a message exchange
    "index" : <integer>, // R!  The index of the abstract destination server starting at 1
    "profile" : { Coding } // R!  FHIR-Server | FHIR-SDC-FormManager | FHIR-SDC-FormReceiver | FHIR-SDC-FormProcessor
  }],
  "metadata" : { // Required capability that is assumed to function correctly on the FHIR server being tested
    "link" : [{ // Links to the FHIR specification
      "url" : "<uri>", // R!  URL to the specification
      "description" : "<string>" // Short description
    }],
    "capability" : [{ // R!  Capabilities  that are assumed to function correctly on the FHIR server being tested
      "required" : <boolean>, // R!  Are the capabilities required?
      "validated" : <boolean>, // R!  Are the capabilities validated?
      "description" : "<string>", // The expected capabilities of the server
      "origin" : [<integer>], // Which origin server these requirements apply to
      "destination" : <integer>, // Which server these requirements apply to
      "link" : ["<uri>"], // Links to the FHIR specification
      "capabilities" : { canonical(CapabilityStatement) } // R!  Required Capability Statement
    }]
  },
  "fixture" : [{ // Fixture in the test script - by reference (uri)
    "autocreate" : <boolean>, // R!  Whether or not to implicitly create the fixture during setup
    "autodelete" : <boolean>, // R!  Whether or not to implicitly delete the fixture during teardown
    "resource" : { Reference(Any) } // Reference of the resource
  }],
  "profile" : [{ Reference(Any) }], // Reference of the validation profile
  "variable" : [{ // Placeholder for evaluated elements
    "name" : "<string>", // R!  Descriptive name for this variable
    "defaultValue" : "<string>", // Default, hard-coded, or user-defined value for this variable
    "description" : "<string>", // Natural language description of the variable
    "expression" : "<string>", // The FHIRPath expression against the fixture body
    "headerField" : "<string>", // HTTP header field name for source
    "hint" : "<string>", // Hint help text for default value to enter
    "path" : "<string>", // XPath or JSONPath against the fixture body
    "sourceId" : "<id>" // Fixture Id of source expression or headerField within this variable
  }],
  "setup" : { // A series of required setup operations before tests are executed
    "action" : [{ // R!  A setup operation or assert to perform
      "operation" : { // The setup operation to perform
        "type" : { Coding }, // The operation code type that will be executed
        "resource" : "<code>", // Resource type
        "label" : "<string>", // Tracking/logging operation label
        "description" : "<string>", // Tracking/reporting operation description
        "accept" : "<code>", // Mime type to accept in the payload of the response, with charset etc.
        "contentType" : "<code>", // Mime type of the request payload contents, with charset etc.
        "destination" : <integer>, // Server responding to the request
        "encodeRequestUrl" : <boolean>, // R!  Whether or not to send the request url in encoded format
        "method" : "<code>", // delete | get | options | patch | post | put | head
        "origin" : <integer>, // Server initiating the request
        "params" : "<string>", // Explicitly defined path parameters
        "requestHeader" : [{ // Each operation can have one or more header elements
          "field" : "<string>", // R!  HTTP header field name
          "value" : "<string>" // R!  HTTP headerfield value
        }],
        "requestId" : "<id>", // Fixture Id of mapped request
        "responseId" : "<id>", // Fixture Id of mapped response
        "sourceId" : "<id>", // Fixture Id of body for PUT and POST requests
        "targetId" : "<id>", // Id of fixture used for extracting the [id],  [type], and [vid] for GET requests
        "url" : "<string>" // Request URL
      },
      "assert" : { // The assertion to perform
        "label" : "<string>", // Tracking/logging assertion label
        "description" : "<string>", // Tracking/reporting assertion description
        "direction" : "<code>", // response | request
        "compareToSourceId" : "<string>", // Id of the source fixture to be evaluated
        "compareToSourceExpression" : "<string>", // The FHIRPath expression to evaluate against the source fixture
        "compareToSourcePath" : "<string>", // XPath or JSONPath expression to evaluate against the source fixture
        "contentType" : "<code>", // Mime type to compare against the 'Content-Type' header
        "expression" : "<string>", // The FHIRPath expression to be evaluated
        "headerField" : "<string>", // HTTP header field name
        "minimumId" : "<string>", // Fixture Id of minimum content resource
        "navigationLinks" : <boolean>, // Perform validation on navigation links?
        "operator" : "<code>", // equals | notEquals | in | notIn | greaterThan | lessThan | empty | notEmpty | contains | notContains | eval
        "path" : "<string>", // XPath or JSONPath expression
        "requestMethod" : "<code>", // delete | get | options | patch | post | put | head
        "requestURL" : "<string>", // Request URL comparison value
        "resource" : "<code>", // Resource type
        "response" : "<code>", // okay | created | noContent | notModified | bad | forbidden | notFound | methodNotAllowed | conflict | gone | preconditionFailed | unprocessable
        "responseCode" : "<string>", // HTTP response code to test
        "sourceId" : "<id>", // Fixture Id of source expression or headerField
        "validateProfileId" : "<id>", // Profile Id of validation profile reference
        "value" : "<string>", // The value to compare to
        "warningOnly" : <boolean> // R!  Will this assert produce a warning only on error?
      }
    }]
  },
  "test" : [{ // A test in this script
    "name" : "<string>", // Tracking/logging name of this test
    "description" : "<string>", // Tracking/reporting short description of the test
    "action" : [{ // R!  A test operation or assert to perform
      "operation" : { Content as for TestScript.setup.action.operation }, // The setup operation to perform
      "assert" : { Content as for TestScript.setup.action.assert } // The setup assertion to perform
    }]
  }],
  "teardown" : { // A series of required clean up steps
    "action" : [{ // R!  One or more teardown operations to perform
      "operation" : { Content as for TestScript.setup.action.operation } // R!  The teardown operation to perform
    }]
  }
}

Turtle Template

@prefix fhir: <http://hl7.org/fhir/> .doco


[ a fhir:TestScript;
  fhir:nodeRole fhir:treeRoot; # if this is the parser root

  # from Resource: .id, .meta, .implicitRules, and .language
  # from DomainResource: .text, .contained, .extension, and .modifierExtension
  fhir:TestScript.url [ uri ]; # 1..1 Canonical identifier for this test script, represented as a URI (globally unique)
  fhir:TestScript.identifier [ Identifier ]; # 0..1 Additional identifier for the test script
  fhir:TestScript.version [ string ]; # 0..1 Business version of the test script
  fhir:TestScript.name [ string ]; # 1..1 Name for this test script (computer friendly)
  fhir:TestScript.title [ string ]; # 0..1 Name for this test script (human friendly)
  fhir:TestScript.status [ code ]; # 1..1 draft | active | retired | unknown
  fhir:TestScript.experimental [ boolean ]; # 0..1 For testing purposes, not real usage
  fhir:TestScript.date [ dateTime ]; # 0..1 Date last changed
  fhir:TestScript.publisher [ string ]; # 0..1 Name of the publisher (organization or individual)
  fhir:TestScript.contact [ ContactDetail ], ... ; # 0..* Contact details for the publisher
  fhir:TestScript.description [ markdown ]; # 0..1 Natural language description of the test script
  fhir:TestScript.useContext [ UsageContext ], ... ; # 0..* The context that the content is intended to support
  fhir:TestScript.jurisdiction [ CodeableConcept ], ... ; # 0..* Intended jurisdiction for test script (if applicable)
  fhir:TestScript.purpose [ markdown ]; # 0..1 Why this test script is defined
  fhir:TestScript.copyright [ markdown ]; # 0..1 Use and/or publishing restrictions
  fhir:TestScript.origin [ # 0..* An abstract server representing a client or sender in a message exchange
    fhir:TestScript.origin.index [ integer ]; # 1..1 The index of the abstract origin server starting at 1
    fhir:TestScript.origin.profile [ Coding ]; # 1..1 FHIR-Client | FHIR-SDC-FormFiller
  ], ...;
  fhir:TestScript.destination [ # 0..* An abstract server representing a destination or receiver in a message exchange
    fhir:TestScript.destination.index [ integer ]; # 1..1 The index of the abstract destination server starting at 1
    fhir:TestScript.destination.profile [ Coding ]; # 1..1 FHIR-Server | FHIR-SDC-FormManager | FHIR-SDC-FormReceiver | FHIR-SDC-FormProcessor
  ], ...;
  fhir:TestScript.metadata [ # 0..1 Required capability that is assumed to function correctly on the FHIR server being tested
    fhir:TestScript.metadata.link [ # 0..* Links to the FHIR specification
      fhir:TestScript.metadata.link.url [ uri ]; # 1..1 URL to the specification
      fhir:TestScript.metadata.link.description [ string ]; # 0..1 Short description
    ], ...;
    fhir:TestScript.metadata.capability [ # 1..* Capabilities  that are assumed to function correctly on the FHIR server being tested
      fhir:TestScript.metadata.capability.required [ boolean ]; # 1..1 Are the capabilities required?
      fhir:TestScript.metadata.capability.validated [ boolean ]; # 1..1 Are the capabilities validated?
      fhir:TestScript.metadata.capability.description [ string ]; # 0..1 The expected capabilities of the server
      fhir:TestScript.metadata.capability.origin [ integer ], ... ; # 0..* Which origin server these requirements apply to
      fhir:TestScript.metadata.capability.destination [ integer ]; # 0..1 Which server these requirements apply to
      fhir:TestScript.metadata.capability.link [ uri ], ... ; # 0..* Links to the FHIR specification
      fhir:TestScript.metadata.capability.capabilities [ canonical(CapabilityStatement) ]; # 1..1 Required Capability Statement
    ], ...;
  ];
  fhir:TestScript.fixture [ # 0..* Fixture in the test script - by reference (uri)
    fhir:TestScript.fixture.autocreate [ boolean ]; # 1..1 Whether or not to implicitly create the fixture during setup
    fhir:TestScript.fixture.autodelete [ boolean ]; # 1..1 Whether or not to implicitly delete the fixture during teardown
    fhir:TestScript.fixture.resource [ Reference(Any) ]; # 0..1 Reference of the resource
  ], ...;
  fhir:TestScript.profile [ Reference(Any) ], ... ; # 0..* Reference of the validation profile
  fhir:TestScript.variable [ # 0..* Placeholder for evaluated elements
    fhir:TestScript.variable.name [ string ]; # 1..1 Descriptive name for this variable
    fhir:TestScript.variable.defaultValue [ string ]; # 0..1 Default, hard-coded, or user-defined value for this variable
    fhir:TestScript.variable.description [ string ]; # 0..1 Natural language description of the variable
    fhir:TestScript.variable.expression [ string ]; # 0..1 The FHIRPath expression against the fixture body
    fhir:TestScript.variable.headerField [ string ]; # 0..1 HTTP header field name for source
    fhir:TestScript.variable.hint [ string ]; # 0..1 Hint help text for default value to enter
    fhir:TestScript.variable.path [ string ]; # 0..1 XPath or JSONPath against the fixture body
    fhir:TestScript.variable.sourceId [ id ]; # 0..1 Fixture Id of source expression or headerField within this variable
  ], ...;
  fhir:TestScript.setup [ # 0..1 A series of required setup operations before tests are executed
    fhir:TestScript.setup.action [ # 1..* A setup operation or assert to perform
      fhir:TestScript.setup.action.operation [ # 0..1 The setup operation to perform
        fhir:TestScript.setup.action.operation.type [ Coding ]; # 0..1 The operation code type that will be executed
        fhir:TestScript.setup.action.operation.resource [ code ]; # 0..1 Resource type
        fhir:TestScript.setup.action.operation.label [ string ]; # 0..1 Tracking/logging operation label
        fhir:TestScript.setup.action.operation.description [ string ]; # 0..1 Tracking/reporting operation description
        fhir:TestScript.setup.action.operation.accept [ code ]; # 0..1 Mime type to accept in the payload of the response, with charset etc.
        fhir:TestScript.setup.action.operation.contentType [ code ]; # 0..1 Mime type of the request payload contents, with charset etc.
        fhir:TestScript.setup.action.operation.destination [ integer ]; # 0..1 Server responding to the request
        fhir:TestScript.setup.action.operation.encodeRequestUrl [ boolean ]; # 1..1 Whether or not to send the request url in encoded format
        fhir:TestScript.setup.action.operation.method [ code ]; # 0..1 delete | get | options | patch | post | put | head
        fhir:TestScript.setup.action.operation.origin [ integer ]; # 0..1 Server initiating the request
        fhir:TestScript.setup.action.operation.params [ string ]; # 0..1 Explicitly defined path parameters
        fhir:TestScript.setup.action.operation.requestHeader [ # 0..* Each operation can have one or more header elements
          fhir:TestScript.setup.action.operation.requestHeader.field [ string ]; # 1..1 HTTP header field name
          fhir:TestScript.setup.action.operation.requestHeader.value [ string ]; # 1..1 HTTP headerfield value
        ], ...;
        fhir:TestScript.setup.action.operation.requestId [ id ]; # 0..1 Fixture Id of mapped request
        fhir:TestScript.setup.action.operation.responseId [ id ]; # 0..1 Fixture Id of mapped response
        fhir:TestScript.setup.action.operation.sourceId [ id ]; # 0..1 Fixture Id of body for PUT and POST requests
        fhir:TestScript.setup.action.operation.targetId [ id ]; # 0..1 Id of fixture used for extracting the [id],  [type], and [vid] for GET requests
        fhir:TestScript.setup.action.operation.url [ string ]; # 0..1 Request URL
      ];
      fhir:TestScript.setup.action.assert [ # 0..1 The assertion to perform
        fhir:TestScript.setup.action.assert.label [ string ]; # 0..1 Tracking/logging assertion label
        fhir:TestScript.setup.action.assert.description [ string ]; # 0..1 Tracking/reporting assertion description
        fhir:TestScript.setup.action.assert.direction [ code ]; # 0..1 response | request
        fhir:TestScript.setup.action.assert.compareToSourceId [ string ]; # 0..1 Id of the source fixture to be evaluated
        fhir:TestScript.setup.action.assert.compareToSourceExpression [ string ]; # 0..1 The FHIRPath expression to evaluate against the source fixture
        fhir:TestScript.setup.action.assert.compareToSourcePath [ string ]; # 0..1 XPath or JSONPath expression to evaluate against the source fixture
        fhir:TestScript.setup.action.assert.contentType [ code ]; # 0..1 Mime type to compare against the 'Content-Type' header
        fhir:TestScript.setup.action.assert.expression [ string ]; # 0..1 The FHIRPath expression to be evaluated
        fhir:TestScript.setup.action.assert.headerField [ string ]; # 0..1 HTTP header field name
        fhir:TestScript.setup.action.assert.minimumId [ string ]; # 0..1 Fixture Id of minimum content resource
        fhir:TestScript.setup.action.assert.navigationLinks [ boolean ]; # 0..1 Perform validation on navigation links?
        fhir:TestScript.setup.action.assert.operator [ code ]; # 0..1 equals | notEquals | in | notIn | greaterThan | lessThan | empty | notEmpty | contains | notContains | eval
        fhir:TestScript.setup.action.assert.path [ string ]; # 0..1 XPath or JSONPath expression
        fhir:TestScript.setup.action.assert.requestMethod [ code ]; # 0..1 delete | get | options | patch | post | put | head
        fhir:TestScript.setup.action.assert.requestURL [ string ]; # 0..1 Request URL comparison value
        fhir:TestScript.setup.action.assert.resource [ code ]; # 0..1 Resource type
        fhir:TestScript.setup.action.assert.response [ code ]; # 0..1 okay | created | noContent | notModified | bad | forbidden | notFound | methodNotAllowed | conflict | gone | preconditionFailed | unprocessable
        fhir:TestScript.setup.action.assert.responseCode [ string ]; # 0..1 HTTP response code to test
        fhir:TestScript.setup.action.assert.sourceId [ id ]; # 0..1 Fixture Id of source expression or headerField
        fhir:TestScript.setup.action.assert.validateProfileId [ id ]; # 0..1 Profile Id of validation profile reference
        fhir:TestScript.setup.action.assert.value [ string ]; # 0..1 The value to compare to
        fhir:TestScript.setup.action.assert.warningOnly [ boolean ]; # 1..1 Will this assert produce a warning only on error?
      ];
    ], ...;
  ];
  fhir:TestScript.test [ # 0..* A test in this script
    fhir:TestScript.test.name [ string ]; # 0..1 Tracking/logging name of this test
    fhir:TestScript.test.description [ string ]; # 0..1 Tracking/reporting short description of the test
    fhir:TestScript.test.action [ # 1..* A test operation or assert to perform
      fhir:TestScript.test.action.operation [ See TestScript.setup.action.operation ]; # 0..1 The setup operation to perform
      fhir:TestScript.test.action.assert [ See TestScript.setup.action.assert ]; # 0..1 The setup assertion to perform
    ], ...;
  ], ...;
  fhir:TestScript.teardown [ # 0..1 A series of required clean up steps
    fhir:TestScript.teardown.action [ # 1..* One or more teardown operations to perform
      fhir:TestScript.teardown.action.operation [ See TestScript.setup.action.operation ]; # 1..1 The teardown operation to perform
    ], ...;
  ];
]

Changes since Release 3

TestScript
TestScript.status
  • Change value set from http://hl7.org/fhir/ValueSet/publication-status to http://hl7.org/fhir/ValueSet/publication-status|4.0.1
TestScript.experimental
  • No longer marked as Modifier
TestScript.origin.profile
  • Change code system for extensibly bound codes from "http://hl7.org/fhir/testscript-profile-origin-types" to "http://terminology.hl7.org/CodeSystem/testscript-profile-origin-types"
TestScript.destination.profile
  • Change code system for extensibly bound codes from "http://hl7.org/fhir/testscript-profile-destination-types" to "http://terminology.hl7.org/CodeSystem/testscript-profile-destination-types"
TestScript.metadata.capability.required
  • Min Cardinality changed from 0 to 1
  • Default Value "false" removed
TestScript.metadata.capability.validated
  • Min Cardinality changed from 0 to 1
  • Default Value "false" removed
TestScript.metadata.capability.capabilities
  • Type changed from Reference(CapabilityStatement) to canonical(CapabilityStatement)
TestScript.fixture.autocreate
  • Min Cardinality changed from 0 to 1
  • Default Value "false" removed
TestScript.fixture.autodelete
  • Min Cardinality changed from 0 to 1
  • Default Value "false" removed
TestScript.setup.action.operation.type
  • Change code system for extensibly bound codes from "http://hl7.org/fhir/testscript-operation-codes" to "http://terminology.hl7.org/CodeSystem/testscript-operation-codes"
TestScript.setup.action.operation.resource
  • Change value set from http://hl7.org/fhir/ValueSet/defined-types to http://hl7.org/fhir/ValueSet/defined-types|4.0.1
TestScript.setup.action.operation.accept
  • Change value set from http://hl7.org/fhir/ValueSet/content-type to http://hl7.org/fhir/ValueSet/mimetypes|4.0.1
TestScript.setup.action.operation.contentType
  • Change value set from http://hl7.org/fhir/ValueSet/content-type to http://hl7.org/fhir/ValueSet/mimetypes|4.0.1
TestScript.setup.action.operation.encodeRequestUrl
  • Min Cardinality changed from 0 to 1
  • Default Value "true" removed
TestScript.setup.action.operation.method
  • Added Element
TestScript.setup.action.assert.direction
  • Change value set from http://hl7.org/fhir/ValueSet/assert-direction-codes to http://hl7.org/fhir/ValueSet/assert-direction-codes|4.0.1
TestScript.setup.action.assert.contentType
  • Change value set from http://hl7.org/fhir/ValueSet/content-type to http://hl7.org/fhir/ValueSet/mimetypes|4.0.1
TestScript.setup.action.assert.operator
  • Change value set from http://hl7.org/fhir/ValueSet/assert-operator-codes to http://hl7.org/fhir/ValueSet/assert-operator-codes|4.0.1
TestScript.setup.action.assert.requestMethod
  • Change value set from http://hl7.org/fhir/ValueSet/http-operations to http://hl7.org/fhir/ValueSet/http-operations|4.0.1
TestScript.setup.action.assert.resource
  • Change value set from http://hl7.org/fhir/ValueSet/defined-types to http://hl7.org/fhir/ValueSet/defined-types|4.0.1
TestScript.setup.action.assert.response
  • Change value set from http://hl7.org/fhir/ValueSet/assert-response-code-types to http://hl7.org/fhir/ValueSet/assert-response-code-types|4.0.1
TestScript.setup.action.assert.warningOnly
  • Min Cardinality changed from 0 to 1
  • Default Value "false" removed
TestScript.rule
  • deleted
TestScript.ruleset
  • deleted
TestScript.setup.action.assert.rule
  • deleted
TestScript.setup.action.assert.ruleset
  • deleted

See the Full Difference for further information

This analysis is available as XML or JSON.

See R3 <--> R4 Conversion Maps (status = 7 tests that all execute ok. 1 fail round-trip testing and 7 r3 resources are invalid (0 errors).)

 

See the Profiles & Extensions and the alternate definitions: Master Definition XML + JSON, XML Schema/Schematron + JSON Schema, ShEx (for Turtle) + see the extensions & the dependency analysis

PathDefinitionTypeReference
TestScript.status The lifecycle status of an artifact.RequiredPublicationStatus
TestScript.jurisdiction Countries and regions within which this artifact is targeted for use.ExtensibleJurisdiction ValueSet
TestScript.origin.profile The type of origin profile the test system supports.ExtensibleTestScriptProfileOriginType
TestScript.destination.profile The type of destination profile the test system supports.ExtensibleTestScriptProfileDestinationType
TestScript.setup.action.operation.type The allowable operation code types.ExtensibleTestScriptOperationCode
TestScript.setup.action.operation.resource
TestScript.setup.action.assert.resource
A list of all the concrete types defined in this version of the FHIR specification - Data Types and Resource Types.RequiredDefined Types
TestScript.setup.action.operation.accept
TestScript.setup.action.operation.contentType
TestScript.setup.action.assert.contentType
The mime type of an attachment. Any valid mime type is allowed.RequiredMime Types
TestScript.setup.action.operation.method
TestScript.setup.action.assert.requestMethod
The allowable request method or HTTP operation codes.RequiredTestScriptRequestMethodCode
TestScript.setup.action.assert.direction The type of direction to use for assertion.RequiredAssertionDirectionType
TestScript.setup.action.assert.operator The type of operator to use for assertion.RequiredAssertionOperatorType
TestScript.setup.action.assert.response The type of response code to use for assertion.RequiredAssertionResponseTypes

idLevelLocationDescriptionExpression
tst-0Warning (base)Name should be usable as an identifier for the module by machine processing applications such as code generationname.matches('[A-Z]([A-Za-z0-9_]){0,254}')
tst-1Rule TestScript.setup.actionSetup action SHALL contain either an operation or assert but not both.operation.exists() xor assert.exists()
tst-2Rule TestScript.test.actionTest action SHALL contain either an operation or assert but not both.operation.exists() xor assert.exists()
tst-3Rule TestScript.variableVariable can only contain one of expression, headerField or path.expression.empty() or headerField.empty() or path.empty()
tst-4Rule TestScript.metadataTestScript metadata capability SHALL contain required or validated or both.capability.required.exists() or capability.validated.exists()
tst-5Rule TestScript.setup.action.assertOnly a single assertion SHALL be present within setup action assert element.extension.exists() or (contentType.count() + expression.count() + headerField.count() + minimumId.count() + navigationLinks.count() + path.count() + requestMethod.count() + resource.count() + responseCode.count() + response.count() + validateProfileId.count() <=1)
tst-6Rule TestScript.test.action.assertOnly a single assertion SHALL be present within test action assert element.extension.exists() or (contentType.count() + expression.count() + headerField.count() + minimumId.count() + navigationLinks.count() + path.count() + requestMethod.count() + resource.count() + responseCode.count() + response.count() + validateProfileId.count() <=1)
tst-7Rule TestScript.setup.action.operationSetup operation SHALL contain either sourceId or targetId or params or url.sourceId.exists() or (targetId.count() + url.count() + params.count() = 1) or (type.code in ('capabilities' |'search' | 'transaction' | 'history'))
tst-8Rule TestScript.test.action.operationTest operation SHALL contain either sourceId or targetId or params or url.sourceId.exists() or (targetId.count() + url.count() + params.count() = 1) or (type.code in ('capabilities' | 'search' | 'transaction' | 'history'))
tst-9Rule TestScript.teardown.action.operationTeardown operation SHALL contain either sourceId or targetId or params or url.sourceId.exists() or (targetId.count() + url.count() + params.count() = 1) or (type.code in ('capabilities' | 'search' | 'transaction' | 'history'))
tst-10Rule TestScript.setup.action.assertSetup action assert SHALL contain either compareToSourceId and compareToSourceExpression, compareToSourceId and compareToSourcePath or neither.compareToSourceId.empty() xor (compareToSourceExpression.exists() or compareToSourcePath.exists())
tst-11Rule TestScript.test.action.assertTest action assert SHALL contain either compareToSourceId and compareToSourceExpression, compareToSourceId and compareToSourcePath or neither.compareToSourceId.empty() xor (compareToSourceExpression.exists() or compareToSourcePath.exists())
tst-12Rule TestScript.setup.action.assertSetup action assert response and responseCode SHALL be empty when direction equals request(response.empty() and responseCode.empty() and direction = 'request') or direction.empty() or direction = 'response'
tst-13Rule TestScript.test.action.assertTest action assert response and response and responseCode SHALL be empty when direction equals request(response.empty() and responseCode.empty() and direction = 'request') or direction.empty() or direction = 'response'

Please refer to the Testing FHIR - How Tos for examples on working with this resource.

Search parameters for this resource. The common parameters also apply. See Searching for more information about searching in REST, messaging, and services.

NameTypeDescriptionExpressionIn Common
contexttokenA use context assigned to the test script(TestScript.useContext.value as CodeableConcept)
context-quantityquantityA quantity- or range-valued use context assigned to the test script(TestScript.useContext.value as Quantity) | (TestScript.useContext.value as Range)
context-typetokenA type of use context assigned to the test scriptTestScript.useContext.code
context-type-quantitycompositeA use context type and quantity- or range-based value assigned to the test scriptOn TestScript.useContext:
  context-type: code
  context-quantity: value.as(Quantity) | value.as(Range)
context-type-valuecompositeA use context type and value assigned to the test scriptOn TestScript.useContext:
  context-type: code
  context: value.as(CodeableConcept)
datedateThe test script publication dateTestScript.date
descriptionstringThe description of the test scriptTestScript.description
identifiertokenExternal identifier for the test scriptTestScript.identifier
jurisdictiontokenIntended jurisdiction for the test scriptTestScript.jurisdiction
namestringComputationally friendly name of the test scriptTestScript.name
publisherstringName of the publisher of the test scriptTestScript.publisher
statustokenThe current status of the test scriptTestScript.status
testscript-capabilitystringTestScript required and validated capabilityTestScript.metadata.capability.description
titlestringThe human-friendly name of the test scriptTestScript.title
urluriThe uri that identifies the test scriptTestScript.url
versiontokenThe business version of the test scriptTestScript.version