The problem I’m facing is that, on one hand, HL7 lists externally managed terminologies here: External Code Systems - HL7 Terminology (THO) v6.2.0.
However, when looking at the HL7 Terminology artifacts, we see many other resources—for example, this one: https://terminology.hl7.org/CodeSystem-HPO.html—which also appears to be externally managed, but isn’t listed as such. As I understand it, not everyone is familiar with what CodeSystems are, so HL7 sometimes maintains them internally as duplicates or proxies.
The core issue is that the CodeSystems are internal components of HL7 Terminology.
For example, we have http://terminology.hl7.org/CodeSystem/v2 as a general V2 terminology umbrella, but then also http://terminology.hl7.org/CodeSystem/v2-0211 as a separate CodeSystem.
In general there are 4 terminologies in HL7, http://terminology.hl7.org/CodeSystem/v2, http://terminology.hl7.org/CodeSystem/. http://terminology.hl7.org/CodeSystem/v3, Index - FHIR v5.0.0 which are now all part of the terminology table.
We need to manage these distinctions properly. The options I considered
-
Adding something like 0211::CODE to the defining_code
-
Formatting the namespace: HL7V2-0211 or HL7V2::0211
-
Introducing a new subterminology or metadata property to distinguish terminology subgroups in TERMINOLOGY_ID.
I personally think all of which are valid, except for the defining_code cause it interferes with the code. Namespaces may end up ppl doing mistakes + you need to be aware of it, but is much better to be standardized. I prefer that one using ::, since we control these namespace. We could also add a list of them additionally to the terminology json, for ppl to use. Mostly these terminologies are administrative in nature, like status. Therefore, i think this shouldnt stop us in moving forward.
Adding them as different terminologies maybe an option, laborious but we would cover all. Adding another RM field feels too intrusive (just to cover the CodeSystems). We could use the version also to store the CodeSystem if we wanted.
Given this fact and the amount of terminologies already covered in the CodeSystem website just using HL7 ones maybe also an option, but problematic with legacy data + the reasons we discussed above (which anyhow is badly standardized, can we count on SNOMED-CT being used ?!).
Update of the table now on github using the :: for the namespace as a suggestion