2021-07-29 - SLPG Meeting

2021-07-29 - SLPG Meeting

Date & Time

20:00 to 21:00 UTC Thursday 29th July 2021

Location

Zoom meeting link (password: 764978)

Goals

  • Review updates to URI specification for unpublished content

  • Progress ECL enhancements - concept filters and access to historical refsets

Attendees 

  • Chair: @Former user (Deleted)

  • Project Group: @Anne Randorff Højen@Kai Kewley@michael lawley@Peter Jordan (Unlicensed)@Ed Cheetham@Rob Hausam

 

Agenda and Meeting Notes

Description

Owner

Notes

Description

Owner

Notes

Welcome and agenda

@Former user (Deleted)

Welcome to new attendees

URIs for unpublished content

 

2.8 URIs for Unpublished Content

2.3 Edition and Version-Relative Component URIs

Enhancements to Template Syntax

 

Enhancements include:

  • Default values

  • Slot references

  • Interslot dependencies, including 'same value' and 'all or none' constraints

  • Upgrade to ECL 1.5 (with description filters)

See

5.1 Normative Specification

7.4 Default Values for Replacement Slots

7.7 Interslot Dependencies

Outstanding features:

  • Concept filters - e.g. ability to say that the focus concept of an expression must be primitive (for proximal primitive modelling)

ECL - Concept Filters

 

Concept Filters - draft updates for review:

Concept Filters - examples

  • definitionStatusId

    • {{ C definitionStatus = primitive }}

    • {{ C definitionStatus = defined }}

    • {{ C definitionStatusId = 900000000000074008 |Not sufficiently defined by necessary conditions definition status| }}

    • {{ C definitionStatusId = 900000000000073002 |Sufficiently defined by necessary conditions definition status| }}

  • moduleId

    • {{ C moduleId = 900000000000207008 |SNOMED CT core module| }}

    • {{ C moduleId = 900000000000012004 |SNOMED CT model component module| }}

    • {{ C moduleId = 45991000052106 | SNOMED CT Sweden NRC maintained module| }}

  • effectiveTime

    • {{ C effectiveTime = "20210131" }}

    • {{ C effectiveTime <= "20210131" }}

  • active

    • {{ C active = 0 }}

    • {{ C active = 1 }}

    • {{ C active = yes }}

    • {{ C active = no }}

  • Full example

    • < 404684003 |Clinical finding| {{ C definitionStatus = primitive, effectiveTime <= "20210131", module = (900000000000207008 45991000052106), active = 1 }} {{ D term = "cardio" }}

    • < 404684003 |Clinical finding| {{ C definitionStatusId = 900000000000074008 |Not sufficiently defined by necessary conditions definition status|, effectiveTime <= "20210131", moduleId = 900000000000207008 |SNOMED CT core module|, active = yes}} {{ D term = "cardio" }}

ECL - Access to historical refsets

 

See discussion below "Querying Refset Attributes"

The items below are currently on hold

Postcoordination Topics

 

  • Discuss feedback on transformation implementation

    • Resources

    • Recap of SNOMED on FHIR discussions

      • What is the functionality scope of a terminology server that supports postcoordination? For example, does it include:

        • Classifying multiple expressions in a single substrate? What are the use cases for this?

        • Assigning (local) identifiers to expressions? What are the use cases for this?

        • Autogenerating or assigning a term to an expression? What are the use cases for this?

      • Does a terminology server that supports postcoordination, include all the functions of an expression repository?

      • What is the relationship between a terminology server that supports postcoordination, and an expression repository?

    • Outstanding questions

      • What are the pros and cons of extending SCG to allow an expression as the focus of a postcoordinated expression?

        • Note: This was raised in context of a NNF generated over a postcoordinated substrate, where the proximal parent is an expression

      • Example of using expressions in focus concept

        • 125605004 |Fracture of bone|:363698007 |finding site| = 84167007 |Foot bone| )
          272741003 |Laterality| = 7771000 |Left|

        • 125605004 |Fracture of bone|:363698007 |finding site| = 84167007 |Foot bone| , 
          272741003 |Laterality| = 7771000 |Left|

      • What is the expected NNF when classifying an expression that is equivalent to a precoordinated concept? For example:

        • Expression that is equivalent to 111273006 |Acute respiratory disease|

        • 64572001 | Disease (disorder) | :
          {263502005 |Clinical course (attribute)| = 424124008 |Sudden onset AND/OR short duration (qualifier value)|}
          {363698007 |Finding site (attribute)| = 89187006 |Airway structure (body structure)|}

        • Options:

          1. 111273006 |Acute respiratory disease| :
            {263502005 |Clinical course| = 424124008 |Sudden onset AND/OR short duration|}
            {363698007 |Finding site| = 89187006 |Airway structure|}

          2. 50043002 |Disorder of respiratory system (disorder)| +
            2704003 |Acute disease (disorder)| :
            {263502005 |Clinical course| = 424124008 |Sudden onset AND/OR short duration|}
            {363698007 |Finding site| = 89187006 |Airway structure|}

          3. Other?

    • Recap of internal discussions with Content Team

      • Inter-attribute dependencies

      • Grouping rules

Dynamic Templates

 

  • Continue discussion on dynamic templates

    • Inter-attribute dependencies

      • Acute/Chronic and Inflammation - Adding a clinical course requires specializing the inflammation morphology 

        • E.g. |Pyelonephritis| : |Clinical course| = |Chronic|
          should be
          |Pyelonephritis| : |Clinical course| = |Chronic|, |Associated morphology| = |Chronic inflammation|

        • E.g. |Pyelonephritis| : |Clinical course| = |Sudden onset AND/OR short duration|
          should be
          |Pyelonephritis| : {|Clinical course| = |Sudden onset AND/OR short duration||, |Associated morphology| = |Acute inflammation|

      • Infectious Causative Agents - Adding a |causative agent| = |Domain Bacteria| or |Virus| requires adding a |Pathological process| = |Infectious process|

        • E.g. |Nephritis|: |Causative agent| = |Domain bacteria|
          should be
          |Nephritis|: |Causative agent| = |Domain bacteria|, |Pathological process| = |Infectious process|

      • Congenital and Acquired - Adding an |Occurrence| of |Congenital| to a focus concept with an abnormal morphology, requires adding a |Pathological process| of |Pathological development process|

        • E.g. |Koilonychia|: |Occurrence| = |Congenital|
          should be
          |Koilonychia|: |Occurrence| = |Congenital|, |Pathological process| = |Pathological developmental process|

      • Situations with Explicit Context 

      1. if the procedure context = |Planned|, then the temporal context should be << |Current of specified time|

        1. If the procedure context = |In progress|, then the temporal context should be << |Current|

        2. If the procedure context = |Performed| or |Done|, then the temporal context should be << |Current or past (actual)|

      • Note: for this use case (of |Procedure with explicit context|) perhaps we just recommend (or require) that the full role group is spelled out.

      • Next steps

        • Representation of the content rules

          • Who creates the complete list of rules and how?

            • What formalism?

            • Determine which are mandatory and which are optional

          • Implementation of content rules - e.g.

            • Guided data entry by pre-populating role groups in expression template based on definition of focus concepts (for design-time use, such as mapping)

            • Mandatory content rules could be added to transform process

Postcoordination Use Case Examples

All

Example 1 - Dentistry / Odontogram

  • Requires an expression template to create expressions.

  • Resulting expression still requires a transformation to make it classifiable

Example 2 - Terminology binding

  • Uses a fixed expression template to combine codes entered into separate fields

  • The procedure+laterality example still requires a transformation to make it classifiable

Example 3 - Mapping

  • Design-time activity

  • Map targets may not be able to be fully represented using concept model attributes

  • In many cases, an extension (with primitive concepts) should be recommended where there are gaps in the mapping

  • There may be some cases in which postcoordination is helpful (e.g. LOINC to SNOMED CT map)

Example 4 - Natural Language Processing

  • Usually run-time activity.

  • May require manual confirmation of coding suggestions (unless low clinical risk, eg for suggesting relevant patient records for manual review)

Postcoordination Guidance

@Former user (Deleted) , @Anne Randorff Højen , @Kai Kewley

Practical Guide to Postcoordination

  • Proposal - Use syntax (i.e. braces) to distinguish refinement vs new role group

  • Proposal: Expression forms needed for this (see 3.4 Transforming Expressions)

    • Close to user form - e.g. 83152002 |Oophorectomy|  405815000 |Procedure device|  =  122456005 |Laser device|

    • Canonical close to user form - e.g. 83152002:405815000=122456005

    • Classifiable form (SCG) - e.g. 83152002:{260686004=129304002,405813007=15497006,405815000=122456005}

      • PLUS Classifiable form (OWL) - e.g.  

        • EquivalentClasses(:123063
             ObjectIntersectionOf (:71388002
                 ObjectSomeValuesFrom(:609096000 ObjectIntersectionOf( ObjectSomeValuesFrom(:260686004 :129304002)
                 ObjectSomeValuesFrom(:405813007 :15497006))))

    • Necessary normal form - e.g. 83152002+416376001:{260686004=129304002,405813007=15497006,405815000=122456005}

      • PLUS Necessary normal form (tables)

        • Relationships:

          • (123063 116680003 83152002) - 0

          • (123063 260686004 129304002) - 0 

          • (123063 405813007 15497006) - 1

          • (123063 405815000 122456005) - 1

    • Primitive expressions - "<<<" (only useful in a mapping context) → .... relies on the assigned identifier (which are necessarily semantically unique).

  • Proposed Transformation Rules - Refinements (in valid domain of focus concepts)
    Close-to-user-form - IF the grouping of the refinement is not concept model valid THEN
              If there is a single (non-self-grouped) role group in the definition of the focus concept, then any ungrouped (but groupable) refinements are merged with this role group
              If there is more than one (non-self-grouped) role group in the definition then flag as ambiguous and require refinement
                           NEED TO FIND a realistic clinical example where this may occur // Prevent failing cases from coming up // use template
                           ALTERNATIVE: Refinement is applied to all (non-self-grouped) role groups in the definition
              Self-grouped attributes in the refinement are grouped on their own - i.e. Priority, Due to, After, Before, During, Clinical course, Temporally related to, and all Observable entity attributes (see Relationship Group)
             Self-grouped attributes in the definition of the focus concept(s) are left unchanged

    1. Single refinement
      83152002 |Oophorectomy|  405815000 |Procedure device|  =  122456005 |Laser device|

Copyright © 2025, SNOMED International