| | |
|---|
Welcome and agenda | All | |
Postcoordination Implementation Demos | Anne Randorff Højen
Kai Kewley
| |
Review Feedback for: Postcoordination Guide (Phase 1) | Anne Randorff Højen
| |
Agree solution for "Procedure with explicit context" transformation | Kai Kewley
| Agree when MRCM constraints should be applied. Jeremy is not completely comfortable with using "Procedure with explicit context" when adding context to a procedure. |
Topics for Business Meeting | Kai Kewley
| Please suggest additional topics for the April business meeting. We will be publishing the Postcoordination Guide with "Trial Use" status. We are likely to have a wider audience than the normal group so we could spend some time talking through that. We have been asked to consider how LOINC codes (and other alternate identifiers) should be used in ECL as part of the Regenstrief collaboration. ECL 2.2, allow working between Full SNOMED and GPS (highest and lowest match) syntax sugar to make it easy.
|
The items below are currently on hold |
URIs for language instances | | |
ECL v2.2 Proposal | | Find the leaves of a set of concepts - example use case (find the proximal set in the international core / or in the IPS) - example: Example use cases Proximal ancestors in a specific module: ( > |concept| {{ C moduleId = 1234 }} ) MINUS ( > (> |concept| {{ moduleId = 1234 }}) ) Leaf nodes: < |concept| MINUS (> (< |concept|)) Removing any redundant concepts (ie subsumes another concept) from a set of concepts
Find the root concepts of a set of concepts - example use case (find the proximal set in the international core / or in the IPS) - example: |
ECL v2.1 - Requirement proposals (to be archived) | All | Potential requirements for ECL v2.1 - Discussion and brainstorming Daniel's comments Context supplements - e.g. << 56265001 |Heart disease| {{ + CONTEXT }} – This syntax is too general, as there is a risk of including absent finding, not-done procedure and family history << 56265001 |Heart disease| {{ + CONTEXT-DEFAULT }} ? – What would this mean? Brief form: Expanded form: [[ @ecl_query ]] OR (< 243796009 |Situation with explicit context|: { ( 246090004 |Associated finding| = ( [[ @ecl_query ]] ) OR |Associated procedure| = ( [[ @ecl_query ]] ) ( |Procedure context| = |Done| OR |Finding context| = |Known present|), |Subject relationship context| = |Subject of record|, |Temporal context| = [[ @temporal_value ]] } )
Example 1: << |Heart procedure| {{ + Context (Temporal = *) }} << |Heart procedure| OR (< 243796009 |Situation with explicit context|: { 246090004 |Associated finding| = << 56265001 |Heart disease|, |Procedure context| = |Done|, |Subject relationship context| = |Subject of record|, |Temporal context| = * } ) Example 2: (<< |Heart disease| OR << |Heart procedure| ) {{ + Context (Temporal = *) }} << |Heart procedure| OR (< 243796009 |Situation with explicit context|: { ( 246090004 |Associated finding| = (<< |Heart disease| OR << |Heart procedure| ) OR |Associated procedure| = ( << |Heart disease| OR << |Heart procedure| ) ) ( |Procedure context| = |Done| OR |Finding context| = |Known present|), |Subject relationship context| = |Subject of record|, |Temporal context| = * } )
<< 56265001 |Heart disease| {{ + Context (Temporal = *, FindingContext=<<|Known present| }}
However, you may want to exclude (or include) specific contexts - for example: To ensure that the finding was about the subject of the record (and not a family history, e.g. to exclude 429959009 |Family history of heart failure (situation)|), you could say: To ensure that the finding was 'Known present' (e.g. to exclude 394926003 |Heart disease excluded (situation)|), you could say: To ensure that the finding was about the subject of the record AND known present, you could say: ?? Is there any use case for restricting adding temporal context? (e.g. temporal != << 410513005 |In the past|)
Is any more syntactic sugar required? E.g. {{ + CONTEXT (relationship = self, finding context = present, temporal != past) }} {{ + CONTEXT (self, present, ! past) }}
Other ideas? Common profiles?
-------------------------- Ability to return attribute types (see proposal below) [ attributes ] << 125605004 |Fracture of bone (disorder)| << 125605004 |Fracture of bone (disorder)| . Attributes << 125605004 |Fracture of bone (disorder)| . (<< 125605004 |Fracture of bone (disorder)| . Attributes ) [ attribute, value] << 125605004 |Fracture of bone (disorder)|
------------------------- Reverse membership (see below) -------------------------- Other?
|
Returning Attributes | michael lawley
| For example, I can write: << 404684003|Clinical finding| : 363698007|Finding site| = <<66019005|Limb structure| << 404684003|Clinical finding| . 363698007|Finding site| But I can't get all the attribute names that are used by << 404684003|Clinical finding| |
Reverse Member Of | michael lawley
| What refsets is a given concept (e.g. 421235005 |Structure of femur|) a member of? |
Postcoordination Topics | | |
Dynamic Templates | | |
Postcoordination Use Case Examples | All | Example 1 - Dentistry / Odontogram Example 2 - Terminology binding 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 | Anne Randorff Højen , Kai Kewley
| Practical Guide to Postcoordination 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 Single refinement 83152002 |Oophorectomy| : 405815000 |Procedure device| = 122456005 |Laser device| Two groupable refinements 83152002 |Oophorectomy| : 405815000 |Procedure device| = 122456005 |Laser device|, 363700003 |Direct morphology| = 367643001 |Cyst | One groupable refinement with one self-grouped refinement 83152002 |Oophorectomy| : 405815000 |Procedure device| = 122456005 |Laser device|, 260870009 |Priority| = 394849002 |High priority| Refinement attribute matches (or subsumed by) attribute in focus concept's definition 83152002 |Oophorectomy| : 260686004 |Method| = 277261002 |Excision biopsy (qualifier value)| Refinement explicitly in role group 83152002 |Oophorectomy| : { 260686004 |Method| = 281615006 | Exploration - action | , 405813007 |Procedure site - direct| = 367643001 |Cyst | }
Proposed Transformation Rules - Refinements (NOT in valid domain of focus concepts) Close-to-user-form - IF the refinement's attribute is not valid for the domain of the focus concept THEN If there is a single role group in the definition of the focus concept, which has an attribute value in the domain of the refinement's attribute THEN nest the relevant attribute value with the refinement added to the attribute value (Note: It doesn't matter if the role group is self-grouped or not (see example 1 below) If there is more than one role group in the definition of the focus concept, which has an attribute value in the domain of the refinement's attribute THEN (non-self-grouped) role group in the definition then flag as ambiguous and require refinement Left aural temperature Malignant tumor of right ovary 363443007 |Malignant tumor of ovary|: 272741003 |Laterality| = 24028007 |Right| → 363443007 |Malignant tumor of ovary|: { 116676008 |Associated morphology| = 367651003 |Malignant neoplasm of primary, secondary or uncertain origin|, 363698007 |Finding site| = ( 15497008 |Ovarian structure| : 272741003 |Laterality| = 24028007 |Right| ) }
Other Example - Emergency excision of appendix 80146002 | Excision of appendix | : 260870009 |Priority| = 25876001 |Emergency|
Other Example - Fracture of bone 125605004 |Fracture of bone|: 363698007 |finding site| = 84167007 |Foot bone| 125605004 |Fracture of bone|: {363698007 |finding site| = 84167007 |Foot bone| } 125605004 |Fracture of bone|: {116676008 |Associated morphology| = 72704001 |Fracture|, 363698007 |finding site| = 84167007 |Foot bone| } 64572001 |Disease|: {116676008 |Associated morphology| = 72704001 |Fracture|, 363698007 |finding site| = 84167007 |Foot bone| }
|
The items below are currently on hold |
URIs for Extended Editions | | ON HOLD - How to refer to an 'extended edition' using a URI - e.g. "International Edition plus the following 2 nursing modules: 733983009 |IHTSDO Nursing Health Issues module|and 733984003 |IHTSDO Nursing Activities module| Use Case - Need to execute an ECL, that refers to "^ 733991000 | Nursing Health Issues Reference Set (foundation metadata concept) |" and/or "^ 733990004 | Nursing Activities Reference Set (foundation metadata concept) |", where the substrate includes the international edition, plus the modules that include these reference sets July 2020 International Edition URI: http://snomed.info/sct/900000000000207008/version/20200731 July 2020 International Edition + nursing modules URI ?? - For example: |
Expression Templates | Peter Williams
| Examples: [[+id]]: [[1..*] @my_group sameValue(morphology)] { |Finding site| = [[ +id (<<123037004 |Body structure (body structure)| MINUS << $site[! SELF ] ) @site ]] , |Associated morphology| = [[ +id @my_morphology ]]} Note that QI Project is coming from a radically different use case. Instead of filling template slots, we're looking at existing content and asking "exactly how does this concept fail to comply to this template?" For discussion: {"timestamp":1792733613325,"msg":"A unknown Exception Occurred","errorMsg":"The provided AtlassianHostUser did not specify a user to act as.","code":"500"} Is it correct to say either one of the cardinality blocks is redundant? What are the implications of 1..1 on either side? This is less obvious for the self grouped case. Road Forward for SIGenerate the parser from the ABNF and implement in the Template Service User Interface to a) allow users to specify template at runtime b) tabular (auto-completion) lookup → STL Template Service to allow multiple templates to be specified for alignment check (aligns to none-off) Output must clearly indicate exactly what feature of concept caused misalignment, and what condition was not met.
Additional note: QI project is no longer working in subhierarchies. Every 'set' of concepts is selected via ECL. In fact most reports should now move to this way of working since a subhierarchy is the trivial case. For a given template, we additionally specify the "domain" to which it should be applied via ECL. This is much more specific than using the focus concept which is usually the PPP eg Disease. FYI Michael Chu |
Description Templates | Kai Kewley
| |