2025-02-18 - SNOMED on FHIR Meeting (TS & TB)

2025-02-18 - SNOMED on FHIR Meeting (TS & TB)

Date 20:00 UTC on Tuesday 18 February 2025 - 60 minutes.   

Objectives

  • FHIR Terminology Services and Resources

  • FHIR Profiles & Terminology Binding

Meeting Details

Onlinehttps://snomed.zoom.us/my/snomedhl7?pwd=UCtmRkdHZ3pVNDB1MnJuZmg2b3hUZz09

Passcode (not required when using link above): 32075

Chatpublic-snomedintl.slack.com # snomed-hl7-fhir (ask for invite!)

Zulip Chat: https://chat.fhir.org/#narrow/stream/179202-terminology

Attendees

@Alejandro Lopez Osornio @Suzy Roy @michael lawley @Rob Hausam @Daniel Karlsson (Unlicensed) @Andrew Perry (Unlicensed) @Jay Lyle 

Apologies

@Peter Williams 

Meeting Recordings

https://drive.google.com/drive/folders/1puHQHB-KM9fYK9tymCjWpY0T9Z39iHOX

Discussion items

 

 

 

 

 

 

 

 

1

Description

Mins

Owner

Notes & Actions

2

Welcome and introductions

2

@Peter Williams

@Rob Hausam

Recording, notes & attendance.

Check questions in Zulip and SNOMED International #snomed-hl7-fhir

Next Time: Common Terminology Model (eg reconciling SNOMED / ICD / LOINC )?   

Also FHIR / OpenEHR collaboration (see Zulip discussion, particularly FHIR Questionnaires). Main work in reconciling lower level data types.   See https://chat.fhir.org/#narrow/channel/179174-openehr/topic/Transforming.20archetypes.20to.20Questionnaire.20and.20Logical.20models

3

Previous Meetings

2

@Peter Williams

@Rob Hausam

4

Other Meetings

10

@Peter Williams

@Rob Hausam

Recent Events:

HL7 January Connectathon 14 - 16 January (IPS Track (30 attendees), presentations from Canada)

HL7 January 2025 27 - 30 EST  Virtual.  

HL7 Europe WGM - Lisbon - 10-14 Feb 2025 (Terminology Track, 2 Servers running.  See https://www.hl7europe.org/hl7-working-group-meeting-2025/ )

Future Events:

SNOMED International April 6 - 10 2025 Oslo. SNOMED on FHIR afternoon of Sunday 6.

HL7 May 10 - 16 Madrid + Connectathon (Potential for Terminology Track if sufficient interest - PJ sees need to test Concept Map in R5 and R6)

Dev Days 3 - 6 June 2025 Amsterdam

Other Regular Meetings:

HL7 Group TSMG (meeting Wed PM ET every other week) - Terminology Service Management Group (HTA Thursday AM is now a subgroup of the TSMG).   2022-05-17 RH Joint session with Vocab at last business meeting.  2022-06-14 Group has approved minimum capabilities for terminology servers.  Now looking at bigger/better HL7 Terminology Server 

HL7 Cross group projects : CDA & FHIR Translation Meetings (weekly): @Jay Lyle Going well, there is an implementation guide and the group is doing connectathons. May in Dallas and Minneapolis.  See https://confluence.hl7.org/display/CGP/C-CDA+to+FHIR+and+from+US+Core+Mapping

Hospitals on FHIR, Connectathon, FHIR User Day

5

Common Terminology Model

(eg reconciling SNOMED / ICD / LOINC )

 

@Peter Jordan (Unlicensed) 

RH Is this considering content or structure?  We express SNOMED CT (and therefore LOINC) in many different formats...given that there are  many formats, could there be a common one?    We already express all 3 in FHIR, with some loss of detail.

Reconciliation of datatypes probably too low level for a common model (necessary for implementation however).

Reconciliation of content would start with top level hierarchies, eg lab results appearing under < 363787002 |Observable entity (observable entity)|. ICD might approach this area with procedure codes.  

6

Snowstorm for IG Tooling

 

 

Planned work to bring Snowstorm up to spec for use with IG Tooling.   PWI to check if project plan has been confirmed.

Broker should route requests to the appropriate server, once certified / verified / registered.   Each HL7 affiliate should host their own national extension.   See https://confluence.hl7.org/display/FHIR/Publishing+terminology+to+the+FHIR+Ecosystem

Links to question of LOINC Extension and how that would work with FHIR, given that LOINC is already available in it's own CodeSystem.  Suggestion that a LOINC Identifier used eg in ECL would be immediately expanded to be the LOINC SCTID (see bottom of this page: 6.1 Simple Expression Constraints )

7

Case significance

 

@michael lawley 

Surfacing case significance.  Came about in the work done in AMT V4 where capitalisation was done to bring terms into line with the International Edition.   Validation was then failing as pre-existing terms were being supplied using the wrong case and this caused a matching failure.

Would this be best done via an Extension - eg on Concept.Designation which could appear as both on the CodeSystem and $expand

ML Case significance is part of the rules of the CodeSystem.   Note that the FHIR Spec allows for the case sensitivity to be determined by the CodeSystem itself.   PWI Notes that Snowstorm in general does case insensitive matching (Ontoserver is case sensitive - specifically in $validate-code) This has two parts:  1) correct behaviour in validate-code (ie check case where case has been specified to be significant) and 2) to tell the user what the case significance is so that they know when it is possible to modify the case of the term (and also for lexical operations like building narrative structures).

Next Steps:  CSIRO to propose an extension for review.

Checking position of the group: 

Open Question: Should / how should the CodeSystem-default be asserted / indicated in a ValueSet expansion (bearing in mind that it might contain codes from multiple different CodeSystems)

2024-11-12 ML Notes: Case Significance

  1. No way for a CodeSystem to indicate whether display/designations are case-significant or not (to affect $validate-code behaviour)

  2. For SNOMED, this varies on a designation by designation basis

  3. For SNOMED, there are three possibilities:

       1. Case sensitive

       2. Case insensitive

       3. Initial character case insensitive

Proposal:

  1. an additional (optional) element on CodeSystem to indicate the default / global behaviour. If no value, then defaults to case sensitive (safest option).

  2. an extension on CodeSystem.concept.display, CodeSystem.concept.designation.value, ValueSet.expansion.contains.display, and ValueSet.expansion.designation.value to indicate the specific behaviour. If no extension, then defaults to CodeSystem’s default.

  3. Also need a CodeSystem for the above three cases OR re-use the three SNOMED codes

  4. SNOMED CT SHOULD assert Case insensitive as the default?

Group felt that case should not be considered during searching / filtering.   Should be checked for $validate-code and specifically fail.  Data needed in $lookup and $expand for use cases where text is compiled into narrative or post coordinated term.    Related question around how to validate diacritic marks (café).   PJ notes that in UCUM the codes themselves are case sensitive, but this discussion only relates to designations.  ML Question of case sensitive $validate-code should go to a bigger audience.

8

FHIR Observation Observation VS for Vital Signs

 

@Rob Hausam 

 

HL7 Orders and Observations Workgroup looking at Observation profiles for Vital Signs and Value Sets for what is considered to be a vital sign and need to consider SNOMED CT (possibly also NPU) for analogous value sets.  DK NPU have looked at this - suggests using the superset of this material and allowing users to work with a cut down set.  Concerns that this might need to be context specific.

9

Tx Compatibility

 

@Peter Jordan (Unlicensed) 

@Kai Kewley 

 

Discussion on work being done to make Snowstorm compatible with Tx

https://chat.fhir.org/#narrow/stream/179202-terminology/topic/Terminology.20server.20requirements.20for.20IG.20builds.2E.2E.2E

1 month of effort "pencilled in" for Q2 2025.   Also interest from St Bart's Hospital.

10

Obtaining additional Description details.

 

@Daniel Karlsson (Unlicensed) 

Ways to obtain Description SCTIDs.  There is an extension to allow this: https://build.fhir.org/ig/HL7/fhir-extensions//StructureDefinition-coding-sctdescid.html but is there a way to switch it on/off at runtime eg additional parameter on a $expand operation?

ML Ontoserver does not support FHIR extraction of description ids and aren't keen to (although some requests have been received in this direction).  SNOMED maintenance will be done via RF2, so IDs accessible that way.

11

 

 

@Jon Zammit 

 

ECL Binding to Data Entry forms - picking up unwanted terms due to also searching text definitions.   Suggest skipping them as part of the FHIR VS expansion filter.

ECL (if it were possible to use it in this way) would let you move your term search earlier in the process and restrict to SYN and FSNs:   56265001 |Heart disease|  {{ term = "heart", type = (syn fsn) }}

MAINT-2665 raised so that default FHIR $expand filter behaviour will be to only search SYN + FSN, but we should clarify the ECL spec on this as well.  See https://build.fhir.org/valueset-operation-expand.html ML : Ontoserver puts text definitions into the definition field, does not treat as a description - see CodeSystem $lookup out parameter:  https://build.fhir.org/codesystem-operation-lookup.html (DL asks if we could have it out in a VS$expand.   ML suggested we could specify definition in the property input parameter (see also VS.expansion.property)).

Archive.

12

Translation in Code System Supplements

 

@Daniel Karlsson (Unlicensed) 

@michael lawley 

2024-08-06

Translation in Code System Supplements.   See Zulip discussion 

https://chat.fhir.org/#narrow/stream/179202-terminology/topic/CodeSystem.20supplement.20use.20cases

See also https://build.fhir.org/ig/FHIR/ig-guidance/languages.html#creating-a-language-pack

13

Observation and Device Data

 

@Marie-Alexandra Lambot 

@michael lawley 

2024-08-06

MAL Belgium wants to exchange Continuous Glucose Monitoring data using FHIR, specifically, Percentage of time in set ranges was a difficulty.

ML Argonaut CGM project ongoing

https://chat.fhir.org/#narrow/stream/179175-argonaut/topic/CGM.20Project 

https://build.fhir.org/ig/HL7/cgm/

https://build.fhir.org/ig/HL7/cgm/StructureDefinition-cgm-summary-times-in-ranges.html

14

Document the use of an issue type to return incomplete validation

40

@Peter Jordan (Unlicensed) 

@michael lawley 

@Daniel Karlsson (Unlicensed) 

HL7 Jira ticket: https://jira.hl7.org/browse/FHIR-44810

The group discussed the topic and documented the discussion in the HL7 Jira ticket: https://jira.hl7.org/browse/FHIR-44810?focusedCommentId=231490

UPDATE June 25 2024: Notes from HL7 WGM in May:  Attendees agreed that we'd like more feedback from the SNOMED on FHIR committee on how this would work in practice in all the cases where it would apply to SNOMED CT.  Input on whether or not machine processable responses should be supported would be appreciated as well.

TBD: Discuss in future calls with @Kai Kewley and @michael lawley present

2024-08-06: No changes on HL7 Jira ticket. Assigned to Grahame G.

15

Observations vs Questionnaires

 

@Marie-Alexandra Lambot

Plans for patients in crisis (eg what can be done, who should be contacted, what does the patient accept).  Best way to capture in FHIR - CarePlan or Questionnaire?   Similarly for scales - each point on the scale is an observation.   

ML suggested using the questionnaire to capture the information and then transmit it via an Observation. Also see https://smartforms.csiro.au/dashboard/questionnaires - open source Questionnaire rendering with SDC support

ALO See https://build.fhir.org/ig/HL7/sdc/extraction.html.  Scores can also be computed.   See also 

https://lhcformbuilder.nlm.nih.gov/ and https://ihtsdo.github.io/sct-implementation-demonstrator/#/questionnaires

JZ Terminology Binding see Terminology Binding Principles

(MAL - Side discussion on documentation generation (click tracker with screenshot capture) - Datango.   What is @Anne Randorff Højen using for Simplex user guide?)

16

MedicationRequest Question

20

@Marie-Alexandra Lambot 

There are questions here currently regarding the Medication "line" (medication Statement I think in the international models) / Medication request / Medication dispense. One is, is there a way in FHIR to somehow link two medications to say that people have to take one drug X hours after the first one? 

How can we in MedicationRequest.dosage instruction express that a drug must be taken x hours after another drug which is in another medication line/Request? Can we somehow group two prescriptions to link them and give "global instructions" for both? Or would that pose other problems?

DK (update 31 July 2024): See also IG HL7 Europe FHIR IG for Medication Prescription and Dispense - https://confluence.hl7.org/display/HEU/Medication+Prescription+and+Dispense%2C+Edition+1 (FYI @Marie-Alexandra Lambot )

17

General discussion on work being done in EU

6

@Marie-Alexandra Lambot

@Daniel Karlsson (Unlicensed) 

See https://build.fhir.org/ig/hl7-eu/laboratory/branches/master/index.html

https://github.com/hl7-eu/laboratory

https://confluence.hl7.org/display/HEU/Laboratory+Report+Implementation+Guide%2C+Edition+1

https://build.fhir.org/ig/hl7-eu/xpandh-hdr/

ML: https://csct.be/projects.html

https://nuva.mesvaccins.net/

2023-09-19 ML CSCT now has official "Not for Profit" status as an entity.

2024-05-29 RH The HL7 Europe Laboratory Report FHIR IG will be balloted as a universal IG either in Sep 2024 or Jan 2025.

2024-07-31 DK See also IG HL7 Europe FHIR IG for Medication Prescription and Dispense - https://confluence.hl7.org/display/HEU/Medication+Prescription+and+Dispense%2C+Edition+1 

18

Identifying Modules - is most dependant the right thing to do?

 

@Jon Zammit 

Problem that changing the Canadian identifying module to the most dependant one (French Module) is not recognised by Snowstorm

The "most dependant module" idea doesn't continue to hold when we think about extensions that have multiple, equally dependant modules.   Also some external content (like LOINC) could be used by multiple countries and be the most dependant module, but could not be used as an identifier - it would no longer be unique.

2024-07-09 Review the guidance in the extensions practical guide to define how to select the identifying module, even when is not the most dependent module. The agreement of the group seems to be to separate the notion of package composition from module dependency. The terminology server will use the provided module as an identifier of packaged, which contents are defined elsewhere. The extension maintainer will choose which moduleId will identify his package, and needs to make this available to implementers. Maybe this is a use case for annotations. 

Alternative approach AP: NHS has created a composition module, that is created only for the purpose of referring to the other 5 NHS modules, and be used as the identifier of the package.

19

Model Binding

 

@Jay Lyle 

Model Binding, specifically model binding for elements within resources (rather than values).

Previous binding discussions:   Bindings to FHIR Clinical Resources. See also terminology binding

See demo which shows various elements in FHIR resources and how those would be populated from a SNOMED concept:  https://ihtsdo.github.io/sct-implementation-demonstrator/#/context. but working back from that, we could identify the SNOMED Attribute Types, which are relevant for the various elements in each resource.

JL see https://hl7.org/fhir/R4/condition-mappings.html#sct-attr or, more challenging: https://build.fhir.org/observation-mappings.html#sct-attr

Also discussion on negation in Condition, Allergy and Family History (see 160266009 |No family history of clinical finding (situation)|)

Also on the subject of the purpose and value of putting time into this:  if mapped to the appropriate SNOMED Attribute Types in compatibility with the Concept Model, that would allow an automatic transformation to a Post Coordinated concept - or possibly identifying as a Pre-coordinated one.

20

New Slimline Agenda 

 

@Peter Williams 

See discussion pages for links to archived discussion:  Discussions

21

Problem lists in FHIR

 

@Marie-Alexandra Lambot 

How are Problem Lists (aka concern list) shared in FHIR? 

PJ Transfers of patient notes / records contain problem lists.   Suggestion to use Observations.

AP Shared https://developer.nhs.uk/apis/digital-maternity-1-0-0/explore_problems_list.html based on List Resource

Background reading: Medical Records That Guide And Teach also "Medicine in Denial" (also updated - 

"Ending Medicines Chronic Dysfunction")

22

Affiliate license

 

@Peter Jordan (Unlicensed) 

Questions around the Affiliate license in Zulip 

See affiliate license - https://www.snomed.org/_files/ugd/900274_689013e9e0c74d23892abe9caee02612.pdf

2024-07-09 New section in IHTSDO Freshdesk with Licensing FAQs: https://ihtsdo.freshdesk.com/support/solutions/4000002199

23

Exposing Relationship Grouping in FHIR

 

@Peter Jordan (Unlicensed) 

@michael lawley 

Zulip discussion on exposing relationship role grouping: https://chat.fhir.org/#narrow/stream/179202-terminology/topic/SNOMED.20relationship.20groups

Ontoserver uses their own extension: https://ontoserver.csiro.au/docs/6/ext-subproperties-cs.html

OWL representation groups explicitly with 609096000 |Role group (attribute)|

ALO Since you already have access to the normal form as a property, role grouping could be determined from this.

24

Asserter / recorder

 

@Marie-Alexandra Lambot 

How should we deal with the situation where the person entering data into some system may not be responsible for the record.

PJ See Immunization Performer - each one has an action and an actor

https://www.hl7.org/fhir/provenance.html ( fully featured & flexible but heavy handed approach)

See also https://www.hl7.org/fhir/R5/participant.html and https://build.fhir.org/procedure.html

R6 (unchanged from R5) states:  9.2.4.8 Use of Condition.asserter 
If the data enterer is different from the asserter and needs to be known, this could be captured using a Provenance instance pointing to the Condition. For example, it is possible that a nurse records the condition on behalf of a physician. The physician is taking responsibility, despite the nurse entering it into the medical record.

DK Would expect to see multiple Condition resources where multiple parties assert a diagnosis

JL See discussed list of possible participants https://confluence.hl7.org/display/CGP/Provenance+Domain also (DK) see ValueSet https://hl7.org/fhir/R5/valueset-participation-role-type.html

Group agreed that the current wording in the specification is unclear.

25

 

 

 

Introduction to SNOMED with FHIR YouTube recordings of Dev Days Presentations:

https://www.youtube.com/watch?v=40Lvv2t8OxU

https://www.youtube.com/watch?v=x6UqJtcJwmQ

https://www.youtube.com/watch?v=8cXRAtNoSvc

26

SNOMED Concept Model & Resources elements mapping

 

@Jay Lyle 

Information on Mapping SNOMED Concept Model to FHIR Resource properties

@Andrew Perry (Unlicensed) There is info in the FHIR home page: Bindings to FHIR Clinical Resources There discussions in termInfo about semantic overlaps but they were not exhaustive. UK has specific advice about what attributes to avoid.

27

Round table updates

 

@Marie-Alexandra Lambot 

Belgium Update + TX IG Support Update - authorities looking for independence from HL7 servers, partially due to performance considerations.   RH Suggested self hosted TxFHIR.org server code (needs built locally unless Windows install, see https://github.com/HealthIntersections/fhirserver ) available (or Ontoserver of course - as of v6.15).

ML suggested:  See http://tx.fhir.org/tx-reg/ and https://github.com/FHIR/ig-registry/blob/master/tx-registry-doco.md for alternative terminology server support

MAL: Is every FHIR message validated, and if so, against a separate server?  RH Having the same discussion with US implementation - unsure of consensus.   Group discussion on: if a message fails validation, what are you going to do with it?  Quarantine (can then get stuck)?    Bounce back (not implemented?).   ML Usually systems are not synchronously coupled, so a message rejection is not possible. Watch out for CodeSystem updates eg change to display text for a code suddenly causing large volumes of rejections.  Also watch out for text in ValueSet definitions as it can also go out of date. PWI SNOMED-CT has the option to be more forgiving for inactive descriptions.   

Belgium (via Translation User Group) would like to inactivate descriptions of inactive concepts to help avoid apparent duplications.  ML Ontoserver will detect this and use "best case" instead eg most recently inactivated descriptions.

See also https://build.fhir.org/episodeofcare.html (unchanged since R4) collects together a set of temporally linked encounters.

28

Valueset Version Validation issue in IPS

 

@Rob Hausam 

RH: IPS Guide has bindings to value sets expressed with the International Edition version. Validation of content with the Canadian edition fails, even if it refers to concepts in the international edition.

PJ: sharing version in the codeable concept is complex for validation

ML: using the international edition in the valueset definition is limiting in this setting

RH: Version is overloaded to represent edition + release 

Plan: Not using the version in the value set definition. Verify if the validator is firing appropriately. it should be a warning in some cases. What would be the guideline on wether to include version or not when sharing a codeable concept? Share both your national concept + the closest concept in the international edition?

29

How to package content IGs with Terminology IGs

 

@Peter Jordan (Unlicensed) 

ML: The challenge of keeping them aligned

DK: we include valuesets but not coded systems in our IGs

30

FHIR Questionnaires and SNOMED Demo

 

@Alejandro Lopez Osornio 

Demo: https://ihtsdo.github.io/sct-implementation-demonstrator/#/questionnaires

31

URI Resolution Update

 

@Peter Williams 

Requirement to resolve URIs representing post-coordinated expressions.

See https://chat.fhir.org/#narrow/stream/179166-implementers/topic/The.20URL.20is.20not.20valid.20-.20Snomed-ct.20compositional.20grammar.20.7B.20.7D

ML Suggests resolving to a page that displayed information about that expression - formatted nicely, diagram? - and perhaps further capabilities, but not go as far as attempting to classify in the first instance.

ECL would return implicit valuesets

"Post Coordination is modeling and shouldn't be taken lightly" - DK

32

Incomplete Expansions

 

@Peter Jordan (Unlicensed) 

Potential for marking the expansion of certain  valuesets as incomplete because theoretically, all possible Post Coordinated Expressions exist but are not included in the expansion.  See https://build.fhir.org/ig/HL7/fhir-extensions/StructureDefinition-valueset-unclosed.html

https://jira.hl7.org/browse/FHIR-40718

DK - flag excludePostCoordinated to include or not include post coordinated values would affect this.

33

Snowstorm Development Question

 

@Peter Jordan (Unlicensed) 

Question on the future direction for Snowstorm

PWI : Potentially looking at horizontal scaling by separating out country instances on number of services.   Considering test suites eg Touchstone.   Also support for use with IG Tooling.  PJ suggests could look at Inferno (wrapper for FHIR Validator).

ALO : Snowstorm-lite would allow for quicker scaling with much reduced memory footprint, with a small number of limitations such as reduced ECL capability and restriction to single Snapshots.  See https://github.com/IHTSDO/snowstorm-lite

34

Update of the Implementation Course - Terminology Services Module

 

@Jon Zammit 

 

Regarding Using SNOMED CT with HL7 Standards

  • "Simple Map Reference Sets" link is now dead - replace with one of the directional maps?

Copyright © 2025, SNOMED International