Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Date

20:00 UTC on Tuesday 28 July 2020 - 90 minutes.   

Objectives

  • FHIR Terminology Services and Resources

Meeting Details

Onlinehttps://snomed.zoom.us/my/snomedhl7

Phone: See https://zoom.us/zoomconference for available phone numbers (meeting id 242-348-6949)

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

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

Attendees

 Rob HausamPeter G. WilliamsPeter JordanMichael LawleySander MertensSuzy Roy

Apologies

Meeting Recording

Discussion items

ItemDescription

Mins

OwnerNotes & Actions
1Welcome and introductions2

Recording, notes & attendance.


2Summary of previous week and previous fortnight5
3Other Meetings10

Upcoming events:

HL7 Baltimore Sept 19 - 25. Confirmed fully virtual event. Connectathon Sept 9 - 11 (two weeks earlier)

SI Business + Expo October Lisbon. Confirmed fully virtual event. SNOMED on FHIR Presentation + usual call on Tuesday 6 October.

November FHIRLY Dev Days expected - also virtual.

August Holidays - has more effect on the TB group? PW out 2 - 21 August - will pre-create all agenda.

4R4A Position15

R4A probably not going to happen in the previously proposed form. More likely now to be an interim release of R5.

Continued discussion around the direction semantics for maps. Current state:

Update 14 July: Anticipating "R4B" release (for comment, lightweigh ballot cycle, preview) which is an initial release of R5.

5Token representation in Coding10Peter G. Williams

Is the code system part of a coding token in a GET request limited to the code system, or could it be a code system instance?

coding=http://snomed.info/sct|123456608 coding=http://snomed.info/sct/900000000000207008/version/20200731|123456608

The Coding element allows for a version component, but I've not found advice on how this can be represented.in URL form.

http://build.fhir.org/datatypes.html#Coding says:

A code system version may also be supplied. If the meaning of codes within the code system is consistent across releases, this is not required. The version SHOULD be exchanged when the system does not maintain consistent definitions across versions. Note that the following systems SHOULD always have a version specified:

  • National releases of SNOMED CT (consistency of definitions varies amongst jurisdictions, and some jurisdictions may make their own rules on this)

Group Outcome: The token syntax is for system PIPE code, not system-instance PIPE code. Therefore we will error out if an CodeSystem Instance URI is used in this position.

6Terminology Capabilities30Michael Lawley

Terminology Capabilities: Default SNOMED Edition for

6Terminology CapabilitiesMichael LawleyTerminology Capabilities: Default SNOMED Edition for

a Server. Suggestion to invite Graham for a wider discussion. Resource is still at maturity 0.

Doesn't allow to talk about capabilities common to all instances of a code system. The version block is being repeated in a very verbose way ("it's going to get massive") with no actual variation other than the release date. Suggestion that many of the fields here might be at the wrong level. Could you actually change 'compositional', for example, between one version of a code system and the next? Could we leave the version.code blank in order to suggest it applies to all versions? NB it is optional after all (smile)

Is the statement object about server support for that code system instance (presumably) or is about a statement about the code system itself?

Also could we make statements at an even higher level eg this server supports parent/child relationships for ALL CodeSystems known to it? See OntoServer subsumption example, in CodeSystem without the actual URI specified: https://r4.ontoserver.csiro.au/fhir/metadata?mode=terminology

ML Was also hoping to say that a particular Edition is the default, without necessarily specifying an exact version. You can specify the edition / version using the isDefault flag:

Image Added

Questions: Would SI want Snowstorm to be able to be configured to allow some branch other than MAIN to be used as the default? Could we have pre-conditions specified by a client or IG that a particular Edition (version?) be available? Could we make a general statement about supporting multiple editions without having to list every one? What does the presence of a code system in this resource even imply - does it mean the server supports it's use with $lookup, $expand, $validate-code? How do we know if the population of this resource is complete ie test/success criteria.

  •  Michael Lawley Could you copy this text into a ticket please? (single tickets for individual questions so they can be answered separately or just open for general discussion?)
7Post Coordination30Michael Lawley

Post coordination - primitive <<< syntax, what does this mean in practice, in context of use.

The problem is that, without FSNs, any two concepts with lexically identical structures must be assumed to be siblings because we can't detect equivalence. Eg two concepts both defined as <<< 64572001 |Disease (disorder)|

How do these behave with $subsumes (answer: you say they're not related) and $closure (trickier, you want to indicate that they're distinct but there are no identifiers to make this apparent).

Is this a case of - in practice - the client needing to check if an expression already exists and then making a decision if they can reuse that one, or need to create a new one. But given that we can't tell them apart without another identifier, how would that be useful. Upshot of this is that primitive PCEs are not terrible useful to use in an EHR. Use SD instead === the symbols here are optional and taken as the default when not present.

Could we make use of the display field in this situation? The end user will have some idea in mind when they create the expression. PCEs are often advertised as a way to allow existing/new medical concepts to be entered into systems at runtime.

TODO Discuss how should PCE Libraries be represented in FHIR? For example, do we include them in a ValueSet expansion? Surely yes, but possibly not by default. CodeSystem supplement?

Update 28 July Validation of PCE:

  1. Syntax
  2. MRCM - in a specific edition/version. Question: What do you do when the expression contains an inactive code? Note that inactive code - by virtue of not existing in the hierarchy - cannot be valid against any ECL in the MRCM. Note that there are concepts in SNOMED CT that do NOT conform to the MRCM and so we are potentially looking at a PCE which is equivalent to an existing SNOMED concept without actually being valid itself. DK suggests that in fact additional rules might be desirable over and above the MRCM. Do we need to be able to specify additional rules eg which MRCM to use or what template to conform to?
  3. Classification?

Discussion: PCEs are considered to already be members of the code system. SNOMED CT is therefore considered infinite in this context. So using Code System Supplements does not 'add' codes as such. The PCEs are considered to already be there, just unlisted. Next steps: Lets got hold of a library of real life PCEs to explore these questions.

See https://confluence.ihtsdotools.org/display/DOCSCG

7Post Coordination30Michael Lawley

Post coordination - primitive <<< syntax, what does this mean in practice, in context of use.

The problem is that, without FSNs, any two concepts with lexically identical structures must be assumed to be siblings because we can't detect equivalence. Eg two concepts both defined as <<< 64572001 |Disease (disorder)|

How do these behave with $subsumes (answer: you say they're not related) and $closure (trickier, you want to indicate that they're distinct but there are no identifiers to make this apparent).

Is this a case of - in practice - the client needing to check if an expression already exists and then making a decision if they can reuse that one, or need to create a new one. But given that we can't tell them apart without another identifier, how would that be useful. Upshot of this is that primitive PCEs are not terrible useful to use in an EHR. Use SD instead === the symbols here are optional and taken as the default when not present.

Could we make use of the display field in this situation? The end user will have some idea in mind when they create the expression. PCEs are often advertised as a way to allow existing/new medical concepts to be entered into systems at runtime.

TODO Discuss how should PCE Libraries be represented in FHIR? For example, do we include them in a ValueSet expansion? Surely yes, but possibly not by default. CodeSystem supplement?

8Leaf nodes20

Not necessarily specific to SNOMED, but how do I get just the leaf nodes in a valueset definition? Solution is to use the child property in a ValueSet compose elements and say "child.exists = false". Asking for child properties in a CodeSystem $lookup where no child property is returned will tell you if a concept is a leaf node or not. A child or descendant count would be useful here, and more generally useful than suggesting that we'd want a boolean isLeafNode property.

9SNOMED Modules in FHIR20Rob Hausam

VSD - ValueSet Compliance discussion (targeting a profile), notion of code system partitions which seems to come from SNOMED having modules and this being seen as possibly useful. Could be expressed as Code System Fragments. ML "GPS is a good example of a useful SNOMED fragment / partition". Difficulties:

  • SNOMED is quite strict about module dependencies which would probably need to be represented if we wanted to split any given code system into 'partitions' .
  • In SNOMED modules we can describe things other than concepts - eg descriptions in one module and alternative modeling in another.
  • What version would I give for a fragment?
  • Modules are capable of inactivating components!

Modules exist for a small number of reasons: 1. To allow content to be developed by multiple parties, both in terms of decoupling and identifying ownership and 2. To keep SNOMED 'light' so that implementers only consider the modules that they need to. ML suggests not to equate a partition with a module.

http://www.hl7.org/documentcenter/public/standards/dstu/HL7_SPEC_VALUESETDEF_R1_STU_2016JUN.pdf

10$translate with version30

In the case of SNOMED, the system will as always be just http://snomed.info/sct

PWI advised that the crucial factor is the location of the map. The edition of the source and target is not important, so the use of the version parameter is prohibited. eg url=http://snomed.info/sct/731000124108/version/20200301?fhir_cm=6011000124106

ML says Ontoserver uses conceptMapVersion for this as well because concept maps that do not use a url in this way also need to be able to specify a version. Suggestion that the version parameter might be used if the conceptMapVersion is not specified.

11Use of effective time parameter in $lookup15Michael Lawley

Suggestion that effectiveTime be added as a SNOMED specific property in the specification, raised by Peter Jordan in https://jira.hl7.org/browse/FHIR-26555

The effective time of the concept (as represented in the concept file) does not necessarily capture when it came into its current state since relationships (inferred or stated) could change independently. Arguably we should use the most recent change to any of concept, relationships, descriptions. And what would we expect to happen in the case of filtering. ML: Ontoserver uses the date in the concept file because it's not possible to know what the enquirer's use case is.

Update 14 July: Recommendation of this group is that that item is added as a SNOMED specific property. Use case: In general, all properties should be filter-able. More specifically users may be interested to know which concepts were created (not perfect) or retired in the current release.

12Use of system and version parameters in Lookup and Subsumes15

Clarification that system parameter is the "class" of the code system and so is always http://snomed.info/sct in our case. The instance of the code system ie a specific extension and effectiveTime should be supplied in the version parameter. Snowstorm and Ontoserver are aligned in this regard.. In the case of SNOMED CT we use a URI to declare our instance and so the system is entirely redundant in our specific case and the decision was made to not insist in it's use for Snowstorm.

https://temp-snowstorm.ihtsdotools.org/fhir/CodeSystem/$lookup?version=http://snomed.info/sct/900000000000207008&code=840539006

DK: FSH apparently has no way of specifying the version of a CodeSystem. Daniel checking the ANTLR spec. https://github.com/FHIR/sushi/issues/473

13

GPS and FHIR value set url(s)

15

https://chat.fhir.org/#narrow/stream/179202-terminology/topic/Indicating.20in.20a.20ValueSet.20.20SNOMED.20CT.20GPS.20.20Codes

  •  Peter G. Williams follow up on GPS as a published reference set to allow for simple definition as a ValueSet using the memberOf operator. Answer: Yes we will do this when the GPS is next updated. TODO: Check publishing plans with Andrew Atkinson
14What module(s) to use for the Canadian Edition10Peter G. Williams
15Working with unversioned content15

Proposed example: http://localhost:8080/fhir/ValueSet/$expand?url=http://snomed.info/sct/45991000052106/version/UNVERSIONED?fhir_vs=isa/27624003&designation=sv

ML makes the case that unpublished content is not legitimate SNOMED and suggested using a not-SNOMED URI eg  http://snomed.info/xsct/45991000052106 in this case the code system would still be  http://snomed.info/xsct

Outstanding question: our pre-release (alpha + beta) packages do have a version as a future date in them, and continue to exist (although unpublished) even after the official release has shipped.

How would this look in a ValueSet expansion? Should we specify systemVersion or forceVersion in this case?

Update 2 June: LOINC have a similar issue with "Pre-release" identifiers - current release 2.6.7. Version 2.6.8PRE will contain the pre-release content. "To be useful they need to be considered part of the code system"

However in the case of SNOMED CT we would NOT condone unpublished identifiers being used in production systems. In the case of the COVID-19 concepts an interim release was done as an official release for 20200309. The use case here is for producers of SNOMED CT to reference concepts internally - as a work in progress.

16FHIR Roadmap5Peter JordanR5 being pushed back. GG seeking opinion on 4.1.0 - an opportunity to clean up some descriptions.
17FHIR Server Federation10

Use case for fall back lookup when server does not know the answer to any particular question eg a façade server which has knowledge of all services it could potentially delegate to.

18Language Reference Sets in FHIR45All

Mechanisms for working with Languages

Designation extension

Update 19 May: Suggestion that we work an example for SNOMED to discuss with Regenstrief (LOINC)

Update 2 June: Started worked example Designation Extension Example

19SNOMED Family of Languages10

Impact of proposed changes (eg text searching in ECL) on FHIR. Questions around which language reference sets to use when there are multiple, especially partial/overriding context (referred to MAG for discussion)

20SNOMED FHIR Implementation Guide60

Implementation Guide for using SNOMED CT with FHIR.

Update 10 Dec: DK - main problem is URI/Ls which publisher has fixed ideas about. Publisher does not examine all folders - looks in profiles but not subfolders and doesn't seem to look in ValueSet folder.

Update 21 Jan: DK and RH have merged commits and these can be seen in the HL7 server build: http://build.fhir.org/ig/IHTSDO/snomed-ig/branches/new-template/ and build errors here: http://build.fhir.org/ig/IHTSDO/snomed-ig/branches/new-template/qa.html

Update 11 Feb: Grahame said that he'd show us how to set the URI so that it doesn't have to follow the base URI. Next person to try that can we fire a Zulip off to ask about it?

Update 16 June: DK wondered about moving everything to FSH (FHIR Short Hand) as it's so much easier to maintain. ML: Conversion available, but round trip problematic. DK page Re: snowstorm FHIR requirements, issues, etc.

IG Documentation: http://build.fhir.org/ig/FHIR/ig-guidance/index.html

Also look at the sample IG https://github.com/fhir/sample-ig see build http://build.fhir.org/ig/FHIR/sample-ig/

21

Any other business



Next time: Discuss FHIR Connectathon.



Potential Items for Discussion

Description
OwnerNotes & Actions
API for FHIR Resource ↔ Post coordinated expression mapping

API for FHIR Resource to SNOMED Expression

  •  Daniel Karlsson Thought there might be some documentation from CIMI on this. Also notes from DMarkwell about constructor bindings.
  •  Peter G. Williams Pull these notes into confluence - can we mention it in the IG?
Looking up an SCTID in an unknown module

Problems when dependencies do not align. Multiple code system resources represent multiple editions / versions.

ML: See code parameter to code system search. Should return code systems (ie versions) where that code is defined. International concepts would appear in every edition known to the server.

eg /CodeSystem?system=htp://snomed.info/sct&code=12345678&_elements=version

GPS

See Discussion on Global Patient Set (GPS)
FHIR Shorthand
Michael Lawley

https://github.com/HL7/fhir-shorthand/wiki

https://build.fhir.org/ig/HL7/fhir-shorthand/FSHQuickReference.pdf

Tooling: https://github.com/FHIR/sushi

$lookup operation - properties returned
Peter Jordan

Using http://ontoserver.csiro.au/vstool/  I noticed that both Ontoserver and SnowStorm return a SNOMED CT $lookup property for effectiveTime, which I don't see listed, as one of the SNOMED CT properties in the FHIR R4 specification at http://hl7.org/fhir/snomedct.html. Should we create a Jira TIcket to add this?

Completed - https://jira.hl7.org/browse/FHIR-26555

Use of url parameter15

CodeSystem "class vs instance" in url parameter between CodeSystem and ValueSet operations.

CodeSystem is understood.

In Valueset, url is the ValueSet url for example url = http://snomed.info/sct?fhir_vs= allows for the version URI to be used as stated in https://build.fhir.org/snomedct.html The base URL is either http://snomed.info/sct , or the URI for the edition version, in the format specified by SNOMED International in the SNOMED CT URI Specification.

The ValueSet version valueSetVersion is just some string identifier eg a timestamp or 0.1.0

ECL in the Valueset Expression Extension10

Check whether SNOMED ECL is (or should be) registered as a MIME type (as per RFC 4289/BCP 13), or alternatively added to the expression-language code system and value set, for use in the valueset-expression extension used with the ValueSet resource.

For example, HL7 have registered application/json+fhir

This is useful for a ValueSet extension which allows any language to be used to define the selection criteria for an intensional definition using a MIME type. This group has no current reason to use that extension given the existing core specification support for implicit ValueSet definition and the support within the compose element.

RDF community may have an interest.

Update 2 June RH: Existing small valueset extended in BCP13 (existing known codes could be published as a CodeFragment). Vocab Working Group discussion ongoing.

Behaviour on Lookup10

What properties are returned?

Discussion: Both Ontoserver and Snowstorm are returning EffectiveTime which is not listed here (unlike other SNOMED specifics): https://build.fhir.org/snomedct.html

Point of interest: Grahame's server returns a copyright property.

Update 7 April - Question about whether this is required / desirable?

Meeting Files

Attachments