-
Notifications
You must be signed in to change notification settings - Fork 46
Fix expand Interval for int, decimal and date #499
base: master
Are you sure you want to change the base?
Conversation
engine/src/main/java/org/opencds/cqf/cql/engine/elm/execution/ExpandEvaluator.java
Show resolved
Hide resolved
engine/src/test/resources/org/opencds/cqf/cql/engine/execution/CqlIntervalOperatorsTest.cql
Show resolved
Hide resolved
| result = context.resolveExpressionRef("TestQuantityWithComparator1Converts").getExpression().evaluate(context); | ||
| assertThat(result, instanceOf(Boolean.class)); | ||
| assertThat(result, is(true)); | ||
| //assertThat(result, is(true)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This test resulting false after fixing PredecessorEvaluator
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'll take a look...
| result = context.resolveExpressionRef("TestQuantityWithComparator4Converts").getExpression().evaluate(context); | ||
| assertThat(result, instanceOf(Boolean.class)); | ||
| assertThat(result, is(true)); | ||
| //assertThat(result, is(true)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This test resulting false after fixing SuccessorEvaluator
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'll take a look...
|
|
||
| private static int determineMinPrecision(BigDecimal start, BigDecimal end) { | ||
| return Math.min(start.scale(), end.scale()); | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This method checks minimum precision between two decimals.
JPercival
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
One minor spelling error. I'll take a look at the failing tests to see what they should do.
| For 5.0 the return in 0.1 | ||
| For 5.03 the return is 0.01 | ||
| */ | ||
| public static BigDecimal determinePrecessionPer(BigDecimal value) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Minor spelling error. "Precession -> precision"
| result = context.resolveExpressionRef("TestQuantityWithComparator1Converts").getExpression().evaluate(context); | ||
| assertThat(result, instanceOf(Boolean.class)); | ||
| assertThat(result, is(true)); | ||
| //assertThat(result, is(true)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'll take a look...
| result = context.resolveExpressionRef("TestQuantityWithComparator4Converts").getExpression().evaluate(context); | ||
| assertThat(result, instanceOf(Boolean.class)); | ||
| assertThat(result, is(true)); | ||
| //assertThat(result, is(true)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'll take a look...
|
Converted to draft PR given that we need to reconcile some fixed vs arbitrary precision issues in the CQL spec. |
A fix based on: https://github.com/DBCG/cql_engine/issues/404
expand {Interval[4,6]}Per: 1.0
[Interval[4, 4], Interval[5, 5], Interval[6, 6]]expand {Interval[1.0, 2.0]}Per: 0.1
[Interval[1.0, 1.0], Interval[1.1, 1.1], Interval[1.2, 1.2], Interval[1.3, 1.3], Interval[1.4, 1.4], Interval[1.5, 1.5], Interval[1.6, 1.6], Interval[1.7, 1.7], Interval[1.8, 1.8], Interval[1.9, 1.9], Interval[2.0, 2.0]]expand {Interval[1.000001, 2]}Per: 1
[Interval[1.000001, 1.000001]]expand {Interval[1.0, 2.01]}Per: 0.1
[Interval[1.0, 1.0], Interval[1.1, 1.1], Interval[1.2, 1.2], Interval[1.3, 1.3], Interval[1.4, 1.4], Interval[1.5, 1.5], Interval[1.6, 1.6], Interval[1.7, 1.7], Interval[1.8, 1.8], Interval[1.9, 1.9], Interval[2.0, 2.0]]expand {Interval[1, 2.010101010]}Per: 1
[Interval[1, 1], Interval[2, 2]]6.0
expand {Interval[1.00, 2.00]}Per: 0.01
[Interval[1.00, 1.00], Interval[1.01, 1.01], Interval[1.02, 1.02], Interval[1.03, 1.03], Interval[1.04, 1.04], Interval[1.05, 1.05], Interval[1.06, 1.06], Interval[1.07, 1.07], ..... Interval[1.94, 1.94], Interval[1.95, 1.95], Interval[1.96, 1.96], Interval[1.97, 1.97], Interval[1.98, 1.98], Interval[1.99, 1.99], Interval[2.00, 2.00]]expand {Interval[1.00, 2.0005]}Per: 0.01
[Interval[1.00, 1.00], Interval[1.01, 1.01], Interval[1.02, 1.02], Interval[1.03, 1.03], Interval[1.04, 1.04], Interval[1.05, 1.05], Interval[1.06, 1.06], Interval[1.07, 1.07], ....... Interval[1.96, 1.96], Interval[1.97, 1.97], Interval[1.98, 1.98], Interval[1.99, 1.99], Interval[2.00, 2.00]]For
expand { Interval[@2018-01-01, @2018-01-03] } per dayoutput:{[Interval[2018-01-01, 2018-01-01], Interval[2018-01-02, 2018-01-02], Interval[2018-01-03, 2018-01-03]]}For
expand { Interval[@2018-01-01, @2018-01-03] } per weekoutput:{[]}For
expand { Interval[@2018-01-01, @2018-01-10] } per weekoutput:{[Interval[2018-01-01, 2018-01-07]]}