FHIR Terminology Ecosystem IG
1.7.7-SNAPSHOT - Release International flag

FHIR Terminology Ecosystem IG, published by HL7 FHIR Product Director. This guide is not an authorized publication; it is the continuous build for version 1.7.7-SNAPSHOT built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/HL7/fhir-tx-ecosystem-ig/ and changes regularly. See the Directory of published versions

Test Case Registry

Test cases

The tests assume that the server can accept code systems on the fly. If servers do not accept code systems on the fly, server authors will have to adapt these tests by rewriting them for their own actual support code systems. Either way, servers that do SHOULD pass all the tests, but the FHIR product director will review the test outcomes in order to approve a server.

The test cases are in version R5, but the tests will run against either an R4 or an R5 server. See R4 and the Test Cases

Running the tests

The tests can be run by any runner that processes the tests correctly, but the easiest way to execute the tests is to use the standard Java FHIR Validator. Run with the parameters:

-txTests -tx {server} -version? {version} -externals {file} -output {folder} -mode? {flat}?

Notes:

  • server is the URL of the server to test for conformance
  • the version defaults to 'current' - the version of the tests in the ci-build of the this IG
  • externals is a file that allows the server to use it's own messages - they don't have to match the tx.fhir.org messages. Just copy the file tests/messages-tx.fhir.org.json for the format.
  • the output folder will default to your temporary directory. It produces output for the failed tests that you can compare with the /tests directory in the package for this IG with a comparison software of your choice (winmerge, beyondCompare, etc)
  • modes - see below. you can pass in multiple modes if necessary, separated by commas

Test Templates

$$: any value

$xx$: value specifier: id, semver, url, token, string, date, version, uuid, instant,

$optional-properties" : an array of string of properties that are allowed to be omitted

$optional$ : a boolean that can mark an object in an array as optional

$external:N$ : reference to string N in a list of external strings

$count-array$ : ignore what's in the array, and just check the count

$choice: array $: a list of allowed values

$fragments$: ??

Registry

Name Operation Flags Description
metadata

tests for minimal requirements for metadata statements

metadata $metadata

Check that the minimum expected things are found in the server CapabilityStatement

term-caps $term-caps

Check that the minimum expected things are found in the server TerminologyCapabilities

simple-cases

basic tests, setting up for the API tests to come

simple-expand-all $expand

Expansion containing all the code system

simple-expand-active $expand

Expansion containing only the active codes in the code system

simple-expand-inactive $expand

Expansion containing only the inactive codes in the code system

simple-expand-enum $expand

Expansion containing an enumerated set of codes in the code system

simple-expand-enum-bad $expand

Expansion containing an enumerated set of codes in the code system, including invalid codes

simple-expand-isa $expand

Expansion containing a filter on the code system using is-a relationship

simple-expand-isa-o2 $expand tx.fhir.org

Expansion containing a filter on the code system using is-a relationship with paging (tx.fhir.org internal test)

simple-expand-isa-c2 $expand tx.fhir.org

Expansion containing a filter on the code system using is-a relationship with paging (tx.fhir.org internal test)

simple-expand-isa-o2c2 $expand tx.fhir.org

Expansion containing a filter on the code system using is-a relationship with paging (tx.fhir.org internal test)

simple-expand-prop $expand

Expansion containing a filter on the code system using a property value

simple-expand-regex $expand

Expansion containing a filter on the code system using regex on the codes

simple-expand-regex2 $expand

Expansion containing a filter on the code system using regex on the codes using a regex known to cause a problem on at least one server

simple-lookup-1 $lookup

Check that $lookup works (there's not many tests for $lookup because it's not used much by the tools)

simple-lookup-2 $lookup

Check that $lookup works (there's not many tests for $lookup because it's not used much by the tools)

parameters

Testing out the various expansion parameters that the IG publisher makes use of

parameters-expand-all-hierarchy $expand

Expand an entire code system, and check that the code system replicates the hierarchy. Note that for all the hierarchical expansions, the flag 'flat' means that the server is not expected to provide a hierarchical expansion

parameters-expand-enum-hierarchy $expand

Expand an enumerated value set - no hierarchy in this case

parameters-expand-isa-hierarchy $expand

Expand an is-a value set, and preserve the hierarchy

parameters-expand-all-active $expand

expand all the active codes - hierarchy is preserved

parameters-expand-active-active $expand

Expand all the active codes, and specify active codes in a parameter

parameters-expand-inactive-active $expand

Expand all the codes, including inactive ones, but specify active codes only in a parameter

parameters-expand-enum-active $expand

Expand an enumerated value set, with active codes only in a parameter

parameters-expand-isa-active $expand

Expand an is-a value set, only the active codes

parameters-expand-all-inactive $expand

expand all the active codes, including inactive codes - hierarchy is preserved

parameters-expand-active-inactive $expand

to be provided

parameters-expand-inactive-inactive $expand

to be provided

parameters-expand-enum-inactive $expand

to be provided

parameters-expand-isa-inactive $expand

to be provided

parameters-expand-all-designations $expand

to be provided

parameters-expand-enum-designations $expand

to be provided

parameters-expand-isa-designations $expand

to be provided

parameters-expand-all-definitions $expand

to be provided

parameters-expand-enum-definitions $expand

to be provided

parameters-expand-isa-definitions $expand

to be provided

parameters-expand-all-definitions2 $expand

to be provided

parameters-expand-enum-definitions2 $expand

to be provided

parameters-expand-enum-definitions3 $expand

specifically to test out http://hl7.org/fhir/StructureDefinition/valueset-concept-definition

parameters-expand-isa-definitions2 $expand

to be provided

parameters-expand-all-property $expand

to be provided

parameters-expand-enum-property $expand

to be provided

parameters-expand-isa-property $expand

to be provided

language

Testing returning language by request, getting the right designation


Testing returning language by request, getting the right designation
language-echo-en-none $expand

to be provided

language-echo-de-none $expand

to be provided

language-echo-en-multi-none $expand

to be provided

language-echo-de-multi-none $expand

to be provided

language-echo-en-en-param $expand

to be provided

language-echo-en-en-vs $expand

to be provided

language-echo-en-en-header $expand

to be provided

language-echo-en-en-vslang $expand

to be provided

language-echo-en-en-mixed $expand

to be provided

language-echo-de-de-param $expand

to be provided

language-echo-de-de-vs $expand

to be provided

language-echo-de-de-header $expand

to be provided

language-echo-en-multi-en-param $expand

to be provided

language-echo-en-multi-en-vs $expand

to be provided

language-echo-en-multi-en-header $expand

to be provided

language-echo-de-multi-de-param $expand

to be provided

language-echo-de-multi-de-vs $expand

to be provided

language-echo-de-multi-de-header $expand

to be provided

language-xform-en-multi-de-soft $expand

to be provided

language-xform-en-multi-de-hard $expand

to be provided

language-xform-en-multi-de-default $expand

to be provided

language-xform-de-multi-en-soft $expand

to be provided

language-xform-de-multi-en-hard $expand

to be provided

language-xform-de-multi-en-default $expand

to be provided

language-echo-en-designation $expand

to be provided

language-echo-en-designations $expand

to be provided

language2

A series of tests that test display name validation for various permutations of languages


A series of tests that test display name validation for various permutations of languages
validation-right-de-en $validate-code

to be provided

validation-right-de-ende-N $validate-code

to be provided

validation-right-de-ende $validate-code

to be provided

validation-right-de-none $validate-code

to be provided

validation-right-en-en $validate-code

to be provided

validation-right-en-ende-N $validate-code

to be provided

validation-right-en-ende $validate-code

to be provided

validation-right-en-none $validate-code

to be provided

validation-right-none-en $validate-code

to be provided

validation-right-none-ende-N $validate-code

to be provided

validation-right-none-ende $validate-code

to be provided

validation-right-none-none $validate-code

to be provided

validation-wrong-de-en $validate-code

to be provided

validation-wrong-de-en-bad $validate-code

Same request, but with an invalid displayName parameter

validation-wrong-de-ende-N $validate-code

to be provided

validation-wrong-de-ende $validate-code

to be provided

validation-wrong-de-none $validate-code

to be provided

validation-wrong-en-en $validate-code

to be provided

validation-wrong-en-ende-N $validate-code

to be provided

validation-wrong-en-ende $validate-code

to be provided

validation-wrong-en-none $validate-code

to be provided

validation-wrong-none-en $validate-code

to be provided

validation-wrong-none-ende-N $validate-code

to be provided

validation-wrong-none-ende $validate-code

to be provided

validation-wrong-none-none $validate-code

to be provided

extensions

Testing proper handling of extensions, which depends on the extension

extensions-echo-all $expand

to be provided

extensions-echo-all-alt $expand

to be provided

extensions-echo-enumerated $expand

to be provided

extensions-echo-bad-supplement $expand

to be provided

validate-code-bad-supplement $validate-code

to be provided

validate-coding-bad-supplement $validate-code

to be provided

validate-coding-bad-supplement-url $cs-validate-code

to be provided

validate-codeableconcept-bad-supplement $validate-code

to be provided

validate-coding-good-supplement $validate-code

to be provided

validate-coding-good2-supplement $validate-code

to be provided

validation

Testing various validation parameter combinations

validation-simple-code-good $validate-code

to be provided

validation-simple-code-implied-good $validate-code

to be provided

validation-simple-coding-good $validate-code

to be provided

validation-simple-codeableconcept-good $validate-code

to be provided

validation-simple-code-bad-code $validate-code

to be provided

validation-simple-code-implied-bad-code $validate-code

to be provided

validation-simple-coding-bad-code $validate-code

to be provided

validation-simple-coding-bad-code-inactive $validate-code

to be provided

validation-simple-codeableconcept-bad-code $validate-code

to be provided

validation-simple-code-bad-valueSet $validate-code

to be provided

validation-simple-coding-bad-valueSet $validate-code

to be provided

validation-simple-codeableconcept-bad-valueSet $validate-code

to be provided

validation-simple-code-bad-import $validate-code

to be provided

validation-simple-coding-bad-import $validate-code

to be provided

validation-simple-codeableconcept-bad-import $validate-code

to be provided

validation-simple-code-bad-system $validate-code

to be provided

validation-simple-coding-bad-system $validate-code

to be provided

validation-simple-coding-bad-system2 $validate-code

to be provided

validation-simple-coding-bad-system-local $validate-code

to be provided

validation-simple-coding-no-system $validate-code

to be provided

validation-simple-codeableconcept-bad-system $validate-code

to be provided

validation-simple-code-bad-version1 $validate-code

to be provided

validation-simple-coding-bad-version1 $validate-code

to be provided

validation-simple-codeableconcept-bad-version1 $validate-code

to be provided

validation-simple-codeableconcept-bad-version2 $validate-code

Check that a bad system with a version doesn't generate a warning that the version can't be found

validation-simple-code-good-version $validate-code

to be provided

validation-simple-coding-good-version $validate-code

to be provided

validation-simple-codeableconcept-good-version $validate-code

to be provided

validation-simple-code-good-display $validate-code

to be provided

validation-simple-coding-good-display $validate-code

to be provided

validation-simple-codeableconcept-good-display $validate-code

to be provided

validation-simple-code-bad-display $validate-code

to be provided

validation-simple-code-bad-display-ws $validate-code

to be provided

validation-simple-coding-bad-display $validate-code

to be provided

validation-simple-codeableconcept-bad-display $validate-code

to be provided

validation-simple-code-bad-display-warning $validate-code

to be provided

validation-simple-coding-bad-display-warning $validate-code

to be provided

validation-simple-codeableconcept-bad-display-warning $validate-code

to be provided

validation-simple-code-good-language $validate-code

to be provided

validation-simple-coding-good-language $validate-code

to be provided

validation-simple-codeableconcept-good-language $validate-code

to be provided

validation-simple-code-bad-language $validate-code

to be provided

validation-simple-code-good-regex $validate-code

to be provided

validation-simple-code-bad-regex $validate-code

to be provided

validation-simple-coding-bad-language $validate-code

to be provided

validation-simple-coding-bad-language-header $validate-code

to be provided

validation-simple-coding-bad-language-vs $validate-code

to be provided

validation-simple-coding-bad-language-vslang $validate-code

to be provided

validation-simple-codeableconcept-bad-language $validate-code

to be provided

validation-complex-codeableconcept-full $validate-code

to be provided

validation-complex-codeableconcept-vsonly $validate-code

to be provided

validation-version-profile-none $validate-code

to be provided

validation-version-profile-default $validate-code

to be provided

validation-version-profile-coding $validate-code

to be provided

validation-cs-code-good $cs-validate-code

to be provided

validation-cs-code-bad-code $cs-validate-code

to be provided

big

Testing handling a big code system

big-echo-no-limit $expand

to be provided

big-echo-zero-fifty-limit $expand

to be provided

big-echo-fifty-fifty-limit $expand

to be provided

big-circle-bang $expand

to be provided

big-circle-validate $validate-code

to be provided

other

Misc tests based on issues submitted by users

dual-filter $expand

to be provided

validation-dual-filter-in $validate-code

to be provided

validation-dual-filter-out $validate-code

to be provided

errors

Testing Various Error Conditions

unknown-system1 $validate-code

to be provided

unknown-system2 $validate-code

to be provided

deprecated

Testing Deprecated+Withdrawn warnings

withdrawn $expand

to be provided

not-withdrawn $expand

to be provided

withdrawn-validate $validate-code

to be provided

not-withdrawn-validate $validate-code

to be provided

experimental $expand

to be provided

experimental-validate $validate-code

to be provided

draft $expand

to be provided

draft-validate $validate-code

to be provided

notSelectable

Testing notSelectable

notSelectable-prop-all $expand

to be provided

notSelectable-noprop-all $expand

to be provided

notSelectable-reprop-all $expand

to be provided

notSelectable-unprop-all $expand

to be provided

notSelectable-prop-true $expand

to be provided

notSelectable-prop-trueUC $expand

to be provided

notSelectable-noprop-true $expand

to be provided

notSelectable-reprop-true $expand

to be provided

notSelectable-unprop-true $expand

to be provided

notSelectable-prop-false $expand

to be provided

notSelectable-noprop-false $expand

to be provided

notSelectable-reprop-false $expand

to be provided

notSelectable-unprop-false $expand

to be provided

notSelectable-prop-in $expand

to be provided

notSelectable-prop-out $expand

to be provided

notSelectable-prop-true-true $validate-code

to be provided

notSelectable-prop-trueUC-true $validate-code

to be provided

notSelectable-prop-in-true $validate-code

to be provided

notSelectable-prop-out-true $validate-code

to be provided

notSelectable-noprop-true-true $validate-code

to be provided

notSelectable-reprop-true-true $validate-code

to be provided

notSelectable-unprop-true-true $validate-code

to be provided

notSelectable-prop-true-false $validate-code

to be provided

notSelectable-prop-in-false $validate-code

to be provided

notSelectable-prop-in-unknown $validate-code

to be provided

notSelectable-prop-out-unknown $validate-code

to be provided

notSelectable-prop-out-false $validate-code

to be provided

notSelectable-noprop-true-false $validate-code

to be provided

notSelectable-reprop-true-false $validate-code

to be provided

notSelectable-unprop-true-false $validate-code

to be provided

notSelectable-prop-false-true $validate-code

to be provided

notSelectable-noprop-false-true $validate-code

to be provided

notSelectable-reprop-false-true $validate-code

to be provided

notSelectable-unprop-false-true $validate-code

to be provided

notSelectable-prop-false-false $validate-code

to be provided

notSelectable-noprop-false-false $validate-code

to be provided

notSelectable-reprop-false-false $validate-code

to be provided

notSelectable-unprop-false-false $validate-code

to be provided

notSelectable-noprop-true-unknown $validate-code

to be provided

notSelectable-reprop-true-unknown $validate-code

to be provided

notSelectable-unprop-true-unknown $validate-code

to be provided

notSelectable-prop-true-unknown $validate-code

to be provided

notSelectable-prop-false-unknown $validate-code

to be provided

notSelectable-noprop-false-unknown $validate-code

to be provided

notSelectable-reprop-false-unknown $validate-code

to be provided

notSelectable-unprop-false-unknown $validate-code

to be provided

inactive

Testing Inactive codes

inactive-expand $expand

to be provided

inactive-inactive-expand $expand

to be provided

inactive-active-expand $expand

to be provided

inactive-1-validate $validate-code

to be provided

inactive-2-validate $validate-code

to be provided

inactive-3-validate $validate-code

to be provided

inactive-1a-validate $validate-code

to be provided

inactive-2a-validate $validate-code

to be provided

inactive-3a-validate $validate-code

to be provided

inactive-1b-validate $validate-code

to be provided

inactive-2b-validate $validate-code

to be provided

inactive-3b-validate $validate-code

to be provided

case

Test Case Sensitivity handling

case-insensitive-code1-1 $validate-code

to be provided

case-insensitive-code1-2 $validate-code

to be provided

case-insensitive-code1-3 $validate-code

to be provided

case-sensitive-code1-1 $validate-code

to be provided

case-sensitive-code1-2 $validate-code

to be provided

case-sensitive-code1-3 $validate-code

to be provided

translate

Tests for ConceptMap.$translate

translate-1 $translate

to be provided

tho

Misc assorted test cases from tho

act-class $expand

to be provided

default-valueset-version

Test the default-valueset-version parameter

direct-expand-one $expand

Test the actual value set directly - v1

direct-expand-two $expand

Test the actual value set directly - v2

indirect-expand-one $expand

Test the actual value set indirectly - v1

indirect-expand-two $expand

Test the actual value set indirectly - v2

indirect-expand-zero $expand

Test the actual value set indirectly - versionless

indirect-expand-zero-pinned $expand

Test the actual value set indirectly - versionless, and specify a version

indirect-expand-zero-pinned-wrong $expand

Test the actual value set indirectly - versionless, and specify a version that doesn't exist

indirect-validation-one $validate-code

Test the value set indirectly

indirect-validation-two $validate-code

Test the value set indirectly

indirect-validation-zero $validate-code

Test the value set indirectly

indirect-validation-zero-pinned $validate-code

Test the value set indirectly

indirect-validation-zero-pinned-wrong $validate-code

Test the value set indirectly

tx.fhir.org tx.fhir.org

These are tx.fhir.org specific tests. There's no expectation that other servers will pass these tests, and they are not executed by default. (other servers can, but they depend on other set up not controlled by the tests

snomed-validation-1 $cs-validate-code

to be provided

loinc-lookup-code $lookup

to be provided

loinc-lookup-part $lookup

to be provided

loinc-lookup-list $lookup

to be provided

loinc-lookup-answer $lookup

to be provided

loinc-validate-code $cs-validate-code

to be provided

loinc-validate-code-supp1 $cs-validate-code

LOINC supplement test - code in the supplement, but english

loinc-validate-code-supp2 $cs-validate-code

LOINC supplement test - code in the supplement, but german from the supplement

loinc-validate-part $cs-validate-code

to be provided

loinc-validate-list $cs-validate-code

to be provided

loinc-validate-answer $cs-validate-code

to be provided

loinc-validate-invalid $cs-validate-code

to be provided

loinc-expand-enum $expand

to be provided

loinc-expand-all $expand

to be provided

loinc-expand-all-limited $expand

to be provided

loinc-expand-enum-bad $expand

to be provided

loinc-expand-status $expand

to be provided

loinc-expand-class-regex $expand

to be provided

loinc-expand-prop-component $expand

to be provided

loinc-expand-prop-method $expand

to be provided

loinc-expand-prop-component-str $expand

to be provided

loinc-expand-prop-order-obs $expand

to be provided

loinc-expand-concept-is-a $expand

to be provided

loinc-expand-copyright $expand

to be provided

loinc-expand-scale-type $expand

to be provided

loinc-validate-enum-good $validate-code

to be provided

loinc-validate-enum-bad $validate-code

to be provided

loinc-validate-filter-prop-component-good $validate-code

to be provided

loinc-validate-filter-prop-component-bad $validate-code

to be provided

loinc-validate-filter-status-good $validate-code

to be provided

loinc-validate-filter-status-bad $validate-code

to be provided

loinc-validate-filter-class-regex-good $validate-code

to be provided

loinc-validate-filter-class-regex-bad $validate-code

to be provided

loinc-validate-filter-scale-type-good $validate-code

to be provided

loinc-validate-filter-scale-type-bad $validate-code

to be provided

loinc-expand-list-request-parameters $expand

to be provided

loinc-validate-list-good $validate-code

to be provided

loinc-validate-list-bad $validate-code

to be provided

loinc-expand-filter-list-request-parameters $expand

to be provided

loinc-validate-filter-list-type-good $validate-code

to be provided

loinc-validate-filter-list-bad $validate-code

to be provided

loinc-expand-filter-dockind-request-parameters $expand

to be provided

loinc-validate-filter-dockind-type-good $validate-code

to be provided

loinc-validate-filter-dockind-bad $validate-code

to be provided

loinc-validate-filter-classtype-good $validate-code

test classtype filter (numerical)

loinc-validate-filter-classtype-bad $validate-code

test classtype filter (numerical)

loinc-expand-filter-answers-for1 $expand

Test answers-for filters with LL code

loinc-expand-filter-answers-for2 $expand

Test answers-for filters with normal code

loinc-expand-filter-answer-list $expand

Test answer-list filters with normal code