2016-12-07 - SLPG Meeting

2016-12-07 - SLPG Meeting

Date & Time

20:00 UTC Wednesday 7 December 2016 

GoToMeeting Details

Click here to see GoToMeeting joining information

Goals

  • To discuss feedback from B2i on Expression Constraint Language

  • To progress the SNOMED CT Template Syntax

Attendees 

  • Chair: @Former user (Deleted)

  • Project Group: @Alejandro Lopez Osornio@michael lawley@Orsolya Bali@Daniel Karlsson@Ed Cheetham, @Rob Hausam@Andrew Perry

Apologies

Agenda and Meeting Notes

Description

Owner

Notes

Description

Owner

Notes

Welcome, apologies and agenda review

@Former user (Deleted)

Record attendees and apologies

Review agenda for today's meeting

Feedback from B2i on ECL

@Orsolya Bali

Members of Descendants

  • Decision - To add ability to do "^ (expressionConstraint)", using brackets around the expressionConstraint unless it is a single refset concept

B2i proposes that the MemberOf function is allowed to be applied to a set of reference sets

  • ^(<<446609009|Simple type reference set|) /* Invalid */

 

For example, to select members of all GP refsets:
|General Practice / Family Practice reference set|

 

     |GP/FP health issue reference set|

 

         |Adverse drug reactions reference set for GP/FP health issue|

 

         ...

 

     |GP/FP reason for encounter reference set|

 

         |Family history reference set for GP/FP reason for encounter|

 

         ...

Constraints over Medication Strength

  • Decision - No action for now. To be revisited when the Default Extension Drugs Model is in place

B2i proposes that a new symbol is introduced to indicate a refinement of a relationship - for example:

  • < |Pharmaceutical / biologic product}: 
    { |has active ingredient| = << |calcium carbonate|, 
    ( |has basis of strength| = |calcium only|) ~ (|strength magnitude| >= #500), |strength unit| = |mg|)}

Alternative solutions

Using the existing ":" refinement symbol

  •  

    • < |Pharmaceutical / biologic product}: 
      { |has active ingredient| = << |calcium carbonate|, 
      ( |has basis of strength| = |calcium only|) : (|strength magnitude| >= #500), |strength unit| = |mg|)}

Applying the strength as a refinement of the substance

  • < |Pharmaceutical / biologic product}: 
    { |has active ingredient| = << |calcium carbonate|, 
      |has basis of strength| = (|calcium only|: (|strength magnitude| >= #500), |strength unit| = |mg|)}

Flattening the relationships into a 'close-to-user' form

  • < |Pharmaceutical / biologic product}: 
    { |has active ingredient| = << |calcium carbonate|,
      |has basis of strength| = |calcium only|,
     |strength magnitude| >= #500, 
    |strength unit| = |mg|)}

DL examples

  • ∃measurementGroup.( ∃hasActiveIngredient.CalciumCarbonate ⊓ 
    ∃hasBOSS.CalciumOnly ⊓ ∃strength.( ∃#500.value ⊓ ∃unit.Mg ) )

  • ∃roleGroup.( ∃hasActiveIngredient.CalciumCarbonate ⊓ ∃hasBOSS.( 
    CalciumOnly ⊓ ∃strength.( ∃#500.value ⊓ ∃unit.Mg ) ) )

Progress SNOMED CT Template Syntax

@Former user (Deleted)

See Template Syntax Specification

  • Suggestion to add a new chapter on 'Slot placement and template processing'

Please provide any other comments you have.

Remove slots and replace slots

  •  

    • Remove slot: [[ 1..1 ]], [[ 1..1 @slotName ]]

    • Replace slot: [[ +id (<< 138875005 |SNOMED CT concept|) ]], [[ +id ]], [[ + ]], [[ +id(<<138875005 |SNOMED CT concept) @slotName $valueReference ]]

    • Example: CT of X
      71388002 |Procedure[[1..1 @roleGroup1]]
      260686004 |Method312251004 |Computed tomography imaging action|,
        405813007 |Procedure site - Direct| = [[+id (<<442083009 |Anatomical or acquired body structure|)] @site] }

Replace slots - Type of replacement

  •  

    • Replace with single concept: [[ +id ]]

    • Replace with any expression: [[ +scg ]]

    • Replace with an expression constraint: [[ +ecl ]]

    • Replace with a character string: [[ +str ]]

      • Use cases include replacing comparison operators "=" and "!="

    • Example 1: MRCM domainTemplateForPrecoordination (Finding with explicit context)

      • [[+id(<< 243796009 |Situation with explicit context (situation)|: [0..0] 408730004 |Procedure context| = *, [0..0] 363589002 |Associated procedure| = *)]]: 
        [[0..*]] { [[1..*]] 408729009 |Finding context| = [[+id(<< 410514004 |Finding context value (qualifier value)|)]], 
        [[1..*]] 408731000 |Temporal context| = [[+id(<< 410510008 |Temporal context value (qualifier value)|)]], 
        [[0..*]] 246090004 |Associated finding| = [[+id(<< 404684003 |Clinical finding (finding)| OR << 272379006 |Event (event)|)]], 
        [[0..*]] 408729009 |Finding context| = [[+id(<< 410514004 |Finding context value (qualifier value)|)]], 
        [[0..*]] 408732007 |Subject relationship context| = [[+id(<< 125676002 |Person (person)|)]], 
        [[0..*]] 408731000 |Temporal context| = [[+id(<< 410510008 |Temporal context value (qualifier value)|)]] }

    • Example 2: MRCM domainTemplateForPostcoordination (Finding with explicit context)

      • [[+id(<< 243796009 |Situation with explicit context (situation)|: [0..0] 408730004 |Procedure context| = *, [0..0] 363589002 |Associated procedure| = *)]]: 
        [[0..*]] { [[1..*]] 408729009 |Finding context| = [[+id(<< 410514004 |Finding context value (qualifier value)|)]], 
        [[1..*]] 408731000 |Temporal context| = [[+scg(<< 410510008 |Temporal context value (qualifier value)|)]], 
        [[0..*]] 246090004 |Associated finding| = [[+scg(<< 404684003 |Clinical finding (finding)| OR << 272379006 |Event (event)| OR << 363787002 |Observable entity (observable entity)| 
        OR << 416698001 |Link assertion (link assertion)| OR << 71388002 |Procedure (procedure)|)]], 
        [[0..*]] 408729009 |Finding context| = [[+scg(<< 410514004 |Finding context value (qualifier value)|)]], 
        [[0..*]] 408732007 |Subject relationship context| = [[+scg(<< 125676002 |Person (person)|)]], 
        [[0..*]] 408731000 |Temporal context| = [[+scg(<< 410510008 |Temporal context value (qualifier value)|)]] }

Cardinality

  •  

    • Cardinality of relationship group

      • Pattern: [[ 1..* ]] { .. }

      • Default operator between repeats: "," / "AND"

      • Example: CT of X
        71388002 |Procedure[[1..1 ]]
        260686004 |Method312251004 |Computed tomography imaging action|,
          405813007 |Procedure site - Direct| = [[+id (<<442083009 |Anatomical or acquired body structure|)] @site] }

    • Cardinality of attribute value pair

      • Pattern: [[ 1..* ]] 123345 |Attribute| = 234456 |Value|

      • Default operator between repeats: "," / "AND"

      • Example: CT of X
        71388002 |Procedure:
        260686004 |Method312251004 |Computed tomography imaging action|,
          [[ 1..1 ]] 405813007 |Procedure site - Direct| = [[+id (<<442083009 |Anatomical or acquired body structure|)] @site] }

    • Cardinality of focus concepts

      • Pattern: [[ +() 1..* ]]

      • Default operator between repeats: "+" / "AND"

        • How would we achieve an operator of "OR" in an Expression Constraint? - e.g. [[+ecl 1..* ]]→ A OR B OR C

      • Example: 
         [[+id(<< 404684003 |Clinical finding|) 1..* ]]

       

    • Other types of cardinalities?

Other Topics raised by Ed

  •  

    • The fact that a template processor would need to 'clean-up' any left over characters, such as ":". I suggest that we try to document the steps that a template processor should follow to turn a template into an expression, constraint etc.

Confirm next meeting date/time

@Former user (Deleted)

Next meeting to be held at 20:00 UTC on Wednesday 1st February 2017

Meeting Files

  File Modified
No files shared here yet.

Copyright © 2025, SNOMED International