Page tree

Date & Time

20:00 UTC Wednesday 23rd May 2018

Teleconference Details

To join the meeting please go to https://snomed.zoom.us/j/471420169

Further information can be found at SLPG meeting information

Goals

  • Progress SNOMED Query language
    • Discuss use of multiple language reference sets
  • URI standard
    • URI for canonical normal form
    • URI for necessary (long/short) normal form
  • Future goals: 
    • Transitive relationships in ECL
    • Ability to execute maps from within ECL

Apologies


Agenda and Meeting Notes

Description
Owner
Notes

Welcome and apologies


Query Language
- Recap from previous meetings

Examples: version and language

Notes

    • Allow nested where, version, language
    • Scope of variables is inner query


Examples: where

Notes

      • Allow nested variable definitions, but recommend that people don't due to readability
      • Scope of variables is the inner query
      • No recursion e.g X WHERE X = 1234 MINUS X
        • ie can't use a variable in its own definition
        • ie X is only known on the left of the corresponding WHERE, and not on the right of the WHERE

Query Language
- Recap from previous meetings


What filter keywords will we introduce for Term-based searching, and what are their exact meanings?

  • D.term
    • D.term = "*heart*"
    • D.term = wild:"*heart*"
    • D.term = regex:".*heart.*"
    • D.term = match:"hear att"
    • D.term = (sv) wild: "*heart*"
  • D.languageCode
    • D.languageCode = "en"
    • D.languageCode = "es"
  • D.caseSignificanceId
    • D.caseSignificanceId = 900000000000448009 |entire term case insensitive|
    • D.caseSignificanceId = 900000000000017005 |entire term case sensitive|
    • D.caseSignificanceId = 900000000000020002 |only initial character case insensitive|
  • D.caseSignificance
    • D.caseSignificance = "insensitive"
    • D.caseSignificance = "sensitive"
    • D.caseSignificance = "initialCharInsensitive"
  • D.typeId
    • D.typeId = 900000000000003001 |fully specified name|
    • D.typeId = 900000000000013009 |synonym|
    • D.typeId = 900000000000550004 |definition|
  • D.type
    • D.type = "FSN"
    • D.type = "fullySpecifiedName"
    • D.type = "synonym"
    • D.type = "textDefinition"
  • D.acceptabilityId
    • D.acceptabilityId = 900000000000549004 |acceptable|
    • D.acceptabilityId = 900000000000548007 |preferred|
  • D.acceptability
    • D.acceptability = "acceptable"
    • D.acceptability = "preferred"

Additional Syntactic Sugar

  • FSN
    • FSN = "*heart"
      • D.term = "*heart", D.type = "FSN"
      • D.term = "*heart", D.typeId = 900000000000003001 |fully specified name|
    • FSN = "*heart" LANGUAGE X
      • D.term = "*heart", D.type = "FSN", D.acceptability = * LANGUAGE X
      • D.term = "*heart", D.typeId = 900000000000003001 |fully specified name|, acceptabilityId = * LANGUAGE X
  • synonym
    • synonym = "*heart"
      • D.term = "*heart", D.type = "synonym"
      • D.term = "*heart", D.typeId = 900000000000013009 |synonym|
    • synonym = "*heart" LANGUAGE X
      • D.term = "*heart", D.type = "synonym", D.acceptability = * LANGUAGE X
      • D.term = "*heart", D.typeId = 900000000000013009 |synonym|, (D.acceptabilityId = 900000000000549004 |acceptable| OR D.acceptabilityId = 900000000000548007 |preferred|) LANGUAGE X
  • synonymOrFSN
    • synonymOrFSN = "*heart"
      • synonym = "*heart" OR FSN = "*heart"
      • D.term = "*heart", (D.type = "synonym" OR D.type = "fullySpecifiedName")
    • synonymOrFSN = "*heart" LANGUAGE X
      • synonym = "*heart" OR FSN = "*heart" LANGUAGE X
      • D.term = "*heart", (D.type = "synonym" OR D.type = "fullySpecifiedName"), D.acceptability = * LANGUAGE X
  • textDefinition
    • textDefinition = "*heart"
      • D.term = "*heart", D.type = "definition"
      • D.term = "*heart", D.typeId = 900000000000550004 |definition|
    • textDefinition = "*heart" LANGUAGE X
      • D.term = "*heart", D.type = "definition", D.acceptability = * LANGUAGE X
      • D.term = "*heart", D.typeId = 900000000000550004 |definition|, D.acceptabilityId = * LANGUAGE X
  • Unacceptable Terms
    • (D.term = "*heart") MINUS (D.term = "*heart", (D.acceptability = "acceptable" OR D.acceptability = "preferred") LANGUAGE X)
Query Language - Combining language reference sets

How do we support language preferences, which are defined over multiple language reference sets? For example:

  • Suggestions: Use 'OR' to indicate additive (except for PT), and ';' to indicate priority order (with concept-level override). For example:

    • LANGUAGE 9999999 |Canadian French language reference set|; 900000000000508004 |Canadian English|

      • Priority order: This means that if a concept has descriptions in the first LRS, then this LRS is used. But if a concept has no descriptions in the first LRS, then is used

    • LANGUAGE 99999 |Realm-specific LRS| OR 999999 |National LRS| (Must have disjoint PTs)
    • LANGUAGE 99999 |Realm-specific LRS| THEN 999999 |National LRS|
      • Changing preferred term in a local edition ... (OR update PT row from national edition) (or perhaps add additional local colloquism)
      • Additive: This means that if a concept has a PT in both LRSs, then the PTs in the Paediatric LRS take priority, and the PT in the GB English LRS becomes acceptable. Other terms are acceptable if they are acceptable in either LRS.
    • LANGUAGE 9999 |X| ELSE ( 99999 |Y LRS| ADD 9999 |Z LRS| )
      • Priority order and Additive: This means that if a concept has a PT in both LRSs, then the PTs in the Paediatric LRS take priority, and the PT in the GB English LRS becomes acceptable. Other terms are acceptable if they are acceptable in either LRS.
  • Conclusions - STILL UNDER DISCUSSION
URI Specification
  • Status update
  • URIs for canonical normal form and necessary (long/short) normal form
  • Recap on purpose of SNOMED CT computable language URIs?
  • Recap on language instance URIs (e.g. URIs for expressions and expression constraints)
Other topics

Other topics for discussion. For example:

  • Query language - Can we de-scope relationship filters?
  • ECL suggestions - Ability to execute maps in ECL
    • The specific use-case here comes initially from Jeremy and relates to being able to work with inactive concepts via the historical association maps. For example, given an ECL expression, e, that identifies a set of concepts to be used for retrieving patient records, you probably also want to retrieve records for sameAs(e) and replacedWith(e)
Confirm next meeting date/time

The next SLPG meeting will be held in 2 weeks at 20:00 UTC on Wednesday 6th June.

No files shared here yet.


  • No labels