2019-05-08 - SLPG Meeting

2019-05-08 - SLPG Meeting

Date & Time

20:00 UTC Wednesday 8th May 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

  • Make a decision on meeting at October business meeting

  • Review actions from last meeting

  • Proposed enhancements to template language

  • Proposed enhancements to expression constraint language

    • Term searching

  • Proposed new language features for mapping

Attendees 

  • Chair: @Former user (Deleted)

  • Project Group: @Ed Cheetham@michael lawley@Anne Randorff Højen@Daniel Karlsson (Unlicensed)

Apologies

  •  

Agenda and Meeting Notes

Description

Owner

Notes

Description

Owner

Notes

Welcome and apologies

@Former user (Deleted)

  • Question - Should we hold a SLPG meeting in October (in Malaysia)?

Actions from last week

@Former user (Deleted)

  • Actions from last week:

    • Update template syntax with new features

    • Consider new syntax to support proposed map use case

Template Syntax

@Former user (Deleted)

2 new proposals to meet SNOMED International's use cases

  1. Require slotnames to be unique

    • Why? To avoid having 2 ways to do the same thing, and to clarify the meaning through value restrictions.

    • Template

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

    • 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| }


  2. Introduce a sameValue constraint (similar to the allOrNone constraint)

    • Template

      •  [[+id]]: [[1..* @group sameValue ($morphology)]]
        { |Finding site| = [[ +id ]] ,
        |Associated morphology| = [[ +id @morphology ]]}

    • Valid Expression (Definition of 31580001000004106 |Bilateral sacral insufficiency fracture (disorder)| )

      •  

        • 702561005 |Insufficiency fracture (disorder)|:
                     { 363698007 |Finding site (attribute)| = 736830008 |Bone structure of left half of sacrum (body structure)|,
                        116676008 |Associated morphology (attribute)| = 22640007 |Pathologic fracture (morphologic abnormality)| }
                      { 363698007 |Finding site (attribute)| = 736831007 |Bone structure of right half of sacrum (body structure)|,
                        116676008 |Associated morphology (attribute)| = 22640007 |Pathologic fracture (morphologic abnormality)| }

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

Other 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 structure| 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 ]] ,
          |Associated morphology| = [[ +id ($morphology [!= SELF] ) @morphology ]]}

      • Valid Expression (Definition of 31580001000004106 |Bilateral sacral insufficiency fracture (disorder)| )

        •  

          • 702561005 |Insufficiency fracture (disorder)|:
                       { 363698007 |Finding site (attribute)| = 736830008 |Bone structure of left half of sacrum (body structure)|,
                          116676008 |Associated morphology (attribute)| = 22640007 |Pathologic fracture (morphologic abnormality)| }
                        { 363698007 |Finding site (attribute)| = 736831007 |Bone structure of right half of sacrum (body structure)|,
                          116676008 |Associated morphology (attribute)| = 22640007 |Pathologic fracture (morphologic abnormality)| }

  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 1 - In a given matching expression, either all the role groups include the attribute |site|, or none of the role groups include the attribute |site|. Similarly, either all role groups include |Occurrence|, or none of the role groups do.

      • Template - using allOrNone

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

        • 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| = |Congenital| } 
            { |Associated morphology| = |malformation|,  |Finding site| = |Neck structure|, |Occurrence| = |Congenital| }

    • Example 2 - Some of the optional attributes must either always or never appear in each instance of a repeating role group

      •  

        • [[+id]]: [[1..* allOrNone($morph) ]]
          { [[ 1..1 ]] |Method| = [[+id]],
          [[ 0..1 @morph ]] |Direct morphology| = [[+id ]],
          [[ 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| }

      • Example 3 - Some of the optional attributes must either always or never appear in each instance of an inner-nested, repeating role group

        •  

          • |Finding with explicit context|: [[1..2]]
            { [[ 1..1 ]] |Finding context| = [[+id]],
            [[ 1..1 ]] |Temporal context| = [[+id ]],
            [[ 1..1 ]] |Subject relationship context| = [[+id]],
            [[ 1..1]] |Associated finding| = ( [[+id]] : [[1..* allOrNone($site) allOrNone($Occurrence) ]]
            { [[1..1]] |Associated morphology| = [[ +id @morphology ]],
            [[0..1 @site]] |Finding site| = [[ +id ]],
            [[0..1 @occurrence]] |Occurrence| = [[ +id ]] } ) }

          • Valid Expression - History of Injury of head, neck and chest, and of congenital malformation of head and neck

            • |Finding with explicit context|:
              { |Finding context| = |Done|,
              |Temporal context| = |In the past|
              |Associated finding| = ( |Disease| : 
              { |Associated morphology| = |Injury|, |Finding site| = |Head structure| } 
              { |Associated morphology| = |Injury|,  |Finding site| = |Neck structure| }
              { |Associated morphology| = |Injury|,  |Finding site| = |Chest structure| } ) }
              { |Finding context| = |Done|,
              |Temporal context| = |In the past|,
              |Associated finding| = ( |Disease| :
              { |Associated morphology| = |malformation|, |Finding site| = |Head structure|, |Occurrence| = |Gongenital| } 
              { |Associated morphology| = |malformation|,  |Finding site| = |Neck structure|, |Occurrence| = |Gongenital| } ) }

      • Example 4 - Some of the optional attributes must either always or never appear in each instance of an outer-nested, repeating role group

        •  

          • |Finding with explicit context|: [[1..2 allOrNone ($site), allOrNone($occurrence), allOrNone($relationship) ]]
            { [[ 1..1 ]] |Finding context| = [[+id]],
            [[ 1..1 ]] |Temporal context| = [[+id ]],
            [[ 0..1 @relationship]] |Subject relationship context| = [[+id ]],
            [[ 1..1]] |Associated finding| = ( [[+id]] : [[1..* ]]
            { [[1..1]] |Associated morphology| = [[ +id ]],
            [[0..1 @site]] |Finding site| = [[ +id ]],
            [[0..1 @occurrence]] |Occurrence| = [[ +id ]] }

          • Valid Expression - History of Injury of head, neck and chest, and of malformation of head and neck

            • |Finding with explicit context|:
              { |Finding context| = |Done|,
              |Temporal context| = |In the past|,
              |Subject relationship context| = |Subject of record|,
              |Associated finding| = ( |Disease| : 
              { |Associated morphology| = |Injury|, |Finding site| = |Head structure| } 
              { |Associated morphology| = |Injury|,  |Finding site| = |Neck structure| }
              { |Associated morphology| = |Injury|,  |Finding site| = |Chest structure| } ) }
              { |Finding context| = |Done|,
              |Temporal context| = |In the past|,
              |Subject relationship context| = |Subject of record|,
              |Associated finding| = ( |Disease| :
              { |Associated morphology| = |malformation|, |Finding site| = |Head structure| } 
              { |Associated morphology| = |malformation|,  |Finding site| = |Neck structure| }

Introducing term searching to ECL

@Former user (Deleted)

Syntax

term  =  [lexicalSearchType ":"] String 

Lexical Search Type

  1. Wild Card Match (collation) - e.g.

    • {{  term = wild:"*heart*“ }}

    • {{  term = wild (sv):"*hjärta*“ }}

  2. ??? Perl Regex - e.g.

    • {{ term = regex:".*heart.*” }}

    • Question: Does the query suddenly become order dependent? Yes

Copyright © 2025, SNOMED International