Date & Time
20:00 UTC Wednesday 17 August 2016
GoToMeeting Details
Goals
- Discuss potential URI pattern for computable languages
- Discuss publication of ECL v1.1 with decomposition syntax
- Discuss proposed scope and syntax for v1.0 Template Syntax
Attendees
- Chair: Linda Bird
- Project Group:
Apologies
Agenda and Meeting Notes
Description | Owner | Notes |
---|---|---|
Welcome, introductions and apologies | ||
Agenda review | Review agenda for today's meeting | |
URI Pattern for Languages |
| |
Expression Constraint Language v1.1 |
| |
Template Syntax v1.0 |
| |
Proposed use cases for v1.0
Proposal is to keep the scope of v1.0 as tight as possible (to deliver this year), and look at possible extended functionality in future versions | ||
OPTION 1
[[~ @expressionName]] [[+cpt(<< 413350009 |Finding with explicit context| ) @findingWithExplicitContext $fwecRef 1..1]]: [[~ @groupA 1..2]] {[[~ @associatedFindingAVP 0..1]] 246090004 |Associated finding| = ([[+cpt(<< 404684003 |Clinical finding| ) @associatedFindingValue $afRef 1..1]]: [[~ @groupB 0..1]] { [[~ @severityAVP 0..1]] 246112005 |Severity| = [[+cpt(< 272141005 |Severities| ) @severityValue $sevRef]], [[~ @findingSiteAVP 0..1]] 363698007 |Finding site| = [[+cpt(< 91723000 |Anatomical structure| ) @findingSiteValue $fsRef]] }), [[~ @subjectRelAVP 1..1]] 408732007 |Subject relationship context| = [[+cpt(< 444148008 |Person in family of subject| ) @subjectRelValue $srRef]], [[~ @temporalContextAVP 1..1]] 408731000 |Temporal context| = [[+cpt(< 410510008 |Temporal context value| ) @temporalContextValue $tcRef]], [[~ @findingContextAVP 1..1]] 408729009 |Finding context| = [[+cpt(< 410514004 |Finding context value| ) @findingContextValue $fcRef]] } | ||
OPTION 2
@expressionName [[+cpt(<<
413350009 |Finding with explicit context|
) @findingWithExplicitContext $fwecRef 1..1]]: ~[1..2] @groupA {~[0..1] @associatedFindingAVP 246090004 |Associated finding| = ([[+cpt(<< 404684003 |Clinical finding| ) @associatedFindingValue $afRef 1..1]]: ~[0..1] @groupB { ~[0..1] @severityAVP 246112005 |Severity| = [[+cpt(< 272141005 |Severities| ) @severityValue $sevRef]], ~[0..1] @findingSiteAVP 363698007 |Finding site| = [[+cpt(< 91723000 |Anatomical structure| ) @findingSiteValue $fsRef]] }), ~[1..1] @subjectRelationshipAVP 408732007 |Subject relationship context| = [[+cpt(< 444148008 |Person in family of subject| ) @subjectRelValue $srRef]], ~[1..1] @temporalContextAVP 408731000 |Temporal context| = [[+cpt(< 410510008 |Temporal context value| ) @temporalContextValue $tcRef]], ~[1..1] @findingContextAVP 408729009 |Finding context| = [[+cpt(< 410514004 |Finding context value| ) @findingContextValue $fcRef]] } | ||
OTHER POSSIBLE SYNTAX RULES
| ||
Confirm next meeting date/time | Next meeting to be held at 20:00 UTC on Wednesday 12 October (due to travel commitments and vacation) |
Meeting Files
9 Comments
Michael Lawley
This is a more complex decomposition example:
"substances of specimen collection where the method is biopsy"
ECL:
<< 105590001|substance| : R 363701004 | direct substance| = ( << 17636008 | specimen collection| : 260686004 | method | = 129314006 | Biopsy - action | )
Would become the following using "decomposition syntax"
( << 17636008 | specimen collection| : 260686004 | method | = 129314006 | Biopsy - action | ) . 363701004 | direct substance|
Linda Bird
Nice example Michael! Thanks!
Michael Lawley
Challenge: "body structures for the procedure site (direct/indirect/unspecified) where the method is excision action" - hard because you need to decompose a constrained relationship group.
It's not immediately obvious to me how to do it in either syntax.
Linda Bird
Hi Michael,
Interesting problem. I agree that this can't be done in ECL.
I think what you're trying to achieve would be like finding the set of matching @site values when comparing the following expression template to the set of concept definitions in your substrate:
[[ + (< |Procedure|)]] : [[~ 1..*]] { |Method| = |Excision - action|, [[ + (<< |Procedure site|) ]] = [[ + @site ]], [[~ 0..*]] [[+ (*) ]] = [[+ (*) ]] }, [[~ 0..*]] { [[~ 0..*]] [[+ (*) ]] = [[+ (*) ]] }
I think this would require internal correlation (like an SQL 'correlated subquery') to do this in ECL.
Kind regards,
Linda.
Ed Cheetham
Dear all
Sorry I missed the last meeting - thanks for the detailed notes.
I think I've stared at the two template options above for as long as is healthy, and haven't really come down firmly on one option or the other. However I am tending towards Option 1 (or perhaps a variant)...
Whatever is decided, there is a need to distinguish between what shall be processed (replaced or removed) and what shall remain unchanged in the output. In both options this is largely handled; certainly if the output is an expression then I can see rules to determine what gets removed and what should always be 'literally' present in the output (although see below). By contrast if the output is to be an expression constraint there's currently a bit more guesswork involved (just because neither example illustrates the +ecl option), but it would appear that some features of constraint syntax (e.g. comparison operators such as =, !=, attribute operators) would not be mutable at the time of template processing whilst others (referenced components, constraint operators, cardinalities without '~') would (I accept I may have some flawed assumption here, but I don't think I'm completely wrong).
To me Option 1 has a cleaner mechanism for indicating the difference - every time I encounter a [[...]] pair I know that it will contain some useful stuff (cardinality instruction, slot name, external reference name, all of which eventually get discarded) plus or minus some 'thing' in a (...) pair which I process and include in the output. This actually makes me wonder whether there is a need for the [[~...]] notation to indicate removable slots, since any slot without a +cpt() etc. segment leaves nothing behind.
By contrast Option 2 has a number of different symbolic ways of saying 'remove me' or 'replace me'.
Going back to an Option 1 variant idea (mixed in with the apparent arbitrariness of what can be 'slot substituted' in a constraint template) an extension to include any feature of the syntax in [[...]] would allow (perhaps desirable) flexibility. Say, for example, I wish to create a 'standardised pattern for a SNOMED CT query' (Linda's simplified description of a constraint template) where, for a refinement I could specify the whole of a role hierarchy or just the top concept ,that is, either:
<< 404684003 |clinical finding|: << 47429007 |associated with| = << 267038008 |edema|
or
<< 404684003 |clinical finding|: 47429007 |associated with| = << 267038008 |edema|
...or wish to 'use my pattern' to toggle between creating an 'equals' and 'doesn't equal' constraints:
<< 404684003 |clinical finding|: << 47429007 |associated with| = << 267038008 |edema|
or
<< 404684003 |clinical finding|: << 47429007 |associated with| != << 267038008 |edema|
It looks to me as though (certainly the second example) could only be done by having multiple (two in this case) constraint templates (one with a literal '=' and one with '!= ') unless it was also possible to 'slot substitute' other features of the constraint syntax, e.g.:
<< 404684003 |clinical finding|: << 47429007 |associated with| [[@comparison1 +char('=' OR '!=') 1..1]] << 267038008 |edema|
The Option 1 approach would reuse the same [[...]] mechanism to signal that there is something to be substituted (resolving to an available option in '()'). Clearly there would be a design judgement as to when it would be better to create a family of templates and when to create single templates with multiple configurable fields, but at the moment there doesn't seem to be the choice.
Finally, going back to 'stuff outside [[...]] being literally present in the output', I appreciate that with optional components this will result in some literal characters being left in the output ({} pairs where optional RGs are omitted, ':' characters where optional refinements are omitted) that are redundant or result in an invalid expression. I presume that this is a 'routine' problem and processors/generators need a clean-up step to wash such characters off?
Ed
Linda Bird
Hi Ed,
Thank you so much for your thoughtful comments! And apologies it has taken me a while to consider this fully.
I think you raise some very good points - including:
Apologies if I've missed anything. I think this is a really good place to start back up our template discussions tomorrow.
Thanks very much Ed!
Kind regards,
Linda.
Jean Marie Rodrigues
Bonjour
I would like to submit the text of an oral presentation done in MIE 2016 in Munich named Representing ICD11 JLMMS using IHTSDO representation formalism
meaning compositional grammar and expression constraint language which was extracted from a master dissertation in Biomedical Engineering in Université Paris V Descartes.
I am interested with my student M Mamou by your comments. We have done the work only on the Circulatory chapter of ICD 11 and i can send the full chapter representation
Thank you
I will be interested to participate to the gotomeeting but unfortunately for the 12 october 20 UTC i will be travelling and not available
Jean marie Rodriguesre-submission2JMR_mie_2016.docx
Ed Cheetham
Hi Jean Marie
I've only just seen this post. After a quick read of the paper I have a few comments:
I think this describes a useful analysis, but I'm not yet convinced that this represents a practical or maintainable way of characterising the relationship between SNOMED CT an ICD 11.
Ed
Jean Marie Rodrigues
Bonjour Ed and thanks for the comment
I must review your points for this was done by the master student and i must acknowledge that i have not reviewed every thing.
This master dissertation should be followed by a PhD dissertation with another student.
I understand you are interested to be a co tutor for the future work based on your initial comment
the presentation (and the dissertation) were aimed to demonstrate the feasibility to represent coming ICD11 (unfortunately NOT YET stabilized to day after the WH0-FIC 2016 annual meeting in Tokyo!!!) with IHTSDO tools
1 ok the student was not a physician
2 SNF was used at the beginning of the work but we shifted to the browser expression afterwards
3 your example is correct and it must be corrected
I will be back to you