Goals
- Expand the use of the ECL language - discuss
- Make ECL expansion consistent on well known FHIR Terminology Servers
- Consider requirements for the maintenance of postcoordinated expressions
Attendees
- Chair: Kai Kewley
- Attendees: Daniel Karlsson, Jeremy Rogers, Roger Jane, Michael Lawley, Márk Czotter Unknown User (mgall), Rob Hausam
- Staff: Alejandro Lopez Osornio, Katharine Priest
- Apologies:
Next Time:
- URIs for postcoordinated expressions
- A way for termionlogy servers to warn of a partial expression validation implementation?
Agenda and Meeting Notes
Description Owner Notes Welcome and agenda ECL Maintenance Recommendations Unknown User (mgall) from EMIS is seeking guidance on best practises for ECL maintenance. Jeremy Rogers generously volunteered to draft some broad points for a new section of the ECL guide on this topic. ECL 2.2 has been published All Latest: Terminology Management Group on Saturday (pre-expo) - SNOMED International agreed to publish a URI to access alternate identifier maps via the FHIR API. Update on our suggestion "that a Map should be included in the LOINC extension, in addition to alt identifiers. This will enable terminology servers to translate back and forth between LOINC and SNOMED CT codes in the existing standard way." Previously we added the following warning in the ECL guide in the alternate identifiers section: Requirement to select a substance or a modification of that substance .... use case: during authoring to prompt the user with all the active ingredient options. Clinician chooses a drug and wants to refine the selection using modification-of substances. The modification-of attribute is a transitive property in OWL. Transitive properties have a similar characteristic to an is-a relationships but without stating a subtype relationship. In SNOMED CT an OWL property chains are used to help organise the hierarchy, allowing products with modified substance to be subsumed into concept groupers defined using the base substance. However in this case the base substance should not be inherited into the product with the modified substance. The base (not modified) version of the substance is found as redundant and removed during NNF calculation. See OWL Guide: 2.5. Generating Necessary Normal Form Relationships from the OWL Refsets Example property chain: "|Has active ingredient| o |Is modification of|" is a sub-property of "|Has active ingredient|". Example hierarchy: Parent Child Because And Property Chain: .. which results in OWL seeing the non modified ingredient as a property of the concept for the purpose of subsumption. Finally This could be used by the ECL engines. Solution Options: 733930001_ancestors: () All Potential issues when upgrading the substrate of an expression repository Kai Suggestion from Martin Gall (EMIS Health) https://github.com/IHTSDO/snomed-expression-constraint-language/issues/6 Answer - all known TS implementations call Antlr in a way that doesn't require EOF. Testing consistency between Snowray (Snow Owl), Ontoserver, Snowstorm. Also using custom made NHS Subset maintenance tool, would like to migrate to a standardised solution. Questions: ^ 816080008 |International Patient Summary| {{ D active = (true false) }} There are also some interesting edge case differences in the ability of each server to process ECL match description filters if they contain various symbol characters, such as *^% and so on. ML: Some observations: it is interesting to see the number of examples that are querying against terms – the results are not surprising since 1., this is a relatively new part of the spec, and 2., it steps outside the original conception of ECL as a query language that only used defining aspects of concepts as supported by the Concept and Relationship tables. All Discussion: How to make it easier to add an ECL capability to more tooling? ECL Lite - MVP Scope: Other TopicsECL 2.2 Publication LOINC related things Meds ECL Requirement Requirement
Background
SubObjectPropertyOf(
ObjectPropertyChain(
:127489000 |Has active ingredient (attribute)|
:738774007 |Is modification of (attribute)|
)
:127489000 |Has active ingredient (attribute)|
)
TransitiveObjectProperty(:738774007 |Is modification of (attribute)|)
OR ( << 105590001 |Substance (substance)| : << 738774007 |Is modification of (attribute)| = << 372687004 |Amoxicillin (substance)| )
OR ( << 105590001 |Substance (substance)| : << 738774007 |Is modification of (attribute)| = ( << 105590001 |Substance (substance)| : << 738774007 |Is modification of (attribute)| = << 372687004 |Amoxicillin (substance)| ) )
OR ( << 105590001 |Substance (substance)| : << 738774007 |Is modification of (attribute)| = ( << 105590001 |Substance (substance)| : << 738774007 |Is modification of (attribute)| = ( << 105590001 |Substance (substance)| : << 738774007 |Is modification of (attribute)| = << 372687004 |Amoxicillin (substance)| ) ) )
)
Set<String> transitiveProperties = owlOntology.getAxioms(AxiomType.TRANSITIVE_OBJECT_PROPERTY).stream()
.map(axiom -> axiom.getProperty().getNamedProperty().getIRI().getShortForm())
.collect(Collectors.toSet());Map<String, Set<String>> transitiveTypeParentMap;
addRelationship(source, destination, type) {
if (transitiveProperties.contains(type)) {
transitiveTypeAncestorMap.get(type).add(destination);
}
}
Expression Repository Maintenance ECL EOF marker ECL Results - TS consistency Expanding the use of the ECL standard All The items below are currently on hold