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.3 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
This page details the changes made to the terminology tests over time, based on the GitHub releases. Note that the GitHub repository that contains these tests also contains many other test cases for other kinds of functionality; this history only lists releases that include changes to the terminology tests.
This release is dominated by a rework of the $translate tests, and by settling how servers report inactive concepts.
$translate: the source concept may now be named with sourceCode + sourceSystem, with sourceCoding, or with sourceCodeableConcept, and R4 servers are tested with the R4 spellings of the same thing (code + system, coding, codeableConcept, and targetsystem)$translate: tests for the full range of relationship types, including not-related-to, which is returned as a match like any other; and for ConceptMap.group.element.comment and .target.comment, returned as sourceComment and targetComment (element.comment is preadopted from R6 using a cross-version extension)$translate: tests for noMap — stated as element.noMap in R5, and as a target with no code in R4, but reported the same way either way — and for ConceptMap.group.unmapped in all three modes (use-source-code, fixed and other-map), including chains of otherMap maps and the detection of circular references$translate: the response reports originMap, the concept map the chain of maps started from, and a used-conceptmap for every other map that contributed to it (originMap was introduced in 1.9.2; it is now settled as the start of the chain of maps, not the end)$translate: the R4 reverse parameter is tested — an R4 server reverses the source and target parameters and translates forwards, an R5 or later server returns an error — along with the R5+ way of asking the same question, which is to name the target concept as the source. The translate tests are split into two suites so that the unmapped tests see only the concept maps they are aboutvalidate-code-inactive-display and validation-simple-code-bad-display are each split into a lenient and a not-lenient variant, driven by a new lenient-display property on the test caseversion property (4.0, or !4.0 for "any version but R4"), and $optional$ accepts a version filter (version:4) so that one expected response can cover both R4 and R5 servers where they legitimately differ. Expected content can also be marked $only$ — required in the nominated versions or modes, and prohibited in all the others; this is the counterpart of $optional$, which only ever relaxes a requirementstatus property is no longer optional in an expansion, and the expected responses have been updated to require it. Also, a status of deprecated no longer makes a concept inactive — inactive and retired do (see the requirements page)simple-expand-regex-none, validation-simple-code-regex-none)CodeSystem.concept.property is 0.., so a filter selects a concept when *any of its values match — not just the first — and expansion.contains.property reports all of them (simple-expand-repeating-prop, simple-expand-repeating-prop-values)20250909, and now includes the MRCM attribute domain and attribute range reference sets, the lateralizable body structure reference set, and a simple reference set. The relationship module in the subset has been corrected, and the loading and regeneration instructions in tx-source/readme.md have been rewrittenconstraint = * filter returns every concept, including inactive concepts and module concepts, so the ECL wildcard expansion and snomed-expand-count-all now agree (2259 codes)http://snomed.info/xsct/31000003106/version/20250909), updating the affected requests and expected responses (display names and version URIs) to match, and correct the type of the system-version parameter from string to uriOperationOutcome.issue.location is optional in the expected responses, and the operationoutcome-message-id extension is optional for every server except tx.fhir.org; the optional version OUT parameter is allowed in the six codeableconcept-*-vs1wb version testssimple-all and simple-enumerated were each defined twice with different content. The permutations suite now uses the shared simple/valueset-all.json, and its own enumerated value set has been renamed to valueset-simple-enumerated-codes.jsoncode-vnn-vsmix-2, remove a stray uuid parameter and stale $optional$ markers, fix JSON typing errors (a boolean written as a string), add the total OUT parameter to the CPT expansion test now that CPT iteration is fixed, and add the missing flat-format expected response for search-expand-all-yesThis is preparatory for settling the SNOMED CT tests, and then it will be labelled as 2.0.0
valueset-unclosed on filter-based ECL expansions; and tests for enumerating grammar-based code systems (including count=0 counts)$compare operation (previously named $related)originMap (replacing sourceMap)child-of, and regex filters — including a regex denial-of-service case and improved regex error messages$expand: flat result format (response:flat) and support for the total OUT parameterdesignation.use.display in responsesCodeableConcept using the first matching code rather than the lastlimit replaced by count, bad cache-id)ValueSet.compose.include.version, with wildcards, and the expansion parameters system-version etc.)version parameter that is no longer used or supported (after 1 year of grace)hierarchyMeaning for the simple CodeSystemexpansion.id & expansion.offset in many testsvalueset-version to default-valueset-versiondisplayLanguagesystemVersion instead of versionx-caused-by-unknown-system when a supplement is not foundValueSet.compose.inactive and the activeOnly parameterThere is no specific history for the terminology test cases prior to version 1.6.0. The only history notes available are mixed in with all the other kinds of tests in the GitHub release notes.