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.6.6 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 documents the expectations for servers in the terminology ecosystem around language support. Servers in the ecosystem must support the minimum features in this page around validation, whether or not the affected code system has more than one language supported or not.
Servers are also generally required to support CodeSystem supplements for language packs, though this may be waived for some code systems with their own alternative translation support and governance on discussion with HL7.
Clients might want to do one of three things:
Clients can specify the return displayLanguage in one of four places:
The first three may contain multiple languages with weights per the Accept-Language specification; which to use is a matter of operational control on the client. ValueSet Language is a single language code as described in BCP-47.
From a server point of view, the order of priority for the displayLanguage parameter is
request parameter
> valueset-extension
> HTTP Header
> ValueSet.language
Value sets may them selves make rules about the language behavior using a combination of:
The correct responses depends on the interplay between these various parameters, and are effectively specified by the test cases.
the tests here test out these combinations. To test this, we define four code systems, all basically related to each other:
Then a set of value sets are defined on this, that include all codes from one of those code systems. Some of the value sets specify the language of expansion (discussed below)
The first four tests simply echo the four code systems back with no language rules
Each of the tests below comes as a set of variants, depending on how the language is specified:
-mixed: mixing them up (testing precedence)
Having done these, we turn to the really interesting tests, switching the display language. These tests use the weight feature of the language,
specifying to return en: displayLanguage: en
. By default, the wildcard is understood to be present at some low weight: displayLanguage: en, *; q=0.1
.
This results in the client getting displays in the language of it's choice, if there are any, and otherwise falling back to whatever is available.
If the client wants to insist that it only get displays if they are in the specified language, it has to turn the wild card of explicitly:
displayLanguage: en, *; q=0
For these tests, it's anticipated that the parameter handling tested out in the previous tests is working, so instead, these tests come in three variants:
-hard
Finally, we turn to an efficiency concern - restricting the set of designations that we get back using the designation parameter. We asked for designations, but we may only want a subset of the full set available. We could filter them on the client side, but it might be quite lot of traffic.
The validation use cases around language include tests for language specified as an HTTP header, as a value set parameter, a value set language, and for various combinations of language weights.
Note that by default, the wildcard is understood to not be present.