Repository navigation
Release v0.18.2
[0.18.2] - 2026-10-29
Added
- IPS: national profiles - the profile on Bundle that a national IG defines for an IPS document: its jurisdiction (an ISO 3166 country code, or a UN M49 region), the IG's package id and version, and the profile's url. They are shared across all projects at
/ips/national-profiles, where everyone can see them and only the administrator adds, edits and deletes them (also as JSON). A new processing step, after validation, validates each document against each national profile - loading the IG's package into the validator, once - and keeps the outcome and whether the document passed (no errors). The document's new National Profiles view lists them, and shows each one's validation as the Validation view does - IPS:
modules.ips.validator.jar- a validator jar of the module's own (a local build of org.hl7.fhir.core, say), used as it is, never downloaded or updated. Don't put such a jar atbin/validator_cli.jar: the wrapper takes that jar's version from the.versionfile it wrote when it downloaded the release, so a different jar there is started as if it were that release, and is replaced by the next one - Registry:
GET /tx-reg/choose-server- given the code systems a request involves and the client's default server, which one server to send it to, and a log of why. The same choice the Java tooling makes, for clients that aren't Java - SNOMED CT ECL: member filters (
^ refset {{ M ... }}) -effectiveTime(with a time value or set),active,moduleId(any sub expression) and the reference set's own fields (targetComponentId = << X,mapTarget = "...",mapGroup >= #2, ...), comma-separated and repeatable. A member filter anywhere other than directly after a memberOf constraint is a syntax error (INVALID_ECL) - SNOMED CT ECL: concept filters (
{{ C ... }}) -active,definitionStatus(primitive/defined),definitionStatusId,moduleId(a concept, a bracketed concept list or any sub expression) andeffectiveTime - SNOMED CT ECL: description filters (
{{ D ... }}) -term(match andwild:search terms, single or a set),language,typeIdandtype(syn/fsn/def),dialectIdanddialect(en-us, en-gb and the other aliases in the ECL specification) with acceptability sets,moduleId,effectiveTime,activeandid. The filters in one block apply to the same description; only active descriptions are considered unlessactiveis given - SNOMED CT ECL: history supplements (
{{ + HISTORY }},HISTORY-MIN/-MOD/-MAX,HISTORY (*),HISTORY (refset expression)) - the inactive concepts that the selected historical association reference sets associate with the result are added to it - SNOMED CT ECL:
ANDandORbetween refinements - between attributes (: A = x AND B = y,: A = x OR B = y, with brackets for nesting), within an attribute group ({ A = x OR B = y }) and between groups ({ ... } OR { ... }). Mixing AND and OR without brackets is rejected, as it is for compound expressions. Previously only,(conjunction) was accepted - SNOMED CT ECL: concrete values in refinements (
= #500,>= #1.5,!= #-1,= "text",= true). The importer now readssct2_RelationshipConcreteValues_*into a new cache section (cache version 19, after 18's alternate identifiers); editions imported before this report a concrete-value refinement as unsupported. The test edition cache is nowsct_test_20250909e.cache - SNOMED CT ECL:
!=in refinements (: A != X- at least one A whose value is not in X;[0..0] A != X- every A is in X), reversed attributes (: R A = X- the concepts that are the value of A on a concept in X), and,as a conjunction between expressions as well as between refinements - SNOMED CT ECL: comments (
/* ... */), top and bottom of set (!!> (...),!!< (...)), and attribute names that are expressions rather than a single concept (: << 762705008 = ...,: (A OR B) = ...,: ^ refset = ...,: * = ..., and the same after.in dotted expressions) - SNOMED CT ECL: alternate identifiers (
LOINC#14394-1,"LOINC#14394-1"): the scheme alias names an identifier scheme (LOINC = 30051010000102 |LOINC code ID|, as imported from the LOINC Extension) and the code resolves to the concept(s) carrying it, which then take hierarchy operators like any set. An unknown scheme, or a code that no concept carries, isINVALID_ECL, as an unknown concept is - SNOMED CT ECL: reference set field selection on member-of (
^ [targetComponentId] refset) is parsed, and reported asUNSUPPORTED_ECL(the selected fields, and many of the referenced components, are descriptions) rather than as a syntax error
Changed
- IPS: a clinical profile's page is the same for everyone. The required sections and entries are a table of Expectation, Section and Entry (
Code is system|code, orCode is ina value set, with[m..n]when the cardinality isn't 1..1). The rules about resources are a table of Expectation, Resource Set (Conditions where Code is ...) and Rule, in words for.exists(),.x.exists()and.x.y.exists(),.all(sameSubject()),.conformsTo(url)and.category.hasCoding(system, code). The administrator adds, edits and deletes the rules on that page one at a time, in a dialog, each saved by itself; the full editor is still there as Edit all - IPS:
fhir-validator-wrapper1.6.1 (was 1.5.0) - it sends/loadIGthe package in the request body (1.5.0 sent it in the query, which the validator ignored, so no national profile's package loaded), and starts validator 7.0.4 and later with-txTests, which the tx tests need - Terminology server: code systems, value sets and concept maps that both hl7.terminology and an endpoint's FHIR core package provide. THO's is still always the default for the url, but the core versions are no longer dropped: a reference that names a core version (
url|5.0.0) gets it, where THO doesn't have that version. Previously they weren't available at all, so a reference to one failed - including THO's own value sets that pin a core version (ValueSet/concept-property-type6.0.1 includesconcept-property-type5.0.0) - andvalueSetVersion=5.0.0found nothing - Registry: the "Register your own server" and "Documentation" links on the main page come from the master registration file (
registrationandecosystem-documentation), so each ecosystem has its own, and a link the file doesn't give is left out. They were hard-coded to the HL7 ecosystem's - Tx tests: the
loincmode (the LOINC suite) is run
Fixed
- VSAC: the cache folder
terminology-cache/vsacis created if it doesn't exist. Only its parent was being created (the folder name was passed as if it were a file name), so on a fresh install the VSAC database could not be created (SQLITE_CANTOPEN) and every VSAC value set failed - CodeSystem resources: the
notSelectableproperty is recognised as the tx-ecosystem requirements say - by theconcept-properties#notSelectableuri, whatever local code the code system gives it, and by the codenotSelectableonly where the code system doesn't declare that code with a different uri. A code system that usednotSelectablefor a property of its own had its concepts markedabstractin expansions and treated as not selectable (notSelectable-unprop-all,notSelectable-unprop-true). A filter on that code is still a filter on the code system's own property - LOINC:
$lookupreturnsCLASSas a string, the class name (e.g.CHEM), with the Part code for the class aspartCode; it returned the Part code as a code - SNOMED CT ECL: a hierarchy operator on a bracketed expression was silently dropped -
< (A OR B)returned A and B themselves rather than their descendants. It now applies to every member of the set, as do operators on*and on^ refset, which were previously rejected as unsupported - SNOMED CT ECL:
^on a reference set whose members are descriptions (a language reference set) returned an empty expansion. It is now reported asUNSUPPORTED_ECLwhen the reference set is named, and skipped when it merely falls inside a computed operand such as^ * - SNOMED CT ECL: an attribute name with no comparison (
: 363698007with nothing after it) was accepted by the parser and failed later as unsupported; it is a syntax error - SNOMED CT ECL: an evaluation error is now
UNSUPPORTED_ECLunless it is about a concept that does not exist (INVALID_ECL). It was classified by matching the error text, which filed= trueas a syntax error. A concept id that is not 6-18 digits is rejected by the parser - IPS: the pages link the module's browser scripts with their version (
?v=), so a browser picks up a changed script as soon as the server is restarted with it, instead of using its cached copy for up to an hour
Tx Conformance Statement
FHIRsmith v0.18.2 passed all 4565 HL7 terminology service tests (modes tx.fhir.org+omop+general+snomed+mimetypes+icd-11+icf+closure+loinc, tests v1.10.1-snapshot, runner v7.0.3)