diff --git a/tooling/src/main/java/org/opencds/cqf/tooling/operations/dateroller/RollTestDates.java b/tooling/src/main/java/org/opencds/cqf/tooling/operations/dateroller/RollTestDates.java index 3c909010e..1c72cc375 100644 --- a/tooling/src/main/java/org/opencds/cqf/tooling/operations/dateroller/RollTestDates.java +++ b/tooling/src/main/java/org/opencds/cqf/tooling/operations/dateroller/RollTestDates.java @@ -15,6 +15,7 @@ import com.google.gson.JsonObject; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.time.DateUtils; +import org.apache.poi.openxml4j.exceptions.InvalidOperationException; import org.hl7.fhir.instance.model.api.IBase; import org.hl7.fhir.instance.model.api.IBaseBundle; import org.hl7.fhir.instance.model.api.IBaseDatatype; @@ -32,6 +33,7 @@ import java.io.FileWriter; import java.io.IOException; import java.time.LocalDate; +import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.Collections; import java.util.Date; @@ -250,7 +252,11 @@ public boolean getAllDateElements(FhirContext fhirContext, IBaseResource resourc } private int getDaysBetweenDates(LocalDate start, LocalDate end) { - return end.getDayOfYear() - start.getDayOfYear(); + try { + return Math.toIntExact(ChronoUnit.DAYS.between(start, end)); + } catch (ArithmeticException e) { + throw new InvalidOperationException("DateRoller getDaysBetweenDates calculated a different that is too large for an integer."); + } } private LocalDate getLastUpdatedDate(IBaseResource resource) {