Binding archetypes to SNOMED as an ontology?

The Norwegian archetype governance is working with the Norwegian SNOMED CT NRC to bind a set of vital signs archetypes to SNOMED CT. Initially we were both thinking the same way with regard to how this should be done, with Observable entitiy and Attribute SNOMED terms beng bound to data elements, and other concept types such as Finding, Physical object, Body structure for value sets. We didn’t have an agreement on how or if the archetype top level nodes should be bound.

Lately though, they’ve pivoted into a new approach, where they want to bind the top level node of the archetype (at0000) to an Observable entity (for example 75367002 | Blood pressure (observable entity) | for the Blood pressure archetype), and data elements in the archetype to an attribute of the Observable entity or one of its children (for example 723228002 | Systolic phase (qualifier value) | for the Systolic blood pressure data element).

We think this is a misrepresentation of the semantics of the archetypes’ data elements. It feels like trying to recreate the SNOMED CT ontological structure within the archetypes, which isn’t the intent of archetypes, or indeed any other information models.

We’re struggling to argue why this is a bad idea though. Does anyone else have any thoughts about this?

1 Like

To answer this one need to have good clinical-cardiac understanding and know quite a bit of SNOMED-CT and openEHR archetypes. I will try to give my cents anyway:

At the top-level I think blood pressure as an archetype fits well with Blood pressure (observable entity).

And then, since systolic and diastolic is optional in the archetype one might say that we can represent both the Systolic blood pressure (observable entity) and the Diastolic blood pressure (observable entity) in the same entry/record. Based on this I would choose these as the SNOMED-CT terms to bind to the elements.

I think it’s not right to go with the qualifier value:

It contains a wide range of concepts that provide attribute values used in the definitions of other concepts. These values can also be used in expressions to refine the meaning of a concept or in the appropriate fields of a health record to add additional information.

The qualifier value is IMHO more an SNOMED-CT way to express attributes to make complex concepts. With openEHR (and also other information models) we don’t need this. This is already taken care of by the reference model (RM) and the arhcetype/information model (IM).

I also think that Systolic phase (qualifier value) is another concept than the Systolic blood pressure. IMHO the systolic phase is an attribute related to the cardio vascular process phase. The systolic blood pressure is a subset of information related to the outcome of this phase. As a non-cardiac expert I think they are not the same.

I look forward to hear more views on this very interesting topic!


I think you are right about this, the archetypes should not recreate SNOMED CT structure.

But there is a need to have term binding in archetypes, and unfortunately sometimes the requests are different. See for instance your requirements from Norway, vs current term bindings of the archetype vs dutch gov requirements of (see their tables). I guess these are strong requirements per usecase, wheres the archetype intent is a bit more generic. Is there a solution that facilitates this, even tough the requirements might not be (completely) correct from openEHR perspective?

Other than that, @bna proposal seems right to me, but I don’t have terminology related background.

1 Like

I think the approach being suggested by NRC is not correct. I took the opportunity to discuss with a UK SNOMED-CT terminologist and he agrees.

THe SNOMED-CT concept models are primarily arranged around models of biomedical entities - a systolic blood pressure reading is a kind-of blood pressure is a kind of pressure etc.

That is not what we are doing in openEHR (or indeed FHIR) - we are representing parts of the patient record, not the patient’s physiology/biology etc at least not directly.

These worlds intersect but I would be saying that archetypes are generally record artifacts in SNOMED terms with something like systolic being an Observable. This pretty well lines up with what has happened in any work I have done in the UK and I am pretty sure is what is happening with comparable FHIR bindings. If that Observable (inside SNOMED CT) is fully defined using the systolic qualifier, that is absolutely fine - I asm not sure of the value but that’s not my problem!!

It is an important discussion which should probably go back to SNOMED International - certainly a wider view.


@sebastian.iancu - Interestingly from what I can see of the Zibs model, they use SNOMED valuesets but not to bind to the node names (which is the issue we are discussing here). The FHIR models look as if they actually use LOINC codes as per US Argonaut standards.

These are the UK bindings which I am pretty sure are identical to those recommended by SNOMED International.

72313002|Systolic arterial pressure (observable entity)|

but note that this must exclude various sub-terms

“<<271649006|Systolic blood pressure (observable entity)|
MINUS (<<716579001|Baseline systolic blood pressure (observable entity)|
OR <<814101000000107|Systolic blood pressure centile (observable entity)|
OR <<315612005|Target systolic blood pressure (observable entity)|)”

This is the big problem with trying to apply SNOMED bindings to node names (whether openEHR / FHIR or any other model of a ‘record’- there is not a 1:1 correspondence between the biomedical categories that SNOMED uses and the record structures that we need. There are places (like Labs) where use of terminology is really helpful, indeed mandatory but this ends up being very hard work.


Hi All
I remember when I first had a go at this about 13 years ago with the BP archetype (it was new then) and had a room full of SNOMED experts advising me. They thought I used the wrong codes, debated it for 45 mins, took it off line and got back to me 3 months later and said they thought the codes I used were the most appropriate.

The hierarchical approach to use of codes is not appropriate in the openEHR frame - and probably wont work for FHIR either. Using the term blood pressure as a subsumptive term for all these measurements is also a major mistake. We had some good slides with Alan Rector in the old days to show the layout of the semantics. Ian - do you have those?



I were preparing to write an answer, but then realized that Bjørn and Ian already had written what I plan to write.

I therefore only add a simple illustration: If I would like to retrieve all blood pressure measurements in a patient’s health record (independent of if it is recorded using the blood pressure archetype or not) I would search for all observations that are concept bound to the concept 75367002 | Blood pressure (observable entity) | or any of its descendants. If the usual concept binding strategy (supported by at least Silje, Bjørn and Ian) had been used I would succeed.

If the other concept binding strategy (proposed by the Norwegian SNOMED CT NRC?) would be implemented I had to list all possible qualifier values that might be relevant for a blood pressure observation, including 723228002 | Systolic phase (qualifier value) |, 723229005 | Diastolic phase (qualifier value) |, 723241003 | v wave (qualifier value) |, in my query. The query would then retrieve blood pressure measurements but also all other kinds of measurements done during an explicitly stated cardiac cycle process phase. This is not how blood pressure measurement retrieval should work in a health record.

(I also believe that modelling 315612005 | Target systolic blood pressure (observable entity) | as a child to 315612005 | Target systolic blood pressure (observable entity) | is a modelling error. If the same apply to 716579001 | Baseline systolic blood pressure (observable entity) | I don’t have enough clinical knowledge to assess.)



Thanks everyone for your answers, I feel more confident we can clear this up now! Especially @mikael’s example makes it very clear how the different strategies would work in an actual health record. :smile:

I also noticed @ian.mcnicoll’s suggestion that archetypes generally are record artifacts in SNOMED terms. I interpret this as if you bind archetype top level nodes (at0000) to SNOMED CT terms, they should generally be bound to terms from the Record artifact subtree. I agree with this, because to my mind archetypes are groups of data elements constructed for recording information about a clinical concept, and not the clinical concept itself. Do anyone else have any opinions on this?

A few comments on this interesting topic …
I personally think that the first challenge here is to understand the key use cases for node-level terminology bindings, and from this determine the types of binding that would be most useful in these use cases. Possible use cases include:

  • Data capture - This use case primarily requires value set bindings to restrict the valid values recorded.
  • Retrieval and querying - Similarly, this primarily requires value set bindings. However, there are a few situations in which node-level bindings can be useful - e.g. using the SNOMED hierarchy to query using more general concepts, such as “Find me all the data in my patient’s record that is a type of |Cardiovascular measure|” (e.g. a |Blood pressure|, |Heart rate|, …) . The other type of terminology binding that is useful for this use case is an expression-template binding - these allow you to transform semantically-similar data stored in different ways into a consistent representation for querying (e.g. Problem=|Hip fracture|, Body site=NULL / Problem=|Fracture|, Body site=|Hip|) - (see
  • Archetype library management - This primarily requires model meaning (i.e. node-level) bindings, and is in some ways similar to the ‘retrieval and querying’ use case. These bindings allow you to do things like - (a) Find me all the archetypes in my archetype library that are a type of |Cardiovascular measure|, (b) Find me all the archetypes in my archetype library that are semantically similar to this archetype (with ranking), (c ) Validate the specialized archetypes against their parent (with respect to their meaning)
  • Semantic interoperability - Message conformance testing requires value set bindings; Sharing data recorded using different models (and different ways of populating the same model) may require expression-template and/or model meaning (i.e. node-level) bindings.

In terms of node-level binding to data elements:

  • I agree with the suggestions that SNOMED CT attributes (e.g. 363698007 |Finding site (attribute)|) and SNOMED CT |Observable entity|s (e.g. 72313002 |Systolic arterial pressure (observable entity)|) are generally the most appropriate, with respect to the use cases above. Depending on the level of precoordination allowed in the ‘focus’ data element (e.g. the condition_code), it may also be useful to accompany any SNOMED CT attribute node-bindings with an expression-template binding to demonstrate how data can be transformed into a canonical format for querying.
  • I do not agree with node-level binding to the |Qualifier value| hierarchy (e.g. |Systolic phase (qualifier value)|). I can’t think of any examples for which this would be a good idea.

In terms of node-level binding to archetypes:

  • While I agree with the comment made above that these could be considered a type of |Record artifact| (e.g. a subtype of |Record entry|, |Record organizer| or |Record type|), I’ve only ever found this useful at the Composition/Template level. For example, binding a ‘Discharge summary’ composition to the concept 373942005 |Discharge summary (record artifact)| allows you to query your archetype/template library (or patient records) using the record artifact hierarchy. It has been argued that there is no point in replicating the archetype hierarchy as a record-artifact hierarchy - and while I agree with this for most entry and section-level archeyptes, I can see the benefit in doing this just for compositions/templates because (a) It allows you to query using abstract ‘grouper concepts’ that are in your SNOMED hierarchy, which don’t necessarily correspond to a single archetype/template (e.g. |Clinical report| or |Summary report|), (b) It enables you to use an approach that is consistent with querying archetypes for entries and sections.
  • For node-level bindings to entries, I think it’s unnecessary to create a new |Record artifact| for each of these. Instead, I think it’s more helpful to the use cases above to consider the node-level binding as indicating the ‘focus’ of the data it records - i.e. a node-level binding to X says that the entry “records data about X”. In the example given, the focus of the ‘Blood pressure’ archetype is a 75367002 |Blood pressure (observable entity)|. This is the clinical concept about which data is being recorded in the archetype … and knowing this can be really useful for querying (using the hierarchy and defining relationships of |Blood pressure|).
  • I would propose that, in general, an ‘Observation’ Entry archetype should have a node-level binding to (i.e. it ‘records data about’) an < |Observable entity| OR < |Assessment scale|; an ‘Action’ or ‘Instruction’ Entry archetype should have a node-level binding to a < |Procedure| MINUS < |Administrative procedure|; and an ‘Admin Entry’ should have a node level binding to a < |Administrative procedure|. ‘Evaluation’ Entries may be a bit more difficult to restrict to a single hierarchy … but I would suggest that < |Clinical finding| may be a good start.
    Note 1: “<” refers to the ‘descendants of’ (or subtypes of) the given concept.
    Note 2: Binding to explicit context (e.g. for family history) is also very important to consider, |Finding with explicit context| and |Procedure with explicit context| may also be required above. There is an argument to keep the context binding separate … but that’s a discussion for another day.
  • The more complex NHS binding mentioned above (as Ian suggests) looks like a value set binding rather than a node-level binding - based on the use of ECL and the fact that FHIR represents this in the Observation.code. While this could arguably also be used as the node-level binding, this level of semantic specificity is probably not needed in most of the node-level use cases above.

I haven’t seen anyone here mention node-level binding to clusters (or data groups) within an archetype - where these hold no significant clinical semantics, node-level bindings may not be required.

Apologies for the long post. I hope that some of this was helpful.
Kind regards,


On the contrary, thank you very much for this long and very thorough post! It is indeed very helpful! :raised_hands:

1 Like

Hi Mikael,

I think the SNOMED grammar (I’m not an expert) suggested that these should be *excluded *from the parent termset. I agree with the decisions there for now but I think I would rather have seen a set of agreed inclusions .

1 Like

Dear All,

As you may know, there is a joint SInt+HL7 “SNOMED on FHIR” project which has produced a number of FHIR profiles, BP among them. NHS has participated in this work hence the similarity between the NHS and the SNOMED on FHIR bindings.

While appearing in the systolic phase is a differentia of a systolic BP, choosing one such differentia for node binding seems odd and it is hard to see how that could be done reproducibly over time and over different use cases. Which differentia is to be chosen next time? What will be the binding for (core) body temperatures?


1 Like

If the node in question is a “question”-like data element or a panel/battery of such nodes, a better practice would be mapping it to a LOINC code rather than a SCT code. One of the reasons is that there is a agreement between LOINC and SCT. And SCT codes are just like “answers” to those “questions”.

Related Links:

1 Like

Standards often overlap with each other. For example, overlaps among openEHR Achetypes, CIMI and LOINC.

That would only make sense if the BP archetype was a formal description of the ontic Blood pressure entity, i.e. it was an ontological artefact. However, it is quite different; ontologically, it represents ‘recorded observation of (systemic arterial) blood pressure’, which is an epistemological artefact, quite a different thing. You already know this of course, but a clear, simple explanation of these two types might help you in putting people straight:

  • ontological artefact: an artefact describing a universal, or type of thing in the real world, e.g. blood pressure, diabetic person, etc; real-world individuals are instances of these types;
  • epistemological artefact: an artefact describing the information (philosophers would say ‘knowledge’, but this tends to get confused in the biosciences with research-generated knowledge) obtained as the result of some interaction with the real world, such as observation, inspection; and/or some internal reflection on already gained information, such as assessment, request, etc.

For fun, you could refer them to this old post :wink:


Indeed, this is an interesting post. And more two years ago, I seriously read it by fully translating it into Chinese. Without your mention above, I barely remember all this. And I’m reviewing it and my translation now. So highly recommended for those interested.

1 Like