Welcome, apologies and agenda review | | Record attendees and apologies Review agenda for today's meeting |
Feedback from B2i on ECL | | 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^(<<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 | | 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 |Method| = 312251004 |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 |Method| = 312251004 |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 |Method| = 312251004 |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 | | Next meeting to be held at 20:00 UTC on Wednesday 21 December 20161st February 2017 |