FHIR © HL7.org  |  Server Home  |  XIG Home  |  Server Source  |  FHIR  

FHIR IG Statistics: StructureDefinition/TestCases

Packagehl7.fhir.uv.tools
TypeStructureDefinition
IdTestCases
FHIR VersionR5
Sourcehttp://hl7.org/fhir/tools/https://build.fhir.org/ig/FHIR/fhir-tools-ig/StructureDefinition-TestCases.html
URLhttp://hl7.org/fhir/tools/StructureDefinition/TestCases
Version0.6.0-cibuild
Statusactive
Date2025-07-20T10:49:18+00:00
NameTestCases
TitleTest Cases
Realmuv
Authorityhl7
DescriptionA standard format for test cases used throughout the FHIR ecosystem
Typehttp://hl7.org/fhir/tools/StructureDefinition/TestCases
Kindlogical

Resources that use this resource

StructureDefinition
TestCasesTest Cases
TestCasesTest Cases

Resources that this resource uses

StructureDefinition
TestCasesTest Cases
TestCasesTest Cases

Narrative

Note: links and images are rebased to the (stated) source


English


Generated Narrative: StructureDefinition TestCases

NameFlagsCard.TypeDescription & Constraintsdoco
.. TestCases 0..*Resource
Elements defined in Ancestors:id, meta, implicitRules, language
Test Suite - set of tests executed by a runner
... url ΣC0..1uriCanonical identifier for these tests, represented as a URI (globally unique)
Constraints: cnl-1
... version Σ0..1stringBusiness version of the test set (semver)
... name Σ0..1stringName for these tests
... description Σ0..1markdownGeneral Description of these tests
... scope 0..*BaseThe scope - what these test cases are testing
.... reference 0..1canonical(ActorDefinition | ImplementationGuide | StructureDefinition)A reference to what is being tested
.... description 0..1stringDescription of what the scope is exists / what is being tested
... dependency 0..*BaseTest cases that must be passed before these test cases are meaningful to execute
.... reference 1..1canonical(Test Cases)The Test Cases
.... description 0..1stringDescription of what the dependency exists / why it was defined
... runner 1..1urlURL Documentation for a runner that executes these tests
... mode 0..*BaseA mode that can be passed to runner - affects test content
.... code 1..1stringThe code that identifies the mode
.... description 0..1stringDescription of what this mode exists / why it was defined
... parameter 0..*BaseParameter passed to the runner
.... name 1..1stringName of parameter
.... value[x] 1..1Value of this parameter
..... valueStringstring
..... valueBooleanboolean
..... valueIntegerinteger
..... valueDecimaldecimal
..... valueDateTimedateTime
..... valueUriuri
..... valueCodingCoding
..... valueQuantityQuantity
..... valueExpressionExpression
.... mode 0..1codeA mode that must be true for this parameter to be used
... suite 0..*BaseA suite of tests that share a common set up
.... name 1..1stringThe name of this suite - unique in the TestCases resource
.... description 0..1stringDescription of what this suite does / why it was defined
.... mode 0..1codemode required to run this suite
.... data C0..*BaseResources used in the tests in this suite
Constraints: ts-2
..... name 0..1stringA name for this resource (per runner definition)
..... file 0..1stringA file containing a resource used in the tests
..... resource 0..1ResourceAn inline resource used in the tests
..... mode 0..1codeA mode that must be true for this resource to be used
.... parameter 0..*See parameterParameter passed to the runner
.... test 0..*BaseA test in the test suite
..... name 1..1stringThe name of this test - unique in the suite
..... description 0..1stringDescription of what this test does / why it was defined
..... operation 0..1codeOperation that is executed during this test (per definition of runner)
..... mode 0..1stringmode required to run this test
..... parameter 0..*See parameter
..... input 0..*See dataResources used when executing this test (per runner definition)
..... output 0..*See dataResources expected as output from this test (per runner definition, often Matchetypes)
..... assertion 0..*BaseAssertions that can be executed against the output of the tests
...... focus 0..1stringWhich output the assertion is tested on (by name, if there is more than one)
...... severity 0..1codeError | Warning | Information; only errors are considered to cause a test to fail
Binding: IssueSeverity (required): The severity of the assertion
...... expression 0..1ExpressionTechnical Expression of the assertion
...... human 0..1stringHuman readable description of the assertion
...... mode 0..1codeA mode that must be true for this assertion to apply
.... suite 0..*See suiteA nested suite of tests
.... cases 0..*Reference(Test Cases), canonical(Test Cases)A nested set of test cases

doco Documentation for this format

Spanish


Generated Narrative: StructureDefinition TestCases

NameFlagsCard.TypeDescription & Constraintsdoco
.. TestCases 0..*Resource
Elements defined in Ancestors:id, meta, implicitRules, language
Test Suite - set of tests executed by a runner
... url ΣC0..1uriCanonical identifier for these tests, represented as a URI (globally unique)
Constraints: cnl-1
... version Σ0..1stringBusiness version of the test set (semver)
... name Σ0..1stringName for these tests
... description Σ0..1markdownGeneral Description of these tests
... scope 0..*BaseThe scope - what these test cases are testing
.... reference 0..1canonical(ActorDefinition | ImplementationGuide | StructureDefinition)A reference to what is being tested
.... description 0..1stringDescription of what the scope is exists / what is being tested
... dependency 0..*BaseTest cases that must be passed before these test cases are meaningful to execute
.... reference 1..1canonical(Test Cases)The Test Cases
.... description 0..1stringDescription of what the dependency exists / why it was defined
... runner 1..1urlURL Documentation for a runner that executes these tests
... mode 0..*BaseA mode that can be passed to runner - affects test content
.... code 1..1stringThe code that identifies the mode
.... description 0..1stringDescription of what this mode exists / why it was defined
... parameter 0..*BaseParameter passed to the runner
.... name 1..1stringName of parameter
.... value[x] 1..1Value of this parameter
..... valueStringstring
..... valueBooleanboolean
..... valueIntegerinteger
..... valueDecimaldecimal
..... valueDateTimedateTime
..... valueUriuri
..... valueCodingCoding
..... valueQuantityQuantity
..... valueExpressionExpression
.... mode 0..1codeA mode that must be true for this parameter to be used
... suite 0..*BaseA suite of tests that share a common set up
.... name 1..1stringThe name of this suite - unique in the TestCases resource
.... description 0..1stringDescription of what this suite does / why it was defined
.... mode 0..1codemode required to run this suite
.... data C0..*BaseResources used in the tests in this suite
Constraints: ts-2
..... name 0..1stringA name for this resource (per runner definition)
..... file 0..1stringA file containing a resource used in the tests
..... resource 0..1ResourceAn inline resource used in the tests
..... mode 0..1codeA mode that must be true for this resource to be used
.... parameter 0..*See parameterParameter passed to the runner
.... test 0..*BaseA test in the test suite
..... name 1..1stringThe name of this test - unique in the suite
..... description 0..1stringDescription of what this test does / why it was defined
..... operation 0..1codeOperation that is executed during this test (per definition of runner)
..... mode 0..1stringmode required to run this test
..... parameter 0..*See parameter
..... input 0..*See dataResources used when executing this test (per runner definition)
..... output 0..*See dataResources expected as output from this test (per runner definition, often Matchetypes)
..... assertion 0..*BaseAssertions that can be executed against the output of the tests
...... focus 0..1stringWhich output the assertion is tested on (by name, if there is more than one)
...... severity 0..1codeError | Warning | Information; only errors are considered to cause a test to fail
Binding: IssueSeverity (required): The severity of the assertion
...... expression 0..1ExpressionTechnical Expression of the assertion
...... human 0..1stringHuman readable description of the assertion
...... mode 0..1codeA mode that must be true for this assertion to apply
.... suite 0..*See suiteA nested suite of tests
.... cases 0..*Reference(Test Cases), canonical(Test Cases)A nested set of test cases

doco Documentation for this format

Source

{
  "resourceType": "StructureDefinition",
  "id": "TestCases",
  "text": {
    "status": "extensions",
    "div": "<!-- snip (see above) -->"
  },
  "extension": [
    {
      "url": "http://hl7.org/fhir/StructureDefinition/structuredefinition-wg",
      "valueCode": "fhir"
    },
    {
      "url": "http://hl7.org/fhir/StructureDefinition/structuredefinition-fmm",
      "valueInteger": 3,
      "_valueInteger": {
        "extension": [
          {
            "url": "http://hl7.org/fhir/StructureDefinition/structuredefinition-conformance-derivedFrom",
            "valueCanonical": "http://hl7.org/fhir/tools/ImplementationGuide/hl7.fhir.uv.tools"
          }
        ]
      }
    },
    {
      "url": "http://hl7.org/fhir/StructureDefinition/structuredefinition-standards-status",
      "valueCode": "informative",
      "_valueCode": {
        "extension": [
          {
            "url": "http://hl7.org/fhir/StructureDefinition/structuredefinition-conformance-derivedFrom",
            "valueCanonical": "http://hl7.org/fhir/tools/ImplementationGuide/hl7.fhir.uv.tools"
          }
        ]
      }
    }
  ],
  "url": "http://hl7.org/fhir/tools/StructureDefinition/TestCases",
  "identifier": [
    {
      "system": "urn:ietf:rfc:3986",
      "value": "urn:oid:2.16.840.1.113883.4.642.40.1.42.64"
    }
  ],
  "version": "0.6.0-cibuild",
  "name": "TestCases",
  "title": "Test Cases",
  "status": "active",
  "date": "2025-07-20T10:49:18+00:00",
  "publisher": "HL7 International / FHIR Infrastructure",
  "contact": [
    {
      "telecom": [
        {
          "system": "url",
          "value": "http://www.hl7.org/Special/committees/fiwg"
        }
      ]
    }
  ],
  "description": "A standard format for test cases used throughout the FHIR ecosystem",
  "jurisdiction": [
    {
      "coding": [
        {
          "system": "http://unstats.un.org/unsd/methods/m49/m49.htm",
          "code": "001"
        }
      ]
    }
  ],
  "fhirVersion": "5.0.0",
  "mapping": [
    {
      "identity": "rim",
      "uri": "http://hl7.org/v3",
      "name": "RIM Mapping"
    }
  ],
  "kind": "logical",
  "abstract": false,
  "type": "http://hl7.org/fhir/tools/StructureDefinition/TestCases",
  "baseDefinition": "http://hl7.org/fhir/StructureDefinition/Resource",
  "derivation": "specialization",
  "snapshot": {
    "extension": [
      {
        "url": "http://hl7.org/fhir/tools/StructureDefinition/snapshot-base-version",
        "valueString": "5.0.0"
      }
    ],
    "element": [
      {
        "id": "TestCases",
        "path": "TestCases",
        "short": "Test Suite - set of tests executed by a runner",
        "definition": "A set of tests that are executed by some runner to test the functionality of a tool in the FHIR ecosystem",
        "min": 0,
        "max": "*",
        "base": {
          "path": "Resource",
          "min": 0,
          "max": "*"
        },
        "mustSupport": false,
        "isModifier": false,
        "isSummary": false,
        "mapping": [
          {
            "identity": "rim",
            "map": "n/a,Entity. Role, or Act"
          }
        ]
      },
      {
        "id": "TestCases.id",
        "path": "TestCases.id",
        "short": "Logical id of this artifact",
        "definition": "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes.",
        "comment": "Within the context of the FHIR RESTful interactions, the resource has an id except for cases like the create and conditional update. Otherwise, the use of the resouce id depends on the given use case.",
        "min": 0,
        "max": "1",
        "base": {
          "path": "Resource.id",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "extension": [
              {
                "url": "http://hl7.org/fhir/StructureDefinition/structuredefinition-fhir-type",
                "valueUrl": "id"
              }
            ],
            "code": "http://hl7.org/fhirpath/System.String"
          }
        ],
        "mustSupport": false,
        "isModifier": false,
        "isSummary": true
      },
      {
        "id": "TestCases.meta",
        "path": "TestCases.meta",
        "short": "Metadata about the resource",
        "definition": "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource.",
        "min": 0,
        "max": "1",
        "base": {
          "path": "Resource.meta",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "Meta"
          }
        ],
        "constraint": [
          {
            "key": "ele-1",
            "severity": "error",
            "human": "All FHIR elements must have a @value or children",
            "expression": "hasValue() or (children().count() > id.count())",
            "source": "http://hl7.org/fhir/StructureDefinition/Element"
          }
        ],
        "mustSupport": false,
        "isModifier": false,
        "isSummary": true
      },
      {
        "id": "TestCases.implicitRules",
        "path": "TestCases.implicitRules",
        "short": "A set of rules under which this content was created",
        "definition": "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc.",
        "comment": "Asserting this rule set restricts the content to be only understood by a limited set of trading partners. This inherently limits the usefulness of the data in the long term. However, the existing health eco-system is highly fractured, and not yet ready to define, collect, and exchange data in a generally computable sense. Wherever possible, implementers and/or specification writers should avoid using this element. Often, when used, the URL is a reference to an implementation guide that defines these special rules as part of its narrative along with other profiles, value sets, etc.",
        "min": 0,
        "max": "1",
        "base": {
          "path": "Resource.implicitRules",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "uri"
          }
        ],
        "constraint": [
          {
            "key": "ele-1",
            "severity": "error",
            "human": "All FHIR elements must have a @value or children",
            "expression": "hasValue() or (children().count() > id.count())",
            "source": "http://hl7.org/fhir/StructureDefinition/Element"
          }
        ],
        "mustSupport": false,
        "isModifier": true,
        "isModifierReason": "This element is labeled as a modifier because the implicit rules may provide additional knowledge about the resource that modifies its meaning or interpretation",
        "isSummary": true
      },
      {
        "id": "TestCases.language",
        "path": "TestCases.language",
        "short": "Language of the resource content",
        "definition": "The base language in which the resource is written.",
        "comment": "Language is provided to support indexing and accessibility (typically, services such as text to speech use the language tag). The html language tag in the narrative applies  to the narrative. The language tag on the resource may be used to specify the language of other presentations generated from the data in the resource. Not all the content has to be in the base language. The Resource.language should not be assumed to apply to the narrative automatically. If a language is specified, it should it also be specified on the div element in the html (see rules in HTML5 for information about the relationship between xml:lang and the html lang attribute).",
        "min": 0,
        "max": "1",
        "base": {
          "path": "Resource.language",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "code"
          }
        ],
        "constraint": [
          {
            "key": "ele-1",
            "severity": "error",
            "human": "All FHIR elements must have a @value or children",
            "expression": "hasValue() or (children().count() > id.count())",
            "source": "http://hl7.org/fhir/StructureDefinition/Element"
          }
        ],
        "mustSupport": false,
        "isModifier": false,
        "isSummary": false,
        "binding": {
          "extension": [
            {
              "url": "http://hl7.org/fhir/StructureDefinition/elementdefinition-bindingName",
              "valueString": "Language"
            }
          ],
          "strength": "required",
          "description": "IETF language tag for a human language",
          "valueSet": "http://hl7.org/fhir/ValueSet/all-languages|5.0.0",
          "additional": [
            {
              "purpose": "starter",
              "valueSet": "http://hl7.org/fhir/ValueSet/languages"
            }
          ]
        }
      },
      {
        "id": "TestCases.url",
        "path": "TestCases.url",
        "short": "Canonical identifier for these tests, represented as a URI (globally unique)",
        "definition": "An absolute URI that is used to identify test tests.",
        "min": 0,
        "max": "1",
        "base": {
          "path": "TestCases.url",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "uri"
          }
        ],
        "constraint": [
          {
            "key": "cnl-1",
            "severity": "warning",
            "human": "URL should not contain | or # - these characters make processing canonical references problematic",
            "expression": "exists() implies matches('^[^|# ]+[%content%]#39;)"
          }
        ],
        "isModifier": false,
        "isSummary": true
      },
      {
        "id": "TestCases.version",
        "path": "TestCases.version",
        "short": "Business version of the test set (semver)",
        "definition": "The identifier that is used to identify this version of these tests. Version must use SemVer",
        "min": 0,
        "max": "1",
        "base": {
          "path": "TestCases.version",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "string"
          }
        ],
        "isModifier": false,
        "isSummary": true
      },
      {
        "id": "TestCases.name",
        "path": "TestCases.name",
        "short": "Name for these tests",
        "definition": "A natural language name identifying the tests. This name should be usable as an identifier for the module by machine processing applications such as code generation.",
        "min": 0,
        "max": "1",
        "base": {
          "path": "TestCases.name",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "string"
          }
        ],
        "isModifier": false,
        "isSummary": true
      },
      {
        "id": "TestCases.description",
        "path": "TestCases.description",
        "short": "General Description of these tests",
        "definition": "General description of these teats.",
        "min": 0,
        "max": "1",
        "base": {
          "path": "TestCases.description",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "markdown"
          }
        ],
        "isModifier": false,
        "isSummary": true
      },
      {
        "id": "TestCases.scope",
        "path": "TestCases.scope",
        "short": "The scope - what these test cases are testing",
        "definition": "The scope indicates what kind of systems these test cases are intended to test",
        "min": 0,
        "max": "*",
        "base": {
          "path": "TestCases.scope",
          "min": 0,
          "max": "*"
        },
        "type": [
          {
            "code": "Base"
          }
        ]
      },
      {
        "id": "TestCases.scope.reference",
        "path": "TestCases.scope.reference",
        "short": "A reference to what is being tested",
        "definition": "A reference to what is being tested",
        "min": 0,
        "max": "1",
        "base": {
          "path": "TestCases.scope.reference",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "canonical",
            "targetProfile": [
              "http://hl7.org/fhir/StructureDefinition/ActorDefinition",
              "http://hl7.org/fhir/StructureDefinition/ImplementationGuide",
              "http://hl7.org/fhir/StructureDefinition/StructureDefinition"
            ]
          }
        ]
      },
      {
        "id": "TestCases.scope.description",
        "path": "TestCases.scope.description",
        "short": "Description of what the scope is exists / what is being tested",
        "definition": "Description of what the scope is does / what is being tested",
        "min": 0,
        "max": "1",
        "base": {
          "path": "TestCases.scope.description",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "string"
          }
        ]
      },
      {
        "id": "TestCases.dependency",
        "path": "TestCases.dependency",
        "short": "Test cases that must be passed before these test cases are meaningful to execute",
        "definition": "Another set of test cases that must be passed before these test cases are meaningful to execute. These test cases prove functionality that these tests require to execute",
        "min": 0,
        "max": "*",
        "base": {
          "path": "TestCases.dependency",
          "min": 0,
          "max": "*"
        },
        "type": [
          {
            "code": "Base"
          }
        ]
      },
      {
        "id": "TestCases.dependency.reference",
        "path": "TestCases.dependency.reference",
        "short": "The Test Cases",
        "definition": "The test cases.",
        "min": 1,
        "max": "1",
        "base": {
          "path": "TestCases.dependency.reference",
          "min": 1,
          "max": "1"
        },
        "type": [
          {
            "code": "canonical",
            "targetProfile": [
              "http://hl7.org/fhir/tools/StructureDefinition/TestCases"
            ]
          }
        ]
      },
      {
        "id": "TestCases.dependency.description",
        "path": "TestCases.dependency.description",
        "short": "Description of what the dependency exists / why it was defined",
        "definition": "Description of what this mode does / why it was defined. This should explain to a tester why the",
        "min": 0,
        "max": "1",
        "base": {
          "path": "TestCases.dependency.description",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "string"
          }
        ]
      },
      {
        "id": "TestCases.runner",
        "path": "TestCases.runner",
        "short": "URL Documentation for a runner that executes these tests",
        "definition": "URL of documentation that explains how a runner would read these tests, and use them to actually test out a tool.",
        "min": 1,
        "max": "1",
        "base": {
          "path": "TestCases.runner",
          "min": 1,
          "max": "1"
        },
        "type": [
          {
            "code": "url"
          }
        ]
      },
      {
        "id": "TestCases.mode",
        "path": "TestCases.mode",
        "short": "A mode that can be passed to runner - affects test content",
        "definition": "A mode that can be passed to a runner running these these tests, that affects test content and influences how the tests are executed or evaulated (or even if they run)",
        "min": 0,
        "max": "*",
        "base": {
          "path": "TestCases.mode",
          "min": 0,
          "max": "*"
        },
        "type": [
          {
            "code": "Base"
          }
        ]
      },
      {
        "id": "TestCases.mode.code",
        "path": "TestCases.mode.code",
        "short": "The code that identifies the mode",
        "definition": "The code by which the mode is identified when passed to runner",
        "min": 1,
        "max": "1",
        "base": {
          "path": "TestCases.mode.code",
          "min": 1,
          "max": "1"
        },
        "type": [
          {
            "code": "string"
          }
        ]
      },
      {
        "id": "TestCases.mode.description",
        "path": "TestCases.mode.description",
        "short": "Description of what this mode exists / why it was defined",
        "definition": "Description of what this mode does / why it was defined. This should explain to a tester when they should use the mode",
        "min": 0,
        "max": "1",
        "base": {
          "path": "TestCases.mode.description",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "string"
          }
        ]
      },
      {
        "id": "TestCases.parameter",
        "path": "TestCases.parameter",
        "short": "Parameter passed to the runner",
        "definition": "A parameter passed to the runner when executing tests. Which parameters are valid, and how exactly the parameter is used are used depends on the definition of the runner",
        "min": 0,
        "max": "*",
        "base": {
          "path": "TestCases.parameter",
          "min": 0,
          "max": "*"
        },
        "type": [
          {
            "code": "Base"
          }
        ]
      },
      {
        "id": "TestCases.parameter.name",
        "path": "TestCases.parameter.name",
        "short": "Name of parameter",
        "definition": "Name of parameter",
        "min": 1,
        "max": "1",
        "base": {
          "path": "TestCases.parameter.name",
          "min": 1,
          "max": "1"
        },
        "type": [
          {
            "code": "string"
          }
        ]
      },
      {
        "id": "TestCases.parameter.value[x]",
        "path": "TestCases.parameter.value[x]",
        "short": "Value of this parameter",
        "definition": "The value of the parameter. If the value is an Expression, the definition of the runner describes what kind of expressions are allowed and the features/capabilities that they can make use of",
        "min": 1,
        "max": "1",
        "base": {
          "path": "TestCases.parameter.value[x]",
          "min": 1,
          "max": "1"
        },
        "type": [
          {
            "code": "string"
          },
          {
            "code": "boolean"
          },
          {
            "code": "integer"
          },
          {
            "code": "decimal"
          },
          {
            "code": "dateTime"
          },
          {
            "code": "uri"
          },
          {
            "code": "Coding"
          },
          {
            "code": "Quantity"
          },
          {
            "code": "Expression"
          }
        ]
      },
      {
        "id": "TestCases.parameter.mode",
        "path": "TestCases.parameter.mode",
        "short": "A mode that must be true for this parameter to be used",
        "definition": "If this mode is not passed to the runner, then this parameter will not be used",
        "min": 0,
        "max": "1",
        "base": {
          "path": "TestCases.parameter.mode",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "code"
          }
        ],
        "meaningWhenMissing": "If no modes are listed, the parameter is always used, unless there is a parameter with the same name that is selected by mode"
      },
      {
        "id": "TestCases.suite",
        "path": "TestCases.suite",
        "short": "A suite of tests that share a common set up",
        "definition": "A suite of tests that all share a common set up, and can be executed as a group",
        "min": 0,
        "max": "*",
        "base": {
          "path": "TestCases.suite",
          "min": 0,
          "max": "*"
        },
        "type": [
          {
            "code": "Base"
          }
        ]
      },
      {
        "id": "TestCases.suite.name",
        "path": "TestCases.suite.name",
        "short": "The name of this suite - unique in the TestCases resource",
        "definition": "The name by which this suite is known by in the test system. The name must be unique in the amongst the suites",
        "min": 1,
        "max": "1",
        "base": {
          "path": "TestCases.suite.name",
          "min": 1,
          "max": "1"
        },
        "type": [
          {
            "code": "string"
          }
        ]
      },
      {
        "id": "TestCases.suite.description",
        "path": "TestCases.suite.description",
        "short": "Description of what this suite does / why it was defined",
        "definition": "Description of what this suite does / why it was defined. This should explain to a tester what they should know when deciding which tests to run",
        "min": 0,
        "max": "1",
        "base": {
          "path": "TestCases.suite.description",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "string"
          }
        ]
      },
      {
        "id": "TestCases.suite.mode",
        "path": "TestCases.suite.mode",
        "short": "mode required to run this suite",
        "definition": "If this mode is not passed to the runner, then this suite will not be run",
        "min": 0,
        "max": "1",
        "base": {
          "path": "TestCases.suite.mode",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "code"
          }
        ],
        "meaningWhenMissing": "If no modes are listed, the suite is always executed"
      },
      {
        "id": "TestCases.suite.data",
        "path": "TestCases.suite.data",
        "short": "Resources used in the tests in this suite",
        "definition": "The resources used in the tests in this suite. How exactly they are used depends on the definition of the runner",
        "min": 0,
        "max": "*",
        "base": {
          "path": "TestCases.suite.data",
          "min": 0,
          "max": "*"
        },
        "type": [
          {
            "code": "Base"
          }
        ],
        "constraint": [
          {
            "key": "ts-2",
            "severity": "error",
            "human": "Either a file, or a resource, but not both",
            "expression": "file xor resource"
          }
        ]
      },
      {
        "id": "TestCases.suite.data.name",
        "path": "TestCases.suite.data.name",
        "short": "A name for this resource (per runner definition)",
        "definition": "A name that identifies this resource. The runner definition defines whether there must be a name, and what names there are",
        "min": 0,
        "max": "1",
        "base": {
          "path": "TestCases.suite.data.name",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "string"
          }
        ]
      },
      {
        "id": "TestCases.suite.data.file",
        "path": "TestCases.suite.data.file",
        "short": "A file containing a resource used in the tests",
        "definition": "A file containing a resource used in the tests",
        "comment": "Filename is relative to the folder/directory containing this TestCases",
        "min": 0,
        "max": "1",
        "base": {
          "path": "TestCases.suite.data.file",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "string"
          }
        ]
      },
      {
        "id": "TestCases.suite.data.resource",
        "path": "TestCases.suite.data.resource",
        "short": "An inline resource used in the tests",
        "definition": "An inline resource used in the tests. How exactly it is used depends on the definition of the runner.",
        "min": 0,
        "max": "1",
        "base": {
          "path": "TestCases.suite.data.resource",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "Resource"
          }
        ]
      },
      {
        "id": "TestCases.suite.data.mode",
        "path": "TestCases.suite.data.mode",
        "short": "A mode that must be true for this resource to be used",
        "definition": "If this mode is not passed to the runner, then this resource will not be used",
        "min": 0,
        "max": "1",
        "base": {
          "path": "TestCases.suite.data.mode",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "code"
          }
        ],
        "meaningWhenMissing": "If no modes are listed, the resource is always used, unless there is another entry with the same name that is selected by mode"
      },
      {
        "id": "TestCases.suite.parameter",
        "path": "TestCases.suite.parameter",
        "short": "Parameter passed to the runner",
        "definition": "A parameter passed to the runner when executing tests. Which parameters are valid, and how exactly the parameter is used are used depends on the definition of the runner",
        "min": 0,
        "max": "*",
        "base": {
          "path": "TestCases.suite.parameter",
          "min": 0,
          "max": "*"
        },
        "contentReference": "http://hl7.org/fhir/tools/StructureDefinition/TestCases#TestCases.parameter"
      },
      {
        "id": "TestCases.suite.test",
        "path": "TestCases.suite.test",
        "short": "A test in the test suite",
        "definition": "An actual test in the test suite",
        "min": 0,
        "max": "*",
        "base": {
          "path": "TestCases.suite.test",
          "min": 0,
          "max": "*"
        },
        "type": [
          {
            "code": "Base"
          }
        ]
      },
      {
        "id": "TestCases.suite.test.name",
        "path": "TestCases.suite.test.name",
        "short": "The name of this test - unique in the suite",
        "definition": "The name by which this test is known by in the test system. The name must be unique in the suite",
        "min": 1,
        "max": "1",
        "base": {
          "path": "TestCases.suite.test.name",
          "min": 1,
          "max": "1"
        },
        "type": [
          {
            "code": "string"
          }
        ]
      },
      {
        "id": "TestCases.suite.test.description",
        "path": "TestCases.suite.test.description",
        "short": "Description of what this test does / why it was defined",
        "definition": "Description of what this test does / why it was defined. This should explain to a tester what they should know when looking at failing test results",
        "min": 0,
        "max": "1",
        "base": {
          "path": "TestCases.suite.test.description",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "string"
          }
        ]
      },
      {
        "id": "TestCases.suite.test.operation",
        "path": "TestCases.suite.test.operation",
        "short": "Operation that is executed during this test (per definition of runner)",
        "definition": "A code that identifies the operation executed for this test. One of the codes defined in the definition of the runner",
        "min": 0,
        "max": "1",
        "base": {
          "path": "TestCases.suite.test.operation",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "code"
          }
        ]
      },
      {
        "id": "TestCases.suite.test.mode",
        "path": "TestCases.suite.test.mode",
        "short": "mode required to run this test",
        "definition": "If this mode is not passed to the runner, then this test will not be run",
        "min": 0,
        "max": "1",
        "base": {
          "path": "TestCases.suite.test.mode",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "string"
          }
        ],
        "meaningWhenMissing": "If no modes are listed, the test is always executed"
      },
      {
        "id": "TestCases.suite.test.parameter",
        "path": "TestCases.suite.test.parameter",
        "min": 0,
        "max": "*",
        "base": {
          "path": "TestCases.suite.test.parameter",
          "min": 0,
          "max": "*"
        },
        "contentReference": "http://hl7.org/fhir/tools/StructureDefinition/TestCases#TestCases.parameter"
      },
      {
        "id": "TestCases.suite.test.input",
        "path": "TestCases.suite.test.input",
        "short": "Resources used when executing this test (per runner definition)",
        "definition": "The resources used when executing this test. How exactly they are used depends on the definition of the runner.",
        "min": 0,
        "max": "*",
        "base": {
          "path": "TestCases.suite.test.input",
          "min": 0,
          "max": "*"
        },
        "contentReference": "http://hl7.org/fhir/tools/StructureDefinition/TestCases#TestCases.suite.data"
      },
      {
        "id": "TestCases.suite.test.output",
        "path": "TestCases.suite.test.output",
        "short": "Resources expected as output from this test (per runner definition, often Matchetypes)",
        "definition": "Resources expected as output from this test. Often, but not always, these resources are Matchetype resources. How exactly it is used depends on the definition of the runner. How exactly it is used depends on the definition of the runner, but the expectation is that these are the expected output, to which the actual output is compared",
        "min": 0,
        "max": "*",
        "base": {
          "path": "TestCases.suite.test.output",
          "min": 0,
          "max": "*"
        },
        "contentReference": "http://hl7.org/fhir/tools/StructureDefinition/TestCases#TestCases.suite.data"
      },
      {
        "id": "TestCases.suite.test.assertion",
        "path": "TestCases.suite.test.assertion",
        "short": "Assertions that can be executed against the output of the tests",
        "definition": "One or more assertions that can be executed against the output of the tests. These may be used with matchetypes to make rules about content the matchetypes leave open",
        "min": 0,
        "max": "*",
        "base": {
          "path": "TestCases.suite.test.assertion",
          "min": 0,
          "max": "*"
        },
        "type": [
          {
            "code": "Base"
          }
        ]
      },
      {
        "id": "TestCases.suite.test.assertion.focus",
        "path": "TestCases.suite.test.assertion.focus",
        "short": "Which output the assertion is tested on (by name, if there is more than one)",
        "definition": "Resources expected as output from this test. Often, but not always, these resources are Matchetype resources",
        "min": 0,
        "max": "1",
        "base": {
          "path": "TestCases.suite.test.assertion.focus",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "string"
          }
        ]
      },
      {
        "id": "TestCases.suite.test.assertion.severity",
        "path": "TestCases.suite.test.assertion.severity",
        "short": "Error | Warning | Information; only errors are considered to cause a test to fail",
        "definition": "Resources expected as output from this test. Often, but not always, these resources are Matchetype resources. How exactly it is used depends on the definition of the runner",
        "min": 0,
        "max": "1",
        "base": {
          "path": "TestCases.suite.test.assertion.severity",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "code"
          }
        ],
        "binding": {
          "strength": "required",
          "description": "The severity of the assertion",
          "valueSet": "http://hl7.org/fhir/ValueSet/issue-severity|5.0.0"
        }
      },
      {
        "id": "TestCases.suite.test.assertion.expression",
        "path": "TestCases.suite.test.assertion.expression",
        "short": "Technical Expression of the assertion",
        "definition": "Resources expected as output from this test. Often, but not always, these resources are Matchetype resources. How exactly it is used depends on the definition of the runner",
        "min": 0,
        "max": "1",
        "base": {
          "path": "TestCases.suite.test.assertion.expression",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "Expression"
          }
        ]
      },
      {
        "id": "TestCases.suite.test.assertion.human",
        "path": "TestCases.suite.test.assertion.human",
        "short": "Human readable description of the assertion",
        "definition": "A human readable description of the assertion.",
        "min": 0,
        "max": "1",
        "base": {
          "path": "TestCases.suite.test.assertion.human",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "string"
          }
        ]
      },
      {
        "id": "TestCases.suite.test.assertion.mode",
        "path": "TestCases.suite.test.assertion.mode",
        "short": "A mode that must be true for this assertion to apply",
        "definition": "If this mode is not passed to the runner, then this assertion will not be used",
        "min": 0,
        "max": "1",
        "base": {
          "path": "TestCases.suite.test.assertion.mode",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "code"
          }
        ],
        "meaningWhenMissing": "If no modes are listed, the assertion is always used, unless there is another assertion with the same name that is selected by mode"
      },
      {
        "id": "TestCases.suite.suite",
        "path": "TestCases.suite.suite",
        "short": "A nested suite of tests",
        "definition": "A nested set of tests",
        "min": 0,
        "max": "*",
        "base": {
          "path": "TestCases.suite.suite",
          "min": 0,
          "max": "*"
        },
        "contentReference": "http://hl7.org/fhir/tools/StructureDefinition/TestCases#TestCases.suite"
      },
      {
        "id": "TestCases.suite.cases",
        "path": "TestCases.suite.cases",
        "short": "A nested set of test cases",
        "definition": "A nested set of test cases. Typically, the runner must be the same in the nested test cases",
        "min": 0,
        "max": "*",
        "base": {
          "path": "TestCases.suite.cases",
          "min": 0,
          "max": "*"
        },
        "type": [
          {
            "code": "Reference",
            "targetProfile": [
              "http://hl7.org/fhir/tools/StructureDefinition/TestCases"
            ]
          },
          {
            "code": "canonical",
            "targetProfile": [
              "http://hl7.org/fhir/tools/StructureDefinition/TestCases"
            ]
          }
        ]
      }
    ]
  },
  "differential": {
    "element": [
      {
        "id": "TestCases",
        "path": "TestCases",
        "short": "Test Suite - set of tests executed by a runner",
        "definition": "A set of tests that are executed by some runner to test the functionality of a tool in the FHIR ecosystem"
      },
      {
        "id": "TestCases.url",
        "path": "TestCases.url",
        "short": "Canonical identifier for these tests, represented as a URI (globally unique)",
        "definition": "An absolute URI that is used to identify test tests.",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "uri"
          }
        ],
        "constraint": [
          {
            "key": "cnl-1",
            "severity": "warning",
            "human": "URL should not contain | or # - these characters make processing canonical references problematic",
            "expression": "exists() implies matches('^[^|# ]+[%content%]#39;)"
          }
        ],
        "isModifier": false,
        "isSummary": true
      },
      {
        "id": "TestCases.version",
        "path": "TestCases.version",
        "short": "Business version of the test set (semver)",
        "definition": "The identifier that is used to identify this version of these tests. Version must use SemVer",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ],
        "isModifier": false,
        "isSummary": true
      },
      {
        "id": "TestCases.name",
        "path": "TestCases.name",
        "short": "Name for these tests",
        "definition": "A natural language name identifying the tests. This name should be usable as an identifier for the module by machine processing applications such as code generation.",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ],
        "isModifier": false,
        "isSummary": true
      },
      {
        "id": "TestCases.description",
        "path": "TestCases.description",
        "short": "General Description of these tests",
        "definition": "General description of these teats.",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "markdown"
          }
        ],
        "isModifier": false,
        "isSummary": true
      },
      {
        "id": "TestCases.scope",
        "path": "TestCases.scope",
        "short": "The scope - what these test cases are testing",
        "definition": "The scope indicates what kind of systems these test cases are intended to test",
        "min": 0,
        "max": "*",
        "type": [
          {
            "code": "Base"
          }
        ]
      },
      {
        "id": "TestCases.scope.reference",
        "path": "TestCases.scope.reference",
        "short": "A reference to what is being tested",
        "definition": "A reference to what is being tested",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "canonical",
            "targetProfile": [
              "http://hl7.org/fhir/StructureDefinition/ActorDefinition",
              "http://hl7.org/fhir/StructureDefinition/ImplementationGuide",
              "http://hl7.org/fhir/StructureDefinition/StructureDefinition"
            ]
          }
        ]
      },
      {
        "id": "TestCases.scope.description",
        "path": "TestCases.scope.description",
        "short": "Description of what the scope is exists / what is being tested",
        "definition": "Description of what the scope is does / what is being tested",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ]
      },
      {
        "id": "TestCases.dependency",
        "path": "TestCases.dependency",
        "short": "Test cases that must be passed before these test cases are meaningful to execute",
        "definition": "Another set of test cases that must be passed before these test cases are meaningful to execute. These test cases prove functionality that these tests require to execute",
        "min": 0,
        "max": "*",
        "type": [
          {
            "code": "Base"
          }
        ]
      },
      {
        "id": "TestCases.dependency.reference",
        "path": "TestCases.dependency.reference",
        "short": "The Test Cases",
        "definition": "The test cases.",
        "min": 1,
        "max": "1",
        "type": [
          {
            "code": "canonical",
            "targetProfile": [
              "http://hl7.org/fhir/tools/StructureDefinition/TestCases"
            ]
          }
        ]
      },
      {
        "id": "TestCases.dependency.description",
        "path": "TestCases.dependency.description",
        "short": "Description of what the dependency exists / why it was defined",
        "definition": "Description of what this mode does / why it was defined. This should explain to a tester why the ",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ]
      },
      {
        "id": "TestCases.runner",
        "path": "TestCases.runner",
        "short": "URL Documentation for a runner that executes these tests",
        "definition": "URL of documentation that explains how a runner would read these tests, and use them to actually test out a tool.",
        "min": 1,
        "max": "1",
        "type": [
          {
            "code": "url"
          }
        ]
      },
      {
        "id": "TestCases.mode",
        "path": "TestCases.mode",
        "short": "A mode that can be passed to runner - affects test content",
        "definition": "A mode that can be passed to a runner running these these tests, that affects test content and influences how the tests are executed or evaulated (or even if they run)",
        "min": 0,
        "max": "*",
        "type": [
          {
            "code": "Base"
          }
        ]
      },
      {
        "id": "TestCases.mode.code",
        "path": "TestCases.mode.code",
        "short": "The code that identifies the mode",
        "definition": "The code by which the mode is identified when passed to runner",
        "min": 1,
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ]
      },
      {
        "id": "TestCases.mode.description",
        "path": "TestCases.mode.description",
        "short": "Description of what this mode exists / why it was defined",
        "definition": "Description of what this mode does / why it was defined. This should explain to a tester when they should use the mode",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ]
      },
      {
        "id": "TestCases.parameter",
        "path": "TestCases.parameter",
        "short": "Parameter passed to the runner",
        "definition": "A parameter passed to the runner when executing tests. Which parameters are valid, and how exactly the parameter is used are used depends on the definition of the runner",
        "min": 0,
        "max": "*",
        "type": [
          {
            "code": "Base"
          }
        ]
      },
      {
        "id": "TestCases.parameter.name",
        "path": "TestCases.parameter.name",
        "short": "Name of parameter",
        "definition": "Name of parameter",
        "min": 1,
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ]
      },
      {
        "id": "TestCases.parameter.value[x]",
        "path": "TestCases.parameter.value[x]",
        "short": "Value of this parameter",
        "definition": "The value of the parameter. If the value is an Expression, the definition of the runner describes what kind of expressions are allowed and the features/capabilities that they can make use of",
        "min": 1,
        "max": "1",
        "type": [
          {
            "code": "string"
          },
          {
            "code": "boolean"
          },
          {
            "code": "integer"
          },
          {
            "code": "decimal"
          },
          {
            "code": "dateTime"
          },
          {
            "code": "uri"
          },
          {
            "code": "Coding"
          },
          {
            "code": "Quantity"
          },
          {
            "code": "Expression"
          }
        ]
      },
      {
        "id": "TestCases.parameter.mode",
        "path": "TestCases.parameter.mode",
        "short": "A mode that must be true for this parameter to be used",
        "definition": "If this mode is not passed to the runner, then this parameter will not be used",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "code"
          }
        ],
        "meaningWhenMissing": "If no modes are listed, the parameter is always used, unless there is a parameter with the same name that is selected by mode"
      },
      {
        "id": "TestCases.suite",
        "path": "TestCases.suite",
        "short": "A suite of tests that share a common set up",
        "definition": "A suite of tests that all share a common set up, and can be executed as a group",
        "min": 0,
        "max": "*",
        "type": [
          {
            "code": "Base"
          }
        ]
      },
      {
        "id": "TestCases.suite.name",
        "path": "TestCases.suite.name",
        "short": "The name of this suite - unique in the TestCases resource",
        "definition": "The name by which this suite is known by in the test system. The name must be unique in the amongst the suites",
        "min": 1,
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ]
      },
      {
        "id": "TestCases.suite.description",
        "path": "TestCases.suite.description",
        "short": "Description of what this suite does / why it was defined",
        "definition": "Description of what this suite does / why it was defined. This should explain to a tester what they should know when deciding which tests to run",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ]
      },
      {
        "id": "TestCases.suite.mode",
        "path": "TestCases.suite.mode",
        "short": "mode required to run this suite",
        "definition": "If this mode is not passed to the runner, then this suite will not be run",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "code"
          }
        ],
        "meaningWhenMissing": "If no modes are listed, the suite is always executed"
      },
      {
        "id": "TestCases.suite.data",
        "path": "TestCases.suite.data",
        "short": "Resources used in the tests in this suite",
        "definition": "The resources used in the tests in this suite. How exactly they are used depends on the definition of the runner ",
        "min": 0,
        "max": "*",
        "type": [
          {
            "code": "Base"
          }
        ],
        "constraint": [
          {
            "key": "ts-2",
            "severity": "error",
            "human": "Either a file, or a resource, but not both",
            "expression": "file xor resource"
          }
        ]
      },
      {
        "id": "TestCases.suite.data.name",
        "path": "TestCases.suite.data.name",
        "short": "A name for this resource (per runner definition)",
        "definition": "A name that identifies this resource. The runner definition defines whether there must be a name, and what names there are",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ]
      },
      {
        "id": "TestCases.suite.data.file",
        "path": "TestCases.suite.data.file",
        "short": "A file containing a resource used in the tests",
        "definition": "A file containing a resource used in the tests",
        "comment": "Filename is relative to the folder/directory containing this TestCases",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ]
      },
      {
        "id": "TestCases.suite.data.resource",
        "path": "TestCases.suite.data.resource",
        "short": "An inline resource used in the tests",
        "definition": "An inline resource used in the tests. How exactly it is used depends on the definition of the runner.",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "Resource"
          }
        ]
      },
      {
        "id": "TestCases.suite.data.mode",
        "path": "TestCases.suite.data.mode",
        "short": "A mode that must be true for this resource to be used",
        "definition": "If this mode is not passed to the runner, then this resource will not be used",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "code"
          }
        ],
        "meaningWhenMissing": "If no modes are listed, the resource is always used, unless there is another entry with the same name that is selected by mode"
      },
      {
        "id": "TestCases.suite.parameter",
        "path": "TestCases.suite.parameter",
        "short": "Parameter passed to the runner",
        "definition": "A parameter passed to the runner when executing tests. Which parameters are valid, and how exactly the parameter is used are used depends on the definition of the runner",
        "min": 0,
        "max": "*",
        "contentReference": "http://hl7.org/fhir/tools/StructureDefinition/TestCases#TestCases.parameter"
      },
      {
        "id": "TestCases.suite.test",
        "path": "TestCases.suite.test",
        "short": "A test in the test suite",
        "definition": "An actual test in the test suite",
        "min": 0,
        "max": "*",
        "type": [
          {
            "code": "Base"
          }
        ]
      },
      {
        "id": "TestCases.suite.test.name",
        "path": "TestCases.suite.test.name",
        "short": "The name of this test - unique in the suite",
        "definition": "The name by which this test is known by in the test system. The name must be unique in the suite",
        "min": 1,
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ]
      },
      {
        "id": "TestCases.suite.test.description",
        "path": "TestCases.suite.test.description",
        "short": "Description of what this test does / why it was defined",
        "definition": "Description of what this test does / why it was defined. This should explain to a tester what they should know when looking at failing test results",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ]
      },
      {
        "id": "TestCases.suite.test.operation",
        "path": "TestCases.suite.test.operation",
        "short": "Operation that is executed during this test (per definition of runner)",
        "definition": "A code that identifies the operation executed for this test. One of the codes defined in the definition of the runner",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "code"
          }
        ]
      },
      {
        "id": "TestCases.suite.test.mode",
        "path": "TestCases.suite.test.mode",
        "short": "mode required to run this test",
        "definition": "If this mode is not passed to the runner, then this test will not be run",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ],
        "meaningWhenMissing": "If no modes are listed, the test is always executed"
      },
      {
        "id": "TestCases.suite.test.parameter",
        "path": "TestCases.suite.test.parameter",
        "min": 0,
        "max": "*",
        "contentReference": "http://hl7.org/fhir/tools/StructureDefinition/TestCases#TestCases.parameter"
      },
      {
        "id": "TestCases.suite.test.input",
        "path": "TestCases.suite.test.input",
        "short": "Resources used when executing this test (per runner definition)",
        "definition": "The resources used when executing this test. How exactly they are used depends on the definition of the runner.",
        "min": 0,
        "max": "*",
        "contentReference": "http://hl7.org/fhir/tools/StructureDefinition/TestCases#TestCases.suite.data"
      },
      {
        "id": "TestCases.suite.test.output",
        "path": "TestCases.suite.test.output",
        "short": "Resources expected as output from this test (per runner definition, often Matchetypes)",
        "definition": "Resources expected as output from this test. Often, but not always, these resources are Matchetype resources. How exactly it is used depends on the definition of the runner. How exactly it is used depends on the definition of the runner, but the expectation is that these are the expected output, to which the actual output is compared",
        "min": 0,
        "max": "*",
        "contentReference": "http://hl7.org/fhir/tools/StructureDefinition/TestCases#TestCases.suite.data"
      },
      {
        "id": "TestCases.suite.test.assertion",
        "path": "TestCases.suite.test.assertion",
        "short": "Assertions that can be executed against the output of the tests",
        "definition": "One or more assertions that can be executed against the output of the tests. These may be used with matchetypes to make rules about content the matchetypes leave open",
        "min": 0,
        "max": "*",
        "type": [
          {
            "code": "Base"
          }
        ]
      },
      {
        "id": "TestCases.suite.test.assertion.focus",
        "path": "TestCases.suite.test.assertion.focus",
        "short": "Which output the assertion is tested on (by name, if there is more than one)",
        "definition": "Resources expected as output from this test. Often, but not always, these resources are Matchetype resources",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ]
      },
      {
        "id": "TestCases.suite.test.assertion.severity",
        "path": "TestCases.suite.test.assertion.severity",
        "short": "Error | Warning | Information; only errors are considered to cause a test to fail",
        "definition": "Resources expected as output from this test. Often, but not always, these resources are Matchetype resources. How exactly it is used depends on the definition of the runner",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "code"
          }
        ],
        "binding": {
          "strength": "required",
          "description": "The severity of the assertion",
          "valueSet": "http://hl7.org/fhir/ValueSet/issue-severity|5.0.0"
        }
      },
      {
        "id": "TestCases.suite.test.assertion.expression",
        "path": "TestCases.suite.test.assertion.expression",
        "short": "Technical Expression of the assertion",
        "definition": "Resources expected as output from this test. Often, but not always, these resources are Matchetype resources. How exactly it is used depends on the definition of the runner",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "Expression"
          }
        ]
      },
      {
        "id": "TestCases.suite.test.assertion.human",
        "path": "TestCases.suite.test.assertion.human",
        "short": "Human readable description of the assertion",
        "definition": "A human readable description of the assertion.",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ]
      },
      {
        "id": "TestCases.suite.test.assertion.mode",
        "path": "TestCases.suite.test.assertion.mode",
        "short": "A mode that must be true for this assertion to apply",
        "definition": "If this mode is not passed to the runner, then this assertion will not be used",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "code"
          }
        ],
        "meaningWhenMissing": "If no modes are listed, the assertion is always used, unless there is another assertion with the same name that is selected by mode"
      },
      {
        "id": "TestCases.suite.suite",
        "path": "TestCases.suite.suite",
        "short": "A nested suite of tests",
        "definition": "A nested set of tests",
        "min": 0,
        "max": "*",
        "contentReference": "http://hl7.org/fhir/tools/StructureDefinition/TestCases#TestCases.suite"
      },
      {
        "id": "TestCases.suite.cases",
        "path": "TestCases.suite.cases",
        "short": "A nested set of test cases",
        "definition": "A nested set of test cases. Typically, the runner must be the same in the nested test cases",
        "min": 0,
        "max": "*",
        "type": [
          {
            "code": "Reference",
            "targetProfile": [
              "http://hl7.org/fhir/tools/StructureDefinition/TestCases"
            ]
          },
          {
            "code": "canonical",
            "targetProfile": [
              "http://hl7.org/fhir/tools/StructureDefinition/TestCases"
            ]
          }
        ]
      }
    ]
  }
}