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.9.5-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
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 consult the FHIR product director. 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
Note that the test cases will be migrated to use TestPlan+matchetypes at some stage.
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. You do not download the tests yourself - the runner fetches the published test package for you:
java -jar validator_cli.jar txTests -tx {server} [-test-version {version}] [-output {folder}]
[-externals {file}] [-mode {mode},{mode}] [-suite {suite}] [-filter {text}] [-input {folder}]
The parameters are:
-tx: the URL of the server to test for conformance. This is the only required parameter-test-version: which published version of these test cases to run - see
Versions of the test cases below. It defaults to current-output: the folder to write the results to; defaults to your temporary directory. It contains
test-results.json, and the actual response for each failed test, which you can compare against
the expected response in the /tests directory of this IG's package with a comparison tool of
your choice (winmerge, beyondCompare, etc)-externals: a file that allows the server to use its own messages - they don't have to match
the tx.fhir.org messages. Copy tests/messages-tx.fhir.org.json for the format-mode: see Modes below. Several modes can be passed, separated by commas, or by
repeating the parameter-suite: run only the named suite, rather than all of them-filter: run only the tests whose name contains this text-input: an additional folder of test cases to run as well as the published onesNote that the FHIR version to test is not a parameter: the runner asks the server which version of FHIR it speaks, and runs the R4 or the R5 form of each test accordingly. See R4 and the Test Cases.
The runner writes a running commentary to the console. It starts with a header that records
what is actually being run - the source of the tests and their version, the output directory,
the server URL, whether an externals file is in use, and the modes - and it is worth reading,
because most surprising results turn out to be a test version or a mode that isn't what you
thought it was. Then, for each suite, a Group {name} line followed by one line per test:
Group expansions
-- expand-simple: Pass (0.21sec)
-- expand-filter-regex: Fail (0.19sec)
Excluded code not found: http://hl7.org/fhir/test#code2
A failing test is followed by an error line with the reason - the first difference the runner found between the expected response and the actual one, or, if the test threw rather than compared, the exception and its stack trace. At the end, a summary line:
[name] passed all 1631 HL7 terminology service tests (modes general+snomed+icd-11, tests v1.9.4, runner v6.10.4)
or, if there were failures, failed {n} of {m} ... followed by a Failed Tests: line listing
them as {suite}/{test}, comma separated. The summary names the modes, the version of the test
cases, and the version of the runner, because a result means nothing without all three.
Note that the name is taken from the CapabilityStatement
The output directory (-output, defaulting to your temporary directory) contains:
test.log: everything that went to the console, in the output folder where the rest of the
results are, so that a run is still readable after you have closed the terminal
(validator 6.10.5 and later)test-results.json: the date of the run, and every suite and test with its status and, for
failures, the messagereport.json: the same run as a FHIR TestReport, with a score and an overall pass/failexpected/ and actual/: for each failing test, the expected response and the response
the server actually gave, written as a pair of files with the same name so that they can be
compared with a comparison tool of your choice (winmerge, beyondCompare, etc). Both sides are
scrubbed and sorted the same way before they are written, so the diff shows the difference
the runner objected to and not incidental ones. Passing tests write nothing - if a test
passes, there is nothing to look atactual/$versions.json: the server's response to $versions, recorded on connection,
whether or not anything failedconversions/: only when testing an R4 server. For each operation, the R5 resource and the R4
resource that was actually sent or received, as conversions/{r4|r5}/{suite}/{test}.{mode}.json,
so that a failure caused by the version conversion can be told apart from one caused by the
server. See R4 and the Test CasesNote that the same test writes to the same file names every time it fails. If you run the tests
several ways - R4 and R5, with and without server caching - each run overwrites the last one's
diffs, and a test that fails in only one of them can leave no evidence behind. Use a different
output directory for each variant, or, in server mode, the label parameter described below.
The simplest way to run the tests in a build is the command line above: it exits with 0 if every
test passed and 1 if any test failed, so a CI step needs no output parsing. Always pass
-test-version in a pipeline. The default is current, which is the ci-build of this IG and
changes whenever its master branch changes - a build that uses it can go red because the tests
moved, not because your server did. Pin a released version, and change it deliberately. Pass
-output as well, and keep the directory as a build artefact: when the step fails, the expected/
and actual/ pair for each failing test is the only thing that tells you what went wrong, and it
is gone with the build container otherwise.
The drawback of the command line is that the whole run is a single result. If you want your own test framework to report one result per test - to see which tests are newly failing, to track them over time, or just to get a useful failure message next to the test that produced it - use the validator's server mode instead. Start the validator once as an HTTP server, and ask it to run one test at a time:
java -jar validator_cli.jar server {port} -version 5.0
GET http://localhost:{port}/txTest?server={url}&suite={suite}&test={test}&modes={modes}&folder={folder}&label={label}
Each call runs one test and returns an OperationOutcome. If it has no issue with a severity of
error, the test passed; otherwise details.text is the failure message - the same message the
command line would have logged. The test cases and the server's setup resources are loaded once,
on the first call for a given server, and reused, so the cost of starting a JVM and loading the
test package is paid once, not once per test. Drive it from whatever test framework you already
use: enumerate the suites and tests from test-cases.json in this IG's package, and make one call
per test.
Two of the parameters matter more in server mode than they look. modes replaces the runner's
mode set for that call: pass every mode your server supports, exactly as you would on the command
line, because a test gated on a mode you did not ask for does not run, and a test that did not run
is reported as neither a pass nor a failure but as an explanation of which mode would have run it.
Sending no modes at all gets a default set that may not match your server. folder and label
(validator 6.10.5 and later) control where the output goes: folder names the run's folder inside
the validator's temporary directory - a simple name, not a path, defaulting to the server's host
name - and label names a subfolder of it for that one test. Give each variant of a run its own
label (r4, r5, r5-cached) and the diffs for a test that fails in only one of them survive.
The test cases change: tests are added, and corrected, as servers and the specification develop.
So this IG is released periodically, and each release is a fixed set of test cases that you can
test against repeatedly and compare results over time. The releases are listed on the
history page, and you choose one with -test-version:
java -jar validator_cli.jar txTests -tx http://localhost:8080/fhir -test-version 1.9.3 -output ./results
-test-version names a version of this IG - a version like 1.9.3. It is not a FHIR version,
and passing a FHIR version (-test-version 4.0.1) will fail, because there is no such release of
the test cases.
If you do not pass -test-version, the runner uses current: the tests as they stand in the
ci-build of the master branch, which changes whenever master changes. That is the right choice
when you are working with the FHIR product director on new tests, and the wrong one when you need
a stable measure of your server's conformance.
All the tests are registered in tests/test-cases.json, which contains a list of suites,
each of which contains a list of tests. A suite may have:
name: the name of the suite (used in the test output, and to run a single suite)description: what the suite is forsetup: a list of files containing the resources (code systems, value sets, concept maps)
that the server needs in order to run the tests in the suite. Servers that cannot accept
resources on the fly have to load these some other waymode / modes: the suite only runs when the runner is in that mode (see below)version: the suite only runs against servers of that FHIR version (see below)disabled: if true, the suite is not run at allA test may have:
name: the name of the test, unique within the suitedescription: what the test is checking. This is the documentation for the requirement
the test enforces, so it should say why the expected response is the correct oneoperation: one of expand, validate-code, cs-validate-code, lookup, translate,
compare, batch, batch-validate, metadata, term-capsrequest: the file containing the request parameters (not used by metadata / term-caps)response: the file containing the expected responserequest:{mode} / response:{mode}: an alternative request or response used when the
runner is in that mode - e.g. response:flat for servers that return a flat expansionmode / modes, version, disabled: as for suiteshttp-code: the expected HTTP status code, where it isn't 200 (e.g. 422, or 4xx)lenient-display: sets the lenient-display-validation parameter on a validate-code or
cs-validate-code request, so that the same request can be tested both waysprofile: a file containing a Parameters resource with the expansion parameters to useAccept-Language: the language to ask forheader: an additional HTTP header to send ( name, value, and optionally mode)The test cases are written in R5, and most of them are the same for an R4 server, but
some questions have different answers in different versions of FHIR. Where a test only
makes sense for particular versions, the version property says which:
"version" : "4.0": only run this against an R4 server (matches 4.0, and any version
starting 4.0., so 4.0.1 matches)"version" : "!4.0": run this against anything except an R4 serverWhere the same test applies to all versions but the response differs, the difference is
marked in the expected response with $optional$ or $only$ (see below).
Expected responses are not compared literally - they are templates. A string in an expected response may be one of:
$$: any value$id$, $uuid$, $url$, $token$, $string$, $date$, $instant$, $semver$: any
value of that kind. ($string$ means any string that has no leading or trailing whitespace)$version$: the FHIR version of the server being tested. $version$ is also substituted
into longer strings, so "...|$version$" works$choice:a|b|c$: any one of the listed values$fragments:a|b$: any string that contains all of the listed fragments (case insensitive).
This is how messages are checked where the exact wording is not fixed$external:N$: the string registered as N in the externals file, which lets a server
provide its own wording for a message. See tests/messages-tx.fhir.org.json for the format.
$external:N:a|b$ also gives fragments to use when no externals file is providedAn object in an expected response may carry:
$optional-properties$: an array of the names of properties that the server is allowed to
omit. * means all of them$count-arrays$: an array of the names of properties whose content is not checked - only
the number of entries in them$optional$: this object may be omitted (see below)$only$: this object is required in some versions or modes, and prohibited in the rest
(see below)$optional$ marks an entry in an array that the server does not have to return. It is either
a boolean, or a filter that says when it is optional:
"$optional$" : true: always optional. Note that this must be a boolean - "true" as a
string is read as a mode name, and does nothing"$optional$" : "{mode}": optional unless the runner is in that mode"$optional$" : "!{mode}": optional only when the runner is not in that mode. e.g.
"!tx.fhir.org" means "every server except tx.fhir.org may leave this out""$optional$" : "version:4": optional when the server's FHIR version starts with 4"$optional$" : "warning:{message}": always optional, but the runner reports the message
when the content is missing$only$ is the counterpart: where $optional$ only ever relaxes a requirement, $only$
says that the entry belongs to exactly one version or mode. When its filter passes the entry
is required, and when it does not, the entry must not be present at all. The filter
grammar is the same as $optional$'s. So "$only$" : "version:4" marks content that an R4
server must return and an R5 server must not.
Some tests, and some parts of expected responses, only apply to servers with particular
characteristics, or to a particular server. These are marked with a mode, and only run
when that mode is passed to the runner with the -mode parameter. general is always
on unless it is turned off with -mode !general. The modes in use are:
general: the tests every server is expected to pass. This is the defaultsnomed: servers that support SNOMED CT, loaded with the test subontology described in
tx-source/readme.mdomop: servers that support OMOPicd-11: servers that support ICD-11mimetypes: servers that support the mime types code system (BCP 13, urn:ietf:bcp:13)tx.fhir.org: tests that are specific to tx.fhir.org - either its own bugs, or operations
that are still being trialled there. No other server is expected to pass theseflat: servers that return a flat expansion rather than a hierarchical one. This mode
selects the response:flat alternative for the tests that have oneA mode name can also appear in $optional$ / $only$ in an expected response, so that a
particular server (or every server but one) is held to a different requirement than the rest
"$optional$" : "!tx.fhir.org" is used throughout for content that only tx.fhir.org is
required to return.
Summary of the impact of the modes. The tests in the general mode are run by default;
the tests in the other modes are only run when the mode is passed to the runner:
| Mode | Suites (test count) | Tests |
| general | (all the suites that are not marked with another mode) | 670 |
| tx.fhir.org | tx.fhir.org (76) UCUM (20) compare (28) bugs (25) related2 (33) langcodes (43) simple-cases (3 of 37) |
228 |
| snomed | snomed (67) sct-ecl (103) |
170 |
| omop | omop (26) |
26 |
| mimetypes | mimetypes (39) |
39 |
| icd-11 | icd-11 (50) |
50 |
| Total | 38 suites | 1183 |
All the test suites and test cases:
| 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 |
|
| properties | general |
Testing the ValueSet.compose.property element |
|
| expand-with-valueset.compose.property-all-properties-wildcard | $expand | Expand a value set defined to request all properties using ValueSet.compose.property with a wildcard character |
|
| expand-with-valueset.compose.property-all-properties-enums | $expand | Expand a value set defined to request all properties using ValueSet.compose.property with enumerated properties |
|
| simple-cases | general |
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-child-of | $expand | Expansion containing a filter on the code system using child-of relationship. This is testing R5/R4 transformation |
|
| 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-repeating-prop | $expand | A concept may carry several values for one property (CodeSystem.concept.property is 0..*). code3 has dup=alpha and dup=beta; filtering on beta - which is not its first value - must still select it |
|
| simple-expand-repeating-prop-values | $expand | expansion.contains.property is 0..* as well: a concept carrying several values for one property must report all of them, not just one |
|
| 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-expand-regexp-prop | $expand | Expansion containing a filter on the code system using regex on the property values of prop |
|
| simple-expand-regex-none | $expand | Expansion containing a filter on the code system using a valid regex on the codes that matches none of them. The expansion is empty - an include whose filter selects nothing must not be treated as an include with no filter, which would select every code in the code system |
|
| 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) |
|
| simple-expand-all-count | $expand | Expansion containing all the code system, but only a count |
|
| simple-expand-contained | $expand | Expansion where the compose refers to a contained value set |
|
| simple-subsumes-parent | $subsumes | A code subsumes a code nested inside it |
|
| simple-subsumes-child | $subsumes | the mirror of simple-subsumes-parent |
|
| simple-subsumes-equivalent | $subsumes | A code is equivalent to itself |
|
| simple-subsumes-transitive | $subsumes | Subsumption follows the whole nesting, not just direct children |
|
| simple-subsumes-siblings | $subsumes | Two sibling codes do not subsume each other |
|
| simple-subsumes-unrelated | $subsumes | Two root level codes do not subsume each other |
|
| simple-subsumes-root | $subsumes | A root code does not subsume a code under a different root |
|
| simple-subsumes-unknown-code | $subsumes | codeA is not in the code system |
|
| simple-subsumes-parent-coding | $subsumes | As simple-subsumes-parent, but with codingA/codingB |
|
| simple-subsumes-child-coding | $subsumes | As simple-subsumes-child, but with codingA/codingB |
|
| simple-subsumes-equivalent-coding | $subsumes | As simple-subsumes-equivalent, but with codingA/codingB |
|
| simple-subsumes-transitive-coding | $subsumes | As simple-subsumes-transitive, but with codingA/codingB |
|
| simple-subsumes-siblings-coding | $subsumes | As simple-subsumes-siblings, but with codingA/codingB |
|
| simple-subsumes-unrelated-coding | $subsumes | As simple-subsumes-unrelated, but with codingA/codingB |
|
| simple-subsumes-root-coding | $subsumes | As simple-subsumes-root, but with codingA/codingB |
|
| simple-subsumes-unknown-code-coding | $subsumes | As simple-subsumes-unknown-code, but with codingA/codingB |
|
| parameters | general |
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 |
|
| parameters-expand-supplement-none | $expand | Base line for supplement tests |
|
| parameters-expand-supplement-good | $expand | Make sure the useSupplement parameter works |
|
| parameters-expand-supplement-bad | $expand | Make sure the useSupplement parameter fails when it's not valid |
|
| parameters-validate-supplement-none | $validate-code | Base line for supplement tests - validation |
|
| parameters-validate-supplement-good | $validate-code | Make sure the useSupplement parameter works for validation |
|
| parameters-validate-supplement-bad | $validate-code | Make sure the useSupplement parameter fails when it's not valid - for validation |
|
| parameters-lookup-supplement-none | $lookup | Base line for supplement tests - validation |
|
| parameters-lookup-supplement-good | $lookup | Make sure the useSupplement parameter works for lookup |
|
| parameters-lookup-supplement-bad | $lookup | Make sure the useSupplement parameter fails when it's not valid - for lookup |
|
| language | general |
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 | general |
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 | general |
Testing proper handling of extensions, which depends on the extension |
|
| extensions-echo-all | $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 |
|
| validate-code-inactive-display-lenient | $cs-validate-code | Check handling of a deprecated designation (lenient display validation) |
|
| validate-code-inactive-display-notlenient | $cs-validate-code | Check handling of a deprecated designation (strict display validation) |
|
| validate-code-inactive | $cs-validate-code | Check handling of a deprecated concept |
|
| validation | general |
Testing various validation parameter combinations |
|
| validation-simple-code-good | $validate-code | to be provided |
|
| validation-simple-child-of-child | $validate-code | child-of picks up a direct child - here the hierarchy is stated by nesting |
|
| validation-simple-child-of-grandchild | $validate-code | and it stops there: a grandchild is not a child |
|
| 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-codeableconcept-unknown-system | $validate-code | A CodeableConcept with a coding from an unknown code system alongside a coding that is in the value set. The unknown system cannot be checked, but membership is satisfied by the other coding, so the result is true with a warning |
|
| 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-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-lenient | $validate-code | a bad display, with lenient display validation - a warning, and the code is valid |
|
| validation-simple-code-bad-display-notlenient | $validate-code | a bad display, with strict display validation - an error, and the code is not valid |
|
| 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-code-regex-none | $validate-code | A code that exists in the code system is not in a value set whose only include is a valid regex filter that matches no codes |
|
| 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-simple-code-good-language-none | $validate-code | Validate a code where the display is a valid designation in the code system's default language (en), and the requested displayLanguage (de) has no displays for the code. The display is valid, with an informational message |
|
| validation-simple-code-bad-language-none | $validate-code | Validate a code where the display matches no display or designation at all, and the requested displayLanguage (de) has no displays for the code. The display is invalid |
|
| validation-simple-coding-good-language-none | $validate-code | Validate a Coding where the display is a valid designation in the code system's default language (en), and the requested displayLanguage (de) has no displays for the code. The display is valid, with an informational message |
|
| validation-simple-coding-bad-language-none | $validate-code | Validate a Coding where the display matches no display or designation at all, and the requested displayLanguage (de) has no displays for the code. The display is invalid |
|
| validation-simple-codeableconcept-good-language-none | $validate-code | Validate a CodeableConcept where the coding display is a valid designation in the code system's default language (en), and the requested displayLanguage (de) has no displays for the code. The display is valid, with an informational message |
|
| validation-simple-codeableconcept-bad-language-none | $validate-code | Validate a CodeableConcept where the coding display matches no display or designation at all, and the requested displayLanguage (de) has no displays for the code. The display is invalid |
|
| validation-complex-codeableconcept-full | $validate-code | to be provided |
|
| validation-complex-codeableconcept-vsonly | $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 |
|
| validation-contained-good | $validate-code | Validation where the compose refers to a contained value set (valid code) |
|
| validation-contained-bad | $validate-code | Validation where the compose refers to a contained value set (invalid code) |
|
| version | general |
Testing various version issues. There's two versions of a code system, and three value sets that select different versions |
|
| version-simple-code-bad-version1 | $validate-code | Code. Invalid CodeSystem version. No ValueSet version pinning. No version parameters |
|
| version-simple-coding-bad-version1 | $validate-code | Coding. Invalid CodeSystem version. No ValueSet version pinning. No version parameters |
|
| version-simple-codeableconcept-bad-version1 | $validate-code | CodeableConcept. Invalid CodeSystem version. No ValueSet version pinning. No version parameters |
|
| version-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 |
|
| version-simple-code-good-version | $validate-code | Code. Valid CodeSystem version. ValueSet pinned to same version. No version parameters |
|
| version-simple-coding-good-version | $validate-code | Coding. Valid CodeSystem version. ValueSet pinned to same version. No version parameters |
|
| version-simple-codeableconcept-good-version | $validate-code | CodeableConcept. Valid CodeSystem version. ValueSet pinned to same version. No version parameters |
|
| version-version-profile-none | $validate-code | to be provided |
|
| version-version-profile-default | $validate-code | to be provided |
|
| validation-version-profile-coding | $validate-code | to be provided |
|
| coding-vnn-vsnn | $validate-code | Coding. No CodeSystem version. No ValueSet version pinning. No version parameters |
|
| coding-v10-vs1w | $validate-code | Coding. CodeSystem version 1.0. ValueSet version pinned to 1.x. No version parameters |
|
| coding-v10-vs1wb | $validate-code | Coding. CodeSystem version 1.0. ValueSet version pinned to 1.x. No version parameters |
|
| coding-v10-vs10 | $validate-code | Coding. CodeSystem version 1.0. ValueSet version pinned to 1.0. No version parameters |
|
| coding-v10-vs20 | $validate-code | Coding. CodeSystem version 1.0. ValueSet version pinned to 1.2. No version parameters |
|
| coding-v10-vsbb | $validate-code | Coding. CodeSystem version 1.0. ValueSet version pinned to 2.4 (bad). No version parameters |
|
| coding-v10-vsbb | $validate-code | Coding. CodeSystem version 1.0. ValueSet version pinned to 2.4 (bad). No version parameters |
|
| coding-v10-vsnn | $validate-code | Coding. CodeSystem version 1.0. No ValueSet version pinning. No version parameters |
|
| coding-vbb-vs10 | $validate-code | Coding. CodeSystem version 2.4 (bad). ValueSet version pinned to 1.0. No version parameters |
|
| coding-vbb-vsnn | $validate-code | Coding. CodeSystem version 2.4 (bad). No ValueSet version pinning. No version parameters |
|
| coding-vnn-vs1w | $validate-code | Coding. No CodeSystem version. ValueSet version pinned to 1.x. No version parameters |
|
| coding-vnn-vs1wb | $validate-code | Coding. No CodeSystem version. ValueSet version pinned to 1.x. No version parameters |
|
| coding-vnn-vs10 | $validate-code | Coding. No CodeSystem version. ValueSet version pinned to 1.0. No version parameters |
|
| coding-vnn-vsbb | $validate-code | Coding. No CodeSystem version. ValueSet version pinned to 2.4 (bad). No version parameters |
|
| coding-vnn-vsnn-default | $validate-code | Coding. No CodeSystem version. No ValueSet version pinning. Version Parameter: default to 1.2.0 |
|
| coding-v10-vs1w-default | $validate-code | Coding. CodeSystem version 1.0. ValueSet version pinned to 1.x. Version Parameter: default to 1.2.0 |
|
| coding-v10-vs1wb-default | $validate-code | Coding. CodeSystem version 1.0. ValueSet version pinned to 1.x. Version Parameter: default to 1.2.0 |
|
| coding-v10-vs10-default | $validate-code | Coding. CodeSystem version 1.0. ValueSet version pinned to 1.0. Version Parameter: default to 1.2.0 |
|
| coding-v10-vs20-default | $validate-code | Coding. CodeSystem version 1.0. ValueSet version pinned to 1.2. Version Parameter: default to 1.2.0 |
|
| coding-v10-vsbb-default | $validate-code | Coding. CodeSystem version 1.0. ValueSet version pinned to 2.4 (bad). Version Parameter: default to 1.2.0 |
|
| coding-v10-vsnn-default | $validate-code | Coding. CodeSystem version 1.0. No ValueSet version pinning. Version Parameter: default to 1.2.0 |
|
| coding-vbb-vs10-default | $validate-code | Coding. CodeSystem version 2.4 (bad). ValueSet version pinned to 1.0. Version Parameter: default to 1.2.0 |
|
| coding-vbb-vsnn-default | $validate-code | Coding. CodeSystem version 2.4 (bad). No ValueSet version pinning. Version Parameter: default to 1.2.0 |
|
| coding-vnn-vs1w-default | $validate-code | Coding. No CodeSystem version. ValueSet version pinned to 1.x. Version Parameter: default to 1.2.0 |
|
| coding-vnn-vs1wb-default | $validate-code | Coding. No CodeSystem version. ValueSet version pinned to 1.x. Version Parameter: default to 1.2.0 |
|
| coding-vnn-vs10-default | $validate-code | Coding. No CodeSystem version. ValueSet version pinned to 1.0. Version Parameter: default to 1.2.0 |
|
| coding-vnn-vsbb-default | $validate-code | Coding. No CodeSystem version. ValueSet version pinned to 2.4 (bad). Version Parameter: default to 1.2.0 |
|
| coding-vnn-vsnn-check | $validate-code | Coding. No CodeSystem version. No ValueSet version pinning. Version Parameter: check is 1.2.0 |
|
| coding-v10-vs1w-check | $validate-code | Coding. CodeSystem version 1.0. ValueSet version pinned to 1.x. Version Parameter: check is 1.2.0 |
|
| coding-v10-vs1wb-check | $validate-code | Coding. CodeSystem version 1.0. ValueSet version pinned to 1.x. Version Parameter: check is 1.2.0 |
|
| coding-v10-vs10-check | $validate-code | Coding. CodeSystem version 1.0. ValueSet version pinned to 1.0. Version Parameter: check is1.2.0 |
|
| coding-v10-vs20-check | $validate-code | Coding. CodeSystem version 1.0. ValueSet version pinned to 1.2. Version Parameter: check is 1.2.0 |
|
| coding-v10-vsbb-check | $validate-code | Coding. CodeSystem version 1.0. ValueSet version pinned to 2.4 (bad). Version Parameter: check is 1.2.0 |
|
| coding-v10-vsnn-check | $validate-code | Coding. CodeSystem version 1.0. No ValueSet version pinning. Version Parameter: check is 1.2.0 |
|
| coding-vbb-vs10-check | $validate-code | Coding. CodeSystem version 2.4 (bad). ValueSet version pinned to 1.0. Version Parameter: check is 1.2.0 |
|
| coding-vbb-vsnn-check | $validate-code | Coding. CodeSystem version 2.4 (bad). No ValueSet version pinning. Version Parameter: check is 1.2.0 |
|
| coding-vnn-vs1w-check | $validate-code | Coding. No CodeSystem version. ValueSet version pinned to 1.x. Version Parameter: check is 1.2.0 |
|
| coding-vnn-vs1wb-check | $validate-code | Coding. No CodeSystem version. ValueSet version pinned to 1.x. Version Parameter: check is 1.2.0 |
|
| coding-vnn-vs10-check | $validate-code | Coding. No CodeSystem version. ValueSet version pinned to 1.0. Version Parameter: check is 1.2.0 |
|
| coding-vnn-vsbb-check | $validate-code | Coding. No CodeSystem version. ValueSet version pinned to 2.4 (bad). Version Parameter: check is 1.2.0 |
|
| coding-vnn-vsnn-force | $validate-code | Coding. No CodeSystem version. No ValueSet version pinning. Version Parameter: force to 1.2.0 |
|
| coding-v10-vs1w-force | $validate-code | Coding. CodeSystem version 1.0. ValueSet version pinned to 1.x. Version Parameter: force to 1.2.0 |
|
| coding-v10-vs1wb-force | $validate-code | Coding. CodeSystem version 1.0. ValueSet version pinned to 1.x. Version Parameter: force to 1.2.0 |
|
| coding-v10-vs10-force | $validate-code | Coding. CodeSystem version 1.0. ValueSet version pinned to 1.0. Version Parameter: force to 1.2.0 |
|
| coding-v10-vs20-force | $validate-code | Coding. CodeSystem version 1.0. ValueSet version pinned to 1.2. Version Parameter: force to 1.2.0 |
|
| coding-v10-vsbb-force | $validate-code | Coding. CodeSystem version 1.0. ValueSet version pinned to 2.4 (bad). Version Parameter: force to 1.2.0 |
|
| coding-v10-vsnn-force | $validate-code | Coding. CodeSystem version 1.0. No ValueSet version pinning. Version Parameter: force to 1.2.0 |
|
| coding-vbb-vs10-force | $validate-code | Coding. CodeSystem version 2.4 (bad). ValueSet version pinned to 1.0. Version Parameter: force to 1.2.0 |
|
| coding-vbb-vsnn-force | $validate-code | Coding. CodeSystem version 2.4 (bad). No ValueSet version pinning. Version Parameter: force to 1.2.0 |
|
| coding-vnn-vs1w-force | $validate-code | Coding. No CodeSystem version. ValueSet version pinned to 1.x. Version Parameter: force to 1.2.0 |
|
| coding-vnn-vs1wb-force | $validate-code | Coding. No CodeSystem version. ValueSet version pinned to 1.x. Version Parameter: force to 1.2.0 |
|
| coding-vnn-vs10-force | $validate-code | Coding. No CodeSystem version. ValueSet version pinned to 1.0. Version Parameter: force to 1.2.0 |
|
| coding-vnn-vsbb-force | $validate-code | Coding. No CodeSystem version. ValueSet version pinned to 2.4 (bad). Version Parameter: force to 1.2.0 |
|
| codeableconcept-vnn-vsnn | $validate-code | Coding. No CodeSystem version. No ValueSet version pinning. No version parameters |
|
| codeableconcept-v10-vs1w | $validate-code | Coding. CodeSystem version 1.0. ValueSet version pinned to 1.x. No version parameters |
|
| codeableconcept-v10-vs1wb | $validate-code | Coding. CodeSystem version 1.0. ValueSet version pinned to 1.x. No version parameters |
|
| codeableconcept-v10-vs10 | $validate-code | Coding. CodeSystem version 1.0. ValueSet version pinned to 1.0. No version parameters |
|
| codeableconcept-v10-vs20 | $validate-code | Coding. CodeSystem version 1.0. ValueSet version pinned to 1.2. No version parameters |
|
| codeableconcept-v10-vsbb | $validate-code | Coding. CodeSystem version 1.0. ValueSet version pinned to 2.4 (bad). No version parameters |
|
| codeableconcept-v10-vsbb | $validate-code | Coding. CodeSystem version 1.0. ValueSet version pinned to 2.4 (bad). No version parameters |
|
| codeableconcept-v10-vsnn | $validate-code | Coding. CodeSystem version 1.0. No ValueSet version pinning. No version parameters |
|
| codeableconcept-vbb-vs10 | $validate-code | Coding. CodeSystem version 2.4 (bad). ValueSet version pinned to 1.0. No version parameters |
|
| codeableconcept-vbb-vsnn | $validate-code | Coding. CodeSystem version 2.4 (bad). No ValueSet version pinning. No version parameters |
|
| codeableconcept-vnn-vs1w | $validate-code | Coding. No CodeSystem version. ValueSet version pinned to 1.x. No version parameters |
|
| codeableconcept-vnn-vs1wb | $validate-code | Coding. No CodeSystem version. ValueSet version pinned to 1.x. No version parameters |
|
| codeableconcept-vnn-vs10 | $validate-code | Coding. No CodeSystem version. ValueSet version pinned to 1.0. No version parameters |
|
| codeableconcept-vnn-vsbb | $validate-code | Coding. No CodeSystem version. ValueSet version pinned to 2.4 (bad). No version parameters |
|
| codeableconcept-vnn-vsnn-default | $validate-code | Coding. No CodeSystem version. No ValueSet version pinning. Version Parameter: default to 1.2.0 |
|
| codeableconcept-v10-vs1w-default | $validate-code | Coding. CodeSystem version 1.0. ValueSet version pinned to 1.x. Version Parameter: default to 1.2.0 |
|
| codeableconcept-v10-vs1wb-default | $validate-code | Coding. CodeSystem version 1.0. ValueSet version pinned to 1.x. Version Parameter: default to 1.2.0 |
|
| codeableconcept-v10-vs10-default | $validate-code | Coding. CodeSystem version 1.0. ValueSet version pinned to 1.0. Version Parameter: default to 1.2.0 |
|
| codeableconcept-v10-vs20-default | $validate-code | Coding. CodeSystem version 1.0. ValueSet version pinned to 1.2. Version Parameter: default to 1.2.0 |
|
| codeableconcept-v10-vsbb-default | $validate-code | Coding. CodeSystem version 1.0. ValueSet version pinned to 2.4 (bad). Version Parameter: default to 1.2.0 |
|
| codeableconcept-v10-vsnn-default | $validate-code | Coding. CodeSystem version 1.0. No ValueSet version pinning. Version Parameter: default to 1.2.0 |
|
| codeableconcept-vbb-vs10-default | $validate-code | Coding. CodeSystem version 2.4 (bad). ValueSet version pinned to 1.0. Version Parameter: default to 1.2.0 |
|
| codeableconcept-vbb-vsnn-default | $validate-code | Coding. CodeSystem version 2.4 (bad). No ValueSet version pinning. Version Parameter: default to 1.2.0 |
|
| codeableconcept-vnn-vs1w-default | $validate-code | Coding. No CodeSystem version. ValueSet version pinned to 1.x. Version Parameter: default to 1.2.0 |
|
| codeableconcept-vnn-vs1wb-default | $validate-code | Coding. No CodeSystem version. ValueSet version pinned to 1.x. Version Parameter: default to 1.2.0 |
|
| codeableconcept-vnn-vs10-default | $validate-code | Coding. No CodeSystem version. ValueSet version pinned to 1.0. Version Parameter: default to 1.2.0 |
|
| codeableconcept-vnn-vsbb-default | $validate-code | Coding. No CodeSystem version. ValueSet version pinned to 2.4 (bad). Version Parameter: default to 1.2.0 |
|
| codeableconcept-vnn-vsnn-check | $validate-code | Coding. No CodeSystem version. No ValueSet version pinning. Version Parameter: check is 1.2.0 |
|
| codeableconcept-v10-vs1w-check | $validate-code | Coding. CodeSystem version 1.0. ValueSet version pinned to 1.x. Version Parameter: check is 1.2.0 |
|
| codeableconcept-v10-vs1wb-check | $validate-code | Coding. CodeSystem version 1.0. ValueSet version pinned to 1.x. Version Parameter: check is 1.2.0 |
|
| codeableconcept-v10-vs10-check | $validate-code | Coding. CodeSystem version 1.0. ValueSet version pinned to 1.0. Version Parameter: check is1.2.0 |
|
| codeableconcept-v10-vs20-check | $validate-code | Coding. CodeSystem version 1.0. ValueSet version pinned to 1.2. Version Parameter: check is 1.2.0 |
|
| codeableconcept-v10-vsbb-check | $validate-code | Coding. CodeSystem version 1.0. ValueSet version pinned to 2.4 (bad). Version Parameter: check is 1.2.0 |
|
| codeableconcept-v10-vsnn-check | $validate-code | Coding. CodeSystem version 1.0. No ValueSet version pinning. Version Parameter: check is 1.2.0 |
|
| codeableconcept-vbb-vs10-check | $validate-code | Coding. CodeSystem version 2.4 (bad). ValueSet version pinned to 1.0. Version Parameter: check is 1.2.0 |
|
| codeableconcept-vbb-vsnn-check | $validate-code | Coding. CodeSystem version 2.4 (bad). No ValueSet version pinning. Version Parameter: check is 1.2.0 |
|
| codeableconcept-vnn-vs1w-check | $validate-code | Coding. No CodeSystem version. ValueSet version pinned to 1.x. Version Parameter: check is 1.2.0 |
|
| codeableconcept-vnn-vs1wb-check | $validate-code | Coding. No CodeSystem version. ValueSet version pinned to 1.x. Version Parameter: check is 1.2.0 |
|
| codeableconcept-vnn-vs10-check | $validate-code | Coding. No CodeSystem version. ValueSet version pinned to 1.0. Version Parameter: check is 1.2.0 |
|
| codeableconcept-vnn-vsbb-check | $validate-code | Coding. No CodeSystem version. ValueSet version pinned to 2.4 (bad). Version Parameter: check is 1.2.0 |
|
| codeableconcept-vnn-vsnn-force | $validate-code | Coding. No CodeSystem version. No ValueSet version pinning. Version Parameter: force to 1.2.0 |
|
| codeableconcept-v10-vs1w-force | $validate-code | Coding. CodeSystem version 1.0. ValueSet version pinned to 1.x. Version Parameter: force to 1.2.0 |
|
| codeableconcept-v10-vs1wb-force | $validate-code | Coding. CodeSystem version 1.0. ValueSet version pinned to 1.x. Version Parameter: force to 1.2.0 |
|
| codeableconcept-v10-vs10-force | $validate-code | Coding. CodeSystem version 1.0. ValueSet version pinned to 1.0. Version Parameter: force to 1.2.0 |
|
| codeableconcept-v10-vs20-force | $validate-code | Coding. CodeSystem version 1.0. ValueSet version pinned to 1.2. Version Parameter: force to 1.2.0 |
|
| codeableconcept-v10-vsbb-force | $validate-code | Coding. CodeSystem version 1.0. ValueSet version pinned to 2.4 (bad). Version Parameter: force to 1.2.0 |
|
| codeableconcept-v10-vsnn-force | $validate-code | Coding. CodeSystem version 1.0. No ValueSet version pinning. Version Parameter: force to 1.2.0 |
|
| codeableconcept-vbb-vs10-force | $validate-code | Coding. CodeSystem version 2.4 (bad). ValueSet version pinned to 1.0. Version Parameter: force to 1.2.0 |
|
| codeableconcept-vbb-vsnn-force | $validate-code | Coding. CodeSystem version 2.4 (bad). No ValueSet version pinning. Version Parameter: force to 1.2.0 |
|
| codeableconcept-vnn-vs1w-force | $validate-code | Coding. No CodeSystem version. ValueSet version pinned to 1.x. Version Parameter: force to 1.2.0 |
|
| codeableconcept-vnn-vs1wb-force | $validate-code | Coding. No CodeSystem version. ValueSet version pinned to 1.x. Version Parameter: force to 1.2.0 |
|
| codeableconcept-vnn-vs10-force | $validate-code | Coding. No CodeSystem version. ValueSet version pinned to 1.0. Version Parameter: force to 1.2.0 |
|
| codeableconcept-vnn-vsbb-force | $validate-code | Coding. No CodeSystem version. ValueSet version pinned to 2.4 (bad). Version Parameter: force to 1.2.0 |
|
| code-vnn-vsnn | $validate-code | code. No CodeSystem version. No ValueSet version pinning. No version parameters |
|
| code-v10-vs1w | $validate-code | code. CodeSystem version 1.0. ValueSet version pinned to 1.x. No version parameters |
|
| code-v10-vs1wb | $validate-code | code. CodeSystem version 1.0. ValueSet version pinned to 1.x. No version parameters |
|
| code-v10-vs10 | $validate-code | code. CodeSystem version 1.0. ValueSet version pinned to 1.0. No version parameters |
|
| code-v10-vs20 | $validate-code | code. CodeSystem version 1.0. ValueSet version pinned to 1.2. No version parameters |
|
| code-v10-vsbb | $validate-code | code. CodeSystem version 1.0. ValueSet version pinned to 2.4 (bad). No version parameters |
|
| code-v10-vsnn | $validate-code | code. CodeSystem version 1.0. No ValueSet version pinning. No version parameters |
|
| code-vbb-vs10 | $validate-code | code. CodeSystem version 2.4 (bad). ValueSet version pinned to 1.0. No version parameters |
|
| code-vbb-vsnn | $validate-code | code. CodeSystem version 2.4 (bad). No ValueSet version pinning. No version parameters |
|
| code-vnn-vs1w | $validate-code | code. No CodeSystem version. ValueSet version pinned to 1.x. No version parameters |
|
| code-vnn-vs1wb | $validate-code | code. No CodeSystem version. ValueSet version pinned to 1.x. No version parameters |
|
| code-vnn-vs10 | $validate-code | code. No CodeSystem version. ValueSet version pinned to 1.0. No version parameters |
|
| code-vnn-vsbb | $validate-code | code. No CodeSystem version. ValueSet version pinned to 2.4 (bad). No version parameters |
|
| code-vnn-vsnn-default | $validate-code | code. No CodeSystem version. No ValueSet version pinning. Version Parameter: default to 1.2.0 |
|
| code-v10-vs1w-default | $validate-code | code. CodeSystem version 1.0. ValueSet version pinned to 1.x. Version Parameter: default to 1.2.0 |
|
| code-v10-vs1wb-default | $validate-code | code. CodeSystem version 1.0. ValueSet version pinned to 1.x. Version Parameter: default to 1.2.0 |
|
| code-v10-vs10-default | $validate-code | code. CodeSystem version 1.0. ValueSet version pinned to 1.0. Version Parameter: default to 1.2.0 |
|
| code-v10-vs20-default | $validate-code | code. CodeSystem version 1.0. ValueSet version pinned to 1.2. Version Parameter: default to 1.2.0 |
|
| code-v10-vsbb-default | $validate-code | code. CodeSystem version 1.0. ValueSet version pinned to 2.4 (bad). Version Parameter: default to 1.2.0 |
|
| code-v10-vsnn-default | $validate-code | code. CodeSystem version 1.0. No ValueSet version pinning. Version Parameter: default to 1.2.0 |
|
| code-vbb-vs10-default | $validate-code | code. CodeSystem version 2.4 (bad). ValueSet version pinned to 1.0. Version Parameter: default to 1.2.0 |
|
| code-vbb-vsnn-default | $validate-code | code. CodeSystem version 2.4 (bad). No ValueSet version pinning. Version Parameter: default to 1.2.0 |
|
| code-vnn-vs1wb-default | $validate-code | code. No CodeSystem version. ValueSet version pinned to 1.x. Version Parameter: default to 1.2.0 |
|
| code-vnn-vs10-default | $validate-code | code. No CodeSystem version. ValueSet version pinned to 1.0. Version Parameter: default to 1.2.0 |
|
| code-vnn-vsbb-default | $validate-code | code. No CodeSystem version. ValueSet version pinned to 2.4 (bad). Version Parameter: default to 1.2.0 |
|
| code-vnn-vsnn-check | $validate-code | code. No CodeSystem version. No ValueSet version pinning. Version Parameter: check is 1.2.0 |
|
| code-v10-vs1w-check | $validate-code | code. CodeSystem version 1.0. ValueSet version pinned to 1.x. Version Parameter: check is 1.2.0 |
|
| code-v10-vs1wb-check | $validate-code | code. CodeSystem version 1.0. ValueSet version pinned to 1.x. Version Parameter: check is 1.2.0 |
|
| code-v10-vs10-check | $validate-code | code. CodeSystem version 1.0. ValueSet version pinned to 1.0. Version Parameter: check is1.2.0 |
|
| code-v10-vs20-check | $validate-code | code. CodeSystem version 1.0. ValueSet version pinned to 1.2. Version Parameter: check is 1.2.0 |
|
| code-v10-vsbb-check | $validate-code | code. CodeSystem version 1.0. ValueSet version pinned to 2.4 (bad). Version Parameter: check is 1.2.0 |
|
| code-v10-vsnn-check | $validate-code | code. CodeSystem version 1.0. No ValueSet version pinning. Version Parameter: check is 1.2.0 |
|
| code-vbb-vs10-check | $validate-code | code. CodeSystem version 2.4 (bad). ValueSet version pinned to 1.0. Version Parameter: check is 1.2.0 |
|
| code-vbb-vsnn-check | $validate-code | code. CodeSystem version 2.4 (bad). No ValueSet version pinning. Version Parameter: check is 1.2.0 |
|
| code-vnn-vs1w-check | $validate-code | code. No CodeSystem version. ValueSet version pinned to 1.x. Version Parameter: check is 1.2.0 |
|
| code-vnn-vs1wb-check | $validate-code | code. No CodeSystem version. ValueSet version pinned to 1.x. Version Parameter: check is 1.2.0 |
|
| code-vnn-vs10-check | $validate-code | code. No CodeSystem version. ValueSet version pinned to 1.0. Version Parameter: check is 1.2.0 |
|
| code-vnn-vsbb-check | $validate-code | code. No CodeSystem version. ValueSet version pinned to 2.4 (bad). Version Parameter: check is 1.2.0 |
|
| code-vnn-vsnn-force | $validate-code | code. No CodeSystem version. No ValueSet version pinning. Version Parameter: force to 1.2.0 |
|
| code-v10-vs1w-force | $validate-code | code. CodeSystem version 1.0. ValueSet version pinned to 1.x. Version Parameter: force to 1.2.0 |
|
| code-v10-vs1wb-force | $validate-code | code. CodeSystem version 1.0. ValueSet version pinned to 1.x. Version Parameter: force to 1.2.0 |
|
| code-v10-vs10-force | $validate-code | code. CodeSystem version 1.0. ValueSet version pinned to 1.0. Version Parameter: force to 1.2.0 |
|
| code-v10-vs20-force | $validate-code | code. CodeSystem version 1.0. ValueSet version pinned to 1.2. Version Parameter: force to 1.2.0 |
|
| code-v10-vsbb-force | $validate-code | code. CodeSystem version 1.0. ValueSet version pinned to 2.4 (bad). Version Parameter: force to 1.2.0 |
|
| code-v10-vsnn-force | $validate-code | code. CodeSystem version 1.0. No ValueSet version pinning. Version Parameter: force to 1.2.0 |
|
| code-vbb-vs10-force | $validate-code | code. CodeSystem version 2.4 (bad). ValueSet version pinned to 1.0. Version Parameter: force to 1.2.0 |
|
| code-vbb-vsnn-force | $validate-code | code. CodeSystem version 2.4 (bad). No ValueSet version pinning. Version Parameter: force to 1.2.0 |
|
| code-vnn-vs1w-force | $validate-code | code. No CodeSystem version. ValueSet version pinned to 1.x. Version Parameter: force to 1.2.0 |
|
| code-vnn-vs1wb-force | $validate-code | code. No CodeSystem version. ValueSet version pinned to 1.x. Version Parameter: force to 1.2.0 |
|
| code-vnn-vs10-force | $validate-code | code. No CodeSystem version. ValueSet version pinned to 1.0. Version Parameter: force to 1.2.0 |
|
| code-vnn-vsbb-force | $validate-code | code. No CodeSystem version. ValueSet version pinned to 2.4 (bad). Version Parameter: force to 1.2.0 |
|
| code-vnn-vsmix-1 | $validate-code | code (1). No CodeSystem version. ValueSet version includes both versions of the code system. No Version Parameter |
|
| code-vnn-vsmix-2 | $validate-code | code (2). No CodeSystem version. ValueSet version includes both versions of the code system. No Version Parameter |
|
| vs-expand-all-v | $expand | version specific expand tests |
|
| vs-expand-all-v1 | $expand | version specific expand tests |
|
| vs-expand-all-v2 | $expand | version specific expand tests |
|
| vs-expand-v-mixed | $expand | version specific expand tests |
|
| vs-expand-v-n-request | $expand | version specific expand tests |
|
| vs-expand-v-w | $expand | version specific expand tests |
|
| vs-expand-v-wb | $expand | version specific expand tests |
|
| vs-expand-v1 | $expand | version specific expand tests |
|
| vs-expand-v2 | $expand | version specific expand tests |
|
| vs-expand-all-v-force | $expand | version specific expand tests |
|
| vs-expand-all-v1-force | $expand | version specific expand tests |
|
| vs-expand-all-v2-force | $expand | version specific expand tests |
|
| vs-expand-v-mixed-force | $expand | version specific expand tests |
|
| vs-expand-v-n-force-request | $expand | version specific expand tests |
|
| vs-expand-v-w-force | $expand | version specific expand tests |
|
| vs-expand-v-wb-force | $expand | version specific expand tests |
|
| vs-expand-v1-force | $expand | version specific expand tests |
|
| vs-expand-v2-force | $expand | version specific expand tests |
|
| vs-expand-all-v-default | $expand | version specific expand tests |
|
| vs-expand-all-v1-default | $expand | version specific expand tests |
|
| vs-expand-all-v2-default | $expand | version specific expand tests |
|
| vs-expand-v-mixed-default | $expand | version specific expand tests |
|
| vs-expand-v-n-default-request | $expand | version specific expand tests |
|
| vs-expand-v-w-default | $expand | version specific expand tests |
|
| vs-expand-v-wb-default | $expand | version specific expand tests |
|
| vs-expand-v1-default | $expand | version specific expand tests |
|
| vs-expand-v2-default | $expand | version specific expand tests |
|
| vs-expand-all-v-check | $expand | version specific expand tests |
|
| vs-expand-all-v1-check | $expand | version specific expand tests |
|
| vs-expand-all-v2-check | $expand | version specific expand tests |
|
| vs-expand-v-mixed-check | $expand | version specific expand tests |
|
| vs-expand-v-n-check-request | $expand | version specific expand tests |
|
| vs-expand-v-w-check | $expand | version specific expand tests |
|
| vs-expand-v-wb-check | $expand | version specific expand tests |
|
| vs-expand-v1-check | $expand | version specific expand tests |
|
| vs-expand-v2-check | $expand | version specific expand tests |
|
| vs-expand-versionless | $expand | check expand without any version |
|
| overload | general |
A set of tests that test out handling of value sets that cross versions of the same code system |
|
| expand-all | $expand | Expanding two versions of the same code system |
|
| expand-all-versioned | $expand | Expanding two versions of the same code system, versioned |
|
| expand-all-merged | $expand | Expanding two versions of the same code system, merging versions |
|
| expand-enum-good | $expand | Expanding two versions of the same code system, codes selected from each version |
|
| expand-enum-bad | $expand | Expanding two versions of the same code system, codes selected from both versions - but you can't do this |
|
| expand-exclude | $expand | Excluding one version of the code system from the other (cheap diff analysis) |
|
| expand-exclude-versioned | $expand | Excluding one version of the code system from the other (cheap diff analysis), versioned |
|
| expand-exclude-merged | $expand | Excluding one version of the code system from the other (cheap diff analysis), merging versions |
|
| validate-all-good | $validate-code | Is code in value set - in both versions |
|
| validate-all-good2 | $validate-code | Is code in value set - in both versions, but display from the second |
|
| validate-all-good3 | $validate-code | Is code in value set - in one version |
|
| validate-all-good4 | $validate-code | Is code in value set - in one versions |
|
| validate-all-bad2 | $validate-code | Is code in value set - in one versions |
|
| validate-all-bad2v | $validate-code | code from one version, display from the other |
|
| expand-all-sysver | $expand | Tests whether a system-version parameter forcing v1 overrides the value set's explicit dual-version includes. It should not, since it's just a default |
|
| expand-exclude-enum | $expand | Expands a value set that includes all of both versions but excludes only code2 from v1 by enumeration, testing version-scoped exclusion of individual codes. |
|
| expand-mixed | $expand | Expands a value set with one versioned include (v1) and one unversioned include, testing how the server resolves the unversioned reference. |
|
| validate-bad-enum-code1 | $validate-code | Validates that code1 is rejected by the enum-good value set, since it's not in the enumerated list. |
|
| validate-bad-exclude-code1 | $validate-code | Validates that code1 is rejected by the exclude value set, since it exists in both versions and the v1 overlap is excluded. |
|
| validate-bad-unknown | $validate-code | Validates that a completely nonexistent code (code99) fails against the value set. |
|
| validate-v1code2-wrongdisplay | $validate-code | Validates that code1 with version pinned to 1.0.0 succeeds, confirming version-pinning works for a code present in both versions |
|
| validate-bad-v1code4 | $validate-code | Validates that code4 with version explicitly pinned to 1.0.0 fails, since code4 only exists in v2. |
|
| validate-bad-v2code3 | $validate-code | Validates that code3 with version explicitly pinned to 2.0.0 fails, since code3 only exists in v1. |
|
| validate-good-code2-v1display | $validate-code | Tests the ambiguous case of code2 with display "Display 2" and no version pin, where the display matches v1 but not v2 |
|
| validate-good-enum-code3 | $validate-code | Validates code3 against the enum-good value set, which explicitly enumerates it from v1 |
|
| validate-good-exclude-code4 | $validate-code | Validates that code4 is accepted by the exclude value set, where it's the only code surviving the v1 exclusion. |
|
| validate-good-v1code1 | $validate-code | Validates that code1 with version pinned to 1.0.0 succeeds, confirming version-pinning works for a code present in both versions. |
|
| validate-good-v1code2-display | $validate-code | Validates that code2 with version=1.0.0 and display "Display 2" succeeds, since that's the correct display for v1. |
|
| validate-good2a | $validate-code | Validates that a codeableConcept with both versions in it works fine. |
|
| fragment | general |
Testing handling a code system fragment |
|
| fragment-expansion | $expand | check that the fragment is reported correctly |
|
| validation-fragment-code-good | $validate-code | if a code is a in a fragment, then it's all ok |
|
| validation-fragment-coding-good | $validate-code | if a code is a in a fragment, then it's all ok |
|
| validation-fragment-codeableconcept-good | $validate-code | if a code is a in a fragment, then it's all ok |
|
| validation-fragment-code-bad-code | $validate-code | if a code is not in the fragment, we can't call it invalid (code variant) |
|
| validation-fragment-coding-bad-code | $validate-code | if a code is not in the fragment, we can't call it invalid (coding variant) |
|
| validation-fragment-codeableconcept-bad-code | $validate-code | if a code is not in the fragment, we can't call it invalid (CodeableConcept variant) |
|
| big | general |
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 | general |
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 | general |
Testing Various Error Conditions |
|
| unknown-system1 | $validate-code | Value set & request refers to an unknown system |
|
| unknown-system2 | $validate-code | Value set & request refers to an unknown system; request is a different unknown system |
|
| broken-filter-validate | $validate-code | Make sure that filters without value cause an error |
|
| broken-filter2-validate | $validate-code | Make sure that filters without value cause an error (extension only) |
|
| broken-filter-expand | $expand | Make sure that filters without value cause an error |
|
| combination-ok | $validate-code | A value set that contains two identical codes - validates ok |
|
| combination-bad | $validate-code | A value set that contains two identical codes - error if inferSystem is true |
|
| deprecated | general |
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 |
|
| vs-deprecation | $expand | Deprecating a code in a valueset |
|
| deprecating-validate | $validate-code | Validating a code that has been deprecated in the value set using a deprecated extension |
|
| deprecating-validate-2 | $validate-code | Validating a code that has been deprecated in the value set |
|
| notSelectable | general |
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 |
|
| notSelectable-prop-true-true-param-true | $validate-code | to be provided |
|
| notSelectable-prop-true-true-param-false | $validate-code | to be provided |
|
| notSelectable-prop-false-false-param-true | $validate-code | to be provided |
|
| notSelectable-prop-false-false-param-false | $validate-code | to be provided |
|
| inactive | general |
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 | general |
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 | general |
Tests for ConceptMap.$translate |
|
| translate-1 | $translate | A very simple translation, using sourceCode + sourceSystem |
|
| translate-1-coding | $translate | The same translation, but naming the source concept with sourceCoding |
|
| translate-1-codeableconcept | $translate | The same translation, but naming the source concept with sourceCodeableConcept |
|
| translate-1-r4-code | $translate | The same translation, using the R4 input names: code + system, and targetsystem |
|
| translate-1-r4-coding | $translate | The same translation, using the R4 input names: coding, and targetsystem |
|
| translate-1-r4-codeableconcept | $translate | The same translation, using the R4 input names: codeableConcept, and targetsystem |
|
| translate-2 | $translate | Testing different relationship types |
|
| translate-2b | $translate | Testing different relationship types |
|
| translate-3 | $translate | Testing different relationship types |
|
| translate-4 | $translate | Testing nomap functionality. In R4 the ConceptMap states this with a codeless 'unmatched' target; either way the response reports noMap and no concept |
|
| translate2 | general |
Tests for ConceptMap.$translate |
|
| translate-5 | $translate | Testing unmapped functionality |
|
| translate-5a | $translate | Testing unmapped functionality which specifying a particular map |
|
| translate-5b | $translate | Testing unmapped functionality which specifying a particular map |
|
| translate-6a | $translate | Testing other map - default concept map |
|
| translate-reverse-r5+ | $translate | Same translation, but in reverse |
|
| translate-reverse-r5+-a | $translate | reverse is not allowed in R5 |
|
| translate-reverse-r4 | $translate | Same translation, but in reverse, using the reverse parameter |
|
| translate-reverse-r4-a | $translate | Same translation, using the reverse parameter (e.g. double reversed) |
|
| translate-reverse-r4-b | $translate | Same translation, but in reverse, not using the reverse parameter |
|
| tho | general |
Misc assorted test cases from tho |
|
| act-class | $expand | act class - don't remember what bug this was testing for but now it tests for proper handling of retired and deprecated codes |
|
| act-class-activeonly | $expand | tests for proper handling of retired and deprecated codes (part 2) |
|
| act-exclusion | $expand | tests for proper handling of excluded codes |
|
| subsumes-act-class-property-parent | $subsumes | a code subsumes a code that names it in a subsumedBy property; act-class is a flat list, so there is no nesting to read |
|
| subsumes-act-class-property-child | $subsumes | the mirror of subsumes-act-class-property-parent |
|
| subsumes-act-class-transitive | $subsumes | subsumption follows the whole chain of subsumedBy properties, five links here |
|
| subsumes-act-class-transitive-reverse | $subsumes | the mirror of subsumes-act-class-transitive |
|
| subsumes-act-class-equivalent | $subsumes | a code is equivalent to itself |
|
| subsumes-act-class-siblings | $subsumes | two codes with the same subsumedBy do not subsume each other |
|
| subsumes-act-class-cross-branch | $subsumes | both codes are under ACT, but neither is on the other's path to it |
|
| subsumes-act-class-multiple-parents-first | $subsumes | ENTRY states subsumedBy twice: this is the first parent |
|
| subsumes-act-class-multiple-parents-second | $subsumes | and this is the second - a relationship a nested hierarchy cannot express at all |
|
| subsumes-act-class-multiple-parents-crossed | $subsumes | two parents of the same code are not thereby related to each other |
|
| subsumes-act-class-unknown-code | $subsumes | codeB is not in the code system |
|
| validate-isa-self | $validate-code | is-a includes the code named in the filter, not just what is under it |
|
| validate-isa-child | $validate-code | a code that names the filter code in a subsumedBy property is in the value set |
|
| validate-isa-deep | $validate-code | and so is one five property links below it |
|
| validate-isa-parent | $validate-code | is-a runs downwards: the code above the filter code is not in the value set |
|
| validate-isa-other-branch | $validate-code | a code in a different branch of the same code system is not in it either |
|
| validate-descendent-of-self | $validate-code | descendent-of excludes the code named in the filter - the one thing that distinguishes it from is-a |
|
| validate-descendent-of-child | $validate-code | everything below the filter code is in it, exactly as for is-a |
|
| validate-descendent-of-deep | $validate-code | including the deep descendants |
|
| validate-isnota-self | $validate-code | is-not-a excludes the code named in the filter as well as its descendants |
|
| validate-isnota-descendant | $validate-code | a deep descendant of the filter code is excluded too, not just the direct children |
|
| validate-isnota-parent | $validate-code | the code above the filter code is in an is-not-a value set |
|
| validate-isnota-other-branch | $validate-code | and so is a code in a different branch |
|
| validate-child-of-child | $validate-code | child-of picks up a direct child, which act-class states in a subsumedBy property rather than by nesting |
|
| validate-child-of-self | $validate-code | child-of does not include the code named in the filter, unlike is-a |
|
| validate-child-of-grandchild | $validate-code | and it stops at the direct children, which is what separates it from descendent-of |
|
| validate-isa-second-parent | $validate-code | ENTRY is in an is-a on _ActContainer, the second of its two subsumedBy parents - a relationship nesting cannot express |
|
| validate-isa-second-parent-out | $validate-code | a code under the other container is not in it |
|
| validate-isa-unknown-code | $validate-code | a code that is not in the code system at all, validated against a filtered value set |
|
| exclude | general |
Tests for proper functioning of exclude |
|
| exclude-1 | $expand | Test a simple exclude |
|
| exclude-2 | $expand | Test a simple exclude combined with a filter |
|
| exclude-zero | $expand | include and exclude the same code |
|
| exclude-all | $expand | include and exclude all codes |
|
| exclude-combo | $expand | exclude by value set |
|
| include-combo | $expand | include limit by value set |
|
| exclude-gender | $expand | See https://github.com/HealthIntersections/FHIRsmith/issues/156 |
|
| exclude-gender2 | $expand | See https://github.com/HealthIntersections/FHIRsmith/issues/156 |
|
| search | general |
Tests for proper functioning of text search. Note what we're not interested in the implementation of the text search itself, so we only test very obvious results. We're just interested in testing support for the parameter |
|
| search-all-yes | $expand | Test a simple search |
|
| search-all-no | $expand | Test a simple search that returns no results |
|
| search-filter-yes | $expand | Test a simple search |
|
| search-filter-no | $expand | Test a simple search that returns no results |
|
| search-enum-yes | $expand | Test a simple search |
|
| search-enum-no | $expand | Test a simple search that returns no results |
|
| default-valueset-version | general |
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-uz | $cs-validate-code | to be provided |
|
| loinc-validate-discouraged-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 |
|
| hgvs-expand-all | $expand | Attempt to expand the whole HGVS code system: it has a grammar and cannot be iterated, so a not-supported OperationOutcome is expected |
|
| 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-parent | $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 |
|
| snomed-expand-active | $expand | Test the inactive filter |
|
| snomed-expand-inactive | $expand | Test the inactive filter |
|
| snomed-expand-inactive2 | $expand | Test the inactive filter |
|
| snomed-expand-moduleid-1 | $expand | Test ModuleId filter |
|
| snomed-expand-moduleid-2 | $expand | Test ModuleId filter |
|
| snomed-expand-moduleid-3 | $expand | Test ModuleId filter |
|
| snomed-expand-moduleid-4 | $expand | Test ModuleId filter |
|
| snomed-expand-property-1 | $expand | Test Property filter |
|
| snomed-expand-property-2 | $expand | Test Property filter |
|
| snomed-validate-active-bad | $validate-code | Test inactive filter |
|
| snomed-validate-active-good | $validate-code | Test inactive filter |
|
| snomed-validate-inactive-bad | $validate-code | Test inactive filter |
|
| snomed-validate-inactive-good | $validate-code | Test inactive filter |
|
| snomed-validate-moduleid-bad | $validate-code | Test moduleid filter |
|
| snomed-validate-moduleid-good | $validate-code | Test moduleid filter |
|
| snomed-validate-property-bad | $validate-code | Test Property filter |
|
| snomed-validate-property-good | $validate-code | Test Property filter |
|
| snomed-translate | $translate | Implicit Snomed Concept Map |
|
| loinc-subsumes-equivalent | $subsumes | A LOINC code is equivalent to itself |
|
| loinc-subsumes-parent | $subsumes | A LOINC part subsumes a code beneath it in the multiaxial hierarchy |
|
| loinc-subsumes-child | $subsumes | the mirror of loinc-subsumes-parent |
|
| loinc-subsumes-unrelated | $subsumes | Two unrelated LOINC codes |
|
| loinc-subsumes-unknown-code | $subsumes | codeA is not a LOINC code |
|
| snomed | snomed |
This snomed tests are based on the testing subset in the tx-ecosystem IG github repo (see /tx-source) |
|
| snomed-inactive-display-lenient | $cs-validate-code | check that inactive displays are validated properly |
|
| snomed-inactive-display-notlenient | $cs-validate-code | check that inactive displays are validated properly |
|
| snomed-isa-in | $validate-code | check that codes are validated properly (is-a heirachy) - in the value set |
|
| snomed-isa-out | $validate-code | check that codes are validated properly (is-a heirachy) - not in the value set |
|
| snomed-expand-inactive | $expand | check that inactive concepts and displays are expanded properly |
|
| snomed-expand-isa | $expand | check that a set of concepts and displays are expanded properly (is-a) |
|
| snomed-expand-count-all | $expand | Smoke test: total concept count for the loaded SNOMED edition subset must be 2206. |
|
| snomed-expand-too-big | $expand | return too many codes at once - fails |
|
| lookup | $lookup | Tests the $lookup operation for a simple SCT concept |
|
| lookup-pc | $lookup | Tests the $lookup operation for a complex SCT expression |
|
| validate-code-pc-good | $cs-validate-code | Tests the $validate-code operation for a complex SCT expression |
|
| validate-code-pc-bad1 | $cs-validate-code | Tests the $validate-code operation for a complex SCT expression with a wrong qualifier code |
|
| validate-code-pc-bad2 | $cs-validate-code | Tests the $validate-code operation for a complex SCT expression with a wrong qualifier code - the codes are valid but they are reversed |
|
| validate-code-pc-nested-good | $cs-validate-code | Tests the $validate-code operation for an expression whose attribute value is itself refined - right hand as the procedure site |
|
| validate-code-pc-mrcm-lateralizable | $cs-validate-code | The concept model does not allow laterality on a body structure that is not in the lateralizable body structure reference set |
|
| validate-code-pc-mrcm-domain | $cs-validate-code | The concept model does not allow an attribute outside its domain - finding site on a body structure |
|
| validate-code-pc-mrcm-range | $cs-validate-code | The concept model does not allow a value outside the attribute's range - a body structure as the value of laterality |
|
| validate-code-pc-mrcm-cardinality | $cs-validate-code | The concept model does not allow an attribute more times than its cardinality - laterality is 0..1 |
|
| validate-code-pc-mrcm-grouped | $cs-validate-code | The concept model does not allow an ungrouped attribute inside a relationship group - laterality is ungrouped |
|
| validate-code-pc-concrete-good | $cs-validate-code | Tests the $validate-code operation for an expression with a concrete value |
|
| validate-code-pc-scg-no-comma | $cs-validate-code | The comma before an attribute group is optional in the compositional grammar, so an attribute set followed directly by a group has to be accepted - it normalises to the form with the comma |
|
| validate-code-pc-scg-comma | $cs-validate-code | The same expression written with the optional comma is already the normal form, so it validates with no issues |
|
| validate-code-pc-mrcm-concrete-range | $cs-validate-code | The concept model does not allow a concrete value outside the attribute's range - the value must be greater than zero |
|
| validate-code-pc-mrcm-concrete-int | $cs-validate-code | The concept model does not allow a decimal where the attribute's range is an integer |
|
| validate-code-pc-mrcm-concrete-wanted | $cs-validate-code | The concept model does not allow a concept where the attribute's range is a concrete value |
|
| validate-code-pc-mrcm-concept-wanted | $cs-validate-code | The concept model does not allow a concrete value where the attribute's range is a concept |
|
| validate-code-pc-none | $validate-code | Checks that a valid expression is not allowed when expressions are not allowed |
|
| validate-code-pc-list | $validate-code | Checks that a valid expression is allowed when expressions are listed |
|
| validate-code-pc-list-bad | $validate-code | Checks that a valid expression is not allowed just because it's primacy code is listed |
|
| validate-code-pc-filter | $validate-code | Checks that a valid expression is allowed when expressions are allowed |
|
| expand-pc-none | $expand | Expands no expresssions allowed - check settings |
|
| expand-pc-list | $expand | Checks that a valid expression is not allowed just because it's primacy code is listed |
|
| expand-pc-filter | $expand | Checks that a valid expression is allowed when expressions are allowed |
|
| validate-code-implied-1 | $validate-code | Check that implied value sets work (isa) |
|
| validate-code-implied-1b | $validate-code | Check that implied value sets work (bad isa) |
|
| validate-code-implied-2 | $validate-code | Check that implied value sets work (refset) |
|
| validate-code-implied-2b | $validate-code | Check that implied value sets work (refset) |
|
| subsumes-simple | $subsumes | A code is subsumed by its stated parent |
|
| subsumes-parent | $subsumes | A code subsumes its stated child |
|
| subsumes-equivalent | $subsumes | A code is equivalent to itself |
|
| subsumes-transitive | $subsumes | Subsumption is transitive - a code subsumes a distant descendant |
|
| subsumes-siblings | $subsumes | Two sibling codes do not subsume each other |
|
| subsumes-disjoint | $subsumes | Two codes in different top level hierarchies do not subsume each other |
|
| subsumes-coding | $subsumes | Subsumption using codingA/codingB instead of system + codeA/codeB |
|
| subsumes-unknown-code-a | $subsumes | codeA is a well formed SNOMED code that is not in this edition |
|
| subsumes-unknown-code-b | $subsumes | codeB is a well formed SNOMED code that is not in this edition |
|
| subsumes-invalid-code | $subsumes | codeA is not a valid SNOMED code at all |
|
| subsumes-bad-version | $subsumes | the version names a SNOMED edition the server does not have |
|
| subsumes-bad-system | $subsumes | the system is not a code system the server knows |
|
| subsumes-expr-refined-vs-parent | $subsumes | a refined expression is still subsumed by an ancestor of its focus concept |
|
| subsumes-expr-parent-vs-refined | $subsumes | the mirror of subsumes-expr-refined-vs-parent |
|
| subsumes-expr-vs-focus | $subsumes | a refined expression is subsumed by its own focus concept |
|
| subsumes-expr-attr-value | $subsumes | same attribute, and the value in A subsumes the value in B |
|
| subsumes-expr-attr-value-reverse | $subsumes | the mirror of subsumes-expr-attr-value |
|
| subsumes-expr-attr-unrelated | $subsumes | same attribute, unrelated values: structure finds nothing, which does not establish that nothing is there |
|
| subsumes-expr-extra-attribute | $subsumes | B carries every attribute A does, and one more |
|
| subsumes-expr-different-attributes | $subsumes | each expression refines an attribute the other does not: no structural relationship either way, and no proof that none exists |
|
| subsumes-expr-primitive-focus | $subsumes | an expression against a PRIMITIVE concept whose entailed attributes satisfy it - the attributes are necessary conditions, so they count |
|
| subsumes-expr-normal-form | $subsumes | a concept against its own long normal form written out |
|
| subsumes-expr-redundant-refinement | $subsumes | a refinement that restates the concept's own definition |
|
| subsumes-expr-grouped-ungrouped | $subsumes | the same attribute grouped and ungrouped: the MRCM requires |Finding site| to be grouped, so the ungrouped form is not a valid expression |
|
| subsumes-expr-ungrouped-morphology | $subsumes | the grouping rule is not specific to |Finding site|: |Associated morphology| is grouped too |
|
| subsumes-expr-ungrouped-laterality | $subsumes | |Laterality| is ungrouped in the MRCM, so writing it outside a group is correct and subsumption proceeds |
|
| subsumes-expr-with-terms | $subsumes | the same expression with and without terms |
|
| subsumes-expr-conjunction | $subsumes | a conjunction of a concept with its own ancestor |
|
| subsumes-expr-precoordinated-match | $subsumes | an expression that means exactly the same as a precoordinated concept |
|
| subsumes-expr-subsumes-precoordinated | $subsumes | a post-coordinated expression subsuming a precoordinated concept |
|
| sct-ecl | snomed |
SNOMED CT ECL tests (expand + validate-code), split out of the snomed suite for manageability. Files live in sct/ecl/. |
|
| snomed-validate-ecl-descendents-code-in | $validate-code | validate-code against ECL "descendents": a code that IS in the set |
|
| snomed-validate-ecl-descendents-code-out | $validate-code | validate-code against ECL "descendents": a code that is NOT in the set |
|
| snomed-validate-ecl-descendents-expr-in | $validate-code | validate-code against ECL "descendents": a post-coordinated expression that IS in the set |
|
| snomed-validate-ecl-descendents-expr-out | $validate-code | validate-code against ECL "descendents": a post-coordinated expression that is NOT in the set |
|
| snomed-validate-ecl-descOrSelf-code-in | $validate-code | validate-code against ECL "descOrSelf": a code that IS in the set |
|
| snomed-validate-ecl-descOrSelf-code-out | $validate-code | validate-code against ECL "descOrSelf": a code that is NOT in the set |
|
| snomed-validate-ecl-descOrSelf-expr-in | $validate-code | validate-code against ECL "descOrSelf": a post-coordinated expression that IS in the set |
|
| snomed-validate-ecl-descOrSelf-expr-out | $validate-code | validate-code against ECL "descOrSelf": a post-coordinated expression that is NOT in the set |
|
| snomed-validate-ecl-children-code-in | $validate-code | validate-code against ECL "children": a code that IS in the set |
|
| snomed-validate-ecl-children-code-out | $validate-code | validate-code against ECL "children": a code that is NOT in the set |
|
| snomed-validate-ecl-children-expr-in | $validate-code | validate-code against ECL "children": a post-coordinated expression that IS in the set |
|
| snomed-validate-ecl-children-expr-out | $validate-code | validate-code against ECL "children": a post-coordinated expression that is NOT in the set |
|
| snomed-validate-ecl-childrenOrSelf-code-in | $validate-code | validate-code against ECL "childrenOrSelf": a code that IS in the set |
|
| snomed-validate-ecl-childrenOrSelf-code-out | $validate-code | validate-code against ECL "childrenOrSelf": a code that is NOT in the set |
|
| snomed-validate-ecl-childrenOrSelf-expr-in | $validate-code | validate-code against ECL "childrenOrSelf": a post-coordinated expression that IS in the set |
|
| snomed-validate-ecl-childrenOrSelf-expr-out | $validate-code | validate-code against ECL "childrenOrSelf": a post-coordinated expression that is NOT in the set |
|
| snomed-validate-ecl-ancestors-code-in | $validate-code | validate-code against ECL "ancestors": a code that IS in the set |
|
| snomed-validate-ecl-ancestors-code-out | $validate-code | validate-code against ECL "ancestors": a code that is NOT in the set |
|
| snomed-validate-ecl-ancestors-expr-out | $validate-code | validate-code against ECL "ancestors": a post-coordinated expression that is NOT in the set |
|
| snomed-validate-ecl-ancOrSelf-code-in | $validate-code | validate-code against ECL "ancOrSelf": a code that IS in the set |
|
| snomed-validate-ecl-ancOrSelf-code-out | $validate-code | validate-code against ECL "ancOrSelf": a code that is NOT in the set |
|
| snomed-validate-ecl-ancOrSelf-expr-out | $validate-code | validate-code against ECL "ancOrSelf": a post-coordinated expression that is NOT in the set |
|
| snomed-validate-ecl-parents-code-in | $validate-code | validate-code against ECL "parents": a code that IS in the set |
|
| snomed-validate-ecl-parents-code-out | $validate-code | validate-code against ECL "parents": a code that is NOT in the set |
|
| snomed-validate-ecl-parents-expr-out | $validate-code | validate-code against ECL "parents": a post-coordinated expression that is NOT in the set |
|
| snomed-validate-ecl-parentsOrSelf-code-in | $validate-code | validate-code against ECL "parentsOrSelf": a code that IS in the set |
|
| snomed-validate-ecl-parentsOrSelf-code-out | $validate-code | validate-code against ECL "parentsOrSelf": a code that is NOT in the set |
|
| snomed-validate-ecl-parentsOrSelf-expr-out | $validate-code | validate-code against ECL "parentsOrSelf": a post-coordinated expression that is NOT in the set |
|
| snomed-validate-ecl-refinement-simple-code-in | $validate-code | validate-code against ECL "refinement-simple": a code that IS in the set |
|
| snomed-validate-ecl-refinement-simple-code-out | $validate-code | validate-code against ECL "refinement-simple": a code that is NOT in the set |
|
| snomed-validate-ecl-refinement-simple-expr-in | $validate-code | validate-code against ECL "refinement-simple": a post-coordinated expression that IS in the set |
|
| snomed-validate-ecl-refinement-simple-expr-out | $validate-code | validate-code against ECL "refinement-simple": a post-coordinated expression that is NOT in the set |
|
| snomed-validate-ecl-refinement-group-code-out | $validate-code | validate-code against ECL "refinement-group": a code that is NOT in the set |
|
| snomed-validate-ecl-refinement-group-expr-in | $validate-code | validate-code against ECL "refinement-group": a post-coordinated expression that IS in the set |
|
| snomed-validate-ecl-refinement-group-expr-out | $validate-code | validate-code against ECL "refinement-group": a post-coordinated expression that is NOT in the set |
|
| snomed-validate-ecl-refinement-morphology-code-in | $validate-code | validate-code against ECL "refinement-morphology": a code that IS in the set |
|
| snomed-validate-ecl-refinement-morphology-code-out | $validate-code | validate-code against ECL "refinement-morphology": a code that is NOT in the set |
|
| snomed-validate-ecl-refinement-morphology-expr-in | $validate-code | validate-code against ECL "refinement-morphology": a post-coordinated expression that IS in the set |
|
| snomed-validate-ecl-refinement-morphology-expr-out | $validate-code | validate-code against ECL "refinement-morphology": a post-coordinated expression that is NOT in the set |
|
| snomed-validate-ecl-refinement-wildcard-code-in | $validate-code | validate-code against ECL "refinement-wildcard": a code that IS in the set |
|
| snomed-validate-ecl-refinement-wildcard-code-out | $validate-code | validate-code against ECL "refinement-wildcard": a code that is NOT in the set |
|
| snomed-validate-ecl-refinement-wildcard-expr-in | $validate-code | validate-code against ECL "refinement-wildcard": a post-coordinated expression that IS in the set |
|
| snomed-validate-ecl-refinement-wildcard-expr-out | $validate-code | validate-code against ECL "refinement-wildcard": a post-coordinated expression that is NOT in the set |
|
| snomed-validate-ecl-refinement-cardinality-code-in | $validate-code | validate-code against ECL "refinement-cardinality": a code that IS in the set |
|
| snomed-validate-ecl-refinement-cardinality-code-out | $validate-code | validate-code against ECL "refinement-cardinality": a code that is NOT in the set |
|
| snomed-validate-ecl-refinement-cardinality-expr-in | $validate-code | validate-code against ECL "refinement-cardinality": a post-coordinated expression that IS in the set |
|
| snomed-validate-ecl-refinement-cardinality-expr-out | $validate-code | validate-code against ECL "refinement-cardinality": a post-coordinated expression that is NOT in the set |
|
| snomed-validate-ecl-refinement-cardinality-grouped-code-in | $validate-code | validate-code against ECL "refinement-cardinality-grouped": a code that IS in the set |
|
| snomed-validate-ecl-refinement-cardinality-grouped-code-out | $validate-code | validate-code against ECL "refinement-cardinality-grouped": a code that is NOT in the set |
|
| snomed-validate-ecl-refinement-cardinality-grouped-expr-in | $validate-code | validate-code against ECL "refinement-cardinality-grouped": a post-coordinated expression that IS in the set |
|
| snomed-validate-ecl-refinement-cardinality-grouped-expr-out | $validate-code | validate-code against ECL "refinement-cardinality-grouped": a post-coordinated expression that is NOT in the set |
|
| snomed-validate-ecl-refinement-cardinality-rolegroup-code-in | $validate-code | validate-code against ECL "refinement-cardinality-rolegroup": a code that IS in the set |
|
| snomed-validate-ecl-refinement-cardinality-rolegroup-code-out | $validate-code | validate-code against ECL "refinement-cardinality-rolegroup": a code that is NOT in the set |
|
| snomed-validate-ecl-refinement-cardinality-rolegroup-expr-in | $validate-code | validate-code against ECL "refinement-cardinality-rolegroup": a post-coordinated expression that IS in the set |
|
| snomed-validate-ecl-refinement-cardinality-rolegroup-expr-out | $validate-code | validate-code against ECL "refinement-cardinality-rolegroup": a post-coordinated expression that is NOT in the set |
|
| snomed-validate-ecl-memberOf-refset-code-in | $validate-code | validate-code against ECL "memberOf-refset": a code that IS in the set |
|
| snomed-validate-ecl-memberOf-refset-code-out | $validate-code | validate-code against ECL "memberOf-refset": a code that is NOT in the set |
|
| snomed-validate-ecl-memberOf-refset-expr-out | $validate-code | validate-code against ECL "memberOf-refset": a post-coordinated expression that is NOT in the set |
|
| snomed-validate-ecl-minus-code-in | $validate-code | validate-code against ECL "minus": a code that IS in the set |
|
| snomed-validate-ecl-minus-code-out | $validate-code | validate-code against ECL "minus": a code that is NOT in the set |
|
| snomed-validate-ecl-minus-expr-in | $validate-code | validate-code against ECL "minus": a post-coordinated expression that IS in the set |
|
| snomed-validate-ecl-minus-expr-out | $validate-code | validate-code against ECL "minus": a post-coordinated expression that is NOT in the set |
|
| snomed-validate-ecl-wildcard-code-in | $validate-code | validate-code against ECL "wildcard": a code that IS in the set |
|
| snomed-validate-ecl-wildcard-expr-in | $validate-code | validate-code against ECL "wildcard": a post-coordinated expression that IS in the set |
|
| snomed-validate-ecl-wildcard-minus-code-in | $validate-code | validate-code against ECL "wildcard-minus": a code that IS in the set |
|
| snomed-validate-ecl-wildcard-minus-code-out | $validate-code | validate-code against ECL "wildcard-minus": a code that is NOT in the set |
|
| snomed-validate-ecl-wildcard-minus-expr-in | $validate-code | validate-code against ECL "wildcard-minus": a post-coordinated expression that IS in the set |
|
| snomed-validate-ecl-wildcard-minus-expr-out | $validate-code | validate-code against ECL "wildcard-minus": a post-coordinated expression that is NOT in the set |
|
| snomed-expand-ecl-descOrSelf | $expand | check that a set of concepts and displays are expanded properly (ecl descendent-or-self) |
|
| snomed-expand-ecl-descendents | $expand | check that a set of concepts and displays are expanded properly (ecl descendent) |
|
| snomed-expand-ecl-ancestors | $expand | check that a set of concepts and displays are expanded properly (ecl ancestor) |
|
| snomed-expand-ecl-ancOrSelf | $expand | check that a set of concepts and displays are expanded properly (ecl ancestor-or-self) |
|
| snomed-expand-ecl-childrenOrSelf | $expand | check that a set of concepts and displays are expanded properly (ecl descendent-or-self) |
|
| snomed-expand-ecl-children | $expand | check that a set of concepts and displays are expanded properly (ecl descendent) |
|
| snomed-expand-ecl-parents | $expand | check that a set of concepts and displays are expanded properly (ecl ancestor) |
|
| snomed-expand-ecl-parentsOrSelf | $expand | check that a set of concepts and displays are expanded properly (ecl ancestor-or-self) |
|
| snomed-expand-ecl-wildcard | $expand | All active concepts in the subset (wildcard). |
|
| snomed-expand-ecl-memberOf-refset | $expand | Members of the REPLACED-BY association reference set. |
|
| snomed-expand-ecl-memberOf-nonRefset | $expand | Negative case: ^ applied to a concept that is not a reference set should error. |
|
| snomed-expand-ecl-or | $expand | Union of Cellulitis subtree and Liver-structure subtree. |
|
| snomed-expand-ecl-and | $expand | Intersection: Cellulitis subtree AND Disease subtree; should equal << 128045006. |
|
| snomed-expand-ecl-minus | $expand | Exclusion: Disease subtree minus Cellulitis subtree. |
|
| snomed-expand-ecl-minus-empty | $expand | Degenerate exclusion: set minus itself, expects empty. |
|
| snomed-expand-ecl-wildcard-minus | $expand | All active concepts minus the Liver-structure subtree. |
|
| snomed-expand-ecl-grouped-or | $expand | Grouped OR: (<< A OR << B) AND << C — OR subexpression parenthesised; union of cellulitis and liver-structure subtrees intersected with disease; yields 1 result. |
|
| snomed-expand-ecl-grouped-and | $expand | Grouped AND: << A OR (<< B AND << C) — AND subexpression parenthesised; liver-structure unioned with intersection of cellulitis and disease; yields 311 results. |
|
| snomed-expand-ecl-ambiguous-precedence | $expand | Invalid ECL: mixing AND/OR without explicit grouping is forbidden by ECL spec (section 6.4) — must return an error. |
|
| snomed-expand-ecl-term-match | $expand | Concept reference with matching term; should be accepted. |
|
| snomed-expand-ecl-term-mismatch | $expand | Concept reference with incorrect term; should error with a term-mismatch message. |
|
| snomed-expand-ecl-term-with-operator | $expand | Hierarchy operator plus concept plus term; should expand to same set as << 10200004. |
|
| snomed-expand-ecl-unknown-concept | $expand | Unknown (non-existent) concept ID; expects an unknown-concept error. |
|
| snomed-expand-ecl-invalid-sctid | $expand | Non-numeric focus concept; expects a lexer/parser error. |
|
| snomed-expand-ecl-missing-focus | $expand | Operator with nothing after it; expects a parser error. |
|
| snomed-expand-ecl-trailing-tokens | $expand | Extra tokens after a complete expression; expects a parser error. |
|
| snomed-expand-ecl-nested-parens | $expand | Deeply nested parentheses; should expand to the same set as << 10200004. |
|
| snomed-expand-ecl-refinement-simple | $expand | Refinement: Disease with finding-site in the Liver subtree. Currently unsupported; expect a clear error. |
|
| snomed-expand-ecl-refinement-morphology | $expand | Refinement: Disease with associated-morphology = Closed fracture. Currently unsupported. |
|
| snomed-expand-ecl-refinement-wildcard | $expand | Refinement with wildcard value. Currently unsupported. |
|
| snomed-expand-ecl-refinement-group | $expand | Refinement with an attribute group. Currently unsupported. |
|
| snomed-expand-ecl-refinement-cardinality | $expand | Ungrouped [1..1] cardinality: exactly 1 Finding site in liver across all role groups — excludes concepts with 2+ groups each containing a liver Finding site (573). |
|
| snomed-expand-ecl-refinement-cardinality-grouped | $expand | Grouped [1..1] cardinality: exactly 1 role group containing exactly 1 Finding site in liver — same result as ungrouped for typical SNOMED models (573). |
|
| snomed-expand-ecl-refinement-cardinality-rolegroup | $expand | Role group cardinality without outer count: at least one role group containing exactly 1 Finding site in liver — more permissive, includes concepts with multiple groups each having 1 liver Finding site (661). |
|
| snomed-expand-ecl-dotted | $expand | Dotted expression: finding-site values across Disease descendants. Currently unsupported. |
|
| batch | general |
Test Batch Validation |
|
| batch-validate | $batch-validate | Simple use of the batch validate operation |
|
| batch-validate-bad | $batch-validate | Simple use of the batch validate operation |
|
| omop | omop |
Tests for OMOP implementations. Note that some servers only do OMOP (and some don't). The tests are based on a stable subset of OMOP maintained by Davera Gabriel |
|
| omop-basic-validation-code-good | $cs-validate-code | Just validate a randomly chosen real OMOP code provided as system and code |
|
| omop-basic-validation-coding-good | $cs-validate-code | Just validate a randomly chosen real OMOP code provided as coding |
|
| omop-basic-validation-codeableconcept-good | $cs-validate-code | Just validate a randomly chosen real OMOP code provided as codeableConcept |
|
| omop-basic-validation-code-bad | $cs-validate-code | Just validate a randomly chosen fake OMOP code that is not valid provided as system and code |
|
| omop-basic-validation-coding-bad | $cs-validate-code | Just validate a randomly chosen fake OMOP code that is not valid provided as coding |
|
| omop-basic-validation-codeableconcept-bad | $cs-validate-code | Just validate a randomly chosen fake OMOP code that is not valid provided as CodeableConcept |
|
| omop-basic-validation-code-bad-display | $cs-validate-code | Just validate a randomly chosen real OMOP code with a wrong display provided as system, code and display |
|
| omop-basic-validation-coding-bad-display | $cs-validate-code | Just validate a randomly chosen real OMOP code with a wrong display provided as coding |
|
| omop-basic-validation-codeableconcept-bad-display | $cs-validate-code | Just validate a randomly chosen real OMOP code with a wrong display provided as CodeableConcept |
|
| omop-basic-validation-code-bad-version | $cs-validate-code | Just validate a randomly chosen real OMOP code with a wrong display provided as system, code and display |
|
| omop-basic-validation-coding-bad-version | $cs-validate-code | Just validate a randomly chosen real OMOP code with a wrong display provided as coding |
|
| omop-basic-validation-codeableconcept-bad-version | $cs-validate-code | Just validate a randomly chosen real OMOP code with a wrong display provided as CodeableConcept |
|
| omop-basic-validation-code-good-vs | $validate-code | Just validate a randomly chosen real OMOP code provided as system and code and require that it's in a particular domain by value set (it is!) |
|
| omop-basic-validation-coding-good-vs | $validate-code | Just validate a randomly chosen real OMOP code provided as a coding and require that it's in a particular domain by value set (it is!) |
|
| omop-basic-validation-codeableconcept-good-vs | $validate-code | Just validate a randomly chosen real OMOP code provided as a CodeableConcept and require that it's in a particular domain by value set (it is!) |
|
| omop-basic-validation-code-bad-vs | $validate-code | Just validate a randomly chosen real OMOP code provided as system and code and require that it's in a particular domain by value set (it is not!) |
|
| omop-basic-validation-coding-bad-vs | $validate-code | Just validate a randomly chosen real OMOP code provided as a coding and require that it's in a particular domain by value set (it is not!) |
|
| omop-basic-validation-codeableconcept-bad-vs | $validate-code | Just validate a randomly chosen real OMOP code provided as a CodeableConcept and require that it's in a particular domain by value set (it is not!) |
|
| omop-lookup-code | $lookup | Lookup a standard OMOP code |
|
| omop-lookup-code2 | $lookup | lookup a non-standard OMOP Code |
|
| omop-lookup-code3 | $lookup | lookup a non-standard OMOP Code |
|
| omop-basic-validation-code-good-vs-url | $validate-code | Same as omop-basic-validation-code-good-vs but passing a value set in |
|
| omop-basic-validation-code-bad-vs-url | $validate-code | Same as omop-basic-validation-code-bad-vs but passing a value set in |
|
| omop-expand-explicit | $expand | Expand an OMOP value set |
|
| translate-loinc-implicit | $translate | translating sucessfully from OMOP to LOINC, leaving it to the server to choose a concept map if it can find one. Note that not all servers are willing to let the client trust it like this, so this test is optional |
|
| translate-loinc-implicit-bad | $translate | translating unsucessfully from OMOP to LOINC, leaving it to the server to choose a concept map if it can find one, Also this test - and the last one - assume that the server has no other source of OMOP -> LOINC mappings available |
|
| UCUM | tx.fhir.org |
UCUM Test Cases |
|
| lookup | $lookup | Tests the $lookup operation |
|
| lookup-with-annotation | $lookup | Tests the $lookup operation with annotation |
|
| expand-ucum-all-4 | $expand | Tests the $expand operation for all codes (this is a special case). The special value set changed between R4 and R5 |
|
| expand-ucum-all-5 | $expand | Tests the $expand operation for all codes (this is a special case). The special value set changed between R4 and R5 |
|
| expand-ucum-canonical | $expand | Tests the $expand operation for all codes (this is a special case) |
|
| validate-ucum-canonical-good | $validate-code | Tests the $validate-code operation for a valid UCUM code |
|
| validate-ucum-canonical-bad | $validate-code | Tests the $validate-code operation for an valid UCUM code not in the canonicl value set |
|
| validate-all-canonical-good | $validate-code | Tests the $validate-code operation for a valid UCUM code |
|
| validate-ucum-all-bad | $validate-code | Tests the $validate-code operation for an invalid UCUM code |
|
| ucum-subsumes-equivalent | $subsumes | A unit is equivalent to itself |
|
| ucum-subsumes-canonical | $subsumes | The same unit written two different ways |
|
| ucum-subsumes-unrelated | $subsumes | Two unrelated units |
|
| ucum-subsumes-scaled | $subsumes | A unit and a scaled version of it - UCUM has no hierarchy |
|
| ucum-subsumes-invalid-code | $subsumes | codeA is not a valid UCUM unit |
|
| ucum-subsumes-annotation | $subsumes | A unit with an annotation, and the same unit without |
|
| ucum-subsumes-derived | $subsumes | A named derived unit and the expression it is defined as |
|
| ucum-subsumes-offset | $subsumes | Two units of the same property whose conversion has an offset |
|
| ucum-subsumes-same-canonical | $subsumes | Two units with the same canonical unit but different magnitudes |
|
| ucum-subsumes-both-scaled | $subsumes | The same canonical unit again, with neither magnitude being 1 |
|
| ucum-subsumes-dimensionless | $subsumes | Two dimensionless units, told apart only by magnitude |
|
| mimetypes | mimetypes |
Tests for the mime types code system (BCP 13). Type and subtype have no hierarchy, but parameters narrow a media type, and the base filter selects by type or type/subtype |
|
| mimetype-subsumes-equivalent | $subsumes | A media type is equivalent to itself |
|
| mimetype-subsumes-unrelated | $subsumes | Two unrelated media types |
|
| mimetype-subsumes-suffix | $subsumes | A media type and one with a structured suffix of it |
|
| mimetype-subsumes-parameter | $subsumes | A media type and the same type carrying a parameter |
|
| mimetype-subsumes-parameter-reverse | $subsumes | the mirror of mimetype-subsumes-parameter |
|
| mimetype-subsumes-parameter-siblings | $subsumes | The same parameter with two different values |
|
| mimetype-subsumes-parameter-added | $subsumes | A parameter set and a superset of it |
|
| mimetype-subsumes-parameter-disjoint | $subsumes | Two parameter sets, neither containing the other |
|
| mimetype-subsumes-default-explicit | $subsumes | a parameter written out at its default value: RFC 6657 section 4 keeps US-ASCII as the default charset for text/plain, so the bare form already carries it and the two codes are the same media type |
|
| mimetype-subsumes-default-contradicted | $subsumes | a parameter away from its default: because bare text/plain means charset=us-ascii, a different charset contradicts it rather than narrowing it. This is where the rule that a parameter narrows does not hold |
|
| mimetype-subsumes-default-format | $subsumes | the same for format, which RFC 3676 section 4 defaults to Fixed, so text/plain and text/plain; format=flowed are different media types |
|
| mimetype-subsumes-charset-unknown-default | $subsumes | RFC 6657 section 3 leaves a text/* registration that does not say how the charset is determined defaulting to US-ASCII, so for such a type a server cannot tell whether the absence of a charset means any charset or means US-ASCII, and the two give opposite answers |
|
| mimetype-subsumes-case | $subsumes | The same media type differing only in case and quoting |
|
| mimetype-subsumes-unknown-parameter | $subsumes | a parameter the server does not know: whether it narrows the media type depends on its definition, so the relationship cannot be determined |
|
| mimetype-subsumes-unknown-parameter-value | $subsumes | two values of an unknown parameter: nothing says whether they exclude one another or one includes the other |
|
| mimetype-subsumes-unknown-parameter-shared | $subsumes | an unknown parameter carried identically by both codes cannot affect the answer, so it must not stop the server deciding |
|
| mimetype-subsumes-invalid-code | $subsumes | codeA is not a well formed media type |
|
| mimetype-filter-base-type-in | $validate-code | A code whose type matches a base filter of 'text' |
|
| mimetype-filter-base-type-params | $validate-code | Parameters do not stop a code matching the base filter |
|
| mimetype-filter-base-type-other-subtype | $validate-code | Any subtype of the type matches a type-only base filter |
|
| mimetype-filter-base-type-out | $validate-code | A code of a different type does not match |
|
| mimetype-filter-base-subtype-in | $validate-code | A code matching a base filter of 'text/plain' |
|
| mimetype-filter-base-subtype-params | $validate-code | Parameters do not stop a code matching a type/subtype base filter |
|
| mimetype-filter-base-subtype-out | $validate-code | A different subtype does not match a type/subtype base filter |
|
| mimetype-filter-registered-in | $validate-code | A media type that is in the IANA registry |
|
| mimetype-filter-registered-params | $validate-code | Parameters do not stop a registered type matching |
|
| mimetype-filter-registered-out | $validate-code | A media type that is not in the IANA registry |
|
| mimetype-filter-unregistered-in | $validate-code | registered=false selects a type that is not in the registry |
|
| mimetype-filter-unregistered-out | $validate-code | registered=false excludes a registered type |
|
| mimetype-filter-registered-params-out | $validate-code | A parameter does not make an unregistered type match registered=true |
|
| mimetype-filter-unregistered-params-in | $validate-code | An unregistered type with a parameter still matches registered=false |
|
| mimetype-filter-unregistered-params-out | $validate-code | A parameter does not make a registered type match registered=false |
|
| mimetype-expand-enumerated | $expand | An enumerated list of media types expands |
|
| mimetype-expand-all | $expand | The whole code system cannot be expanded |
|
| mimetype-expand-base | $expand | A base filter cannot be expanded either |
|
| mimetype-expand-unregistered | $expand | registered=false cannot be expanded - it is unbounded |
|
| mimetype-expand-registered-narrow | $expand | registered=true can be expanded, narrowed by a base filter, and the expansion is marked unclosed |
|
| mimetype-expand-registered-too-costly | $expand | Expanding every registered media type at once is too costly |
|
| mimetype-expand-registered-paged | $expand | A page of the registered media types, with the page size asserted rather than its contents |
|
| compare | tx.fhir.org |
Tests for candidate new 'related' operation |
|
| related-all | $compare | Checks that an all value is the same as itself |
|
| related-active | $compare | Checks that an all value is the same as itself, in the presence of the active flag = true |
|
| related-inactive | $compare | Checks that an all value is the same as itself, in the presence of the active flag = false |
|
| related-enumerated | $compare | Checks that an all value is the same as itself, in the presence of an enumerated list |
|
| related-is-a | $compare | Checks that an all value is the same as itself, in the presence of an is-a filter |
|
| related-regex-1 | $compare | Checks that an all value is the same as itself, in the presence of an regex filter |
|
| related-regex-2 | $compare | Checks that an all value is the same as itself, in the presence of a property regex filter |
|
| related-lists | $compare | Checks that two enumerated value sets are the same (concept order is different) |
|
| related-lists-more | $compare | Checks that two enumerated value sets are related such that the other contains this |
|
| related-lists-less | $compare | Checks that two enumerated value sets are related such that this contains the other |
|
| related-lists-over | $compare | Checks that two enumerated value sets are overlapping |
|
| related-lists-disj | $compare | Checks that two enumerated value sets are the disjoint |
|
| related-systems | $compare | Checks that two valuesets that import the same entire code systems are identical |
|
| related-systems | $compare | Checks that two valuesets that import the same entire code systems are identical |
|
| related-systems-less | $compare | Checks that two valuesets that import the same entire code systems are identical |
|
| related-systems-more | $compare | Checks that two valuesets that import the same entire code systems are identical |
|
| related-system-disj | $compare | Checks that two valuesets that import the same entire code systems are identical |
|
| related-system-over | $compare | Checks that two valuesets that import the same entire code systems are identical |
|
| related-filters-1 | $compare | Checks that two valuesets that haev the same filters in different orders (as filters) |
|
| related-filters-2 | $compare | Checks that two valuesets that haev the same filters in different orders (as includes) |
|
| related-filters-3 | $compare | Checks that two valuesets that haev the same filters in different orders (as includes from the same system) |
|
| related-mixed-1 | $compare | Checks that two valuesets that have the same content with incompatible definitions are considered the same |
|
| related-mixed-1-less | $compare | Checks that two valuesets that have the same content with incompatible definitions are considered the same |
|
| related-mixed-1-more | $compare | Checks that two valuesets that have the same content with incompatible definitions are considered the same |
|
| related-mixed-1-disj | $compare | Checks that two valuesets that have the same content with incompatible definitions are considered the same |
|
| related-mixed-1-over | $compare | Checks that two valuesets that have the same content with incompatible definitions are considered the same |
|
| related-filters-less | $compare | Checks that two valuesets that have the same content with incompatible definitions are considered the same |
|
| related-filters-more | $compare | Checks that two valuesets that have the same content with incompatible definitions are considered the same |
|
| bugs | tx.fhir.org |
A series of tests that deal with discovered bugs in FHIRsmith. These tests are specific to FHIRsmith - internal QA |
|
| country-codes | $expand | ||
| cpt | $expand | ||
| cpt-0 | $expand | ||
| cpt-100 | $expand | ||
| sct-ver-ex | $expand | ||
| undefined | $validate-code | ||
| no-system | $cs-validate-code | ||
| sct-parse | $cs-validate-code | ||
| sct-parse-pc | $cs-validate-code | ||
| lang-case | $cs-validate-code | ||
| lang-case2 | $cs-validate-code | ||
| provenance | $cs-validate-code | ||
| country-code | $cs-validate-code | ||
| sct-isa | $validate-code | ||
| sct-ver | $cs-validate-code | ||
| sct-msg-4 | $validate-code | ||
| sct-msg-5 | $validate-code | ||
| sct-display-1 | $cs-validate-code | ||
| sct-display-2 | $cs-validate-code | ||
| ndc | $cs-validate-code | ||
| x12-bad | $cs-validate-code | ||
| 3166-a | $cs-validate-code | Check user assigned codes are valid |
|
| 3166-b | $cs-validate-code | Check user assigned codes can get display from a supplement |
|
| 3166-c | $cs-validate-code | But base names are still valid |
|
| 3166-d | $cs-validate-code | Check that wrong displays on user assigned codes are just a hint |
|
| permutations | general |
A set of permutations generated by Claude with the goal of increasing test coverage. |
|
| bad-cc1-all-request | $validate-code | ||
| bad-cc1-enumerated-request | $validate-code | ||
| bad-cc1-exclude-filter-request | $validate-code | ||
| bad-cc1-exclude-import-request | $validate-code | ||
| bad-cc1-exclude-list-request | $validate-code | ||
| bad-cc1-import-request | $validate-code | ||
| bad-cc1-isa-request | $validate-code | ||
| bad-cc2-all-request | $validate-code | ||
| bad-cc2-enumerated-request | $validate-code | ||
| bad-cc2-exclude-filter-request | $validate-code | ||
| bad-cc2-exclude-import-request | $validate-code | ||
| bad-cc2-exclude-list-request | $validate-code | ||
| bad-cc2-import-request | $validate-code | ||
| bad-cc2-isa-request | $validate-code | ||
| bad-coding-all-request | $validate-code | ||
| bad-coding-enumerated-request | $validate-code | ||
| bad-coding-exclude-filter-request | $validate-code | ||
| bad-coding-exclude-import-request | $validate-code | ||
| bad-coding-exclude-list-request | $validate-code | ||
| bad-coding-import-request | $validate-code | ||
| bad-coding-isa-request | $validate-code | ||
| bad-scd-all-request | $validate-code | ||
| bad-scd-enumerated-request | $validate-code | ||
| bad-scd-exclude-filter-request | $validate-code | ||
| bad-scd-exclude-import-request | $validate-code | ||
| bad-scd-exclude-list-request | $validate-code | ||
| bad-scd-import-request | $validate-code | ||
| bad-scd-isa-request | $validate-code | ||
| good-cc1-all-request | $validate-code | ||
| good-cc1-enumerated-request | $validate-code | ||
| good-cc1-exclude-filter-request | $validate-code | ||
| good-cc1-exclude-import-request | $validate-code | ||
| good-cc1-exclude-list-request | $validate-code | ||
| good-cc1-import-request | $validate-code | ||
| good-cc1-isa-request | $validate-code | ||
| good-cc2-all-request | $validate-code | ||
| good-cc2-enumerated-request | $validate-code | ||
| good-cc2-exclude-filter-request | $validate-code | ||
| good-cc2-exclude-import-request | $validate-code | ||
| good-cc2-exclude-list-request | $validate-code | ||
| good-cc2-import-request | $validate-code | ||
| good-cc2-isa-request | $validate-code | ||
| good-coding-all-request | $validate-code | ||
| good-coding-enumerated-request | $validate-code | ||
| good-coding-exclude-filter-request | $validate-code | ||
| good-coding-exclude-import-request | $validate-code | ||
| good-coding-exclude-list-request | $validate-code | ||
| good-coding-import-request | $validate-code | ||
| good-coding-isa-request | $validate-code | ||
| good-scd-all-request | $validate-code | ||
| good-scd-enumerated-request | $validate-code | ||
| good-scd-exclude-filter-request | $validate-code | ||
| good-scd-exclude-import-request | $validate-code | ||
| good-scd-exclude-list-request | $validate-code | ||
| good-scd-import-request | $validate-code | ||
| good-scd-isa-request | $validate-code | ||
| icd-11 | icd-11 |
ICD-11 Test Cases. See tests/icd-11/doco.txt for what these assert and why several of them are expected to fail against the current ICD-API. |
|
| term-caps | $term-caps | Check that the minimum expected things are found in the server TerminologyCapabilities for ICD-11 servers |
|
| lookup-mms-code | $lookup | Look up an MMS stem code by its short code, restricting the returned properties with the property parameter |
|
| lookup-mms-uri | $lookup | The same concept addressed by its entity URI must give the same answer |
|
| lookup-mms-grouper | $lookup | Look up a chapter (a grouper that does have a short code) |
|
| lookup-mms-no-code | $lookup | A concept with an entity id but no short code must be marked not-selectable |
|
| lookup-mms-residual | $lookup | Look up a residual category - the id is derived from the parent, the code ends in Y |
|
| lookup-mms-fr | $lookup | Look up with displayLanguage - display and designations come back in French |
|
| lookup-icf-code | $lookup | The same foundation entity in ICF carries a different short code |
|
| lookup-foundation | $lookup | Look up a Foundation entity - full URI only, there are no short codes |
|
| lookup-bad-code | $lookup | An unknown code is an error |
|
| lookup-bad-system | $lookup | An unknown code system is an error |
|
| lookup-bad-version | $lookup | An unknown version is an error |
|
| lookup-foundation-bare | $lookup | A bare numeric id is not a Foundation code (WHO decision - the full URI is required) |
|
| lookup-foundation-residual | $lookup | Residual categories exist only in the linearizations, not in the Foundation |
|
| lookup-bad-language | $lookup | An unknown display language must be reported, not silently replaced by English |
|
| lookup-pc-simple | $lookup | Look up a postcoordinated expression in short-code form |
|
| lookup-pc-uri-form | $lookup | The same expression in entity-URI form (spaces around the delimiter) must give the same concept |
|
| lookup-pc-cluster | $lookup | A cluster expression: two stems joined by /, each with its own & extensions |
|
| lookup-pc-repeated-value | $lookup | A value repeated on two different axes must not be silently dropped - the code that comes back must be the code that was asked about |
|
| lookup-pc-nondisjoint | $lookup | Values on two axes drawing from overlapping value sets must each stay on their own axis |
|
| lookup-pc-invalid-axis | $lookup | A value that is on no suggested axis of the stem must say so, not just 'not found' |
|
| lookup-pc-other | $lookup | 'Other' postcoordination: a value outside the stem's declared scales (unresolved - see doco.txt) |
|
| lookup-icf-pc | $lookup | ICF postcoordination - every property returned must actually carry a value |
|
| lookup-icf-pc-old | $lookup | The pre-2026 ICF postcoordination syntax is no longer valid |
|
| cs-validate-good | $cs-validate-code | Validate a good code with no display |
|
| cs-validate-good-display | $cs-validate-code | Validate a good code with the right display |
|
| cs-validate-bad-display | $cs-validate-code | A wrong display must come back with issues and a message, not a bare result=false |
|
| cs-validate-bad-code | $cs-validate-code | An unknown code must come back with issues and a message |
|
| cs-validate-case | $cs-validate-code | ICD-11 codes are case sensitive, so a lower case code is not a code (note that WHO declares caseSensitive=false, which is the part that is wrong) |
|
| cs-validate-lang | $cs-validate-code | A display that is right in another language is still wrong for the language that was asked for - the same as validation/simple-coding-bad-language |
|
| cs-validate-pc | $cs-validate-code | Validate a postcoordinated expression |
|
| cs-validate-uri | $cs-validate-code | Validate a code given in entity-URI form |
|
| expand-pcs | $expand | Expand a WHO postcoordination scale value set |
|
| expand-pcs-count | $expand | count is declared in TerminologyCapabilities and must be honoured |
|
| expand-pcs-offset | $expand | offset is declared in TerminologyCapabilities and must be honoured |
|
| expand-pcs-filter | $expand | The text filter must be applied |
|
| expand-pcs-fr | $expand | displayLanguage is declared in TerminologyCapabilities and must be honoured |
|
| expand-bad-url | $expand | An unknown value set is an error |
|
| expand-inline-vs | $expand | A value set supplied inline on the request must be expanded |
|
| expand-adhoc-enum | $expand | Expand a client-supplied value set enumerating MMS codes |
|
| expand-adhoc-enum-uri | $expand | Expand a client-supplied value set enumerating entity URIs |
|
| expand-adhoc-isa | $expand | Expand a client-supplied is-a filter, filter value as a short code |
|
| expand-adhoc-isa-uri | $expand | Expand the same is-a filter with the filter value as an entity URI - must be identical |
|
| expand-adhoc-bad-code | $expand | A client-supplied value set naming a code that does not exist expands to the codes that do - the same as simple-expand-enum-bad and overload-expand-enum-bad |
|
| expand-pcs-uri-form | $expand | The WHO postcoordination scale as a client-supplied value set, filter values as entity URIs |
|
| expand-pcs-code-form | $expand | The same value set with filter values as short codes - must expand identically |
|
| vs-validate-in | $validate-code | A code that is in a WHO postcoordination scale value set |
|
| vs-validate-out | $validate-code | A code that is not in the value set must come back with issues and a message |
|
| vs-validate-adhoc | $validate-code | A code that is in a client-supplied value set |
|
| vs-validate-adhoc-out | $validate-code | A code that is not in a client-supplied value set |
|
| regex-bad | general |
Bad Regex - checking defences against denial of service attack. These are unusual because servers have the option to succeed, or to refuse the request |
|
| expand-regex-bad | $expand | Check expand is safe from catastrophic regex |
|
| validate-regex-bad | $validate-code | Check validate is safe from catastrophic regex |
|
| expand-regex-bad-2 | $expand | Check expand is safe from catastrophic regex |
|
| validate-regex-bad-2 | $validate-code | Check validate is safe from catastrophic regex |
|
| related2 | tx.fhir.org |
Tests for $compare operation - comparing two value sets to determine their relationship (equivalent, subset, superset, overlap, disjoint, unknown) |
|
| related-eq-identical-def | $compare | Equivalent: identical is-a filter definitions |
|
| related-eq-enum-reorder | $compare | Equivalent: same enumerated codes in different order |
|
| related-eq-multi-include-reorder | $compare | Equivalent: multiple includes from same system in different order |
|
| related-eq-filter-vs-enum | $compare | Equivalent: is-a filter vs explicit enumeration of same codes |
|
| related-eq-import-vs-inline | $compare | Equivalent: imported value set vs same definition inline |
|
| related-eq-import-reorder | $compare | Equivalent: child value sets imported in different order |
|
| related-expeq-exclude-vs-enum | $compare | Equivalent (expansion): all CS1 minus C vs enumeration of same codes |
|
| related-expeq-exclude-partial | $compare | Equivalent (expansion): is-a root minus {A2,B2} vs enumeration of result |
|
| related-sub-branch-vs-root | $compare | Subset: is-a A is subset of is-a root |
|
| related-sub-enum-vs-filter | $compare | Subset: enumerated {A1,A2} is subset of is-a A |
|
| related-sub-base-vs-import-plus | $compare | Subset: base VS is subset of VS that imports it and adds codes |
|
| related-sub-leaf-vs-subtree | $compare | Subset: single leaf {A1} is subset of is-a A |
|
| related-super-root-vs-branch | $compare | Superset: is-a root is superset of is-a A |
|
| related-expsub-exclude-narrower | $compare | Subset (expansion): all minus {C,B1,B2} subset of all minus {C} |
|
| related-disj-diff-systems | $compare | Disjoint: value sets from entirely different code systems |
|
| related-disj-diff-branches | $compare | Disjoint: non-overlapping branches (A vs B) in same system |
|
| related-disj-enum-no-intersection | $compare | Disjoint: enumerated codes with no intersection (flat system) |
|
| related-disj-multi-system | $compare | Disjoint: multi-system value sets with no overlap |
|
| related-ov-enum-partial | $compare | Overlap: partially overlapping enumerations |
|
| related-ov-filter-vs-enum | $compare | Overlap: is-a A overlaps with enum {A2, B1} |
|
| related-ov-multi-include-partial | $compare | Overlap: multi-include with partial overlap (is-a A+{B1} vs is-a B+{A1}) |
|
| related-ov-import-partial | $compare | Overlap: imported value sets creating partial overlap |
|
| related-ov-cross-system | $compare | Overlap: cross-system partial overlap |
|
| related-ov-exclude-partial | $compare | Overlap (expansion): overlap after excludes applied |
|
| related-unk-snomed-both-filter | $compare | Unknown: two SNOMED is-a filters, can't determine relationship |
|
| related-unk-snomed-filter-vs-enum | $compare | Unknown: SNOMED is-a filter vs enumerated SNOMED code |
|
| related-unk-unknown-system | $compare | Unknown: unknown code system, can't expand |
|
| related-ver-same-def-diff-cs-version | $compare | Version: same is-a A definition, CS1 v1 subset of CS1 v2 |
|
| related-ver-all-diff-cs-version | $compare | Version: all CS1, v1 subset of v2 |
|
| related-ver-branch-diff-cs-version | $compare | Version: is-a B, CS1 v1 subset of CS1 v2 |
|
| related-ver-unversioned-vs-pinned | $compare | Version: unversioned is-a A (uses latest=v2) superset of v1-pinned |
|
| related-ver-same-vs-diff-version | $compare | Version: same VS URL, v1 subset of v2 (definition changed) |
|
| related-ver-import-version-cascade | $compare | Version: import of v1-pinned VS subset of import of v2-pinned VS |
|
| langcodes | tx.fhir.org |
IETF language code (BCP-47) test cases |
|
| validate-lang-base | $cs-validate-code | a bare language subtag is valid (en) |
|
| validate-lang-region | $cs-validate-code | language plus an ISO 3166 region (en-US) |
|
| validate-lang-script | $cs-validate-code | language plus a script (zh-Hans) |
|
| validate-lang-script-region | $cs-validate-code | language, script and region together (zh-Hans-CN) |
|
| validate-lang-region-private | $cs-validate-code | a region inside the QM..QZ private-use range - the registry writes those as a range rather than one entry per code (en-QM) |
|
| validate-lang-grandfathered | $cs-validate-code | a grandfathered tag: registered whole, and it does not decompose into valid subtags (i-klingon) |
|
| validate-lang-base-bad | $cs-validate-code | two letters that are not an allocated language (zz) |
|
| validate-lang-region-bad | $cs-validate-code | two letters that are neither allocated nor inside a private-use range (en-AB) |
|
| validate-lang-script-bad | $cs-validate-code | four letters that are not an allocated script (en-Abcd) |
|
| validate-lang-extlang-prefix-bad | $cs-validate-code | the extlang cmn carries Prefix: zh in the registry, so it may not follow en (en-cmn) |
|
| validate-lang-variant-prefix-bad | $cs-validate-code | the variant 1901 carries Prefix: de in the registry, so it may not follow en (en-1901) |
|
| validate-lang-case-language | $cs-validate-code | the language subtag written in the wrong case (EN): valid, because BCP 47 tags are case-insensitive, but the server returns normalized-code en and notes the difference |
|
| validate-lang-case-region | $cs-validate-code | the region subtag written in the wrong case (en-us): valid, because BCP 47 tags are case-insensitive, but the server returns normalized-code en-US and notes the difference |
|
| validate-lang-case-all | $cs-validate-code | every subtag written in the wrong case (ZH-hans-cn): valid, because BCP 47 tags are case-insensitive, but the server returns normalized-code zh-Hans-CN and notes the difference |
|
| subsumes-lang-base-region | $subsumes | en subsumes en-US: a region added to a bare language |
|
| subsumes-lang-reverse | $subsumes | en-US is subsumed by en |
|
| subsumes-lang-equivalent | $subsumes | a tag against itself |
|
| subsumes-lang-script | $subsumes | zh subsumes zh-Hans-CN: script and region added |
|
| subsumes-lang-skipped-script | $subsumes | en-US subsumes en-Latn-US, though the added script sits between the two subtags en-US names - RFC 4647 extended filtering rather than basic |
|
| subsumes-lang-variant | $subsumes | de subsumes de-1901: a variant added |
|
| subsumes-lang-siblings | $subsumes | en-US and en-GB: two regions of one language, neither subsumes the other |
|
| subsumes-lang-scripts | $subsumes | zh-Hant and zh-Hans-CN: different scripts |
|
| subsumes-lang-crossed | $subsumes | en-Latn and en-US: each states something the other does not |
|
| subsumes-lang-unrelated | $subsumes | en and fr: different languages |
|
| subsumes-lang-case | $subsumes | EN subsumes en-us: BCP 47 tags are case-insensitive |
|
| subsumes-lang-grandfathered | $subsumes | zh does not subsume zh-min-nan: a grandfathered tag is matched whole and has no components to compare |
|
| validate-lang-filter-language-in | $validate-code | a code in a language=en filter |
|
| validate-lang-filter-language-out | $validate-code | a code with a different language |
|
| validate-lang-filter-region-in | $validate-code | a code in a region=US filter, whatever its language |
|
| validate-lang-filter-region-out | $validate-code | a code with a different region |
|
| validate-lang-filter-both-in | $validate-code | language and region both fixed: the script is free to vary |
|
| validate-lang-filter-both-out | $validate-code | the language matches but the region does not, and the message says which rule failed |
|
| validate-lang-filter-script-in | $validate-code | a script filter validates codes even though it cannot be expanded |
|
| validate-lang-filter-script-out | $validate-code | a code in a different script |
|
| validate-lang-filter-language-bare | $validate-code | the bare language itself is in a language=en filter: a language filter matches the language, however much or little else the tag says |
|
| validate-lang-filter-region-absent | $validate-code | a tag with no region at all is not in a region=US filter: an absent component does not match a fixed one |
|
| validate-lang-filter-script-absent | $validate-code | a tag with no script at all is not in a script=Latn filter, even though Latn is the script English is written in |
|
| validate-lang-filter-both-absent | $validate-code | the language matches but there is no region to match, so the code is not in the value set |
|
| expand-lang-language | $expand | a fixed language expands to its regions (and the bare language), paged |
|
| expand-lang-both | $expand | language and region fixed expands to the scripts, starting with the tag that has none |
|
| expand-lang-region | $expand | a fixed region is finite but far too large to expand, so it answers too-costly |
|
| expand-lang-script | $expand | a script alone leaves the language open, so there is nothing to enumerate |
|
| expand-langcodes-all | $expand | Tests the $expand operation for all language codes (a special case): the grammar is unbounded, so the common-languages base value set is returned, marked as an incomplete (unclosed) expansion |
|