Questions regarding snomed CT-mapping

I am wondering how to handle mapping to SNOMED CT when importing data from a source system into our CDR. More specifically how and where to store:

The original value from the source system
The SNOMED CT code
Potentially the SNOMED CT term

One possible approach is

Using DV_TEXT.value to store the original value from the source system.
Using TERM_MAPPING, with its associated CODE_PHRASE, as target term, to store the mapped SNOMED CT code, and possibly also the SNOMED CT term. We would also use TERM_MAPPING.match to indicate the relationship between the original text and the SNOMED CT concept.

Questions

  1. Is this a reasonable and recommended way to model terminology mappings in openEHR when wanting to preserve the original source value?

  2. Should we store both the SNOMED CT term and the SNOMED CT code, or is the code alone sufficient?

I have found the following threads, and in my understanding I belive they support our thinking? Gladly except any clarification on the content of these therads, and if and how the relate to my question. :slight_smile:
How to make mappings easier to query and to document in openEHR - Specifications / Terminology - openEHR
Storing codes of two external terminologies - Specifications / Terminology - openEHR

1 Like

I guess that Archetype designer does not support setting constraints on TERM_MAPPINGS, is that correct? Is it a planned feature? (ping @borut.fabjan or somebody else at Better)

@OscarKarlsson can you supply the template and the list of mappings that you want to be able to add to a template node? Then perhaps somebody OET/ADL savvy (or an AI) could show how to modify/enrich the raw ADL (or OET?) to include TERM_MAPPING based constraints.

Does any OET/ADL expert in the forum know it this would work fine in both ADL 1.x (OET?) and ADL2.x templates?

No, I don’t believe it does..
The attribute I want to map is ā€œrouteā€ (ā€œadministreringsvƤgā€).

In the template, I have added a value set to this attribute. The value set contains the different administration routes available in the source system. I have added it as a list of strings.

You can find the list and the mapping below.

Source system Terminolgy Code
intramuskulƤrt Snomde-CT 78421000
peroralt Snomde-CT 26643006
intravenƶst Snomde-CT 47625008
intrathecalt Snomde-CT 72607000
intraperitonealt Snomde-CT 38239002
intraarteriellt Snomde-CT 58100008
subcutant Snomde-CT 34206005
intrapleuralt Snomde-CT 372469009
sublingualt Snomde-CT 37839007
percutant Snomde-CT 45890007
intravesicalt Snomde-CT 372471009
intralesionalt Snomde-CT 372466002
topicalt Snomde-CT 6064005
intracutant Snomde-CT
IV infusion Snomde-CT 47625008
IV injektion Snomde-CT 47625008
IV infusor Snomde-CT 47625008
Oralt (apotek) Snomde-CT 26643006
Ɩgondroppar Snomde-CT 54485002
Mixtur Snomde-CT

OrdineradMedicinskOnkologiskBehandling_MedKurdag.opt (436.3 KB)

OrdineradMedicinskOnkologiskBehandling_MedKurdag.oet (19.7 KB)

OrdineradMedicinskOnkologiskBehandling_MedKurdag.t (1).json (197.3 KB)

So ADL2 supports someting like that if i remember.
Some vendors render Term bindings into the TERM_MAPPING, including Better.
Problem is there are no template based term bindings (adl2 does have it tho).
Something we need to tackle this year.

  1. Yes, this seems like a good approach for this use case. At least theoretically.
  2. There’s some downsides to that, basically redundancy. So as a base line I wouldn’t. Unless you think one of the synonyms has some value over the fully qualified name, then you could explicitly persist that. But it may be useful for practical reasons. Not terrible to do either I would say.

I have limited practical experience.

What adl2 adds is, term mapping in the template, I don’t think you need this for this use case. is ā€˜term bindings’. And ā€˜term bindings’, which is mostly useful for modelling and translating archeype node ids (e.g. an observation or an element) to snomed codes, so you can combine querying on snomed in AQL. Also doesn’t seem too relevant for your use case.

I can see this useful for replicating a ā€œuserSelectedā€ kind of thing: what the user was presented on the screen when chose the snomed code. Could also be useful for translations

1 Like