private boolean areDrugOrdersOfSameOrderableAndOverlappingSchedule(Order firstOrder, Order secondOrder) { return firstOrder.hasSameOrderableAs(secondOrder) && !OpenmrsUtil.nullSafeEquals(firstOrder.getPreviousOrder(), secondOrder) && OrderUtil.checkScheduleOverlap(firstOrder, secondOrder) && firstOrder.getOrderType().equals( Context.getOrderService().getOrderTypeByUuid(OrderType.DRUG_ORDER_TYPE_UUID)); }
/** * @throws ParseException * @see OrderUtil#checkScheduleOverlap(org.openmrs.Order, org.openmrs.Order) */ @Test public void checkScheduleOverlap_shouldReturnTrueIfOrder2StartsBeforeOrder1AndEndsAfterOrder1() throws ParseException { DateFormat df = new SimpleDateFormat("dd/MM/yyy"); Order order1 = new Order(); order1.setDateActivated(df.parse("03/08/2014")); order1.setAutoExpireDate(df.parse("05/08/2014")); Order order2 = new Order(); order2.setDateActivated(df.parse("01/08/2014")); order2.setAutoExpireDate(df.parse("07/08/2014")); assertTrue(OrderUtil.checkScheduleOverlap(order1, order2)); assertTrue(OrderUtil.checkScheduleOverlap(order2, order1)); }
/** * @throws ParseException * @see OrderUtil#checkScheduleOverlap(org.openmrs.Order, org.openmrs.Order) */ @Test public void checkScheduleOverlap_shouldReturnTrueIfOrder1StartsOnTheStopDateOfOrder2() throws ParseException { DateFormat df = new SimpleDateFormat("dd/MM/yyy"); Order order1 = new Order(); order1.setDateActivated(df.parse("13/08/2014")); Order order2 = new Order(); order2.setDateActivated(df.parse("05/08/2014")); order2.setAutoExpireDate(order1.getDateActivated()); assertTrue(OrderUtil.checkScheduleOverlap(order1, order2)); assertTrue(OrderUtil.checkScheduleOverlap(order2, order1)); //Assuming order1 has an end date order1.setAutoExpireDate(df.parse("15/08/2014")); assertTrue(OrderUtil.checkScheduleOverlap(order1, order2)); assertTrue(OrderUtil.checkScheduleOverlap(order2, order1)); }
/** * @throws ParseException * @see OrderUtil#checkScheduleOverlap(org.openmrs.Order, org.openmrs.Order) */ @Test public void checkScheduleOverlap_shouldReturnTrueIfOrder1EndsOnTheStartDateOfOrder2() throws ParseException { DateFormat df = new SimpleDateFormat("dd/MM/yyy"); Order order1 = new Order(); order1.setDateActivated(df.parse("05/08/2014")); order1.setAutoExpireDate(df.parse("13/08/2014")); Order order2 = new Order(); order2.setDateActivated(order1.getAutoExpireDate()); assertTrue(OrderUtil.checkScheduleOverlap(order1, order2)); assertTrue(OrderUtil.checkScheduleOverlap(order2, order1)); //Assuming order2 has an end date order2.setAutoExpireDate(df.parse("15/08/2014")); assertTrue(OrderUtil.checkScheduleOverlap(order1, order2)); assertTrue(OrderUtil.checkScheduleOverlap(order2, order1)); }
/** * @throws ParseException * @see OrderUtil#checkScheduleOverlap(org.openmrs.Order, org.openmrs.Order) */ @Test public void checkScheduleOverlap_shouldReturnTrueIfBothOrdersStartAndEndOnSameDates() throws ParseException { DateFormat df = new SimpleDateFormat("dd/MM/yyy"); Order order1 = new Order(); order1.setDateActivated(df.parse("05/08/2014")); order1.setAutoExpireDate(df.parse("13/08/2014")); Order order2 = new Order(); order2.setDateActivated(order1.getDateActivated()); order2.setDateActivated(order1.getAutoExpireDate()); assertTrue(OrderUtil.checkScheduleOverlap(order1, order2)); assertTrue(OrderUtil.checkScheduleOverlap(order2, order1)); } }
/** * @see OrderUtil#checkScheduleOverlap(Order,Order) */ @Test public void checkScheduleOverlap_shouldReturnTrueIfOrder1StartsWhenTheOrder2IsActive() { Date date = new Date(); Order order1 = new Order(); order1.setScheduledDate(DateUtils.addDays(date, 3)); //Order1 scheduled after 3 days order1.setUrgency(Order.Urgency.ON_SCHEDULED_DATE); Order order2 = new Order(); order2.setDateActivated(date); //Order2 scheduled today getting expired after 4 days order2.setAutoExpireDate(DateUtils.addDays(date, 4)); assertTrue(OrderUtil.checkScheduleOverlap(order1, order2)); assertTrue(OrderUtil.checkScheduleOverlap(order2, order1)); }
/** * @see OrderUtil#checkScheduleOverlap(Order,Order) */ @Test public void checkScheduleOverlap_shouldReturnTrueIfOrder1AndOrder2HaveSameStartDates() { Date date = new Date(); Order order1 = new Order(); order1.setDateActivated(date); order1.setScheduledDate(DateUtils.addDays(date, 6)); //Order1 scheduled after 6 days order1.setUrgency(Order.Urgency.ON_SCHEDULED_DATE); Order order2 = new Order(); order2.setDateActivated(date); order2.setScheduledDate(DateUtils.addDays(date, 6)); //Order2 also scheduled after 6 days order2.setUrgency(Order.Urgency.ON_SCHEDULED_DATE); assertTrue(OrderUtil.checkScheduleOverlap(order1, order2)); assertTrue(OrderUtil.checkScheduleOverlap(order2, order1)); assertTrue(OrderUtil.checkScheduleOverlap(order2, order2)); }
/** * @see OrderUtil#checkScheduleOverlap(Order,Order) */ @Test public void checkScheduleOverlap_shouldReturnFalseIfOrder1StartsAfterOrder2() { Date date = new Date(); Order order1 = new Order(); order1.setScheduledDate(DateUtils.addDays(date, 11)); //Order1 getting started after existing order's stop order1.setUrgency(Order.Urgency.ON_SCHEDULED_DATE); Order order2 = new Order(); order2.setDateActivated(date); order2.setAutoExpireDate(DateUtils.addDays(date, 2)); //Order2 expiring after 2 days assertFalse(OrderUtil.checkScheduleOverlap(order1, order2)); assertFalse(OrderUtil.checkScheduleOverlap(order2, order1)); }
/** * @see OrderUtil#checkScheduleOverlap(Order,Order) */ @Test public void checkScheduleOverlap_shouldReturnFalseIfOrder1EndsBeforeOrder2Starts() { Date date = new Date(); Order order1 = new Order(); order1.setDateActivated(date); order1.setAutoExpireDate(DateUtils.addDays(date, 2)); //Order1 getting expired after 2 days Order order2 = new Order(); order2.setDateActivated(date); order2.setScheduledDate(DateUtils.addDays(date, 4)); //Order2 scheduled after 4 days order2.setUrgency(Order.Urgency.ON_SCHEDULED_DATE); assertFalse(OrderUtil.checkScheduleOverlap(order1, order2)); assertFalse(OrderUtil.checkScheduleOverlap(order2, order1)); }
/** * @see OrderUtil#checkScheduleOverlap(Order,Order) */ @Test public void checkScheduleOverlap_shouldReturnTrueIfOrder1AndOrder2DoNotHaveEndDate() { Date date = new Date(); Order order1 = new Order(); order1.setScheduledDate(DateUtils.addDays(date, 4)); //Order1 scheduled after 4 days without stop date order1.setUrgency(Order.Urgency.ON_SCHEDULED_DATE); Order order2 = new Order(); order2.setDateActivated(date); order2.setScheduledDate(DateUtils.addDays(date, 6)); //Order2 scheduled after 6 days without stop date order2.setUrgency(Order.Urgency.ON_SCHEDULED_DATE); assertTrue(OrderUtil.checkScheduleOverlap(order1, order2)); assertTrue(OrderUtil.checkScheduleOverlap(order2, order1)); //Checks vice versa }
/** * versa * @see OrderUtil#checkScheduleOverlap(Order,Order) */ @Test public void checkScheduleOverlap_shouldReturnTrueIfOrder1StopsAfterTheOrder2HasAlreadyBeenActivated() { Date date = new Date(); Order order1 = new Order(); order1.setDateActivated(date); //Order1 scheduled today getting expired after 5 days order1.setAutoExpireDate(DateUtils.addDays(date, 5)); Order order2 = new Order(); order2.setDateActivated(date); order2.setScheduledDate(DateUtils.addDays(date, 4)); //Order2 scheduled after 4 days order2.setUrgency(Order.Urgency.ON_SCHEDULED_DATE); assertTrue(OrderUtil.checkScheduleOverlap(order1, order2)); assertTrue(OrderUtil.checkScheduleOverlap(order2, order1)); }
/** * @see OrderUtil#checkScheduleOverlap(Order,Order) */ @Test public void checkScheduleOverlap_shouldReturnTrueIfOrder1StartsBeforeOrder2AndEndsAfterOrder2() { Date date = new Date(); Order order1 = new Order(); order1.setScheduledDate(DateUtils.addDays(date, 4)); //Order1 scheduled after 4 days getting expired after 14 days order1.setAutoExpireDate(DateUtils.addDays(date, 14)); order1.setUrgency(Order.Urgency.ON_SCHEDULED_DATE); Order order2 = new Order(); order2.setDateActivated(date); order2.setScheduledDate(DateUtils.addDays(date, 6)); //Order2 scheduled after 6 days getting expired after 10 days order2.setAutoExpireDate(DateUtils.addDays(date, 10)); order2.setUrgency(Order.Urgency.ON_SCHEDULED_DATE); assertTrue(OrderUtil.checkScheduleOverlap(order1, order2)); assertTrue(OrderUtil.checkScheduleOverlap(order2, order1)); }