2019-03-13 - SLPG Meeting

2019-03-13 - SLPG Meeting

Date & Time

20:00 UTC Wednesday 13th March 2019

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

  • Review actions from last meeting

  • Proposed enhancements to template language

  • Proposed new language features for mapping

Attendees 

  • Chair: @Former user (Deleted)

  • Project Group: @Daniel Karlsson@michael lawley@Yongsheng Gao@Anne Randorff Højen@Ed Cheetham@Rob Hausam

Apologies

  •  

Agenda and Meeting Notes

Description

Owner

Notes

Description

Owner

Notes

Welcome and apologies

@Former user (Deleted)



Actions from last week

@Former user (Deleted)

  • Actions from last week:

    • Consider new syntax to support proposed expression template use case

    • Consider new syntax to support proposed map use case

Template Syntax

@Former user (Deleted)

Use cases: New concept development, querying based on template matching, and template-based modeling transformation

New requirements

  1. Constrain values across 2 or more replacement slots

    • 2 replacement slots must have the same value, different values, subsumed values, or not subsumed values.

    • Example A - A clinical finding, with 2 role groups with the same morphology, and finding sites that not subsume each other

      • Template

        • [[ +id ]]:
          { 116676008 |Associated morphology| = [[ +id @morphology ]],
          363698007 |finding site| = [[ +id (<< |Body structurel MINUS << $findingSite2 ) @findingSite1 ]] },
                  { 116676008 |Associated morphology| = [[ +id @morphology ]],
          363698007 |finding site| = [[ +id (* MINUS << $findingSite1) @findingSite2 ]] }

      • Valid Expression (Definition of 16027391000119109 |Bone cyst of bilateral tibias (disorder)|)

        • 64572001 |Disease| :
                      { 116676008 |Associated morphology| = 66954000 |Bone cyst|,
                        363698007 |Finding site| = 719491009 |Bone structure of right tibia| }
                      { 116676008 |Associated morphology| = 66954000 |Bone cyst|,
                        363698007 |Finding site| = 719492002 |Bone structure of left tibia| }

    • Example B - A clinical finding, with one or more role groups in which the morphology is always the same, and no 2 finding sites subsume each other.

      • Template - 3 role groups with 3 sites: site[1], site[2], site [3] /// site [1,2]

        •  [[+id]]:
          [[1..*] @group1] { |Finding site| = [[ +id (* MINUS $site[! SELF ] ) @site constraint ( [n] != << $site [!n] ]] ,
          |Associated morphology| = [[ +id ($morphology [! SELF] ) @morphology constraint ( [n] = $morphology [!n] ]]}

      • Valid Expression (Definition of 208510002 |Multiple fracture of clavicle, scapula and humerus (disorder)| )

        •  

          • 64572001 |Disease| :
                        { 363698007 |Finding site| = 85050009 |Bone structure of humerus|,
                          116676008 |Associated morphology| = 5468008 |Fracture of multiple sites of bone| }
                        { 363698007 |Finding site| = 51299004 |Bone structure of clavicle|,
                          116676008 |Associated morphology| = 5468008 |Fracture of multiple sites of bone| }
                        { 363698007 |Finding site| = 79601000 |Bone structure of scapula|,
                          116676008 |Associated morphology| = 5468008 |Fracture of multiple sites of bone| }
                        { 363698007 |Finding site| = 773134001 |Bone structure of multiple body regions|,
                          116676008 |Associated morphology| = 771485007 |Fracture of multiple bones| }

  2. Default value for replacement slot

    • Default value for authoring and template-driven modelling transformations

    • Example A - Default finding site of 72673000 |Bone structure|

      • Template

        • [[ + id ]] :
          { |Finding site| = [[ +id (<< 72673000|Bone structure|) @site default (72673000 |Bone structure (body structure)|) ]]

  3. Definition status of a replacement slot

    • Specifying whether the value used in a replacement slot must be primitive or defined

    • Example A - When proximal primitive modelling, the focus concept must be a primitive concept

      • Template - Requires use of more expressive query language with filters

        • [[ + id (<< 64572001 |Disease| {{ c.definitionStatus = primitive }}) ]]

      • Valid Expression

        • 195967001 |Asthma (disorder)|

  4. Definition status of a templated expression

    • Specifying the definition status of a templated expression

    • Template

      • [[ +tok ("===" "<<<") ]][[ +id ]] : { |Finding site| = [[+id]] }

      • Valid Expression

        • === 128272009 |Disorder of lower respiratory system| : 363698007 |Finding site| = 39607008 |Lung structure|

        • <<< 128272009 |Disorder of lower respiratory system| : 363698007 |Finding site| = 39607008 |Lung structure|

  5. Attributes used in repeating role groups

    • Constraining the set of attributes that appear in a repeating role group

    • Example A - The same set of attributes must appear in each instance of a repeating role group (with optional attributes)

      • Template - using allOrNone

        • [[+id]]: [[1..* @group1 allOrNone ($site, $occurrence)]]
          { [[1..1]] |Associated morphology| = [[ +id @morphology ]],
          [[0..1 ]] |Finding site| = [[ +id @site]],
          [[0..1 ]] |Occurrence| = [[ +id @occurrence ]] }

        • Valid Expression - Injury of head, neck and chest

          • [[ |Disease| ]]: 
            { |Associated morphology| = |Injury|, |Finding site| = |Head structure| } 
            { |Associated morphology| = |Injury|,  |Finding site| = |Neck structure| }
            { |Associated morphology| = |Injury|,  |Finding site| = |Chest structure| }

        • Valid Expression - Congenital malformation of head and neck 

          • [[ |Disease| ]]: 
            { |Associated morphology| = |malformation|, |Finding site| = |Head structure|, |Occurrence| = |Gongenital| } 
            { |Associated morphology| = |malformation|,  |Finding site| = |Neck structure|, |Occurrence| = |Gongenital| }

    • Example B - Some of the optional attributes must either always or never appear in each instance of a repeating role groupTemplate - using "allOrNone"

      •  

        • [[+id]]: [[1..* @group1 allOrNone($morph) ]]
          { [[ 1..1 ]] |Method| = [[+id]],
          [[ 0..1 ]] |Direct morphology| = [[+id @morph]],
          [[ 0..1 ]] |Procedure site - Direct| = [[+id]],
          [[ 0..1]] |Using device| = [[+id]] ,
          [[ 0..1]] |Has intent| = [[+id]] ,

        • Valid Expression - Closure of skin by suture

          • |Procedure|: 
            { |Method| = |Closure - action|, |Procedure site - Direct| = |Skin structure| , |Using device| = |Surgical suture, device|} 

        • Valid Expression - Core needle biopsy of skin using ultasonographic guidance

          • |Procedure|: 
            { |Method| = |Ultrasound imaging - action|, |Procedure site - Direct| = |Skin structure| , |Has intent| = |Guidance intent|} 
            { |Method| = |Biopsy - action|, |Procedure site - Direct| = |Skin structure| , |Using device| = |Core biopsy needle, device|} 

        • Valid Expression - Toilet and suture of wound

          • |Procedure|: 
            { |Method| = |Surgical toilet - action|, |Direct morphology| = |Wound| } 
            { |Method| = |Closure - action|,  |Direct morphology| = |Wound|,
            |Procedure site - Direct| = |Skin structure|, |Using device| = |Surgical suture, device| }

Executing maps

@Former user (Deleted)

Proposed extension to ECL to support the execution of maps

  • Example use cases

    • Mapping from international substance concepts to AMT substance concepts

    • Anatomy structure and part association reference set - e.g. find the anatomical parts of a given structure

  • Potential syntax to consider

    • Functional

      • mapTarget (|Anatomy structure and part association refset|, << |Upper abdomen structure|)

      • mapSource (|Anatomy structure and part association refset|, << |Liver part|)

    • Dot notation

      • ( |Anatomy structure and part association refset|: |ReferencedComponent| = << |Upper abdomen structure ) . |mapTarget|

      • ( |Anatomy structure and part association refset|: |mapTarget| = << |Upper abdomen structure ) . |referencedComponent|

    • Filters

      • ( |Anatomy structure and part association refset| {{ |referencedComponent| = << |Upper abdomen structure| }} ). |mapTarget|

      • ( |Anatomy structure and part association refset| {{ mapTarget = << |Upper abdomen structure| }} ) . |referencedComponent|

        • ^ ( |Anatomy structure and part association refset| {{ mapTarget = << |Upper abdomen structure| }} )

Returning attributes

@michael lawley

Proposal from Michael:

  • Currently ECL expressions can match (return) concepts that are either the source or the target of a relationship triple (target is accessed via the 'reverse' notation or 'dot notation', but not the relationship type (ie attribute name) itself. 

For example, I can write: 

<< 404684003|Clinical finding| : 363698007|Finding site| = <<66019005|Limb structure| 

<< 404684003|Clinical finding| . 363698007|Finding site| 

But I can't get all the attribute names that are used by << 404684003|Clinical finding| 

  •  

    • Perhaps something like:

      • ?? R.type ?? (<< 404684003 |Clinical finding|)

    • This could be extended to, for example, return different values - e.g.

      • ?? |Simple map refset|.|maptarget| ?? (^|Simple map refset| AND < |Fracture|)

URI Standard

@Former user (Deleted)

  • Finalize and publish language and language instance URIs

Query Language
- Summary from previous meetings







@Former user (Deleted)

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

Keywords for Term-based searching:

  • 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 = * LANGUAGE X)

Language preferences using multiple language reference sets

  • LRSs that use the same Language tend to use 'Addition' - i.e. child LRS only includes additional acceptable terms, but can override the preferred term

    • E.g. Regional LRS that adds local dialect to a National LRS

    • E.g. Specialty-specific LRS

    • E.g. Irish LRS that adds local preferences to the en-GB LRS

      • 99999900 |Irish language reference set| PLUS |GB English reference set|

  • LRSs that define a translation to a different language tend to use 'Replacement' - i.e. child LRS replaces set of acceptable and preferred terms for any associated concept

    • E.g. Danish LRS that does a partial translation of the International Release

      • 999999 |Danish language reference set| ELSE |GB English reference set|

Other topics

@Former user (Deleted)

  • Any other topics?

Confirm next meeting date/time

@Former user (Deleted)

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

  File Modified

Microsoft Word 97 Document 1997 Rogers - (MIE) Rubrics to Dissections.doc

2019-Mar-26 by Ed Cheetham

Microsoft Powerpoint 97 Slideshow 2000 Rogers (AMIA) - Intermediate Representation.ppt

2019-Mar-26 by Ed Cheetham



Copyright © 2025, SNOMED International