diff --git a/.editorconfig b/.editorconfig index 11a58414..d6d2a1b6 100644 --- a/.editorconfig +++ b/.editorconfig @@ -8,4 +8,4 @@ root = true [*.{java,sql}] charset = utf-8 indent_style = space -indent_size = 2 +indent_size = 4 diff --git a/src/main/java/org/ohdsi/circe/check/checkers/Comparisons.java b/src/main/java/org/ohdsi/circe/check/checkers/Comparisons.java index 697b746e..e6b71258 100644 --- a/src/main/java/org/ohdsi/circe/check/checkers/Comparisons.java +++ b/src/main/java/org/ohdsi/circe/check/checkers/Comparisons.java @@ -23,6 +23,7 @@ import java.util.*; import java.util.function.Predicate; import java.util.stream.Collectors; + import org.apache.commons.lang3.builder.EqualsBuilder; import org.ohdsi.circe.cohortdefinition.*; import org.ohdsi.circe.vocabulary.Concept; diff --git a/src/main/java/org/ohdsi/circe/check/checkers/ExitCriteriaDaysOffsetCheck.java b/src/main/java/org/ohdsi/circe/check/checkers/ExitCriteriaDaysOffsetCheck.java index 3d814885..e4294203 100644 --- a/src/main/java/org/ohdsi/circe/check/checkers/ExitCriteriaDaysOffsetCheck.java +++ b/src/main/java/org/ohdsi/circe/check/checkers/ExitCriteriaDaysOffsetCheck.java @@ -45,13 +45,7 @@ protected void check(CohortExpression expression, WarningReporter reporter) { match(expression.endStrategy) .isA(DateOffsetStrategy.class) .then(s -> match((DateOffsetStrategy)s) - .when(dateOffsetStrategy -> Objects.equals(StartDate, dateOffsetStrategy.dateField) && (0 == dateOffsetStrategy.offset || 0 == dateOffsetStrategy.offsetUnitValue)) - .then(dateOffsetStrategy -> { - if(0 == dateOffsetStrategy.offset){ - reporter.add(String.format(DAYS_OFFSET_WARNING), "Days"); - }else { - reporter.add(String.format(DAYS_OFFSET_WARNING, dateOffsetStrategy.offsetUnit)); - } - })); + .when(dateOffsetStrategy -> Objects.equals(StartDate, dateOffsetStrategy.dateField) && 0 == dateOffsetStrategy.offsetUnitValue) + .then(dateOffsetStrategy -> reporter.add(String.format(DAYS_OFFSET_WARNING, dateOffsetStrategy.offsetUnit)))); } } diff --git a/src/main/java/org/ohdsi/circe/check/checkers/FirstTimeInHistoryCheck.java b/src/main/java/org/ohdsi/circe/check/checkers/FirstTimeInHistoryCheck.java index 3c6db7c9..89e437eb 100644 --- a/src/main/java/org/ohdsi/circe/check/checkers/FirstTimeInHistoryCheck.java +++ b/src/main/java/org/ohdsi/circe/check/checkers/FirstTimeInHistoryCheck.java @@ -42,12 +42,10 @@ protected void checkCriteria(CorelatedCriteria criteria, String groupName, Warni String name = CriteriaNameHelper.getCriteriaName(criteria.criteria) + " at " + groupName; Execution addWarning = () -> reporter.add(WARNING, name); match(criteria) - .when(c -> c.startWindow != null && ((c.startWindow.start != null - && c.startWindow.start.days != null) || (c.startWindow.end != null - && c.startWindow.end.days != null)) - || ((c.startWindow.start.timeUnitValue != null) - && (c.startWindow.end != null) - && c.startWindow.end.timeUnitValue != null)) + .when(c -> c.startWindow != null && ((c.startWindow.start != null && c.startWindow.start.days != null) + || (c.startWindow.end != null && c.startWindow.end.days != null)) + || c.startWindow != null && (( c.startWindow.start != null && c.startWindow.start.timeUnitValue != null) + || (c.startWindow.end != null) && c.startWindow.end.timeUnitValue != null)) .then(cc -> match(cc.criteria) .isA(ConditionEra.class) .then(c -> match((ConditionEra)c) diff --git a/src/main/java/org/ohdsi/circe/check/checkers/RangeCheck.java b/src/main/java/org/ohdsi/circe/check/checkers/RangeCheck.java index 01d4cdbd..85207b3d 100644 --- a/src/main/java/org/ohdsi/circe/check/checkers/RangeCheck.java +++ b/src/main/java/org/ohdsi/circe/check/checkers/RangeCheck.java @@ -53,25 +53,16 @@ protected void checkInclusionRules(final CohortExpression expression, WarningRep } private void checkWindow(Window window, WarningReporter reporter, String name) { - Optional.ofNullable(window) - .map(w -> checkEndpoint(w, name, "start")) - .ifPresent(reporter::add); - - Optional.ofNullable(window) - .map(w -> checkEndpoint(w, name, "end")) - .ifPresent(reporter::add); + if (Objects.nonNull(window)) { + if (Objects.nonNull(window.start) && Objects.nonNull(window.start.timeUnitValue) && window.start.timeUnitValue < 0) { + reporter.add(NEGATIVE_VALUE_ERROR, name, window.start.timeUnitValue, "start"); + } + if (Objects.nonNull(window.end) && Objects.nonNull(window.end.timeUnitValue) && window.end.timeUnitValue < 0) { + reporter.add(NEGATIVE_VALUE_ERROR, name, window.end.timeUnitValue, "end"); + } + } } - private String checkEndpoint(Window window, String name, String endpointType) { - boolean hasValid = Objects.nonNull(window.start) && Objects.nonNull(window.start.days < 0 ? window.start.days : window.start.timeUnitValue) && window.start.days < 0 ? window.start.days < 0 : window.start.timeUnitValue < 0; - return Optional.of(window) - .filter(w -> hasValid) - .map(w -> String.format(NEGATIVE_VALUE_ERROR, name, getEndpointValue(w.start), endpointType)) - .orElse(null); - } - private Object getEndpointValue(Window.Endpoint endpoint) { - return Objects.nonNull(endpoint.days) ? endpoint.days : endpoint.timeUnitValue; - } private void checkObservationFilter(ObservationFilter filter, WarningReporter reporter, String name) { if (Objects.nonNull(filter)) { diff --git a/src/main/java/org/ohdsi/circe/check/checkers/TimePatternCheck.java b/src/main/java/org/ohdsi/circe/check/checkers/TimePatternCheck.java index 561bf9b7..1ff6c6f3 100644 --- a/src/main/java/org/ohdsi/circe/check/checkers/TimePatternCheck.java +++ b/src/main/java/org/ohdsi/circe/check/checkers/TimePatternCheck.java @@ -102,7 +102,7 @@ private Integer startDays(Window window) { .orElse(0)); }) .orElse(0); -} + } class TimeWindowInfo { private String name; diff --git a/src/main/java/org/ohdsi/circe/cohortdefinition/CohortExpressionQueryBuilder.java b/src/main/java/org/ohdsi/circe/cohortdefinition/CohortExpressionQueryBuilder.java index 690d3675..9050cdea 100644 --- a/src/main/java/org/ohdsi/circe/cohortdefinition/CohortExpressionQueryBuilder.java +++ b/src/main/java/org/ohdsi/circe/cohortdefinition/CohortExpressionQueryBuilder.java @@ -352,9 +352,10 @@ public String buildExpressionQuery(CohortExpression expression, BuildExpressionQ if(!StringUtils.isEmpty(Integer.toString(expression.collapseSettings.eraPad)) && expression.collapseSettings.eraPad != 0){ resultSql = StringUtils.replace(resultSql, "@eraconstructorpad", Integer.toString(expression.collapseSettings.eraPad)); + resultSql = StringUtils.replace(resultSql, "@era_pad_unit", "day"); }else{ + resultSql = StringUtils.replace(resultSql, "@eraconstructorpad", Integer.toString(expression.collapseSettings.eraPadUnitValue)); resultSql = StringUtils.replace(resultSql, "@era_pad_unit", expression.collapseSettings.eraPadUnit); - resultSql = StringUtils.replace(resultSql, "@era_pad", Integer.toString(expression.collapseSettings.eraPadUnitValue)); } resultSql = StringUtils.replace(resultSql, "@inclusionRuleTable", getInclusionRuleTableSql(expression)); resultSql = StringUtils.replace(resultSql, "@inclusionImpactAnalysisByEventQuery", getInclusionAnalysisQuery("#qualified_events", 0)); @@ -574,7 +575,7 @@ else if (startWindow.end.timeUnitValue != null) { clauses.add(String.format("%s <= %s", startEventDateExpression, endExpression)); } - // EndWindow + // EndWindow Window endWindow = criteria.endWindow; if (endWindow != null) { @@ -584,26 +585,26 @@ else if (startWindow.end.timeUnitValue != null) { if (endWindow.start.days != null) { startExpression = String.format("DATEADD(day,%d,%s)", endWindow.start.coeff * endWindow.start.days, endIndexDateExpression); } else if (endWindow.start.timeUnitValue != null) { - startExpression = String.format("DATEADD(%s,%d,%s)", endWindow.start.timeUnit, endWindow.start.coeff * endWindow.start.timeUnitValue, endIndexDateExpression); - } else { - startExpression = checkObservationPeriod ? (endWindow.start.coeff == -1 ? "P.OP_START_DATE" : "P.OP_END_DATE") : null; - } + startExpression = String.format("DATEADD(%s,%d,%s)", endWindow.start.timeUnit, endWindow.start.coeff * endWindow.start.timeUnitValue, endIndexDateExpression); + } else { + startExpression = checkObservationPeriod ? (endWindow.start.coeff == -1 ? "P.OP_START_DATE" : "P.OP_END_DATE") : null; + } - if (startExpression != null) { - clauses.add(String.format("%s >= %s", endEventDateExpression, startExpression)); - } + if (startExpression != null) { + clauses.add(String.format("%s >= %s", endEventDateExpression, startExpression)); + } if (endWindow.end.days != null) { endExpression = String.format("DATEADD(day,%d,%s)", endWindow.end.coeff * endWindow.end.days, endIndexDateExpression); } else if (endWindow.end.timeUnitValue != null) { - endExpression = String.format("DATEADD(%s,%d,%s)", endWindow.start.timeUnit, endWindow.end.coeff * endWindow.end.timeUnitValue, endIndexDateExpression); - } else { - endExpression = checkObservationPeriod ? (endWindow.end.coeff == -1 ? "P.OP_START_DATE" : "P.OP_END_DATE") : null; - } + endExpression = String.format("DATEADD(%s,%d,%s)", endWindow.start.timeUnit, endWindow.end.coeff * endWindow.end.timeUnitValue, endIndexDateExpression); + } else { + endExpression = checkObservationPeriod ? (endWindow.end.coeff == -1 ? "P.OP_START_DATE" : "P.OP_END_DATE") : null; + } - if (endExpression != null) { - clauses.add(String.format("%s <= %s", endEventDateExpression, endExpression)); - } + if (endExpression != null) { + clauses.add(String.format("%s <= %s", endEventDateExpression, endExpression)); + } } // RestrictVisit @@ -617,7 +618,7 @@ else if (startWindow.end.timeUnitValue != null) { return query; } - public String getWindowedCriteriaQuery(WindowedCriteria criteria, String eventTable) { + public String getWindowedCriteriaQuery(WindowedCriteria criteria, String eventTable) { String query = getWindowedCriteriaQuery(WINDOWED_CRITERIA_TEMPLATE, criteria, eventTable, null); return query; } @@ -775,13 +776,15 @@ private String getDateFieldForOffsetStrategy(DateOffsetStrategy.DateField dateFi @Override public String getStrategySql(DateOffsetStrategy strat, String eventTable) { String strategySql = StringUtils.replace(DATE_OFFSET_STRATEGY_TEMPLATE, "@eventTable", eventTable); - if(strat.offset != 0){ - strategySql = StringUtils.replace(strategySql, "@offset", Integer.toString(strat.offset)); + if(strat.offset != 0){ + strategySql = StringUtils.replace(strategySql, "@offsetUnit", "day"); + strategySql = StringUtils.replace(strategySql, "@offsetUnitValue", Integer.toString(strat.offset)); }else { - strategySql = StringUtils.replace(strategySql, "@offsetUnitValue", Integer.toString(strat.offsetUnitValue)); - strategySql = StringUtils.replace(strategySql, "@offsetUnit", strat.offsetUnit); + strategySql = StringUtils.replace(strategySql, "@offsetUnitValue", Integer.toString(strat.offsetUnitValue)); + strategySql = StringUtils.replace(strategySql, "@offsetUnit", strat.offsetUnit); } strategySql = StringUtils.replace(strategySql, "@dateField", getDateFieldForOffsetStrategy(strat.dateField)); + return strategySql; } diff --git a/src/main/java/org/ohdsi/circe/cohortdefinition/CollapseSettings.java b/src/main/java/org/ohdsi/circe/cohortdefinition/CollapseSettings.java index 26170865..c9d44214 100644 --- a/src/main/java/org/ohdsi/circe/cohortdefinition/CollapseSettings.java +++ b/src/main/java/org/ohdsi/circe/cohortdefinition/CollapseSettings.java @@ -18,16 +18,18 @@ */ package org.ohdsi.circe.cohortdefinition; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; +@JsonIgnoreProperties(ignoreUnknown = true) public class CollapseSettings { @JsonProperty("CollapseType") public CollapseType collapseType = CollapseType.ERA; @JsonProperty("EraPad") - public int eraPad = 0; + public int eraPad = 0; @JsonProperty("EraPadUnit") - public String eraPadUnit; + public String eraPadUnit = "day"; @JsonProperty("EraPadUnitValue") public int eraPadUnitValue = 0; diff --git a/src/main/java/org/ohdsi/circe/cohortdefinition/DateOffsetStrategy.java b/src/main/java/org/ohdsi/circe/cohortdefinition/DateOffsetStrategy.java index f2d0ed6b..8d9a5255 100644 --- a/src/main/java/org/ohdsi/circe/cohortdefinition/DateOffsetStrategy.java +++ b/src/main/java/org/ohdsi/circe/cohortdefinition/DateOffsetStrategy.java @@ -18,12 +18,14 @@ */ package org.ohdsi.circe.cohortdefinition; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; /** * * @author Chris Knoll */ +@JsonIgnoreProperties(ignoreUnknown = true) public class DateOffsetStrategy extends EndStrategy { public enum DateField { diff --git a/src/main/java/org/ohdsi/circe/cohortdefinition/IntervalUnit.java b/src/main/java/org/ohdsi/circe/cohortdefinition/IntervalUnit.java index 2a40b9cb..e55b58e7 100644 --- a/src/main/java/org/ohdsi/circe/cohortdefinition/IntervalUnit.java +++ b/src/main/java/org/ohdsi/circe/cohortdefinition/IntervalUnit.java @@ -3,6 +3,7 @@ import jdk.nashorn.internal.objects.annotations.Getter; public enum IntervalUnit { + DAY("day"), HOUR("hour"), MINUTE("minute"), SECOND("second"); diff --git a/src/main/java/org/ohdsi/circe/cohortdefinition/Window.java b/src/main/java/org/ohdsi/circe/cohortdefinition/Window.java index e746eb50..b90121dd 100644 --- a/src/main/java/org/ohdsi/circe/cohortdefinition/Window.java +++ b/src/main/java/org/ohdsi/circe/cohortdefinition/Window.java @@ -18,19 +18,25 @@ */ package org.ohdsi.circe.cohortdefinition; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; /** * * @author cknoll1 */ +@JsonIgnoreProperties(ignoreUnknown = true) public class Window { public static class Endpoint { + + @JsonProperty("Days") + public Integer days; @JsonProperty("TimeUnitValue") public Integer timeUnitValue; @JsonProperty("TimeUnit") - public String timeUnit = IntervalUnit.DAY.getName(); + public String timeUnit; + @JsonProperty("Coeff") public int coeff; } diff --git a/src/main/java/org/ohdsi/circe/cohortdefinition/builders/ConditionOccurrenceSqlBuilder.java b/src/main/java/org/ohdsi/circe/cohortdefinition/builders/ConditionOccurrenceSqlBuilder.java index 8ca6c2a5..1a7b1b61 100644 --- a/src/main/java/org/ohdsi/circe/cohortdefinition/builders/ConditionOccurrenceSqlBuilder.java +++ b/src/main/java/org/ohdsi/circe/cohortdefinition/builders/ConditionOccurrenceSqlBuilder.java @@ -94,7 +94,8 @@ protected List resolveSelectClauses(T criteria) { } // dateAdjustment or default start/end dates if (criteria.dateAdjustment != null) { - selectCols.add(BuilderUtils.getDateAdjustmentExpression(criteria.dateAdjustment, + selectCols.add( + BuilderUtils.getDateAdjustmentExpression(criteria.dateAdjustment, criteria.dateAdjustment.startWith == DateAdjustment.DateType.START_DATE ? "co.condition_start_datetime" : "COALESCE(co.condition_end_datetime, DATEADD(day,1,co.condition_start_datetime))", criteria.dateAdjustment.endWith == DateAdjustment.DateType.START_DATE ? "co.condition_start_datetime" : "COALESCE(co.condition_end_datetime, DATEADD(day,1,co.condition_start_datetime))")); } else { diff --git a/src/main/resources/resources/cohortdefinition/printfriendly/endStrategyTypes.ftl b/src/main/resources/resources/cohortdefinition/printfriendly/endStrategyTypes.ftl index 15e16a34..62b4bd9f 100644 --- a/src/main/resources/resources/cohortdefinition/printfriendly/endStrategyTypes.ftl +++ b/src/main/resources/resources/cohortdefinition/printfriendly/endStrategyTypes.ftl @@ -27,7 +27,7 @@ The person exits the cohort at the end of continuous observation. <#if s.offset?? && s.offset == "day" > The cohort end date will be offset from index event's ${utils.optionName(dateOffsetFieldOptions, s.dateField)} plus <@utils.formatValue s.offset "day"/>. <#else > - The cohort end date will be offset from index event's ${utils.optionName(dateOffsetFieldOptions, s.dateField)} plus <@utils.formatValue s.offsetUnitValue s.offsetUnit/>. + The cohort end date will be offset from index event's ${utils.optionName(dateOffsetFieldOptions, s.dateField)} plus <@utils.formatValue s.offsetUnitValue s.offsetUnit/>. diff --git a/src/main/resources/resources/cohortdefinition/printfriendly/inputTypes.ftl b/src/main/resources/resources/cohortdefinition/printfriendly/inputTypes.ftl index 3ab55c30..d8da2c20 100644 --- a/src/main/resources/resources/cohortdefinition/printfriendly/inputTypes.ftl +++ b/src/main/resources/resources/cohortdefinition/printfriendly/inputTypes.ftl @@ -25,7 +25,7 @@ END Note!!!! --><#if range.op?ends_with("bt")> and <#if range.extent?has_content>${utils.formatDate(range.extent)}<#else>_empty_ <#-- ConceptList --> -<#macro ConceptList list quote="\""><#list list?map(item->(quote + item.conceptName?lower_case + quote)) as item><#if item?counter gt 1><#if +<#macro ConceptList list quote="\""><#list list?map(item->(quote + item.conceptName?lower_case + quote)) as item><#if item?counter gt 1><#if item?counter == list?size> or <#else>, ${item} <#-- ConceptSetSelection --> @@ -33,9 +33,9 @@ END Note!!!! <#-- NumericRange --> <#assign numericRangeOptions = [ - {"id": "lt", "name": "<"}, + {"id": "lt", "name": "<"}, {"id": "lte", "name": "<="}, - {"id": "eq", "name": "="}, + {"id": "eq", "name": "="}, {"id": "gt", "name": ">"}, {"id": "gte", "name": ">="}, {"id": "bt", "name": "between"}, @@ -91,7 +91,7 @@ END Note!!!! <#macro Window w indexLabel="cohort entry">${whichEventPart(w.useEventEnd!false)} <#----> -<#if !w.start.days?? && w.end.days == 0 && w.start.coeff == -1 > +<#if w.start.days?has_content && w.end.days == 0 && w.start.coeff == -1 > anytime on or before ${indexLabel} ${whichIndexPart(w.useIndexEnd!false)} <#----> @@ -99,26 +99,26 @@ END Note!!!! <#if w.start.days??>in the ${w.start.days} days <#else>anytime prior to ${indexLabel} ${whichIndexPart(w.useIndexEnd!false)} <#----> -<#elseif !w.start.days?? && (w.end.days!0) gt 1 && w.start.coeff == -1>anytime up to ${w.end.days} days ${temporalDirection(w.end.coeff)} ${indexLabel} ${whichIndexPart(w.useIndexEnd!false)} +<#elseif w.start.days?has_content && (w.end.days!0) gt 1 && w.start.coeff == -1>anytime up to ${w.end.days} days ${temporalDirection(w.end.coeff)} ${indexLabel} ${whichIndexPart(w.useIndexEnd!false)} <#----> -<#elseif !w.end.days?? && (w.start.days!0) gt 0 && w.end.coeff ==1> ${w.start.days} days ${temporalDirection(w.start.coeff)} ${indexLabel} ${whichIndexPart(w.useIndexEnd!false)} +<#elseif w.end.days?has_content && (w.start.days!0) gt 0 && w.end.coeff ==1> ${w.start.days} days ${temporalDirection(w.start.coeff)} ${indexLabel} ${whichIndexPart(w.useIndexEnd!false)} <#----> <#else>between ${w.start.days!"all"} days ${temporalDirection(w.start.coeff)} and ${w.end.days!"all"} days ${temporalDirection(w.end.coeff)} ${indexLabel} ${whichIndexPart(w.useIndexEnd!false)} <#----> -<#if !w.start.timeUnitValue?? && w.end.timeUnitValue == 0 && w.start.coeff == -1 >anytime on or before ${indexLabel} ${whichIndexPart(w.useIndexEnd!false)} +<#if w.start.timeUnitValue?has_content && w.end.timeUnitValue == 0 && w.start.coeff == -1 >anytime on or before ${indexLabel} ${whichIndexPart(w.useIndexEnd!false)} <#----> <#elseif (w.end.timeUnitValue!0) == 1 && w.start.coeff == -1 && w.end.coeff == -1><#if w.start.timeUnitValue??>in the ${w.start.timeUnitValue} ${w.start.timeUnit}s<#else>anytime prior to ${indexLabel} ${whichIndexPart(w.useIndexEnd!false)} <#----> -<#elseif !w.start.timeUnitValue?? && (w.end.timeUnitValue!0) gt 1 && w.start.coeff == -1>anytime up to ${w.end.timeUnitValue} ${w.end.timeUnit}s ${temporalDirection(w.end.coeff)} ${indexLabel} ${whichIndexPart(w.useIndexEnd!false)} +<#elseif w.start.timeUnitValue?has_content && (w.end.timeUnitValue!0) gt 1 && w.start.coeff == -1>anytime up to ${w.end.timeUnitValue} ${w.end.timeUnit}s ${temporalDirection(w.end.coeff)} ${indexLabel} ${whichIndexPart(w.useIndexEnd!false)} <#----> -<#elseif !w.end.timeUnitValue?? && (w.start.timeUnitValue!0) gt 0 && w.end.coeff ==1> ${w.start.timeUnitValue} ${w.start.timeUnit}s ${temporalDirection(w.start.coeff)} ${indexLabel} ${whichIndexPart(w.useIndexEnd!false)} +<#elseif w.end.timeUnitValue?has_content && (w.start.timeUnitValue!0) gt 0 && w.end.coeff ==1> ${w.start.timeUnitValue} ${w.start.timeUnit}s ${temporalDirection(w.start.coeff)} ${indexLabel} ${whichIndexPart(w.useIndexEnd!false)} <#----> <#else>between ${w.start.timeUnitValue!"all"} ${w.start.timeUnit}s ${temporalDirection(w.start.coeff)} and ${w.end.timeUnitValue!"all"} ${w.end.timeUnit}s ${temporalDirection(w.end.coeff)} ${indexLabel} ${whichIndexPart(w.useIndexEnd!false)} <#-- User Defined Period --> -<#macro UserDefinedPeriod p><#if +<#macro UserDefinedPeriod p><#if p.startDate?has_content>a user defiend start date of ${utils.formatDate(p.startDate)}<#if p.endDate?has_content> and<#if p.endDate?has_content><#if !p.startDate?has_content>a user defined end date of ${utils.formatDate(p.endDate)} diff --git a/src/main/resources/resources/cohortdefinition/sql/dateOffsetStrategy.sql b/src/main/resources/resources/cohortdefinition/sql/dateOffsetStrategy.sql index cac7c35f..b79289dd 100644 --- a/src/main/resources/resources/cohortdefinition/sql/dateOffsetStrategy.sql +++ b/src/main/resources/resources/cohortdefinition/sql/dateOffsetStrategy.sql @@ -1,20 +1,9 @@ -- date offset strategy -SELECT - event_id, - person_id, - CASE - WHEN @offset IS NOT NULL - THEN - CASE - WHEN DATEADD(@offsetUnit, @offsetUnitValue, @dateField) > op_end_date THEN op_end_date - ELSE DATEADD(@offsetUnit, @offsetUnitValue, @dateField) - END - ELSE - CASE - WHEN DATEADD(day, @offset, @dateField) > op_end_date THEN op_end_date - ELSE DATEADD(day, @offset, @dateField) - END - END AS end_date +select event_id, + person_id, + case + when DATEADD(@offsetUnit, @offsetUnitValue, @dateField) > op_end_date then op_end_date + else DATEADD(@offsetUnit, @offsetUnitValue, @dateField) end as end_date INTO #strategy_ends -FROM @eventTable; +from @eventTable; diff --git a/src/main/resources/resources/cohortdefinition/sql/generateCohort.sql b/src/main/resources/resources/cohortdefinition/sql/generateCohort.sql index 8fad4578..b2d1145b 100644 --- a/src/main/resources/resources/cohortdefinition/sql/generateCohort.sql +++ b/src/main/resources/resources/cohortdefinition/sql/generateCohort.sql @@ -63,13 +63,7 @@ from ( --cteEnds JOIN ( -- cteEndDates SELECT person_id, - CASE - WHEN - @eraconstructorpad IS NOT NULL - THEN - DATEADD(day, -1 * @eraconstructorpad, event_date) - ELSE - DATEADD(@era_pad_unit, -1 * @era_pad, event_date) END AS end_date + DATEADD(@era_pad_unit, -1 * @eraconstructorpad, event_date) as end_date FROM ( SELECT @@ -87,10 +81,9 @@ from ( --cteEnds UNION ALL - SELECT person_id - , DATEADD(@era_pad_unit, @era_pad, end_date) as end_date + , DATEADD(@era_pad_unit, -1 * @eraconstructorpad, end_date) as end_date , 1 AS event_type FROM #cohort_rows ) RAWDATA diff --git a/src/test/java/org/ohdsi/circe/check/checkers/ComparisonsTest.java b/src/test/java/org/ohdsi/circe/check/checkers/ComparisonsTest.java index 2f4fc4c5..02c33193 100644 --- a/src/test/java/org/ohdsi/circe/check/checkers/ComparisonsTest.java +++ b/src/test/java/org/ohdsi/circe/check/checkers/ComparisonsTest.java @@ -113,23 +113,29 @@ public void compareTo() { Window window = new Window(); window.start = new Window.Endpoint(); - window.start.timeUnitValue = 10; - window.start.timeUnit = IntervalUnit.DAY.getName(); + window.start.days = 10; + window.start.timeUnitValue = null; + window.start.timeUnit = null; window.start.coeff = -1; window.end = new Window.Endpoint(); - window.end.timeUnitValue = 5; - window.end.timeUnit = IntervalUnit.DAY.getName(); + window.end.days = 5; + window.end.timeUnitValue = null; + window.end.timeUnit = null; window.end.coeff = 1; assertEquals(0, Comparisons.compareTo(filter, window)); - window.start.timeUnitValue = 5; - window.start.timeUnit = IntervalUnit.DAY.getName(); - window.end.timeUnitValue = 5; - window.end.timeUnit = IntervalUnit.DAY.getName(); - assertEquals(432000, Comparisons.compareTo(filter, window)); + window.start.days = 5; + window.end.days = 5; + + window.start.timeUnitValue = null; + window.start.timeUnit = null; + window.end.timeUnitValue = null; + window.end.timeUnit = null; + + assertEquals(5, Comparisons.compareTo(filter, window)); } @Test @@ -243,10 +249,12 @@ public void compareCriteria() { public void isBefore() { Window window = new Window(); window.start = new Window.Endpoint(); - window.start.timeUnitValue = 1; + window.start.days = 1; + window.start.timeUnitValue = null; window.start.coeff = -1; window.end = new Window.Endpoint(); - window.end.timeUnitValue = 1; + window.end.days = 1; + window.end.timeUnitValue = null; window.end.coeff = 1; assertEquals(false, Comparisons.isBefore(window)); diff --git a/src/test/java/org/ohdsi/circe/cohortdefinition/builders/CriteriaUtils.java b/src/test/java/org/ohdsi/circe/cohortdefinition/builders/CriteriaUtils.java index c20ca187..83f14077 100644 --- a/src/test/java/org/ohdsi/circe/cohortdefinition/builders/CriteriaUtils.java +++ b/src/test/java/org/ohdsi/circe/cohortdefinition/builders/CriteriaUtils.java @@ -29,7 +29,8 @@ public static Window getPrior365Window() { // index starts between 365d before Window.Endpoint startPoint = new Window.Endpoint(); startPoint.coeff = -1; - startPoint.timeUnitValue = 365; + startPoint.days = 365; + startPoint.timeUnitValue = null; prior365Window.start = startPoint; // ... and 0 days before Window.Endpoint endPoint = new Window.Endpoint(); diff --git a/src/test/resources/checkers/additionalCriteriaCheckValueCorrect.json b/src/test/resources/checkers/additionalCriteriaCheckValueCorrect.json index 13b41373..272c59b8 100644 --- a/src/test/resources/checkers/additionalCriteriaCheckValueCorrect.json +++ b/src/test/resources/checkers/additionalCriteriaCheckValueCorrect.json @@ -27,8 +27,8 @@ "PrimaryCriteria": { "CriteriaList": [], "ObservationWindow": { - "PriorDays": 0, - "PostDays": 0 + "PriorDays": 1, + "PostDays": 1 }, "PrimaryCriteriaLimit": { "Type": "First" diff --git a/src/test/resources/checkers/additionalCriteriaCheckValueIncorrect.json b/src/test/resources/checkers/additionalCriteriaCheckValueIncorrect.json index be6f11f6..51d4b2b2 100644 --- a/src/test/resources/checkers/additionalCriteriaCheckValueIncorrect.json +++ b/src/test/resources/checkers/additionalCriteriaCheckValueIncorrect.json @@ -309,8 +309,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", - "EraPadUnit": "day", - "EraPadUnitValue": 0 + "EraPad": 0 }, "CensorWindow": {}, "cdmVersionRange": ">=6.1.0" diff --git a/src/test/resources/checkers/censoringEventCheckValueCorrect.json b/src/test/resources/checkers/censoringEventCheckValueCorrect.json index 8b517a9e..7df72672 100644 --- a/src/test/resources/checkers/censoringEventCheckValueCorrect.json +++ b/src/test/resources/checkers/censoringEventCheckValueCorrect.json @@ -408,8 +408,7 @@ ], "CollapseSettings": { "CollapseType": "ERA", - "EraPadUnit": "day", - "EraPadUnitValue": 0 + "EraPad": 0 }, "CensorWindow": {}, "cdmVersionRange": ">=6.1.0" diff --git a/src/test/resources/checkers/censoringEventCheckValueIncorrect.json b/src/test/resources/checkers/censoringEventCheckValueIncorrect.json index e791905b..515aca1b 100644 --- a/src/test/resources/checkers/censoringEventCheckValueIncorrect.json +++ b/src/test/resources/checkers/censoringEventCheckValueIncorrect.json @@ -288,8 +288,7 @@ ], "CollapseSettings": { "CollapseType": "ERA", - "EraPadUnit": "day", - "EraPadUnitValue": 0 + "EraPad": 0 }, "CensorWindow": {}, "cdmVersionRange": ">=6.1.0" diff --git a/src/test/resources/checkers/childGroupExpression.json b/src/test/resources/checkers/childGroupExpression.json index 6d040339..515aca1b 100644 --- a/src/test/resources/checkers/childGroupExpression.json +++ b/src/test/resources/checkers/childGroupExpression.json @@ -1,13 +1,31 @@ { - "cdmVersionRange": ">=5.0.0", - "PrimaryCriteria": { - "CriteriaList": [ - { - "ConditionOccurrence": { - "ConditionTypeExclude": false - } + "ConceptSets": [ + { + "id": 0, + "name": "Aspirin", + "expression": { + "items": [ + { + "concept": { + "CONCEPT_CLASS_ID": "Ingredient", + "CONCEPT_CODE": "1191", + "CONCEPT_ID": 1112807, + "CONCEPT_NAME": "Aspirin", + "DOMAIN_ID": "Drug", + "INVALID_REASON": "V", + "INVALID_REASON_CAPTION": "Valid", + "STANDARD_CONCEPT": "S", + "STANDARD_CONCEPT_CAPTION": "Standard", + "VOCABULARY_ID": "RxNorm" + }, + "includeDescendants": true + } + ] } - ], + } + ], + "PrimaryCriteria": { + "CriteriaList": [], "ObservationWindow": { "PriorDays": 0, "PostDays": 0 @@ -18,179 +36,260 @@ }, "AdditionalCriteria": { "Type": "ALL", - "CriteriaList": [ - { - "Criteria": { - "ConditionOccurrence": { - "ConditionTypeExclude": false - } - }, - "StartWindow": { - "Start": { - "Coeff": -1 - }, - "End": { - "Coeff": 1 - }, - "UseIndexEnd": false, - "UseEventEnd": false - }, - "RestrictVisit": false, - "IgnoreObservationPeriod": false, - "Occurrence": { - "Type": 2, - "Count": 1, - "IsDistinct": false - } - } - ], + "CriteriaList": [], "DemographicCriteriaList": [], - "Groups": [ - { - "Type": "ALL", - "CriteriaList": [ - { - "Criteria": { - "DrugEra": {} + "Groups": [] + }, + "QualifiedLimit": { + "Type": "First" + }, + "ExpressionLimit": { + "Type": "First" + }, + "InclusionRules": [], + "CensoringCriteria": [ + { + "ConditionEra": { + "CorrelatedCriteria": { + "Type": "ALL", + "CriteriaList": [ + { + "Criteria": { + "ConditionEra": { + "CorrelatedCriteria": { + "Type": "ALL", + "CriteriaList": [], + "DemographicCriteriaList": [ + { + "Age": { + "Op": "gt" + }, + "Gender": [], + "Race": [], + "Ethnicity": [], + "OccurrenceStartDate": { + "Op": "lt" + }, + "OccurrenceEndDate": { + "Op": "lt" + } + } + ], + "Groups": [] + }, + "EraStartDate": { + "Op": "lt" + }, + "EraEndDate": { + "Op": "lt" + }, + "OccurrenceCount": { + "Op": "gt" + }, + "EraLength": { + "Op": "gt" + }, + "AgeAtStart": { + "Op": "gt" + }, + "AgeAtEnd": { + "Op": "gt" + }, + "Gender": [] + } + }, + "StartWindow": { + "Start": { + "Coeff": -1 + }, + "End": { + "Coeff": 1 + }, + "UseEventEnd": false + }, + "Occurrence": { + "Type": 2, + "Count": 1 + } }, - "StartWindow": { - "Start": { - "Coeff": -1 + { + "Criteria": { + "ConditionOccurrence": { + "StopReason": { + "Op": "contains" + } + } }, - "End": { - "Coeff": 1 + "StartWindow": { + "Start": { + "Coeff": -1 + }, + "End": { + "Coeff": 1 + }, + "UseEventEnd": false }, - "UseIndexEnd": false, - "UseEventEnd": false + "Occurrence": { + "Type": 2, + "Count": 1 + } }, - "RestrictVisit": false, - "IgnoreObservationPeriod": false, - "Occurrence": { - "Type": 2, - "Count": 1, - "IsDistinct": false - } - }, - { - "Criteria": { - "DrugEra": {} + { + "Criteria": { + "DeviceExposure": { + "UniqueDeviceId": { + "Op": "contains" + } + } + }, + "StartWindow": { + "Start": { + "Coeff": -1 + }, + "End": { + "Coeff": 1 + }, + "UseEventEnd": false + }, + "Occurrence": { + "Type": 2, + "Count": 1 + } }, - "StartWindow": { - "Start": { - "Coeff": -1 + { + "Criteria": { + "DrugExposure": { + "StopReason": { + "Op": "contains" + }, + "LotNumber": { + "Op": "contains" + } + } }, - "End": { - "Coeff": 1 + "StartWindow": { + "Start": { + "Coeff": -1 + }, + "End": { + "Coeff": 1 + }, + "UseEventEnd": false }, - "UseIndexEnd": false, - "UseEventEnd": false + "Occurrence": { + "Type": 2, + "Count": 1 + } }, - "RestrictVisit": false, - "IgnoreObservationPeriod": false, - "Occurrence": { - "Type": 2, - "Count": 1, - "IsDistinct": false - } - } - ], - "DemographicCriteriaList": [], - "Groups": [ - { - "Type": "ANY", - "CriteriaList": [ - { - "Criteria": { - "ConditionOccurrence": { - "CorrelatedCriteria": { - "Type": "ALL", - "CriteriaList": [ - { - "Criteria": { - "DrugEra": { - "CodesetId": 1 - } - }, - "StartWindow": { - "Start": { - "Coeff": -1 - }, - "End": { - "Coeff": 1 - }, - "UseIndexEnd": false, - "UseEventEnd": false - }, - "RestrictVisit": false, - "IgnoreObservationPeriod": false, - "Occurrence": { - "Type": 2, - "Count": 1, - "IsDistinct": false - } - } - ], - "DemographicCriteriaList": [], - "Groups": [] - }, - "CodesetId": 0, - "ConditionTypeExclude": false + { + "Criteria": { + "Observation": { + "ValueAsString": { + "Op": "contains" } + } + }, + "StartWindow": { + "Start": { + "Coeff": -1 }, - "StartWindow": { - "Start": { - "Coeff": -1 - }, - "End": { - "Coeff": 1 - }, - "UseIndexEnd": false, - "UseEventEnd": false + "End": { + "Coeff": 1 }, - "RestrictVisit": false, - "IgnoreObservationPeriod": false, - "Occurrence": { - "Type": 2, - "Count": 1, - "IsDistinct": false + "UseEventEnd": false + }, + "Occurrence": { + "Type": 2, + "Count": 1 + } + }, + { + "Criteria": { + "Specimen": { + "SourceId": { + "Op": "contains" + } } + }, + "StartWindow": { + "Start": { + "Coeff": -1 + }, + "End": { + "Coeff": 1 + }, + "UseEventEnd": false + }, + "Occurrence": { + "Type": 2, + "Count": 1 } - ], - "DemographicCriteriaList": [], - "Groups": [] - } - ] - } - ] - }, - "ConceptSets": [ - { - "id": 0, - "name": "Empty Concept Set", - "expression": { - "items": [] + } + ], + "DemographicCriteriaList": [ + { + "Age": { + "Op": "gt" + }, + "Gender": [], + "Race": [], + "Ethnicity": [], + "OccurrenceStartDate": { + "Op": "lt" + }, + "OccurrenceEndDate": { + "Op": "lt" + } + } + ], + "Groups": [] + }, + "EraStartDate": { + "Op": "lt" + }, + "EraEndDate": { + "Op": "lt" + }, + "EraLength": { + "Op": "gt" + }, + "AgeAtStart": { + "Op": "gt" + }, + "AgeAtEnd": { + "Op": "gt" + }, + "Gender": [] } }, { - "id": 1, - "name": "Empty Concept Set 2", - "expression": { - "items": [] + "DrugEra": { + "EraStartDate": { + "Op": "lt" + }, + "EraEndDate": { + "Op": "lt" + }, + "OccurrenceCount": { + "Op": "gt" + }, + "EraLength": { + "Op": "gt" + }, + "AgeAtStart": { + "Op": "gt" + }, + "AgeAtEnd": { + "Op": "gt" + }, + "Gender": [] } } ], - "QualifiedLimit": { - "Type": "First" - }, - "ExpressionLimit": { - "Type": "First" - }, - "InclusionRules": [], - "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", - "EraPadUnit": "day", - "EraPadUnitValue": 0 + "EraPad": 0 }, - "CensorWindow": {} + "CensorWindow": {}, + "cdmVersionRange": ">=6.1.0" } \ No newline at end of file diff --git a/src/test/resources/checkers/conceptSetCriteriaCheckCorrect.json b/src/test/resources/checkers/conceptSetCriteriaCheckCorrect.json index 9c9c05e3..34afceb4 100644 --- a/src/test/resources/checkers/conceptSetCriteriaCheckCorrect.json +++ b/src/test/resources/checkers/conceptSetCriteriaCheckCorrect.json @@ -115,8 +115,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", - "EraPadUnit": "day", - "EraPadUnitValue": 0 + "EraPad": 0 }, "CensorWindow": {}, "cdmVersionRange": ">=5.3.0" diff --git a/src/test/resources/checkers/conceptSetCriteriaCheckIncorrect.json b/src/test/resources/checkers/conceptSetCriteriaCheckIncorrect.json index af967543..e0d400d5 100644 --- a/src/test/resources/checkers/conceptSetCriteriaCheckIncorrect.json +++ b/src/test/resources/checkers/conceptSetCriteriaCheckIncorrect.json @@ -89,8 +89,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", - "EraPadUnit": "day", - "EraPadUnitValue": 0 + "EraPad": 0 }, "CensorWindow": {}, "cdmVersionRange": ">=5.3.0" diff --git a/src/test/resources/checkers/contradictionsCriteriaCheckCorrect.json b/src/test/resources/checkers/contradictionsCriteriaCheckCorrect.json index e64e1c55..7f224759 100644 --- a/src/test/resources/checkers/contradictionsCriteriaCheckCorrect.json +++ b/src/test/resources/checkers/contradictionsCriteriaCheckCorrect.json @@ -116,8 +116,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", - "EraPadUnit": "day", - "EraPadUnitValue": 0 + "EraPad": 0 }, "CensorWindow": {}, "cdmVersionRange": ">=5.3.0" diff --git a/src/test/resources/checkers/contradictionsCriteriaCheckIncorrect.json b/src/test/resources/checkers/contradictionsCriteriaCheckIncorrect.json index 92b71212..3153dd0c 100644 --- a/src/test/resources/checkers/contradictionsCriteriaCheckIncorrect.json +++ b/src/test/resources/checkers/contradictionsCriteriaCheckIncorrect.json @@ -116,8 +116,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", - "EraPadUnit": "day", - "EraPadUnitValue": 0 + "EraPad": 0 }, "CensorWindow": {}, "cdmVersionRange": ">=5.3.0" diff --git a/src/test/resources/checkers/deathTimeWindowCheckCorrect.json b/src/test/resources/checkers/deathTimeWindowCheckCorrect.json index f51ad3d1..16f05ebc 100644 --- a/src/test/resources/checkers/deathTimeWindowCheckCorrect.json +++ b/src/test/resources/checkers/deathTimeWindowCheckCorrect.json @@ -39,8 +39,7 @@ }, "StartWindow": { "Start": { - "TimeUnitValue": 7, - "TimeUnit": "day", + "Days": 7, "Coeff": -1 }, "End": { @@ -84,8 +83,7 @@ }, "StartWindow": { "Start": { - "TimeUnitValue": 7, - "TimeUnit": "day", + "Days": 7, "Coeff": -1 }, "End": { @@ -106,8 +104,7 @@ }, "StartWindow": { "Start": { - "TimeUnitValue": 14, - "TimeUnit": "day", + "Days": 14, "Coeff": -1 }, "End": { @@ -134,8 +131,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", - "EraPadUnit": "day", - "EraPadUnitValue": 0 + "EraPad": 0 }, "CensorWindow": {}, "cdmVersionRange": ">=5.3.0" diff --git a/src/test/resources/checkers/deathTimeWindowCheckIncorrect.json b/src/test/resources/checkers/deathTimeWindowCheckIncorrect.json index 2b593bac..ad419909 100644 --- a/src/test/resources/checkers/deathTimeWindowCheckIncorrect.json +++ b/src/test/resources/checkers/deathTimeWindowCheckIncorrect.json @@ -39,8 +39,7 @@ }, "StartWindow": { "Start": { - "TimeUnitValue": 7, - "TimeUnit": "day", + "Days": 7, "Coeff": -1 }, "End": { @@ -84,8 +83,7 @@ }, "StartWindow": { "Start": { - "TimeUnitValue": 7, - "TimeUnit": "day", + "Days": 7, "Coeff": -1 }, "End": { @@ -106,8 +104,7 @@ }, "StartWindow": { "Start": { - "TimeUnitValue": 14, - "TimeUnit": "day", + "Days": 14, "Coeff": -1 }, "End": { @@ -134,8 +131,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", - "EraPadUnit": "day", - "EraPadUnitValue": 0 + "EraPad": 0 }, "CensorWindow": {}, "cdmVersionRange": ">=5.3.0" diff --git a/src/test/resources/checkers/domainTypeCheckCorrect.json b/src/test/resources/checkers/domainTypeCheckCorrect.json index 678b7562..dc401077 100644 --- a/src/test/resources/checkers/domainTypeCheckCorrect.json +++ b/src/test/resources/checkers/domainTypeCheckCorrect.json @@ -217,8 +217,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", - "EraPadUnit": "day", - "EraPadUnitValue": 0 + "EraPad": 0 }, "CensorWindow": {}, "cdmVersionRange": ">=5.3.0" diff --git a/src/test/resources/checkers/domainTypeCheckIncorrect.json b/src/test/resources/checkers/domainTypeCheckIncorrect.json index 9c9c05e3..34afceb4 100644 --- a/src/test/resources/checkers/domainTypeCheckIncorrect.json +++ b/src/test/resources/checkers/domainTypeCheckIncorrect.json @@ -115,8 +115,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", - "EraPadUnit": "day", - "EraPadUnitValue": 0 + "EraPad": 0 }, "CensorWindow": {}, "cdmVersionRange": ">=5.3.0" diff --git a/src/test/resources/checkers/drugDomainCheckCorrect.json b/src/test/resources/checkers/drugDomainCheckCorrect.json index 0a070252..42e15e84 100644 --- a/src/test/resources/checkers/drugDomainCheckCorrect.json +++ b/src/test/resources/checkers/drugDomainCheckCorrect.json @@ -168,8 +168,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", - "EraPadUnit": "day", - "EraPadUnitValue": 0 + "EraPad": 0 }, "CensorWindow": {}, "cdmVersionRange": ">=5.3.0" diff --git a/src/test/resources/checkers/drugDomainCheckIncorrect.json b/src/test/resources/checkers/drugDomainCheckIncorrect.json index 64a99002..4b7364a6 100644 --- a/src/test/resources/checkers/drugDomainCheckIncorrect.json +++ b/src/test/resources/checkers/drugDomainCheckIncorrect.json @@ -168,8 +168,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", - "EraPadUnit": "day", - "EraPadUnitValue": 0 + "EraPad": 0 }, "CensorWindow": {}, "cdmVersionRange": ">=5.3.0" diff --git a/src/test/resources/checkers/drugEraCheckCorrect.json b/src/test/resources/checkers/drugEraCheckCorrect.json index 565aad14..047e2f50 100644 --- a/src/test/resources/checkers/drugEraCheckCorrect.json +++ b/src/test/resources/checkers/drugEraCheckCorrect.json @@ -53,13 +53,11 @@ }, "StartWindow": { "Start": { - "TimeUnitValue": 0, - "TimeUnit": "day", + "Days": 0, "Coeff": -1 }, "End": { - "TimeUnitValue": 0, - "TimeUnit": "day", + "Days": 0, "Coeff": -1 }, "UseEventEnd": true @@ -78,8 +76,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", - "EraPadUnit": "day", - "EraPadUnitValue": 0 + "EraPad": 0 }, "CensorWindow": {}, "cdmVersionRange": ">=5.3.0" diff --git a/src/test/resources/checkers/duplicatesConceptSetCheckCorrect.json b/src/test/resources/checkers/duplicatesConceptSetCheckCorrect.json index 4b4cdbe3..4ad7d1c3 100644 --- a/src/test/resources/checkers/duplicatesConceptSetCheckCorrect.json +++ b/src/test/resources/checkers/duplicatesConceptSetCheckCorrect.json @@ -50,8 +50,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", - "EraPadUnit": "day", - "EraPadUnitValue": 0 + "EraPad": 0 }, "CensorWindow": {}, "cdmVersionRange": ">=5.3.0" diff --git a/src/test/resources/checkers/duplicatesConceptSetCheckIncorrect.json b/src/test/resources/checkers/duplicatesConceptSetCheckIncorrect.json index 1741beb8..da030ecf 100644 --- a/src/test/resources/checkers/duplicatesConceptSetCheckIncorrect.json +++ b/src/test/resources/checkers/duplicatesConceptSetCheckIncorrect.json @@ -73,8 +73,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", - "EraPadUnit": "day", - "EraPadUnitValue": 0 + "EraPad": 0 }, "CensorWindow": {}, "cdmVersionRange": ">=5.3.0" diff --git a/src/test/resources/checkers/duplicatesCriteriaCheckCorrect.json b/src/test/resources/checkers/duplicatesCriteriaCheckCorrect.json index b2d56fae..6c79f167 100644 --- a/src/test/resources/checkers/duplicatesCriteriaCheckCorrect.json +++ b/src/test/resources/checkers/duplicatesCriteriaCheckCorrect.json @@ -185,8 +185,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", - "EraPadUnit": "day", - "EraPadUnitValue": 0 + "EraPad": 0 }, "CensorWindow": {}, "cdmVersionRange": ">=5.3.0" diff --git a/src/test/resources/checkers/duplicatesCriteriaCheckIncorrect.json b/src/test/resources/checkers/duplicatesCriteriaCheckIncorrect.json index 05b5b93e..e726c78c 100644 --- a/src/test/resources/checkers/duplicatesCriteriaCheckIncorrect.json +++ b/src/test/resources/checkers/duplicatesCriteriaCheckIncorrect.json @@ -532,8 +532,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", - "EraPadUnit": "day", - "EraPadUnitValue": 0 + "EraPad": 0 }, "CensorWindow": {}, "cdmVersionRange": ">=5.3.0" diff --git a/src/test/resources/checkers/emptyCensoringCriteriaList.json b/src/test/resources/checkers/emptyCensoringCriteriaList.json index 6dec6bdc..ff98150d 100644 --- a/src/test/resources/checkers/emptyCensoringCriteriaList.json +++ b/src/test/resources/checkers/emptyCensoringCriteriaList.json @@ -49,8 +49,7 @@ "InclusionRules": [], "CollapseSettings": { "CollapseType": "ERA", - "EraPadUnit": "day", - "EraPadUnitValue": 0 + "EraPad": 0 }, "CensorWindow": {}, "cdmVersionRange": ">=5.0.0" diff --git a/src/test/resources/checkers/emptyCorrelatedCriteria.json b/src/test/resources/checkers/emptyCorrelatedCriteria.json index dbe91807..2b70c327 100644 --- a/src/test/resources/checkers/emptyCorrelatedCriteria.json +++ b/src/test/resources/checkers/emptyCorrelatedCriteria.json @@ -148,8 +148,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", - "EraPadUnit": "day", - "EraPadUnitValue": 0 + "EraPad": 0 }, "CensorWindow": {}, "cdmVersionRange": ">=6.1.0" diff --git a/src/test/resources/checkers/emptyDemographicCheckCorrect.json b/src/test/resources/checkers/emptyDemographicCheckCorrect.json index 34a612c0..676d9e06 100644 --- a/src/test/resources/checkers/emptyDemographicCheckCorrect.json +++ b/src/test/resources/checkers/emptyDemographicCheckCorrect.json @@ -462,8 +462,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", - "EraPadUnit": "day", - "EraPadUnitValue": 0 + "EraPad": 0 }, "CensorWindow": {}, "cdmVersionRange": ">=5.0.0" diff --git a/src/test/resources/checkers/emptyDemographicCheckIncorrect.json b/src/test/resources/checkers/emptyDemographicCheckIncorrect.json index 9ac8d92f..f22ae1b2 100644 --- a/src/test/resources/checkers/emptyDemographicCheckIncorrect.json +++ b/src/test/resources/checkers/emptyDemographicCheckIncorrect.json @@ -458,8 +458,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", - "EraPadUnit": "day", - "EraPadUnitValue": 0 + "EraPad": 0 }, "CensorWindow": {}, "cdmVersionRange": ">=5.0.0" diff --git a/src/test/resources/checkers/emptyInclusionRules.json b/src/test/resources/checkers/emptyInclusionRules.json index e0af1736..d7def9e6 100644 --- a/src/test/resources/checkers/emptyInclusionRules.json +++ b/src/test/resources/checkers/emptyInclusionRules.json @@ -54,8 +54,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", - "EraPadUnit": "day", - "EraPadUnitValue": 0 + "EraPad": 0 }, "CensorWindow": {}, "cdmVersionRange": ">=6.1.0" diff --git a/src/test/resources/checkers/emptyPrimaryCriteriaList.json b/src/test/resources/checkers/emptyPrimaryCriteriaList.json index acbd8ac3..c4c7425d 100644 --- a/src/test/resources/checkers/emptyPrimaryCriteriaList.json +++ b/src/test/resources/checkers/emptyPrimaryCriteriaList.json @@ -39,8 +39,7 @@ "InclusionRules": [], "CollapseSettings": { "CollapseType": "ERA", - "EraPadUnit": "day", - "EraPadUnitValue": 0 + "EraPad": 0 }, "CensorWindow": {}, "cdmVersionRange": ">=5.0.0" diff --git a/src/test/resources/checkers/eventsProgressionCheckCorrect.json b/src/test/resources/checkers/eventsProgressionCheckCorrect.json index 0cf117c6..8d8e1118 100644 --- a/src/test/resources/checkers/eventsProgressionCheckCorrect.json +++ b/src/test/resources/checkers/eventsProgressionCheckCorrect.json @@ -82,8 +82,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", - "EraPadUnit": "day", - "EraPadUnitValue": 0 + "EraPad": 0 }, "CensorWindow": {}, "cdmVersionRange": ">=5.3.0" diff --git a/src/test/resources/checkers/eventsProgressionCheckIncorrect.json b/src/test/resources/checkers/eventsProgressionCheckIncorrect.json index 5d927fb3..4ed760a3 100644 --- a/src/test/resources/checkers/eventsProgressionCheckIncorrect.json +++ b/src/test/resources/checkers/eventsProgressionCheckIncorrect.json @@ -82,8 +82,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", - "EraPadUnit": "day", - "EraPadUnitValue": 0 + "EraPad": 0 }, "CensorWindow": {}, "cdmVersionRange": ">=5.3.0" diff --git a/src/test/resources/checkers/inclusionRulesCheckValueCorrect.json b/src/test/resources/checkers/inclusionRulesCheckValueCorrect.json index 270f534d..121726e5 100644 --- a/src/test/resources/checkers/inclusionRulesCheckValueCorrect.json +++ b/src/test/resources/checkers/inclusionRulesCheckValueCorrect.json @@ -478,8 +478,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", - "EraPadUnit": "day", - "EraPadUnitValue": 0 + "EraPad": 0 }, "CensorWindow": {}, "cdmVersionRange": ">=6.1.0" diff --git a/src/test/resources/checkers/inclusionRulesCheckValueIncorrect.json b/src/test/resources/checkers/inclusionRulesCheckValueIncorrect.json index afdc0ef0..50a9a34f 100644 --- a/src/test/resources/checkers/inclusionRulesCheckValueIncorrect.json +++ b/src/test/resources/checkers/inclusionRulesCheckValueIncorrect.json @@ -268,8 +268,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", - "EraPadUnit": "day", - "EraPadUnitValue": 0 + "EraPad": 0 }, "CensorWindow": {}, "cdmVersionRange": ">=6.1.0" diff --git a/src/test/resources/checkers/noExitCriteriaCheck.json b/src/test/resources/checkers/noExitCriteriaCheck.json index 822578ab..5cf211ff 100644 --- a/src/test/resources/checkers/noExitCriteriaCheck.json +++ b/src/test/resources/checkers/noExitCriteriaCheck.json @@ -77,9 +77,8 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", - "EraPadUnit": "day", - "EraPadUnitValue": 0 + "EraPad": 0 }, "CensorWindow": {}, "cdmVersionRange": ">=5.0.0" -} +} \ No newline at end of file diff --git a/src/test/resources/checkers/noExitCriteriaCheckEarliestEvent.json b/src/test/resources/checkers/noExitCriteriaCheckEarliestEvent.json index 913dc418..3b63bd3b 100644 --- a/src/test/resources/checkers/noExitCriteriaCheckEarliestEvent.json +++ b/src/test/resources/checkers/noExitCriteriaCheckEarliestEvent.json @@ -77,8 +77,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", - "EraPadUnit": "day", - "EraPadUnitValue": 0 + "EraPad": 0 }, "CensorWindow": {}, "cdmVersionRange": ">=5.0.0" diff --git a/src/test/resources/checkers/primaryCriteriaCheckValueCorrect.json b/src/test/resources/checkers/primaryCriteriaCheckValueCorrect.json index 79152e6b..145d690a 100644 --- a/src/test/resources/checkers/primaryCriteriaCheckValueCorrect.json +++ b/src/test/resources/checkers/primaryCriteriaCheckValueCorrect.json @@ -1358,8 +1358,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", - "EraPadUnit": "day", - "EraPadUnitValue": 0 + "EraPad": 0 }, "CensorWindow": {}, "cdmVersionRange": ">=6.1.0" diff --git a/src/test/resources/checkers/primaryCriteriaCheckValueIncorrect.json b/src/test/resources/checkers/primaryCriteriaCheckValueIncorrect.json index e1a3dd8b..24864bf0 100644 --- a/src/test/resources/checkers/primaryCriteriaCheckValueIncorrect.json +++ b/src/test/resources/checkers/primaryCriteriaCheckValueIncorrect.json @@ -701,8 +701,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", - "EraPadUnit": "day", - "EraPadUnitValue": 0 + "EraPad": 0 }, "CensorWindow": {}, "cdmVersionRange": ">=6.1.0" diff --git a/src/test/resources/checkers/timePatternCheckCorrect.json b/src/test/resources/checkers/timePatternCheckCorrect.json index 5b80ee70..75146327 100644 --- a/src/test/resources/checkers/timePatternCheckCorrect.json +++ b/src/test/resources/checkers/timePatternCheckCorrect.json @@ -59,8 +59,7 @@ }, "StartWindow": { "Start": { - "TimeUnitValue": 14, - "TimeUnit": "day", + "Days": 14, "Coeff": -1 }, "End": { @@ -81,8 +80,7 @@ }, "StartWindow": { "Start": { - "TimeUnitValue": 14, - "TimeUnit": "day", + "Days": 14, "Coeff": -1 }, "End": { @@ -103,8 +101,7 @@ }, "StartWindow": { "Start": { - "TimeUnitValue": 14, - "TimeUnit": "day", + "Days": 14, "Coeff": -1 }, "End": { @@ -126,8 +123,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", - "EraPadUnit": "day", - "EraPadUnitValue": 0 + "EraPad": 0 }, "CensorWindow": {}, "cdmVersionRange": ">=5.3.0" diff --git a/src/test/resources/checkers/timePatternCheckIncorrect.json b/src/test/resources/checkers/timePatternCheckIncorrect.json index 1488cbe4..964b92ad 100644 --- a/src/test/resources/checkers/timePatternCheckIncorrect.json +++ b/src/test/resources/checkers/timePatternCheckIncorrect.json @@ -88,8 +88,7 @@ }, "StartWindow": { "Start": { - "TimeUnitValue": 1, - "TimeUnit": "day", + "Days": 1, "Coeff": -1 }, "End": { @@ -110,8 +109,7 @@ }, "StartWindow": { "Start": { - "TimeUnitValue": 1, - "TimeUnit": "day", + "Days": 1, "Coeff": -1 }, "End": { @@ -132,8 +130,7 @@ }, "StartWindow": { "Start": { - "TimeUnitValue": 7, - "TimeUnit": "day", + "Days": 7, "Coeff": -1 }, "End": { @@ -155,8 +152,7 @@ }, "StartWindow": { "Start": { - "TimeUnitValue": 14, - "TimeUnit": "day", + "Days": 14, "Coeff": -1 }, "End": { @@ -177,8 +173,7 @@ }, "StartWindow": { "Start": { - "TimeUnitValue": 14, - "TimeUnit": "day", + "Days": 14, "Coeff": -1 }, "End": { @@ -199,8 +194,7 @@ }, "StartWindow": { "Start": { - "TimeUnitValue": 14, - "TimeUnit": "day", + "Days": 14, "Coeff": -1 }, "End": { @@ -222,8 +216,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", - "EraPadUnit": "day", - "EraPadUnitValue": 0 + "EraPad": 0 }, "CensorWindow": {}, "cdmVersionRange": ">=5.3.0" diff --git a/src/test/resources/checkers/unusedConceptSet.json b/src/test/resources/checkers/unusedConceptSet.json index b37b5ee4..3cc898be 100644 --- a/src/test/resources/checkers/unusedConceptSet.json +++ b/src/test/resources/checkers/unusedConceptSet.json @@ -4433,8 +4433,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", - "EraPadUnit": "day", - "EraPadUnitValue": 0 + "EraPad": 0 }, "CensorWindow": {}, "cdmVersionRange": ">=6.1.0" diff --git a/src/test/resources/checkers/unusedConceptSetCorrect.json b/src/test/resources/checkers/unusedConceptSetCorrect.json index 78dae501..38143407 100644 --- a/src/test/resources/checkers/unusedConceptSetCorrect.json +++ b/src/test/resources/checkers/unusedConceptSetCorrect.json @@ -4826,8 +4826,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", - "EraPadUnit": "day", - "EraPadUnitValue": 0 + "EraPad": 0 }, "CensorWindow": {}, "cdmVersionRange": ">=6.1.0" diff --git a/src/test/resources/cohortgeneration/allCriteria/allCriteriaExpression.json b/src/test/resources/cohortgeneration/allCriteria/allCriteriaExpression.json index 35d19f07..a6cf2e0e 100644 --- a/src/test/resources/cohortgeneration/allCriteria/allCriteriaExpression.json +++ b/src/test/resources/cohortgeneration/allCriteria/allCriteriaExpression.json @@ -287,13 +287,11 @@ }, "StartWindow": { "Start": { - "TimeUnitValue": 30, - "TimeUnit": "day", + "Days": 30, "Coeff": -1 }, "End": { - "TimeUnitValue": 30, - "TimeUnit": "day", + "Days": 30, "Coeff": 1 }, "UseEventEnd": false @@ -390,13 +388,11 @@ }, "StartWindow": { "Start": { - "TimeUnitValue": 30, - "TimeUnit": "day", + "Days": 30, "Coeff": -1 }, "End": { - "TimeUnitValue": 30, - "TimeUnit": "day", + "Days": 30, "Coeff": 1 }, "UseEventEnd": false @@ -512,13 +508,11 @@ }, "StartWindow": { "Start": { - "TimeUnitValue": 30, - "TimeUnit": "day", + "Days": 30, "Coeff": -1 }, "End": { - "TimeUnitValue": 30, - "TimeUnit": "day", + "Days": 30, "Coeff": 1 }, "UseEventEnd": false @@ -690,13 +684,11 @@ }, "StartWindow": { "Start": { - "TimeUnitValue": 30, - "TimeUnit": "day", + "Days": 30, "Coeff": -1 }, "End": { - "TimeUnitValue": 30, - "TimeUnit": "day", + "Days": 30, "Coeff": 1 }, "UseEventEnd": false @@ -803,13 +795,11 @@ }, "StartWindow": { "Start": { - "TimeUnitValue": 30, - "TimeUnit": "day", + "Days": 30, "Coeff": -1 }, "End": { - "TimeUnitValue": 30, - "TimeUnit": "day", + "Days": 30, "Coeff": 1 }, "UseEventEnd": false @@ -1048,13 +1038,11 @@ }, "StartWindow": { "Start": { - "TimeUnitValue": 30, - "TimeUnit": "day", + "Days": 30, "Coeff": -1 }, "End": { - "TimeUnitValue": 30, - "TimeUnit": "day", + "Days": 30, "Coeff": 1 }, "UseEventEnd": false @@ -1271,13 +1259,11 @@ }, "StartWindow": { "Start": { - "TimeUnitValue": 30, - "TimeUnit": "day", + "Days": 30, "Coeff": -1 }, "End": { - "TimeUnitValue": 30, - "TimeUnit": "day", + "Days": 30, "Coeff": 1 }, "UseEventEnd": false @@ -1477,13 +1463,11 @@ }, "StartWindow": { "Start": { - "TimeUnitValue": 30, - "TimeUnit": "day", + "Days": 30, "Coeff": -1 }, "End": { - "TimeUnitValue": 30, - "TimeUnit": "day", + "Days": 30, "Coeff": 1 }, "UseEventEnd": false @@ -1587,13 +1571,11 @@ }, "StartWindow": { "Start": { - "TimeUnitValue": 30, - "TimeUnit": "day", + "Days": 30, "Coeff": -1 }, "End": { - "TimeUnitValue": 30, - "TimeUnit": "day", + "Days": 30, "Coeff": 1 }, "UseEventEnd": false @@ -1767,13 +1749,11 @@ }, "StartWindow": { "Start": { - "TimeUnitValue": 30, - "TimeUnit": "day", + "Days": 30, "Coeff": -1 }, "End": { - "TimeUnitValue": 30, - "TimeUnit": "day", + "Days": 30, "Coeff": 1 }, "UseEventEnd": false @@ -1950,13 +1930,11 @@ }, "StartWindow": { "Start": { - "TimeUnitValue": 30, - "TimeUnit": "day", + "Days": 30, "Coeff": -1 }, "End": { - "TimeUnitValue": 30, - "TimeUnit": "day", + "Days": 30, "Coeff": 1 }, "UseEventEnd": false @@ -2114,13 +2092,11 @@ }, "StartWindow": { "Start": { - "TimeUnitValue": 30, - "TimeUnit": "day", + "Days": 30, "Coeff": -1 }, "End": { - "TimeUnitValue": 30, - "TimeUnit": "day", + "Days": 30, "Coeff": 1 }, "UseEventEnd": false @@ -2149,13 +2125,11 @@ }, "StartWindow": { "Start": { - "TimeUnitValue": 100, - "TimeUnit": "day", + "Days": 100, "Coeff": -1 }, "End": { - "TimeUnitValue": 100, - "TimeUnit": "day", + "Days": 100, "Coeff": 1 }, "UseEventEnd": false @@ -2179,13 +2153,11 @@ }, "StartWindow": { "Start": { - "TimeUnitValue": 60, - "TimeUnit": "day", + "Days": 60, "Coeff": -1 }, "End": { - "TimeUnitValue": 60, - "TimeUnit": "day", + "Days": 60, "Coeff": 1 }, "UseEventEnd": false @@ -2203,13 +2175,11 @@ }, "StartWindow": { "Start": { - "TimeUnitValue": 30, - "TimeUnit": "day", + "Days": 30, "Coeff": -1 }, "End": { - "TimeUnitValue": 30, - "TimeUnit": "day", + "Days": 30, "Coeff": 1 }, "UseEventEnd": false @@ -2230,9 +2200,8 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", - "EraPadUnit": "minute", - "EraPadUnitValue": 0 + "EraPad": 0 }, "CensorWindow": {}, "cdmVersionRange": ">=5.0.0" -} +} \ No newline at end of file diff --git a/src/test/resources/cohortgeneration/censorWindow/censorWindowExpression.json b/src/test/resources/cohortgeneration/censorWindow/censorWindowExpression.json index bf25e20e..db6ab6a3 100644 --- a/src/test/resources/cohortgeneration/censorWindow/censorWindowExpression.json +++ b/src/test/resources/cohortgeneration/censorWindow/censorWindowExpression.json @@ -1,67 +1,22 @@ { - "ConceptSets": [ + "censorWindow.cohort": [ { - "id": 0, - "name": "Parent Conceptset", - "expression": { - "items": [ - { - "concept": { - "CONCEPT_CLASS_ID": "Clinical Finding", - "CONCEPT_CODE": "P1", - "CONCEPT_ID": 1, - "CONCEPT_NAME": "Parent 1", - "DOMAIN_ID": "CONDITION", - "INVALID_REASON": "V", - "INVALID_REASON_CAPTION": "Valid", - "STANDARD_CONCEPT": "S", - "STANDARD_CONCEPT_CAPTION": "Standard", - "VOCABULARY_ID": "TestVocab" - }, - "includeDescendants": true - } - ] - } - } - ], - "PrimaryCriteria": { - "CriteriaList": [ - { - "ConditionOccurrence": { - "CodesetId": 0 - } - } - ], - "ObservationWindow": { - "PriorDays": 0, - "PostDays": 0 + "cohort_definition_id":1, + "subject_id":1, + "cohort_start_date":"2000-04-01", + "cohort_end_date":"2000-05-01" }, - "PrimaryCriteriaLimit": { - "Type": "All" + { + "cohort_definition_id":1, + "subject_id":1, + "cohort_start_date":"2000-07-01", + "cohort_end_date":"2000-09-01" } - }, - "QualifiedLimit": { - "Type": "All" - }, - "ExpressionLimit": { - "Type": "All" - }, - "InclusionRules": [], - "EndStrategy": { - "DateOffset": { - "DateField": "StartDate", - "OffsetUnit": "day", - "OffsetUnitValue": 90 + ], + "censorWindow.cohort_censor_stats": [ + { + "cohort_definition_id":1, + "lost_count":1 } - }, - "CensoringCriteria": [], - "CollapseSettings": { - "CollapseType": "ERA", - "EraPadUnit": "day", - "EraPadUnitValue": 0 - }, - "CensorWindow": { - "StartDate": "2000-04-01", - "EndDate": "2000-09-01" - } + ] } \ No newline at end of file diff --git a/src/test/resources/cohortgeneration/censorWindow/censorWindow_PREP.json b/src/test/resources/cohortgeneration/censorWindow/censorWindow_PREP.json index c1f659b3..d7c071b6 100644 --- a/src/test/resources/cohortgeneration/censorWindow/censorWindow_PREP.json +++ b/src/test/resources/cohortgeneration/censorWindow/censorWindow_PREP.json @@ -1,60 +1,65 @@ { - "cdm.person": [ + "ConceptSets": [ { - "person_id":1, - "gender_concept_id":0, - "year_of_birth":0, - "race_concept_id":0, - "ethnicity_concept_id":0 - }, - { - "person_id":2, - "gender_concept_id":0, - "year_of_birth":0, - "race_concept_id":0, - "ethnicity_concept_id":0 + "id": 0, + "name": "Parent Conceptset", + "expression": { + "items": [ + { + "concept": { + "CONCEPT_CLASS_ID": "Clinical Finding", + "CONCEPT_CODE": "P1", + "CONCEPT_ID": 1, + "CONCEPT_NAME": "Parent 1", + "DOMAIN_ID": "CONDITION", + "INVALID_REASON": "V", + "INVALID_REASON_CAPTION": "Valid", + "STANDARD_CONCEPT": "S", + "STANDARD_CONCEPT_CAPTION": "Standard", + "VOCABULARY_ID": "TestVocab" + }, + "includeDescendants": true + } + ] + } } ], - "cdm.condition_occurrence": [ - { - "condition_occurrence_id": 1, - "person_id":1, - "condition_concept_id":2, - "condition_start_date":"2000-02-01", - "condition_start_datetime": "2000-02-01 00:00:00", - "condition_type_concept_id":0 - }, - { - "condition_occurrence_id": 2, - "person_id":1, - "condition_concept_id":2, - "condition_start_date":"2000-07-01", - "condition_start_datetime": "2000-07-01 00:00:00", - "condition_type_concept_id":0 + "PrimaryCriteria": { + "CriteriaList": [ + { + "ConditionOccurrence": { + "CodesetId": 0 + } + } + ], + "ObservationWindow": { + "PriorDays": 0, + "PostDays": 0 }, - { - "condition_occurrence_id": 3, - "person_id":2, - "condition_concept_id":2, - "condition_start_date":"2000-01-01", - "condition_start_datetime": "2000-01-01 00:00:00", - "condition_type_concept_id":0 + "PrimaryCriteriaLimit": { + "Type": "All" } - ], - "cdm.observation_period" : [ - { - "observation_period_id": 1, - "person_id":1, - "observation_period_start_date":"2000-01-01", - "observation_period_end_date":"2001-01-01", - "period_type_concept_id": 0 - }, - { - "observation_period_id": 2, - "person_id":2, - "observation_period_start_date":"2000-01-01", - "observation_period_end_date":"2001-01-01", - "period_type_concept_id": 0 + }, + "QualifiedLimit": { + "Type": "All" + }, + "ExpressionLimit": { + "Type": "All" + }, + "InclusionRules": [], + "EndStrategy": { + "DateOffset": { + "DateField": "StartDate", + "Offset": 90 } - ] + }, + "CensoringCriteria": [], + "CollapseSettings": { + "CollapseType": "ERA", + "EraPad": 0 + }, + "CensorWindow": { + "StartDate": "2000-04-01", + "EndDate": "2000-09-01" + } } \ No newline at end of file diff --git a/src/test/resources/cohortgeneration/censorWindow/censorWindow_VERIFY.json b/src/test/resources/cohortgeneration/censorWindow/censorWindow_VERIFY.json index db6ab6a3..5561c5c2 100644 --- a/src/test/resources/cohortgeneration/censorWindow/censorWindow_VERIFY.json +++ b/src/test/resources/cohortgeneration/censorWindow/censorWindow_VERIFY.json @@ -1,22 +1,57 @@ { - "censorWindow.cohort": [ + "cdm.person": [ { - "cohort_definition_id":1, - "subject_id":1, - "cohort_start_date":"2000-04-01", - "cohort_end_date":"2000-05-01" + "person_id":1, + "gender_concept_id":0, + "year_of_birth":0, + "race_concept_id":0, + "ethnicity_concept_id":0 }, { - "cohort_definition_id":1, - "subject_id":1, - "cohort_start_date":"2000-07-01", - "cohort_end_date":"2000-09-01" + "person_id":2, + "gender_concept_id":0, + "year_of_birth":0, + "race_concept_id":0, + "ethnicity_concept_id":0 } ], - "censorWindow.cohort_censor_stats": [ + "cdm.condition_occurrence": [ { - "cohort_definition_id":1, - "lost_count":1 + "condition_occurrence_id": 1, + "person_id":1, + "condition_concept_id":2, + "condition_start_date":"2000-02-01", + "condition_type_concept_id":0 + }, + { + "condition_occurrence_id": 2, + "person_id":1, + "condition_concept_id":2, + "condition_start_date":"2000-07-01", + "condition_type_concept_id":0 + }, + { + "condition_occurrence_id": 3, + "person_id":2, + "condition_concept_id":2, + "condition_start_date":"2000-01-01", + "condition_type_concept_id":0 + } + ], + "cdm.observation_period" : [ + { + "observation_period_id": 1, + "person_id":1, + "observation_period_start_date":"2000-01-01", + "observation_period_end_date":"2001-01-01", + "period_type_concept_id": 0 + }, + { + "observation_period_id": 2, + "person_id":2, + "observation_period_start_date":"2000-01-01", + "observation_period_end_date":"2001-01-01", + "period_type_concept_id": 0 } ] } \ No newline at end of file diff --git a/src/test/resources/cohortgeneration/correlatedCriteria/countsExpression.json b/src/test/resources/cohortgeneration/correlatedCriteria/countsExpression.json index 352fd00d..cd76dbba 100644 --- a/src/test/resources/cohortgeneration/correlatedCriteria/countsExpression.json +++ b/src/test/resources/cohortgeneration/correlatedCriteria/countsExpression.json @@ -30,7 +30,7 @@ "ConditionOccurrence": { "CodesetId": 0 } - } + } ], "ObservationWindow": { "PriorDays": 0, @@ -54,8 +54,9 @@ "Coeff": -1 }, "End": { + "Days": 1, "TimeUnitValue": 1, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": -1 }, "UseEventEnd": false @@ -79,6 +80,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", + "EraPad": 0, "EraPadUnit": "day", "EraPadUnitValue": 0 }, diff --git a/src/test/resources/cohortgeneration/correlatedCriteria/groupExpression.json b/src/test/resources/cohortgeneration/correlatedCriteria/groupExpression.json index e2a4ee39..1b6f524d 100644 --- a/src/test/resources/cohortgeneration/correlatedCriteria/groupExpression.json +++ b/src/test/resources/cohortgeneration/correlatedCriteria/groupExpression.json @@ -51,13 +51,15 @@ }, "StartWindow": { "Start": { + "Days": 30, "TimeUnitValue": 30, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": -1 }, "End": { + "Days": 0, "TimeUnitValue": 0, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": -1 }, "UseEventEnd": false @@ -75,13 +77,15 @@ }, "StartWindow": { "Start": { + "Days": 30, "TimeUnitValue": 30, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": -1 }, "End": { + "Days": 0, "TimeUnitValue": 0, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": -1 }, "UseEventEnd": false @@ -105,11 +109,13 @@ }, "StartWindow": { "Start": { + "Days": 60, "TimeUnitValue": 60, "TimeUnit": "day", "Coeff": -1 }, "End": { + "Days": 0, "TimeUnitValue": 0, "TimeUnit": "day", "Coeff": -1 @@ -129,11 +135,13 @@ }, "StartWindow": { "Start": { + "Days": 60, "TimeUnitValue": 60, "TimeUnit": "day", "Coeff": -1 }, "End": { + "Days": 0, "TimeUnitValue": 0, "TimeUnit": "day", "Coeff": -1 @@ -161,6 +169,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", + "EraPad": 0, "EraPadUnit": "day", "EraPadUnitValue": 0 }, diff --git a/src/test/resources/cohortgeneration/correlatedCriteria/visitExpression.json b/src/test/resources/cohortgeneration/correlatedCriteria/visitExpression.json index b31aa4e6..99e17ac8 100644 --- a/src/test/resources/cohortgeneration/correlatedCriteria/visitExpression.json +++ b/src/test/resources/cohortgeneration/correlatedCriteria/visitExpression.json @@ -52,16 +52,18 @@ "Coeff": -1 }, "End": { + "Days": 1, "TimeUnitValue": 1, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": -1 }, "UseEventEnd": false }, "EndWindow": { "Start": { + "Days": 1, "TimeUnitValue": 1, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": 1 }, "End": { @@ -88,6 +90,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", + "EraPad": 0, "EraPadUnit": "day", "EraPadUnitValue": 0 }, diff --git a/src/test/resources/cohortgeneration/eraDupes/eraDupesExpression.json b/src/test/resources/cohortgeneration/eraDupes/eraDupesExpression.json index 8b983658..9c3b8584 100644 --- a/src/test/resources/cohortgeneration/eraDupes/eraDupesExpression.json +++ b/src/test/resources/cohortgeneration/eraDupes/eraDupesExpression.json @@ -23,6 +23,7 @@ "EndStrategy": { "DateOffset": { "DateField": "EndDate", + "Offset": 0, "OffsetUnit": "hour", "OffsetUnitValue": 0 } @@ -30,6 +31,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", + "EraPad": 30, "EraPadUnit": "minute", "EraPadUnitValue": 0 }, diff --git a/src/test/resources/cohortgeneration/exits/censorEventExpression.json b/src/test/resources/cohortgeneration/exits/censorEventExpression.json index 725f718c..72b8d5cc 100644 --- a/src/test/resources/cohortgeneration/exits/censorEventExpression.json +++ b/src/test/resources/cohortgeneration/exits/censorEventExpression.json @@ -50,6 +50,7 @@ "EndStrategy": { "DateOffset": { "DateField": "StartDate", + "Offset": 31, "OffsetUnit": "day", "OffsetUnitValue": 31 } @@ -61,6 +62,7 @@ ], "CollapseSettings": { "CollapseType": "ERA", + "EraPad": 0, "EraPadUnit": "day", "EraPadUnitValue": 0 }, diff --git a/src/test/resources/cohortgeneration/exits/continuousExposureCensorExpression.json b/src/test/resources/cohortgeneration/exits/continuousExposureCensorExpression.json index 09efd2fe..97c3cb36 100644 --- a/src/test/resources/cohortgeneration/exits/continuousExposureCensorExpression.json +++ b/src/test/resources/cohortgeneration/exits/continuousExposureCensorExpression.json @@ -57,6 +57,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", + "EraPad": 0, "EraPadUnit": "day", "EraPadUnitValue": 0 }, diff --git a/src/test/resources/cohortgeneration/exits/continuousExposureExpression.json b/src/test/resources/cohortgeneration/exits/continuousExposureExpression.json index b142ef89..0d0b5b73 100644 --- a/src/test/resources/cohortgeneration/exits/continuousExposureExpression.json +++ b/src/test/resources/cohortgeneration/exits/continuousExposureExpression.json @@ -57,6 +57,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", + "EraPad": 0, "EraPadUnit": "day", "EraPadUnitValue": 0 }, diff --git a/src/test/resources/cohortgeneration/exits/fixedOffsetCensorExpression.json b/src/test/resources/cohortgeneration/exits/fixedOffsetCensorExpression.json index 7faca602..542a8829 100644 --- a/src/test/resources/cohortgeneration/exits/fixedOffsetCensorExpression.json +++ b/src/test/resources/cohortgeneration/exits/fixedOffsetCensorExpression.json @@ -50,6 +50,7 @@ "EndStrategy": { "DateOffset": { "DateField": "EndDate", + "Offset": 99999, "OffsetUnit": "day", "OffsetUnitValue": 99999 } @@ -57,6 +58,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", + "EraPad": 0, "EraPadUnit": "day", "EraPadUnitValue": 0 }, diff --git a/src/test/resources/cohortgeneration/exits/fixedOffsetExpression.json b/src/test/resources/cohortgeneration/exits/fixedOffsetExpression.json index 0f5ab2e2..74fa1daf 100644 --- a/src/test/resources/cohortgeneration/exits/fixedOffsetExpression.json +++ b/src/test/resources/cohortgeneration/exits/fixedOffsetExpression.json @@ -50,6 +50,7 @@ "EndStrategy": { "DateOffset": { "DateField": "EndDate", + "Offset": 31, "OffsetUnit": "day", "OffsetUnitValue": 31 } @@ -57,6 +58,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", + "EraPad": 0, "EraPadUnit": "day", "EraPadUnitValue": 0 }, diff --git a/src/test/resources/cohortgeneration/firstOccurrence/firstOccurrenceTestExpression.json b/src/test/resources/cohortgeneration/firstOccurrence/firstOccurrenceTestExpression.json index e66c806f..0713b0dc 100644 --- a/src/test/resources/cohortgeneration/firstOccurrence/firstOccurrenceTestExpression.json +++ b/src/test/resources/cohortgeneration/firstOccurrence/firstOccurrenceTestExpression.json @@ -44,6 +44,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", + "EraPad": 0, "EraPadUnit": "day", "EraPadUnitValue": 0 }, diff --git a/src/test/resources/cohortgeneration/inclusionRules/simpleInclusionRule.json b/src/test/resources/cohortgeneration/inclusionRules/simpleInclusionRule.json index 200fe127..3580bf44 100644 --- a/src/test/resources/cohortgeneration/inclusionRules/simpleInclusionRule.json +++ b/src/test/resources/cohortgeneration/inclusionRules/simpleInclusionRule.json @@ -86,6 +86,7 @@ "Coeff": -1 }, "End": { + "Days": 1, "TimeUnitValue": 1, "TimeUnit": "day", "Coeff": -1 @@ -106,6 +107,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", + "EraPad": 0, "EraPadUnit": "day", "EraPadUnitValue": 0 }, diff --git a/src/test/resources/cohortgeneration/limits/limitExpression.json b/src/test/resources/cohortgeneration/limits/limitExpression.json index 23ae40b8..b638424b 100644 --- a/src/test/resources/cohortgeneration/limits/limitExpression.json +++ b/src/test/resources/cohortgeneration/limits/limitExpression.json @@ -54,8 +54,9 @@ "Coeff": -1 }, "End": { + "Days": 1, "TimeUnitValue": 1, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": -1 }, "UseEventEnd": false @@ -79,6 +80,7 @@ "EndStrategy": { "DateOffset": { "DateField": "StartDate", + "Offset": 1, "OffsetUnit": "day", "OffsetUnitValue": 1 } @@ -86,6 +88,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", + "EraPad": 60, "EraPadUnit": "day", "EraPadUnitValue": 60 }, diff --git a/src/test/resources/printfriendly/allAttributes.json b/src/test/resources/printfriendly/allAttributes.json index 1c5573d4..97a4241f 100644 --- a/src/test/resources/printfriendly/allAttributes.json +++ b/src/test/resources/printfriendly/allAttributes.json @@ -70,21 +70,24 @@ }, "StartWindow": { "Start": { + "Days": 90, "TimeUnitValue": 90, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": -1 }, "End": { + "Days": 30, "TimeUnitValue": 30, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": -1 }, "UseEventEnd": false }, "EndWindow": { "Start": { + "Days": 90, "TimeUnitValue": 90, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": 1 }, "End": { @@ -144,8 +147,9 @@ "Coeff": -1 }, "End": { + "Days": 0, "TimeUnitValue": 0, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": 1 }, "UseEventEnd": false @@ -177,8 +181,9 @@ "Coeff": -1 }, "End": { + "Days": 1, "TimeUnitValue": 1, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": -1 }, "UseEventEnd": false @@ -323,8 +328,9 @@ "Coeff": -1 }, "End": { + "Days": 30, "TimeUnitValue": 30, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": -1 }, "UseEventEnd": false @@ -357,8 +363,9 @@ "Coeff": -1 }, "End": { + "Days": 0, "TimeUnitValue": 0, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": -1 }, "UseEventEnd": false @@ -380,8 +387,9 @@ "Coeff": -1 }, "End": { + "Days": 1, "TimeUnitValue": 1, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": -1 }, "UseEventEnd": false @@ -462,8 +470,9 @@ "Coeff": -1 }, "End": { + "Days": 1, "TimeUnitValue": 1, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": -1 }, "UseEventEnd": false @@ -552,8 +561,9 @@ "Coeff": -1 }, "End": { + "Days": 90, "TimeUnitValue": 90, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": 1 }, "UseEventEnd": false @@ -575,8 +585,9 @@ "Coeff": -1 }, "End": { + "Days": 30, "TimeUnitValue": 30, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": -1 }, "UseEventEnd": false @@ -683,11 +694,13 @@ }, "StartWindow": { "Start": { + "Days": 60, "TimeUnitValue": 60, "TimeUnit": "day", "Coeff": -1 }, "End": { + "Days": 1, "TimeUnitValue": 1, "TimeUnit": "day", "Coeff": -1 @@ -724,6 +737,7 @@ "Coeff": -1 }, "End": { + "Days": 0, "TimeUnitValue": 0, "TimeUnit": "day", "Coeff": -1 @@ -810,7 +824,7 @@ }, "End": { "TimeUnitValue": 1, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": -1 }, "UseEventEnd": false @@ -831,6 +845,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", + "EraPad": 0, "EraPadUnit": "day", "EraPadUnitValue": 0 }, diff --git a/src/test/resources/printfriendly/anyCondition.json b/src/test/resources/printfriendly/anyCondition.json index 73ef7919..89ed96ca 100644 --- a/src/test/resources/printfriendly/anyCondition.json +++ b/src/test/resources/printfriendly/anyCondition.json @@ -24,6 +24,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", + "EraPad": 0, "EraPadUnit": "day", "EraPadUnitValue": 0 }, diff --git a/src/test/resources/printfriendly/censorCriteria.json b/src/test/resources/printfriendly/censorCriteria.json index e2948c49..8f69c475 100644 --- a/src/test/resources/printfriendly/censorCriteria.json +++ b/src/test/resources/printfriendly/censorCriteria.json @@ -324,13 +324,15 @@ }, "StartWindow": { "Start": { + "Days": 365, "TimeUnitValue": 365, "TimeUnit": "day", "Coeff": -1 }, "End": { + "Days": 60, "TimeUnitValue": 60, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": 1 }, "UseEventEnd": false @@ -358,6 +360,7 @@ ], "CollapseSettings": { "CollapseType": "ERA", + "EraPad": 0, "EraPadUnit": "day", "EraPadUnitValue": 0 }, diff --git a/src/test/resources/printfriendly/conceptSet_simple.json b/src/test/resources/printfriendly/conceptSet_simple.json index de95aee1..09cd48cf 100644 --- a/src/test/resources/printfriendly/conceptSet_simple.json +++ b/src/test/resources/printfriendly/conceptSet_simple.json @@ -74,6 +74,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", + "EraPad": 0, "EraPadUnit": "day", "EraPadUnitValue": 0 }, diff --git a/src/test/resources/printfriendly/conditionEra.json b/src/test/resources/printfriendly/conditionEra.json index 9c7865f5..8ba4378d 100644 --- a/src/test/resources/printfriendly/conditionEra.json +++ b/src/test/resources/printfriendly/conditionEra.json @@ -37,26 +37,30 @@ }, "StartWindow": { "Start": { + "Days": 90, "TimeUnitValue": 90, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": -1 }, "End": { + "Days": 30, "TimeUnitValue": 30, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": 1 }, "UseEventEnd": false }, "EndWindow": { "Start": { + "Days": 7, "TimeUnitValue": 7, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": 1 }, "End": { + "Days": 90, "TimeUnitValue": 90, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": 1 }, "UseEventEnd": true @@ -140,11 +144,13 @@ }, "StartWindow": { "Start": { + "Days": 90, "TimeUnitValue": 90, "TimeUnit": "day", "Coeff": -1 }, "End": { + "Days": 0, "TimeUnitValue": 0, "TimeUnit": "day", "Coeff": -1 @@ -165,6 +171,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", + "EraPad": 0, "EraPadUnit": "day", "EraPadUnitValue": 0 }, diff --git a/src/test/resources/printfriendly/conditionOccurrence.json b/src/test/resources/printfriendly/conditionOccurrence.json index 7cd95ca8..97f57cc9 100644 --- a/src/test/resources/printfriendly/conditionOccurrence.json +++ b/src/test/resources/printfriendly/conditionOccurrence.json @@ -52,8 +52,9 @@ }, "StartWindow": { "Start": { + "Days": 1, "TimeUnitValue": 1, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": 1 }, "End": { @@ -205,8 +206,9 @@ "Coeff": -1 }, "End": { + "Days": 0, "TimeUnitValue": 0, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": -1 }, "UseEventEnd": true @@ -244,6 +246,7 @@ "Coeff": -1 }, "End": { + "Days": 1, "TimeUnitValue": 1, "TimeUnit": "day", "Coeff": 1 diff --git a/src/test/resources/printfriendly/continuousObservation_none.json b/src/test/resources/printfriendly/continuousObservation_none.json index 9d63f1b4..354fd870 100644 --- a/src/test/resources/printfriendly/continuousObservation_none.json +++ b/src/test/resources/printfriendly/continuousObservation_none.json @@ -24,6 +24,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", + "EraPad": 0, "EraPadUnit": "day", "EraPadUnitValue": 0 }, diff --git a/src/test/resources/printfriendly/continuousObservation_post.json b/src/test/resources/printfriendly/continuousObservation_post.json index 05538e32..9587c373 100644 --- a/src/test/resources/printfriendly/continuousObservation_post.json +++ b/src/test/resources/printfriendly/continuousObservation_post.json @@ -24,6 +24,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", + "EraPad": 0, "EraPadUnit": "day", "EraPadUnitValue": 0 }, diff --git a/src/test/resources/printfriendly/continuousObservation_prior.json b/src/test/resources/printfriendly/continuousObservation_prior.json index 774f4a73..dc43eebe 100644 --- a/src/test/resources/printfriendly/continuousObservation_prior.json +++ b/src/test/resources/printfriendly/continuousObservation_prior.json @@ -24,6 +24,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", + "EraPad": 0, "EraPadUnit": "day", "EraPadUnitValue": 0 }, diff --git a/src/test/resources/printfriendly/continuousObservation_priorpost.json b/src/test/resources/printfriendly/continuousObservation_priorpost.json index 56abf230..6cf78eaa 100644 --- a/src/test/resources/printfriendly/continuousObservation_priorpost.json +++ b/src/test/resources/printfriendly/continuousObservation_priorpost.json @@ -24,6 +24,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", + "EraPad": 0, "EraPadUnit": "day", "EraPadUnitValue": 0 }, diff --git a/src/test/resources/printfriendly/countCriteria.json b/src/test/resources/printfriendly/countCriteria.json index d5561bd3..700ea4b8 100644 --- a/src/test/resources/printfriendly/countCriteria.json +++ b/src/test/resources/printfriendly/countCriteria.json @@ -30,13 +30,15 @@ }, "StartWindow": { "Start": { + "Days": 30, "TimeUnitValue": 30, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": -1 }, "End": { + "Days": 30, "TimeUnitValue": 30, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": 1 }, "UseEventEnd": false @@ -78,8 +80,9 @@ "Coeff": -1 }, "End": { + "Days": 0, "TimeUnitValue": 0, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": -1 }, "UseEventEnd": false @@ -100,8 +103,9 @@ }, "StartWindow": { "Start": { + "Days": 0, "TimeUnitValue": 0, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": -1 }, "End": { @@ -240,6 +244,7 @@ "Coeff": -1 }, "End": { + "Days": 0, "TimeUnitValue": 0, "TimeUnit": "day", "Coeff": 1 @@ -272,6 +277,7 @@ "Coeff": -1 }, "End": { + "Days": 0, "TimeUnitValue": 0, "TimeUnit": "day", "Coeff": 1 @@ -303,6 +309,7 @@ "Coeff": -1 }, "End": { + "Days": 0, "TimeUnitValue": 0, "TimeUnit": "day", "Coeff": 1 @@ -337,6 +344,7 @@ "Coeff": -1 }, "End": { + "Days": 0, "TimeUnitValue": 0, "TimeUnit": "day", "Coeff": 1 @@ -356,6 +364,7 @@ }, "StartWindow": { "Start": { + "Days": 0, "TimeUnitValue": 0, "TimeUnit": "day", "Coeff": -1 @@ -384,13 +393,15 @@ }, "StartWindow": { "Start": { + "Days": 30, "TimeUnitValue": 30, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": -1 }, "End": { + "Days": 30, "TimeUnitValue": 30, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": 1 }, "UseEventEnd": false @@ -411,6 +422,7 @@ "Coeff": -1 }, "End": { + "Days": 31, "TimeUnitValue": 31, "TimeUnit": "day", "Coeff": -1 diff --git a/src/test/resources/printfriendly/countDistinctCriteria.json b/src/test/resources/printfriendly/countDistinctCriteria.json index 45bed9c7..f5dbe6d8 100644 --- a/src/test/resources/printfriendly/countDistinctCriteria.json +++ b/src/test/resources/printfriendly/countDistinctCriteria.json @@ -30,13 +30,15 @@ }, "StartWindow": { "Start": { + "Days": 30, "TimeUnitValue": 30, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": -1 }, "End": { + "Days": 30, "TimeUnitValue": 30, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": 1 }, "UseEventEnd": false @@ -79,8 +81,9 @@ "Coeff": -1 }, "End": { + "Days": 0, "TimeUnitValue": 0, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": -1 }, "UseEventEnd": false @@ -107,8 +110,9 @@ "Coeff": -1 }, "End": { + "Days": 0, "TimeUnitValue": 0, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": -1 }, "UseEventEnd": false @@ -131,8 +135,9 @@ }, "StartWindow": { "Start": { + "Days": 0, "TimeUnitValue": 0, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": -1 }, "End": { @@ -173,6 +178,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", + "EraPad": 0, "EraPadUnit": "day", "EraPadUnitValue": 0 }, diff --git a/src/test/resources/printfriendly/customEraExit.json b/src/test/resources/printfriendly/customEraExit.json index e74f2963..0f348f0f 100644 --- a/src/test/resources/printfriendly/customEraExit.json +++ b/src/test/resources/printfriendly/customEraExit.json @@ -50,6 +50,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", + "EraPad": 0, "EraPadUnit": "day", "EraPadUnitValue": 0 }, diff --git a/src/test/resources/printfriendly/dateOffset.json b/src/test/resources/printfriendly/dateOffset.json index f52faaeb..e6a65744 100644 --- a/src/test/resources/printfriendly/dateOffset.json +++ b/src/test/resources/printfriendly/dateOffset.json @@ -42,6 +42,7 @@ "EndStrategy": { "DateOffset": { "DateField": "EndDate", + "Offset": 7, "OffsetUnit": "day", "OffsetUnitValue": 7 } @@ -49,6 +50,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", + "EraPad": 0, "EraPadUnit": "day", "EraPadUnitValue": 0 }, diff --git a/src/test/resources/printfriendly/death.json b/src/test/resources/printfriendly/death.json index 4c232614..43c585a1 100644 --- a/src/test/resources/printfriendly/death.json +++ b/src/test/resources/printfriendly/death.json @@ -40,8 +40,9 @@ "Coeff": -1 }, "End": { + "Days": 1, "TimeUnitValue": 1, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": -1 }, "UseEventEnd": false diff --git a/src/test/resources/printfriendly/deviceExposure.json b/src/test/resources/printfriendly/deviceExposure.json index 3f6a4e10..96f9f895 100644 --- a/src/test/resources/printfriendly/deviceExposure.json +++ b/src/test/resources/printfriendly/deviceExposure.json @@ -66,8 +66,9 @@ "Coeff": -1 }, "End": { + "Days": 1, "TimeUnitValue": 1, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": 1 }, "UseEventEnd": false @@ -181,8 +182,9 @@ "Coeff": -1 }, "End": { + "Days": 1, "TimeUnitValue": 1, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": -1 }, "UseEventEnd": false @@ -217,11 +219,13 @@ }, "StartWindow": { "Start": { + "Days": 30, "TimeUnitValue": 30, "TimeUnit": "day", "Coeff": -1 }, "End": { + "Days": 30, "TimeUnitValue": 30, "TimeUnit": "day", "Coeff": 1 diff --git a/src/test/resources/printfriendly/doseEra.json b/src/test/resources/printfriendly/doseEra.json index 1c1493d4..7fb29479 100644 --- a/src/test/resources/printfriendly/doseEra.json +++ b/src/test/resources/printfriendly/doseEra.json @@ -38,13 +38,15 @@ }, "StartWindow": { "Start": { + "Days": 30, "TimeUnitValue": 30, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": -1 }, "End": { + "Days": 0, "TimeUnitValue": 0, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": 1 }, "UseEventEnd": false @@ -62,13 +64,14 @@ }, "StartWindow": { "Start": { + "Days": 30, "TimeUnitValue": 30, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": -1 }, "End": { "TimeUnitValue": 1, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": -1 }, "UseEventEnd": false @@ -172,13 +175,15 @@ }, "StartWindow": { "Start": { + "Days": 60, "TimeUnitValue": 60, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": -1 }, "End": { + "Days": 0, "TimeUnitValue": 0, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": 1 }, "UseEventEnd": false @@ -196,13 +201,15 @@ }, "StartWindow": { "Start": { + "Days": 60, "TimeUnitValue": 60, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": -1 }, "End": { + "Days": 1, "TimeUnitValue": 1, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": -1 }, "UseEventEnd": false @@ -240,6 +247,7 @@ "Coeff": -1 }, "End": { + "Days": 0, "TimeUnitValue": 0, "TimeUnit": "day", "Coeff": 1 @@ -266,6 +274,7 @@ "Coeff": -1 }, "End": { + "Days": 1, "TimeUnitValue": 1, "TimeUnit": "day", "Coeff": -1 @@ -285,6 +294,7 @@ ], "CensoringCriteria": [], "CollapseSettings": { + "EraPad": 0, "CollapseType": "ERA", "EraPadUnit": "day", "EraPadUnitValue": 0 diff --git a/src/test/resources/printfriendly/drugEra.json b/src/test/resources/printfriendly/drugEra.json index 6f8247bc..c46b4815 100644 --- a/src/test/resources/printfriendly/drugEra.json +++ b/src/test/resources/printfriendly/drugEra.json @@ -41,8 +41,9 @@ "Coeff": -1 }, "End": { + "Days": 1, "TimeUnitValue": 1, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": -1 }, "UseEventEnd": false @@ -159,6 +160,7 @@ }, "StartWindow": { "Start": { + "Days": 0, "TimeUnitValue": 0, "TimeUnit": "day", "Coeff": -1 @@ -181,6 +183,7 @@ ], "CensoringCriteria": [], "CollapseSettings": { + "EraPad": 0, "CollapseType": "ERA", "EraPadUnit": "day", "EraPadUnitValue": 0 diff --git a/src/test/resources/printfriendly/drugExposure.json b/src/test/resources/printfriendly/drugExposure.json index b2ad53e5..7caadd91 100644 --- a/src/test/resources/printfriendly/drugExposure.json +++ b/src/test/resources/printfriendly/drugExposure.json @@ -250,6 +250,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", + "EraPad": 0, "EraPadUnit": "day", "EraPadUnitValue": 0 }, diff --git a/src/test/resources/printfriendly/measurement.json b/src/test/resources/printfriendly/measurement.json index 0f5f0bc7..5812f1ca 100644 --- a/src/test/resources/printfriendly/measurement.json +++ b/src/test/resources/printfriendly/measurement.json @@ -38,11 +38,15 @@ }, "StartWindow": { "Start": { + "Days": 14, + "TimeUnitValue": 14, + "TimeUnit": "day", "Coeff": -1 }, "End": { + "Days": 0, "TimeUnitValue": 0, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": 1 }, "UseEventEnd": false @@ -60,11 +64,15 @@ }, "StartWindow": { "Start": { + "Days": 0, "TimeUnitValue": 0, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": -1 }, "End": { + "Days": 0, + "TimeUnitValue": 0, + "TimeUnit": "day", "Coeff": 1 }, "UseEventEnd": false @@ -263,6 +271,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", + "EraPad": 0, "EraPadUnit": "day", "EraPadUnitValue": 0 }, diff --git a/src/test/resources/printfriendly/noCensorCriteria.json b/src/test/resources/printfriendly/noCensorCriteria.json index dd045db5..bfdd20d4 100644 --- a/src/test/resources/printfriendly/noCensorCriteria.json +++ b/src/test/resources/printfriendly/noCensorCriteria.json @@ -398,6 +398,7 @@ ], "CollapseSettings":{ "CollapseType":"ERA", + "EraPad":0, "EraPadUnit": "days", "EraPadUnitValue": 0 } diff --git a/src/test/resources/printfriendly/nullCodesetId.json b/src/test/resources/printfriendly/nullCodesetId.json index 03ec724a..81fb082f 100644 --- a/src/test/resources/printfriendly/nullCodesetId.json +++ b/src/test/resources/printfriendly/nullCodesetId.json @@ -376,6 +376,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", + "EraPad": 0, "EraPadUnit": "day", "EraPadUnitValue": 0 }, diff --git a/src/test/resources/printfriendly/observation.json b/src/test/resources/printfriendly/observation.json index 561af4c1..ae536e6a 100644 --- a/src/test/resources/printfriendly/observation.json +++ b/src/test/resources/printfriendly/observation.json @@ -41,6 +41,7 @@ "Coeff": -1 }, "End": { + "Days": 1, "TimeUnitValue": 1, "TimeUnit": "day", "Coeff": -1 @@ -217,6 +218,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", + "EraPad": 0, "EraPadUnit": "day", "EraPadUnitValue": 0 }, diff --git a/src/test/resources/printfriendly/observationPeriod_1.json b/src/test/resources/printfriendly/observationPeriod_1.json index a55605eb..450124eb 100644 --- a/src/test/resources/printfriendly/observationPeriod_1.json +++ b/src/test/resources/printfriendly/observationPeriod_1.json @@ -35,6 +35,7 @@ }, "StartWindow": { "Start": { + "Days": 1, "TimeUnitValue": 1, "TimeUnit": "day", "Coeff": 1 @@ -120,6 +121,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", + "EraPad": 0, "EraPadUnit": "day", "EraPadUnitValue": 0 }, diff --git a/src/test/resources/printfriendly/procedureOccurrence.json b/src/test/resources/printfriendly/procedureOccurrence.json index 5118c603..f3881bf4 100644 --- a/src/test/resources/printfriendly/procedureOccurrence.json +++ b/src/test/resources/printfriendly/procedureOccurrence.json @@ -40,8 +40,9 @@ "Coeff": -1 }, "End": { + "Days": 1, "TimeUnitValue": 1, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": -1 }, "UseEventEnd": false @@ -191,6 +192,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", + "EraPad": 0, "EraPadUnit": "day", "EraPadUnitValue": 0 }, diff --git a/src/test/resources/printfriendly/specimen.json b/src/test/resources/printfriendly/specimen.json index f577d458..dd35d186 100644 --- a/src/test/resources/printfriendly/specimen.json +++ b/src/test/resources/printfriendly/specimen.json @@ -40,8 +40,9 @@ "Coeff": -1 }, "End": { + "Days": 1, "TimeUnitValue": 1, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": -1 }, "UseEventEnd": false @@ -176,6 +177,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", + "EraPad": 0, "EraPadUnit": "day", "EraPadUnitValue": 0 }, diff --git a/src/test/resources/printfriendly/visit.json b/src/test/resources/printfriendly/visit.json index a6296603..6660dda0 100644 --- a/src/test/resources/printfriendly/visit.json +++ b/src/test/resources/printfriendly/visit.json @@ -40,8 +40,9 @@ "Coeff": -1 }, "End": { + "Days": 0, "TimeUnitValue": 0, - "TimeUnit": "day", + "TimeUnit": "day", "Coeff": -1 }, "UseEventEnd": false @@ -177,6 +178,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", + "EraPad": 0, "EraPadUnit": "day", "EraPadUnitValue": 0 }, diff --git a/src/test/resources/printfriendly/visitDetail.json b/src/test/resources/printfriendly/visitDetail.json index 211b685c..20ba6752 100644 --- a/src/test/resources/printfriendly/visitDetail.json +++ b/src/test/resources/printfriendly/visitDetail.json @@ -40,6 +40,7 @@ "Coeff": -1 }, "End": { + "Days": 0, "TimeUnitValue": 0, "TimeUnit": "day", "Coeff": -1 @@ -109,6 +110,7 @@ "CensoringCriteria": [], "CollapseSettings": { "CollapseType": "ERA", + "EraPad": 0, "EraPadUnit": "day", "EraPadUnitValue": 0 },