public OrderBuilder withUrgency(Order.Urgency urgency) { order.setUrgency(urgency); return this; }
/** * @see Order#getEffectiveStartDate() */ @Test public void getEffectiveStartDate_shouldReturnScheduledDateIfUrgencyIsScheduled() throws Exception { Order order = new Order(); Date date = DateUtils.addDays(new Date(), 2); order.setUrgency(Order.Urgency.ON_SCHEDULED_DATE); order.setScheduledDate(date); order.setDateActivated(new Date()); assertEquals(date, order.getEffectiveStartDate()); }
/** * @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 }
/** * @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_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)); }
/** * @see Order#isStarted(java.util.Date) */ @Test public void isStarted_shouldReturnTrueIfTheOrderWasScheduledToStartOnTheCheckDate() throws Exception { Order order = new Order(); order.setDateActivated(DateUtils.parseDate("2014-11-01 11:11:10", DATE_FORMAT)); order.setUrgency(Order.Urgency.ON_SCHEDULED_DATE); order.setScheduledDate(DateUtils.parseDate("2014-11-01 11:11:11", DATE_FORMAT)); assertTrue(order.isStarted(DateUtils.parseDate("2014-11-01 11:11:11", DATE_FORMAT))); }
/** * @see Order#isStarted(java.util.Date) */ @Test public void isStarted_shouldReturnTrueIfTheOrderWasScheduledToStartBeforeTheCheckDate() throws Exception { Order order = new Order(); order.setDateActivated(DateUtils.parseDate("2014-11-01 11:11:10", DATE_FORMAT)); order.setUrgency(Order.Urgency.ON_SCHEDULED_DATE); order.setScheduledDate(DateUtils.parseDate("2014-11-01 11:11:11", DATE_FORMAT)); assertTrue(order.isStarted(DateUtils.parseDate("2014-11-01 11:11:12", DATE_FORMAT))); }
/** * @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 Order#isStarted(java.util.Date) */ @Test public void isStarted_shouldReturnFalseIfTheOrderWasScheduledToStartAfterTheCheckDate() throws Exception { Order order = new Order(); order.setDateActivated(DateUtils.parseDate("2014-11-01 11:11:10", DATE_FORMAT)); order.setUrgency(Order.Urgency.ON_SCHEDULED_DATE); order.setScheduledDate(DateUtils.parseDate("2014-11-01 11:11:12", DATE_FORMAT)); assertFalse(order.isStarted(DateUtils.parseDate("2014-11-01 11:11:11", DATE_FORMAT))); }
/** * @see Order#isActive(Date) */ @Test public void isActive_shouldReturnTrueIfAnOrderWasActivatedOnTheCheckDateButScheduledForTheFuture() throws Exception { Order order = new Order(); order.setUrgency(Urgency.ON_SCHEDULED_DATE); Date scheduledDateInFuture = DateUtils.addMonths(new Date(), 2); order.setScheduledDate(scheduledDateInFuture); Date activationDate = DateUtils.parseDate("2014-11-01 11:11:10", DATE_FORMAT); order.setDateActivated(activationDate); assertNull(order.getDateStopped()); assertNull(order.getAutoExpireDate()); assertTrue(order.isActive(activationDate)); }
/** * @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 OrderValidator#validate(Object, org.springframework.validation.Errors) */ @Test public void validate_shouldFailValidationIfScheduledDateIsSetAndUrgencyIsNotSetAsON_SCHEDULED_DATE() { Order order = new Order(); order.setConcept(Context.getConceptService().getConcept(88)); order.setPatient(Context.getPatientService().getPatient(2)); order.setOrderer(Context.getProviderService().getProvider(1)); order.setScheduledDate(new Date()); order.setUrgency(Order.Urgency.ROUTINE); Errors errors = new BindException(order, "order"); new OrderValidator().validate(order, errors); Assert.assertTrue(errors.hasFieldErrors("urgency")); order.setScheduledDate(new Date()); order.setUrgency(Order.Urgency.ON_SCHEDULED_DATE); errors = new BindException(order, "order"); new OrderValidator().validate(order, errors); Assert.assertFalse(errors.hasFieldErrors("urgency")); }
/** * @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)); }
/** * 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 Order#isDiscontinued(Date) */ @Test public void isDiscontinued_shouldReturnTrueIfTheOrderIsScheduledForTheFutureAndActivatedOnCheckDateButTheCheckDateIsAfterDateStopped() throws Exception { // tests the case when a scheduled order is revised: // in that case its original order is stopped. // the stopped date of the original order is set to a moment before the activated date of the revised order. // the order here represents such an original order Order order = new Order(); order.setUrgency(Urgency.ON_SCHEDULED_DATE); Date today = new Date(); Date scheduledDateInFuture = DateUtils.addMonths(today, 2); order.setScheduledDate(scheduledDateInFuture); Date activationDate = DateUtils.addDays(today, -2); order.setDateActivated(activationDate); Date stopDate = new Date(); OrderUtilTest.setDateStopped(order, stopDate); assertNotNull(order.getDateActivated()); assertNotNull(order.getDateStopped()); assertNull(order.getAutoExpireDate()); assertTrue(order.isDiscontinued(DateUtils.addSeconds(stopDate, 1))); }
/** * @see OrderValidator#validate(Object,Errors) */ @Test public void validate_shouldPassValidationIfAllFieldsAreCorrect() { Order order = new DrugOrder(); Encounter encounter = new Encounter(); order.setConcept(Context.getConceptService().getConcept(88)); order.setOrderer(Context.getProviderService().getProvider(1)); Patient patient = Context.getPatientService().getPatient(2); encounter.setPatient(patient); order.setPatient(patient); Calendar cal = Calendar.getInstance(); cal.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.DAY_OF_MONTH) - 1); order.setDateActivated(cal.getTime()); order.setAutoExpireDate(new Date()); order.setCareSetting(new CareSetting()); order.setEncounter(encounter); order.setUrgency(Order.Urgency.ROUTINE); order.setAction(Order.Action.NEW); order.setOrderType(Context.getOrderService().getOrderTypeByName("Drug order")); Errors errors = new BindException(order, "order"); new OrderValidator().validate(order, errors); Assert.assertFalse(errors.hasErrors()); }
/** * @see OrderValidator#validate(Object, org.springframework.validation.Errors) */ @Test public void validate_shouldFailValidationIfScheduledDateIsNullWhenUrgencyIsON_SCHEDULED_DATE() { Order order = new Order(); order.setConcept(Context.getConceptService().getConcept(88)); order.setPatient(Context.getPatientService().getPatient(2)); order.setOrderer(Context.getProviderService().getProvider(1)); order.setUrgency(Order.Urgency.ON_SCHEDULED_DATE); order.setScheduledDate(null); Errors errors = new BindException(order, "order"); new OrderValidator().validate(order, errors); Assert.assertTrue(errors.hasFieldErrors("scheduledDate")); order.setScheduledDate(new Date()); order.setUrgency(Order.Urgency.STAT); errors = new BindException(order, "order"); new OrderValidator().validate(order, errors); Assert.assertFalse(errors.hasFieldErrors("scheduledDate")); }
/** * @see OrderValidator#validate(Object,Errors) */ @Test public void validate_shouldFailValidationIfUrgencyIsNull() { Order order = new Order(); order.setConcept(Context.getConceptService().getConcept(88)); order.setPatient(Context.getPatientService().getPatient(2)); order.setUrgency(null); Errors errors = new BindException(order, "order"); new OrderValidator().validate(order, errors); Assert.assertTrue(errors.hasFieldErrors("urgency")); }
/** * @see OrderValidator#validate(Object,Errors) */ @Test public void validate_shouldPassValidationIfFieldLengthsAreCorrect() { Order order = new Order(); Encounter encounter = new Encounter(); order.setConcept(Context.getConceptService().getConcept(88)); order.setOrderer(Context.getProviderService().getProvider(1)); Patient patient = Context.getPatientService().getPatient(2); encounter.setPatient(patient); order.setPatient(patient); Calendar cal = Calendar.getInstance(); cal.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.DAY_OF_MONTH) - 1); order.setDateActivated(cal.getTime()); order.setAutoExpireDate(new Date()); order.setCareSetting(new CareSetting()); order.setEncounter(encounter); order.setUrgency(Order.Urgency.ROUTINE); order.setAction(Order.Action.NEW); order.setOrderReasonNonCoded("orderReasonNonCoded"); order.setAccessionNumber("accessionNumber"); order.setCommentToFulfiller("commentToFulfiller"); order.setVoidReason("voidReason"); Errors errors = new BindException(order, "order"); new OrderValidator().validate(order, errors); Assert.assertFalse(errors.hasErrors()); }
@Test public void saveOrderWithScheduledDate_shouldAddANewOrderWithScheduledDateToTheDatabase() { Date scheduledDate = new Date(); Order order = new Order(); order.setAction(Action.NEW); order.setPatient(Context.getPatientService().getPatient(7)); order.setConcept(Context.getConceptService().getConcept(5497)); order.setCareSetting(orderService.getCareSetting(1)); order.setOrderer(orderService.getOrder(1).getOrderer()); order.setEncounter(encounterService.getEncounter(3)); order.setDateActivated(new Date()); order.setScheduledDate(scheduledDate); order.setUrgency(Order.Urgency.ON_SCHEDULED_DATE); order.setEncounter(encounterService.getEncounter(3)); order.setOrderType(orderService.getOrderType(17)); order = orderService.saveOrder(order, null); Order newOrder = orderService.getOrder(order.getOrderId()); assertNotNull(order); assertEquals(DateUtil.truncateToSeconds(scheduledDate), order.getScheduledDate()); assertNotNull(newOrder); assertEquals(DateUtil.truncateToSeconds(scheduledDate), newOrder.getScheduledDate()); }