Skip to content

Commit 07ebb26

Browse files
authored
Merge pull request #915 from b2ihealthcare/feature/SO-4944_update_ecl
SO-4944: Update ECL to version 1.6
2 parents bf69dc4 + 3db66da commit 07ebb26

File tree

4 files changed

+198
-116
lines changed

4 files changed

+198
-116
lines changed

releng/target-platform/target-platform.target

+3-3
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,9 @@
6060
<repository location="https://download.eclipse.org/modeling/emft/mwe/updates/releases/2.11.3/"/>
6161
</location>
6262
<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
63-
<repository location="mvn:com.b2international:com.b2international.snomed.ecl.update:1.5.2:zip"/>
64-
<unit id="com.b2international.snomed.ecl.feature.feature.group" version="1.5.2"/>
65-
<unit id="com.b2international.snomed.ecl.ui.feature.feature.group" version="1.5.2"/>
63+
<repository location="mvn:com.b2international:com.b2international.snomed.ecl.update:1.6.0:zip"/>
64+
<unit id="com.b2international.snomed.ecl.feature.feature.group" version="1.6.0"/>
65+
<unit id="com.b2international.snomed.ecl.ui.feature.feature.group" version="1.6.0"/>
6666
</location>
6767
</locations>
6868
</target>

snomed/com.b2international.snowowl.snomed.core.feature/feature.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ Visit us at http://b2i.sg
1616

1717
<requires>
1818
<import feature="com.b2international.snowowl.core.feature" version="8.0.0" match="compatible"/>
19-
<import feature="com.b2international.snomed.ecl.feature" version="1.5.2"/>
19+
<import feature="com.b2international.snomed.ecl.feature" version="1.6.0"/>
2020
</requires>
2121

2222
<plugin

snomed/com.b2international.snowowl.snomed.datastore.tests/src/com/b2international/snowowl/snomed/core/ecl/SnomedEclEvaluationRequestPropertyFilterTest.java

+53-34
Original file line numberDiff line numberDiff line change
@@ -48,21 +48,21 @@ public SnomedEclEvaluationRequestPropertyFilterTest(String expressionForm, boole
4848

4949
@Test
5050
public void activeOnly() throws Exception {
51-
final Expression actual = eval("* {{ active=true }}");
51+
final Expression actual = eval("* {{ c active=true }}");
5252
final Expression expected = SnomedDocument.Expressions.active();
5353
assertEquals(expected, actual);
5454
}
5555

5656
@Test
5757
public void inactiveOnly() throws Exception {
58-
final Expression actual = eval("* {{ active=false }}");
58+
final Expression actual = eval("* {{ c active=false }}");
5959
final Expression expected = SnomedDocument.Expressions.inactive();
6060
assertEquals(expected, actual);
6161
}
6262

6363
@Test
6464
public void moduleId() throws Exception {
65-
final Expression actual = eval("* {{ moduleId= " + Concepts.MODULE_SCT_CORE + " }}");
65+
final Expression actual = eval("* {{ c moduleId= " + Concepts.MODULE_SCT_CORE + " }}");
6666
final Expression expected = SnomedDocument.Expressions.modules(List.of(Concepts.MODULE_SCT_CORE));
6767
assertEquals(expected, actual);
6868
}
@@ -90,7 +90,7 @@ public void termLessThanTwoChars() throws Exception {
9090

9191
@Test
9292
public void conjunctionActiveAndModuleId() throws Exception {
93-
final Expression actual = eval("* {{ active = true, moduleId = " + Concepts.MODULE_SCT_CORE + " }}");
93+
final Expression actual = eval("* {{ c active = true, moduleId = " + Concepts.MODULE_SCT_CORE + " }}");
9494
final Expression expected = Expressions.builder()
9595
.filter(SnomedDocument.Expressions.active())
9696
.filter(SnomedDocument.Expressions.modules(List.of(Concepts.MODULE_SCT_CORE)))
@@ -125,7 +125,7 @@ public void termDisjunction() throws Exception {
125125

126126
@Test
127127
public void disjunctionActiveAndModuleId() throws Exception {
128-
final Expression actual = eval("* {{ active = true OR moduleId = " + Concepts.MODULE_SCT_CORE + " }}");
128+
final Expression actual = eval("* {{ c active = true OR moduleId = " + Concepts.MODULE_SCT_CORE + " }}");
129129
final Expression expected = Expressions.builder()
130130
.should(SnomedDocument.Expressions.active())
131131
.should(SnomedDocument.Expressions.modules(List.of(Concepts.MODULE_SCT_CORE)))
@@ -135,12 +135,12 @@ public void disjunctionActiveAndModuleId() throws Exception {
135135

136136
@Test(expected = BadRequestException.class)
137137
public void conjunctionDomainInconsistency() throws Exception {
138-
eval("* {{ active=true AND Description.moduleId = "+ Concepts.MODULE_SCT_CORE +" }}");
138+
eval("* {{ active=true AND definitionStatusId = "+ Concepts.MODULE_SCT_CORE +" }}");
139139
}
140140

141141
@Test(expected = BadRequestException.class)
142142
public void disjunctionDomainInconsistency() throws Exception {
143-
eval("* {{ Description.active=true OR moduleId = "+ Concepts.MODULE_SCT_CORE +" }}");
143+
eval("* {{ active=true OR definitionStatusId = "+ Concepts.MODULE_SCT_CORE +" }}");
144144
}
145145

146146
@Test
@@ -161,22 +161,22 @@ public void descriptionType() throws Exception {
161161

162162
@Test(expected = BadRequestException.class)
163163
public void conjunctionAmbiguity() throws Exception {
164-
eval("* {{ Description.active=true AND Description.moduleId = " + Concepts.MODULE_SCT_CORE + " OR term=\"clinical finding\" }}");
164+
eval("* {{ active=true AND moduleId = " + Concepts.MODULE_SCT_CORE + " OR term=\"clinical finding\" }}");
165165
}
166166

167167
@Test(expected = BadRequestException.class)
168168
public void disjunctionAmbiguity() throws Exception {
169-
eval("* {{ Description.active=true OR Description.moduleId = " + Concepts.MODULE_SCT_CORE + " AND term=\"clinical finding\" }}");
169+
eval("* {{ active=true OR moduleId = " + Concepts.MODULE_SCT_CORE + " AND term=\"clinical finding\" }}");
170170
}
171171

172172
@Test(expected = BadRequestException.class)
173173
public void exclusionAmbiguity() throws Exception {
174-
eval("* {{ Description.active=true OR Description.moduleId = " + Concepts.MODULE_SCT_CORE +" MINUS term=\"clinical finding\" }}");
174+
eval("* {{ active=true OR moduleId = " + Concepts.MODULE_SCT_CORE +" MINUS term=\"clinical finding\" }}");
175175
}
176176

177177
@Test
178178
public void multiDomainQueryAnd() throws Exception {
179-
Expression actual = eval("* {{ active=false }} AND * {{ term=\"clin find\" }}");
179+
Expression actual = eval("* {{ c active=false }} AND * {{ d term=\"clin find\" }}");
180180
Expression expected = Expressions.builder()
181181
.filter(SnomedDocument.Expressions.inactive())
182182
.filter(SnomedDocument.Expressions.ids(Collections.emptySet()))
@@ -186,7 +186,7 @@ public void multiDomainQueryAnd() throws Exception {
186186

187187
@Test
188188
public void multiDomainQueryOr() throws Exception {
189-
Expression actual = eval("* {{ active=false }} OR * {{ term=\"clin find\" }}");
189+
Expression actual = eval("* {{ c active=false }} OR * {{ d term=\"clin find\" }}");
190190
Expression expected = Expressions.builder()
191191
.should(SnomedDocument.Expressions.inactive())
192192
.should(SnomedDocument.Expressions.ids(Collections.emptySet()))
@@ -196,7 +196,7 @@ public void multiDomainQueryOr() throws Exception {
196196

197197
@Test
198198
public void multiDomainQueryExclusion() throws Exception {
199-
Expression actual = eval("* {{ active=false }} MINUS * {{ term=\"clin find\" }}");
199+
Expression actual = eval("* {{ c active=false }} MINUS * {{ d term=\"clin find\" }}");
200200
Expression expected = Expressions.builder()
201201
.filter(SnomedDocument.Expressions.inactive())
202202
.mustNot(SnomedDocument.Expressions.ids(Collections.emptySet()))
@@ -365,35 +365,35 @@ public void descriptionEffectiveTime() throws Exception {
365365
.build());
366366

367367
Expression expected = SnomedDocument.Expressions.ids(Set.of(Concepts.ROOT_CONCEPT));
368-
Expression actual = eval("* {{ Description.effectiveTime = \"20210731\" }}");
368+
Expression actual = eval("* {{ effectiveTime = \"20210731\" }}");
369369
assertEquals(expected, actual);
370370

371371
expected = SnomedDocument.Expressions.ids(Set.of(Concepts.ROOT_CONCEPT));
372-
actual = eval("* {{ Description.effectiveTime > \"20210605\" }}");
372+
actual = eval("* {{ effectiveTime > \"20210605\" }}");
373373
assertEquals(expected, actual);
374374

375375
expected = SnomedDocument.Expressions.ids(Set.of(Concepts.SUBSTANCE));
376-
actual = eval("* {{ Description.effectiveTime < \"20020201\" }}");
376+
actual = eval("* {{ effectiveTime < \"20020201\" }}");
377377
assertEquals(expected, actual);
378378

379379
expected = SnomedDocument.Expressions.ids(Set.of(Concepts.ROOT_CONCEPT, Concepts.SUBSTANCE));
380-
actual = eval("* {{ Description.effectiveTime >= \"20020131\" }}");
380+
actual = eval("* {{ effectiveTime >= \"20020131\" }}");
381381
assertEquals(expected, actual);
382382

383383
expected = SnomedDocument.Expressions.ids(Set.of(Concepts.ROOT_CONCEPT, Concepts.SUBSTANCE));
384-
actual = eval("* {{ Description.effectiveTime >= \"20010731\" }}");
384+
actual = eval("* {{ effectiveTime >= \"20010731\" }}");
385385
assertEquals(expected, actual);
386386

387387
expected = SnomedDocument.Expressions.ids(Set.of(Concepts.ROOT_CONCEPT, Concepts.SUBSTANCE));
388-
actual = eval("* {{ Description.effectiveTime <= \"20210731\" }}");
388+
actual = eval("* {{ effectiveTime <= \"20210731\" }}");
389389
assertEquals(expected, actual);
390390

391391
expected = SnomedDocument.Expressions.ids(Set.of(Concepts.ROOT_CONCEPT, Concepts.SUBSTANCE));
392-
actual = eval("* {{ Description.effectiveTime <= \"20211030\" }}");
392+
actual = eval("* {{ effectiveTime <= \"20211030\" }}");
393393
assertEquals(expected, actual);
394394

395395
expected = SnomedDocument.Expressions.ids(Set.of(Concepts.ROOT_CONCEPT, Concepts.SUBSTANCE));
396-
actual = eval("* {{ Description.effectiveTime != \"20211030\" }}");
396+
actual = eval("* {{ effectiveTime != \"20211030\" }}");
397397
assertEquals(expected, actual);
398398
}
399399

@@ -416,7 +416,7 @@ public void conceptEffectiveTime() throws Exception {
416416
.build());
417417

418418
Expression expected = SnomedDocument.Expressions.effectiveTime(EffectiveTimes.getEffectiveTime("20210731", DateFormats.SHORT));
419-
Expression actual = eval("* {{ effectiveTime = \"20210731\" }}");
419+
Expression actual = eval("* {{ c effectiveTime = \"20210731\" }}");
420420
assertEquals(expected, actual);
421421
}
422422

@@ -477,7 +477,7 @@ public void dialectPreferred() throws Exception {
477477
// extra acceptable description on another concept to demonstrate that it won't match
478478
generateAcceptableDescription(Concepts.MODULE_ROOT);
479479

480-
Expression actual = eval("* {{ dialect = en-gb (preferred) }}");
480+
Expression actual = eval("* {{ dialect = en-gb (prefer) }}");
481481
Expression expected = SnomedDocument.Expressions.ids(Set.of(Concepts.ROOT_CONCEPT));
482482
assertEquals(expected, actual);
483483
}
@@ -488,7 +488,7 @@ public void dialectPreferredNotEquals() throws Exception {
488488
// extra acceptable description on another concept to demonstrate that it won't match
489489
generateAcceptableDescription(Concepts.MODULE_ROOT);
490490

491-
Expression actual = eval("* {{ dialect != en-gb (preferred) }}");
491+
Expression actual = eval("* {{ dialect != en-gb (prefer) }}");
492492
Expression expected = SnomedDocument.Expressions.ids(Set.of(Concepts.MODULE_ROOT));
493493
assertEquals(expected, actual);
494494
}
@@ -499,7 +499,7 @@ public void dialectAcceptable() throws Exception {
499499
// extra preferred description on another concept to demonstrate that it won't match
500500
generatePreferredDescription(Concepts.MODULE_ROOT);
501501

502-
Expression actual = eval("* {{ dialect = en-gb (acceptable) }}");
502+
Expression actual = eval("* {{ dialect = en-gb (accept) }}");
503503
Expression expected = SnomedDocument.Expressions.ids(Set.of(Concepts.ROOT_CONCEPT));
504504
assertEquals(expected, actual);
505505
}
@@ -510,7 +510,7 @@ public void dialectAcceptableNotEquals() throws Exception {
510510
// extra preferred description on another concept to demonstrate that it won't match
511511
generatePreferredDescription(Concepts.MODULE_ROOT);
512512

513-
Expression actual = eval("* {{ dialect != en-gb (acceptable) }}");
513+
Expression actual = eval("* {{ dialect != en-gb (accept) }}");
514514
Expression expected = SnomedDocument.Expressions.ids(Set.of(Concepts.MODULE_ROOT));
515515
assertEquals(expected, actual);
516516
}
@@ -541,7 +541,7 @@ public void dialectIdPreferred() throws Exception {
541541
// extra acceptable description on another concept to demonstrate that it won't match
542542
generateAcceptableDescription(Concepts.MODULE_ROOT);
543543

544-
Expression actual = eval("* {{ dialectId = " + Concepts.REFSET_LANGUAGE_TYPE_UK + " (preferred) }}");
544+
Expression actual = eval("* {{ dialectId = " + Concepts.REFSET_LANGUAGE_TYPE_UK + " (prefer) }}");
545545
Expression expected = SnomedDocument.Expressions.ids(Set.of(Concepts.ROOT_CONCEPT));
546546
assertEquals(expected, actual);
547547
}
@@ -552,7 +552,7 @@ public void dialectIdPreferredNotEquals() throws Exception {
552552
// extra acceptable description on another concept to demonstrate that it won't match
553553
generateAcceptableDescription(Concepts.MODULE_ROOT);
554554

555-
Expression actual = eval("* {{ dialectId != " + Concepts.REFSET_LANGUAGE_TYPE_UK + " (preferred) }}");
555+
Expression actual = eval("* {{ dialectId != " + Concepts.REFSET_LANGUAGE_TYPE_UK + " (prefer) }}");
556556
Expression expected = SnomedDocument.Expressions.ids(Set.of(Concepts.MODULE_ROOT));
557557
assertEquals(expected, actual);
558558
}
@@ -563,7 +563,7 @@ public void dialectIdAcceptable() throws Exception {
563563
// extra preferred description on another concept to demonstrate that it won't match
564564
generatePreferredDescription(Concepts.MODULE_ROOT);
565565

566-
Expression actual = eval("* {{ dialectId = " + Concepts.REFSET_LANGUAGE_TYPE_UK + " (acceptable) }}");
566+
Expression actual = eval("* {{ dialectId = " + Concepts.REFSET_LANGUAGE_TYPE_UK + " (accept) }}");
567567
Expression expected = SnomedDocument.Expressions.ids(Set.of(Concepts.ROOT_CONCEPT));
568568
assertEquals(expected, actual);
569569
}
@@ -574,7 +574,7 @@ public void dialectIdAcceptableNotEquals() throws Exception {
574574
// extra preferred description on another concept to demonstrate that it won't match
575575
generatePreferredDescription(Concepts.MODULE_ROOT);
576576

577-
Expression actual = eval("* {{ dialectId != " + Concepts.REFSET_LANGUAGE_TYPE_UK + " (acceptable) }}");
577+
Expression actual = eval("* {{ dialectId != " + Concepts.REFSET_LANGUAGE_TYPE_UK + " (accept) }}");
578578
Expression expected = SnomedDocument.Expressions.ids(Set.of(Concepts.MODULE_ROOT));
579579
assertEquals(expected, actual);
580580
}
@@ -595,11 +595,9 @@ public void dialectUnsupportedOperator() throws Exception {
595595
eval("* {{ dialect > en-gb (preferred) }}");
596596
}
597597

598-
@Test
598+
@Test(expected = SyntaxException.class)
599599
public void dialectUnknownAcceptability() throws Exception {
600-
Expression actual = eval("* {{ dialect = en-gb (unknown) }}");
601-
Expression expected = SnomedDocument.Expressions.ids(Set.of());
602-
assertEquals(expected, actual);
600+
eval("* {{ dialect = en-gb (unknown) }}");
603601
}
604602

605603
@Test
@@ -623,6 +621,27 @@ public void dialectUnknownAlias() throws Exception {
623621
assertEquals(expected, actual);
624622
}
625623

624+
@Test
625+
public void definitionStatus() throws Exception {
626+
Expression actual1 = eval("* {{ c definitionStatusId = 900000000000073002 }}");
627+
Expression actual2 = eval("* {{ c definitionStatus = defined }}");
628+
Expression expected = SnomedConceptDocument.Expressions.definitionStatusIds(Set.of(Concepts.FULLY_DEFINED));
629+
assertEquals(expected, actual1);
630+
assertEquals(expected, actual2);
631+
}
632+
633+
@Test
634+
public void definitionStatusNotEquals() throws Exception {
635+
Expression actual1 = eval("* {{ c definitionStatusId != 900000000000074008 }}");
636+
Expression actual2 = eval("* {{ c definitionStatus != primitive }}");
637+
Expression expected = Expressions.builder()
638+
.mustNot(SnomedConceptDocument.Expressions.definitionStatusIds(Set.of(Concepts.PRIMITIVE)))
639+
.build();
640+
641+
assertEquals(expected, actual1);
642+
assertEquals(expected, actual2);
643+
}
644+
626645
private void generatePreferredDescription(String conceptId) {
627646
indexRevision(MAIN, SnomedDescriptionIndexEntry.builder()
628647
.id(generateDescriptionId())

0 commit comments

Comments
 (0)