IHTSDO / snow-owl

Snow Owl Terminology Server. This version is no longer maintained. Please use the upstream version or the alternate Snowstorm Terminology Server.
Apache License 2.0
11 stars 1 forks source link

ECL support #29

Closed cmark closed 7 years ago

cmark commented 7 years ago

This PR adds full support for ECL v1.1.1, both syntax and evaluation. IHTSDO ECL syntax and guide: http://snomed.org/ecl

While the syntax is fully supported, the following restrictions apply to the evaluator:

In order to support all six comparison operators (=, !=, <, >, <=, >=) for numeric values, I had to change indexing of concrete domain members. Previously the member document had only a single value field with String type. We used this field to store all four concrete domain data type values (integer, decimal, boolean, string) by converting them to their String representation. While this was okay for storing/retrieving and searching via exact match queries, this clearly can't support range queries, since Lucene will use all values available when executing range queries (true/false from boolean types, any string value and values produced by BigDecimal.toPlainString() are clearly not lexicographically sortable). Therefore the following changes have been applied to SNOMED CT index mapping:

Note: IHTSDO datasets currently have zero concrete domain members, index migration (reindex) is not required.

API changes:

kaicode commented 7 years ago

Great thank you Márk!