This is the Continuous Integration Build of FHIR (will be incorrect/inconsistent at times).
See the Directory of published versions
FHIR Infrastructure Work Group | Maturity Level: N/A | Standards Status: Informative | Compartments: No defined compartments |
ShEx statement for testscript
PREFIX fhir: <http://hl7.org/fhir/> PREFIX fhirvs: <http://hl7.org/fhir/ValueSet/> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> IMPORT <id.shex> IMPORT <uri.shex> IMPORT <url.shex> IMPORT <code.shex> IMPORT <string.shex> IMPORT <Coding.shex> IMPORT <boolean.shex> IMPORT <integer.shex> IMPORT <dateTime.shex> IMPORT <markdown.shex> IMPORT <Resource.shex> IMPORT <canonical.shex> IMPORT <Reference.shex> IMPORT <Identifier.shex> IMPORT <UsageContext.shex> IMPORT <ContactDetail.shex> IMPORT <DomainResource.shex> IMPORT <CodeableConcept.shex> IMPORT <BackboneElement.shex> start=@<TestScript> AND {fhir:nodeRole [fhir:treeRoot]} # Describes a set of tests <TestScript> EXTENDS @<DomainResource> CLOSED { a [fhir:TestScript]?;fhir:nodeRole [fhir:treeRoot]?; fhir:url @<uri>?; # Canonical identifier for this test # script, represented as a URI # (globally unique) fhir:identifier @<OneOrMore_Identifier>?; # Additional identifier for the test # script fhir:version @<string>?; # Business version of the test script fhir:versionAlgorithm @<string> OR @<Coding> ?; # How to compare versions fhir:name @<string>; # Name for this test script # (computer friendly) fhir:title @<string>?; # Name for this test script (human # friendly) fhir:status @<code> AND {fhir:v @fhirvs:publication-status}; # draft | active | retired | unknown fhir:experimental @<boolean>?; # For testing purposes, not real # usage fhir:date @<dateTime>?; # Date last changed fhir:publisher @<string>?; # Name of the publisher/steward # (organization or individual) fhir:contact @<OneOrMore_ContactDetail>?; # Contact details for the publisher fhir:description @<markdown>?; # Natural language description of # the test script fhir:useContext @<OneOrMore_UsageContext>?; # The context that the content is # intended to support fhir:jurisdiction @<OneOrMore_CodeableConcept>?; # Intended jurisdiction for test # script (if applicable) fhir:purpose @<markdown>?; # Why this test script is defined fhir:copyright @<markdown>?; # Use and/or publishing restrictions fhir:copyrightLabel @<string>?; # Copyright holder and year(s) fhir:origin @<OneOrMore_TestScript.origin>?; # An abstract server representing a # client or sender in a message # exchange fhir:destination @<OneOrMore_TestScript.destination>?; # An abstract server representing a # destination or receiver in a # message exchange fhir:metadata @<TestScript.metadata>?; # Required capability that is # assumed to function correctly on # the FHIR server being tested fhir:scope @<OneOrMore_TestScript.scope>?; # Indication of the artifact(s) that # are tested by this test case fhir:fixture @<OneOrMore_TestScript.fixture>?; # Fixture in the test script - by # reference (uri) fhir:profile @<OneOrMore_canonical>?; # Reference of the validation profile fhir:variable @<OneOrMore_TestScript.variable>?; # Placeholder for evaluated elements fhir:setup @<TestScript.setup>?; # A series of required setup # operations before tests are # executed fhir:test @<OneOrMore_TestScript.test>?; # A test in this script fhir:teardown @<TestScript.teardown>?; # A series of required clean up steps fhir:common @<OneOrMore_TestScript.common>?; # A common collection of actions in # this script } # An abstract server representing a client or sender in a message exchange <TestScript.origin> EXTENDS @<BackboneElement> CLOSED { fhir:index @<integer>; # The index of the abstract origin # server starting at 1 fhir:profile @<Coding>; # FHIR-Client | FHIR-SDC-FormFiller fhir:url @<url>?; # The url path of the origin server } # An abstract server representing a destination or receiver in a message exchange <TestScript.destination> EXTENDS @<BackboneElement> CLOSED { fhir:index @<integer>; # The index of the abstract # destination server starting at 1 fhir:profile @<Coding>; # FHIR-Server | FHIR-SDC-FormManager # | FHIR-SDC-FormReceiver | # FHIR-SDC-FormProcessor fhir:url @<url>?; # The url path of the destination # server } # Links or references to the testing requirements <TestScript.setup.action.assert.requirement> EXTENDS @<BackboneElement> CLOSED { fhir:reference @<canonical>; # Canonical reference to the # Requirements instance fhir:key @<id>; # Requirements statement key # identifier } # Links or references to common collection(s) of actions <TestScript.setup.action.common> EXTENDS @<BackboneElement> CLOSED { fhir:testScript @<canonical>?; # Canonical reference to the common # TestScript instance fhir:keyRef @<id>; # Common key reference that # identifies the common collection # of actions to perform fhir:parameter @<OneOrMore_TestScript.setup.action.common.parameter>?; # Parameter(s) to convey input # values to the identified common # collection of actions } # A common operation or assert that can be re-used in this script <TestScript.common.action> EXTENDS @<BackboneElement> CLOSED { fhir:operation @<TestScript.setup.action.operation>?; # The common operation that can be # re-used in this script fhir:assert @<TestScript.setup.action.assert>?; # The common assertion to perform } # One or more teardown operations to perform <TestScript.teardown.action> EXTENDS @<BackboneElement> CLOSED { fhir:common @<TestScript.setup.action.common>?; # Links or references to common # collection(s) of actions fhir:operation @<TestScript.setup.action.operation>; # The teardown operation to perform } # Required capability that is assumed to function correctly on the FHIR server being tested <TestScript.metadata> EXTENDS @<BackboneElement> CLOSED { fhir:link @<OneOrMore_TestScript.metadata.link>?; # Links to the FHIR specification fhir:capability @<OneOrMore_TestScript.metadata.capability>; # Capabilities that are assumed to # function correctly on the FHIR # server being tested } # A common collection of actions in this script <TestScript.common> EXTENDS @<BackboneElement> CLOSED { fhir:key @<id>; # Key that identifies this common # collection of actions fhir:name @<string>?; # Tracking/logging name of this # common collection of actions fhir:description @<string>?; # Tracking/reporting short # description of this common # collection of actions fhir:parameter @<OneOrMore_TestScript.common.parameter>?; # Parameter(s) to convey input # values to this common collection # of actions in this script fhir:action @<OneOrMore_TestScript.common.action>; # A common operation or assert that # can be re-used in this script } # The setup operation to perform <TestScript.setup.action.operation> EXTENDS @<BackboneElement> CLOSED { fhir:type @<Coding>?; # The operation code type that will # be executed fhir:resource @<uri>?; # Resource type fhir:label @<string>?; # Tracking/logging operation label fhir:description @<string>?; # Tracking/reporting operation # description fhir:accept @<code> AND {fhir:v @fhirvs:mimetypes}?; # Mime type to accept in the payload # of the response, with charset etc fhir:contentType @<code> AND {fhir:v @fhirvs:mimetypes}?; # Mime type of the request payload # contents, with charset etc fhir:destination @<integer>?; # Server responding to the request fhir:encodeRequestUrl @<boolean>; # Whether or not to send the request # url in encoded format fhir:method @<code> AND {fhir:v @fhirvs:http-operations}?; # delete | get | options | patch | # post | put | head fhir:origin @<integer>?; # Server initiating the request fhir:params @<string>?; # Explicitly defined path parameters fhir:requestHeader @<OneOrMore_TestScript.setup.action.operation.requestHeader>?; # Each operation can have one or # more header elements fhir:requestId @<id>?; # Fixture Id of mapped request fhir:responseId @<id>?; # Fixture Id of mapped response fhir:sourceId @<id>?; # Fixture Id of body for PUT and # POST requests fhir:targetId @<id>?; # Id of fixture used for extracting # the [id], [type], and [vid] for # GET requests fhir:url @<string>?; # Request URL } # Placeholder for evaluated elements <TestScript.variable> EXTENDS @<BackboneElement> CLOSED { fhir:name @<string>; # Descriptive name for this variable fhir:defaultValue @<string>?; # Default, hard-coded, or # user-defined value for this # variable fhir:description @<string>?; # Natural language description of # the variable fhir:expression @<string>?; # The FHIRPath expression against # the fixture body fhir:headerField @<string>?; # HTTP header field name for source fhir:hint @<string>?; # Hint help text for default value # to enter fhir:path @<string>?; # XPath or JSONPath against the # fixture body fhir:sourceId @<id>?; # Fixture Id of source expression or # headerField within this variable } # Each operation can have one or more header elements <TestScript.setup.action.operation.requestHeader> EXTENDS @<BackboneElement> CLOSED { fhir:field @<string>; # HTTP header field name fhir:value @<string>; # HTTP headerfield value } # A test operation or assert to perform <TestScript.test.action> EXTENDS @<BackboneElement> CLOSED { fhir:common @<TestScript.setup.action.common>?; # Links or references to common # collection(s) of actions fhir:operation @<TestScript.setup.action.operation>?; # The setup operation to perform fhir:assert @<TestScript.setup.action.assert>?; # The setup assertion to perform } # Indication of the artifact(s) that are tested by this test case <TestScript.scope> EXTENDS @<BackboneElement> CLOSED { fhir:artifact @<canonical>; # The specific conformance artifact # being tested fhir:conformance @<CodeableConcept>?; # required | optional | strict fhir:phase @<CodeableConcept>?; # unit | integration | production } # A setup common or operation or assert to perform <TestScript.setup.action> EXTENDS @<BackboneElement> CLOSED { fhir:common @<TestScript.setup.action.common>?; # Links or references to common # collection(s) of actions fhir:operation @<TestScript.setup.action.operation>?; # The setup operation to perform fhir:assert @<TestScript.setup.action.assert>?; # The assertion to perform } # A series of required clean up steps <TestScript.teardown> EXTENDS @<BackboneElement> CLOSED { fhir:action @<OneOrMore_TestScript.teardown.action>; # One or more teardown operations to # perform } # Parameter(s) to convey input values to this common collection of actions in this script <TestScript.common.parameter> EXTENDS @<BackboneElement> CLOSED { fhir:name @<string>?; # Tracking/logging name of this # parameter to be used in this # common collection of actions fhir:description @<string>?; # Tracking/reporting short # description of this parameter to # be used this common collection of # actions } # Fixture in the test script - by reference (uri) <TestScript.fixture> EXTENDS @<BackboneElement> CLOSED { fhir:autocreate @<boolean>; # Whether or not to implicitly # create the fixture during setup fhir:autodelete @<boolean>; # Whether or not to implicitly # delete the fixture during teardown fhir:resource @<Reference> AND {fhir:link @<Resource> ? }?; # Reference of the resource } # A test in this script <TestScript.test> EXTENDS @<BackboneElement> CLOSED { fhir:name @<string>?; # Tracking/logging name of this test fhir:description @<string>?; # Tracking/reporting short # description of the test fhir:action @<OneOrMore_TestScript.test.action>?; # A test operation or assert to # perform } # Links to the FHIR specification <TestScript.metadata.link> EXTENDS @<BackboneElement> CLOSED { fhir:url @<uri>; # URL to the specification fhir:description @<string>?; # Short description } # The assertion to perform <TestScript.setup.action.assert> EXTENDS @<BackboneElement> CLOSED { fhir:label @<string>?; # Tracking/logging assertion label fhir:description @<string>?; # Tracking/reporting assertion # description fhir:direction @<code> AND {fhir:v @fhirvs:assert-direction-codes}?; # response | request fhir:compareToSourceId @<string>?; # Id of the source fixture to be # evaluated fhir:compareToSourceExpression @<string>?; # The FHIRPath expression to # evaluate against the source # fixture fhir:compareToSourcePath @<string>?; # XPath or JSONPath expression to # evaluate against the source # fixture fhir:contentType @<code> AND {fhir:v @fhirvs:mimetypes}?; # Mime type to compare against the # 'Content-Type' header fhir:defaultManualCompletion @<code> AND {fhir:v @fhirvs:assert-manual-completion-codes}?; # fail | pass | skip | stop fhir:expression @<string>?; # The FHIRPath expression to be # evaluated fhir:headerField @<string>?; # HTTP header field name fhir:minimumId @<string>?; # Fixture Id of minimum content # resource fhir:navigationLinks @<boolean>?; # Perform validation on navigation # links? fhir:operator @<code> AND {fhir:v @fhirvs:assert-operator-codes}?; # equals | notEquals | in | notIn | # greaterThan | lessThan | empty | # notEmpty | contains | notContains # | eval | manualEval fhir:path @<string>?; # XPath or JSONPath expression fhir:requestMethod @<code> AND {fhir:v @fhirvs:http-operations}?; # delete | get | options | patch | # post | put | head fhir:requestURL @<string>?; # Request URL comparison value fhir:resource @<uri>?; # Resource type fhir:response @<code> AND {fhir:v @fhirvs:assert-response-code-types}?; # continue | switchingProtocols | # okay | created | accepted | # nonAuthoritativeInformation | # noContent | resetContent | # partialContent | multipleChoices | # movedPermanently | found | # seeOther | notModified | useProxy # | temporaryRedirect | # permanentRedirect | badRequest | # unauthorized | paymentRequired | # forbidden | notFound | # methodNotAllowed | notAcceptable | # proxyAuthenticationRequired | # requestTimeout | conflict | gone | # lengthRequired | # preconditionFailed | # contentTooLarge | uriTooLong | # unsupportedMediaType | # rangeNotSatisfiable | # expectationFailed | # misdirectedRequest | # unprocessableContent | # upgradeRequired | # internalServerError | # notImplemented | badGateway | # serviceUnavailable | # gatewayTimeout | # httpVersionNotSupported fhir:responseCode @<string>?; # HTTP response code to test fhir:sourceId @<id>?; # Fixture Id of source expression or # headerField fhir:stopTestOnFail @<boolean>; # If this assert fails, will the # current test execution stop? fhir:validateProfileId @<id>?; # Profile Id of validation profile # reference fhir:value @<string>?; # The value to compare to fhir:warningOnly @<boolean>; # Will this assert produce a warning # only on error? fhir:requirement @<OneOrMore_TestScript.setup.action.assert.requirement>?; # Links or references to the testing # requirements } # Capabilities that are assumed to function correctly on the FHIR server being tested <TestScript.metadata.capability> EXTENDS @<BackboneElement> CLOSED { fhir:required @<boolean>; # Are the capabilities required? fhir:validated @<boolean>; # Are the capabilities validated? fhir:description @<string>?; # The expected capabilities of the # server fhir:origin @<OneOrMore_integer>?; # Which origin server these # requirements apply to fhir:destination @<integer>?; # Which server these requirements # apply to fhir:link @<OneOrMore_uri>?; # Links to the FHIR specification fhir:capabilities @<canonical>; # Required Capability Statement } # A series of required setup operations before tests are executed <TestScript.setup> EXTENDS @<BackboneElement> CLOSED { fhir:action @<OneOrMore_TestScript.setup.action>?; # A setup common or operation or # assert to perform } # Parameter(s) to convey input values to the identified common collection of actions <TestScript.setup.action.common.parameter> EXTENDS @<BackboneElement> CLOSED { fhir:name @<string>; # Name of the parameter from the # identified common collection of # actions fhir:value @<string>; # Value to assign to the parameter # from the identified common # collection of actions } #---------------------- Cardinality Types (OneOrMore) ------------------- <OneOrMore_Identifier> CLOSED { rdf:first @<Identifier> ; rdf:rest [rdf:nil] OR @<OneOrMore_Identifier> } <OneOrMore_ContactDetail> CLOSED { rdf:first @<ContactDetail> ; rdf:rest [rdf:nil] OR @<OneOrMore_ContactDetail> } <OneOrMore_UsageContext> CLOSED { rdf:first @<UsageContext> ; rdf:rest [rdf:nil] OR @<OneOrMore_UsageContext> } <OneOrMore_CodeableConcept> CLOSED { rdf:first @<CodeableConcept> ; rdf:rest [rdf:nil] OR @<OneOrMore_CodeableConcept> } <OneOrMore_TestScript.origin> CLOSED { rdf:first @<TestScript.origin> ; rdf:rest [rdf:nil] OR @<OneOrMore_TestScript.origin> } <OneOrMore_TestScript.destination> CLOSED { rdf:first @<TestScript.destination> ; rdf:rest [rdf:nil] OR @<OneOrMore_TestScript.destination> } <OneOrMore_TestScript.scope> CLOSED { rdf:first @<TestScript.scope> ; rdf:rest [rdf:nil] OR @<OneOrMore_TestScript.scope> } <OneOrMore_TestScript.fixture> CLOSED { rdf:first @<TestScript.fixture> ; rdf:rest [rdf:nil] OR @<OneOrMore_TestScript.fixture> } <OneOrMore_canonical> CLOSED { rdf:first @<canonical> ; rdf:rest [rdf:nil] OR @<OneOrMore_canonical> } <OneOrMore_TestScript.variable> CLOSED { rdf:first @<TestScript.variable> ; rdf:rest [rdf:nil] OR @<OneOrMore_TestScript.variable> } <OneOrMore_TestScript.test> CLOSED { rdf:first @<TestScript.test> ; rdf:rest [rdf:nil] OR @<OneOrMore_TestScript.test> } <OneOrMore_TestScript.common> CLOSED { rdf:first @<TestScript.common> ; rdf:rest [rdf:nil] OR @<OneOrMore_TestScript.common> } <OneOrMore_TestScript.setup.action.common.parameter> CLOSED { rdf:first @<TestScript.setup.action.common.parameter> ; rdf:rest [rdf:nil] OR @<OneOrMore_TestScript.setup.action.common.parameter> } <OneOrMore_TestScript.metadata.link> CLOSED { rdf:first @<TestScript.metadata.link> ; rdf:rest [rdf:nil] OR @<OneOrMore_TestScript.metadata.link> } <OneOrMore_TestScript.metadata.capability> CLOSED { rdf:first @<TestScript.metadata.capability> ; rdf:rest [rdf:nil] OR @<OneOrMore_TestScript.metadata.capability> } <OneOrMore_TestScript.common.parameter> CLOSED { rdf:first @<TestScript.common.parameter> ; rdf:rest [rdf:nil] OR @<OneOrMore_TestScript.common.parameter> } <OneOrMore_TestScript.common.action> CLOSED { rdf:first @<TestScript.common.action> ; rdf:rest [rdf:nil] OR @<OneOrMore_TestScript.common.action> } <OneOrMore_TestScript.setup.action.operation.requestHeader> CLOSED { rdf:first @<TestScript.setup.action.operation.requestHeader> ; rdf:rest [rdf:nil] OR @<OneOrMore_TestScript.setup.action.operation.requestHeader> } <OneOrMore_TestScript.teardown.action> CLOSED { rdf:first @<TestScript.teardown.action> ; rdf:rest [rdf:nil] OR @<OneOrMore_TestScript.teardown.action> } <OneOrMore_TestScript.test.action> CLOSED { rdf:first @<TestScript.test.action> ; rdf:rest [rdf:nil] OR @<OneOrMore_TestScript.test.action> } <OneOrMore_TestScript.setup.action.assert.requirement> CLOSED { rdf:first @<TestScript.setup.action.assert.requirement> ; rdf:rest [rdf:nil] OR @<OneOrMore_TestScript.setup.action.assert.requirement> } <OneOrMore_integer> CLOSED { rdf:first @<integer> ; rdf:rest [rdf:nil] OR @<OneOrMore_integer> } <OneOrMore_uri> CLOSED { rdf:first @<uri> ; rdf:rest [rdf:nil] OR @<OneOrMore_uri> } <OneOrMore_TestScript.setup.action> CLOSED { rdf:first @<TestScript.setup.action> ; rdf:rest [rdf:nil] OR @<OneOrMore_TestScript.setup.action> } #---------------------- Value Sets ------------------------ # The type of direction to use for assertion. fhirvs:assert-direction-codes ["response" "request"] # The type of manual completion to use for assertion. fhirvs:assert-manual-completion-codes ["fail" "pass" "skip" "stop"] # The type of operator to use for assertion. fhirvs:assert-operator-codes ["equals" "notEquals" "in" "notIn" "greaterThan" "lessThan" "empty" "notEmpty" "contains" "notContains" "eval" "manualEval"] # The type of response code to use for assertion. fhirvs:assert-response-code-types ["continue" "switchingProtocols" "okay" "created" "accepted" "nonAuthoritativeInformation" "noContent" "resetContent" "partialContent" "multipleChoices" "movedPermanently" "found" "seeOther" "notModified" "useProxy" "temporaryRedirect" "permanentRedirect" "badRequest" "unauthorized" "paymentRequired" "forbidden" "notFound" "methodNotAllowed" "notAcceptable" "proxyAuthenticationRequired" "requestTimeout" "conflict" "gone" "lengthRequired" "preconditionFailed" "contentTooLarge" "uriTooLong" "unsupportedMediaType" "rangeNotSatisfiable" "expectationFailed" "misdirectedRequest" "unprocessableContent" "upgradeRequired" "internalServerError" "notImplemented" "badGateway" "serviceUnavailable" "gatewayTimeout" "httpVersionNotSupported"] # The allowable request method or HTTP operation codes. fhirvs:http-operations ["delete" "get" "options" "patch" "post" "put" "head"] # This value set includes all possible codes from BCP-13 (see http://tools.ietf.org/html/bcp13) fhirvs:mimetypes xsd:string #EXTERNAL # The lifecycle status of an artifact. fhirvs:publication-status ["draft" "active" "retired" "unknown"]
Usage note: every effort has been made to ensure that the ShEx files are correct and useful, but they are not a normative part of the specification.
FHIR ®© HL7.org 2011+. FHIR R6 hl7.fhir.core#6.0.0-ballot2 generated on Fri, Nov 22, 2024 18:54+0000.
Links: Search |
Version History |
Contents |
Glossary |
QA |
Compare to R5 |
|
Propose a change