/** * Sets autoExpireDate based on duration. * * @should delegate calculation to dosingInstructions * @should not calculate for discontinue action * @should not calculate if autoExpireDate already set */ public void setAutoExpireDateBasedOnDuration() { if (DISCONTINUE != getAction() && getAutoExpireDate() == null) { setAutoExpireDate(getDosingInstructionsInstance().getAutoExpireDate(this)); } }
/** * @see DrugOrder#setAutoExpireDateBasedOnDuration() */ @Test public void setAutoExpireDateBasedOnDuration_shouldDelegateCalculationToDosingInstructions() { DrugOrder drugOrder = spy(new DrugOrder()); drugOrder.setAutoExpireDate(null); DosingInstructions dosingInstructions = mock(DosingInstructions.class); when(drugOrder.getDosingInstructionsInstance()).thenReturn(dosingInstructions); Date expectedAutoExpireDate = new Date(); when(dosingInstructions.getAutoExpireDate(drugOrder)).thenReturn(expectedAutoExpireDate); drugOrder.setAutoExpireDateBasedOnDuration(); assertEquals(expectedAutoExpireDate, drugOrder.getAutoExpireDate()); }
/** * @see DrugOrder#setAutoExpireDateBasedOnDuration() */ @Test public void setAutoExpireDateBasedOnDuration_shouldNotCalculateIfAutoExpireDateAlreadySet() { DrugOrder drugOrder = new DrugOrder(); Date expectedAutoExpireDate = new Date(); drugOrder.setAutoExpireDate(expectedAutoExpireDate); drugOrder.setAutoExpireDateBasedOnDuration(); assertEquals(expectedAutoExpireDate, drugOrder.getAutoExpireDate()); }
/** * @see DrugOrder#setAutoExpireDateBasedOnDuration() */ @Test public void setAutoExpireDateBasedOnDuration_shouldNotCalculateForDiscontinueAction() { DrugOrder drugOrder = new DrugOrder(); drugOrder.setAction(Order.Action.DISCONTINUE); Date expectedAutoExpireDate = new Date(); drugOrder.setAutoExpireDate(expectedAutoExpireDate); drugOrder.setAutoExpireDateBasedOnDuration(); assertEquals(expectedAutoExpireDate, drugOrder.getAutoExpireDate()); }
/** * @see DosingInstructions#validate(DrugOrder, org.springframework.validation.Errors) * @param order * @param errors * @should reject a duration unit with a mapping of an invalid type */ @Override public void validate(DrugOrder order, Errors errors) { ValidationUtils.rejectIfEmpty(errors, "dose", "DrugOrder.error.doseIsNullForDosingTypeSimple"); ValidationUtils.rejectIfEmpty(errors, "doseUnits", "DrugOrder.error.doseUnitsIsNullForDosingTypeSimple"); ValidationUtils.rejectIfEmpty(errors, "route", "DrugOrder.error.routeIsNullForDosingTypeSimple"); ValidationUtils.rejectIfEmpty(errors, "frequency", "DrugOrder.error.frequencyIsNullForDosingTypeSimple"); if (order.getAutoExpireDate() == null && order.getDurationUnits() != null && Duration.getCode(order.getDurationUnits()) == null) { errors.rejectValue("durationUnits", "DrugOrder.error.durationUnitsNotMappedToSnomedCtDurationCode"); } }
@Override public String toString() { String prefix = DISCONTINUE == getAction() ? "DC " : ""; return prefix + "DrugOrder(" + getDose() + getDoseUnits() + " of " + (isNonCodedDrug() ? getDrugNonCoded() : (getDrug() != null ? getDrug().getName() : "[no drug]")) + " from " + getDateActivated() + " to " + (isDiscontinuedRightNow() ? getDateStopped() : getAutoExpireDate()) + ")"; }
private DrugOrder setDiscontinueDateFromAutoExpire(DrugOrder dor){ if (dor.getAutoExpireDate() != null){ Date today = new Date(); if (dor.getAutoExpireDate().getTime() < today.getTime()){ dor.setDiscontinuedDate(dor.getAutoExpireDate()); //TODO: when discontinueReason is a String, set it. } } return dor; }
private DrugOrder createDiscontinuationOrderIfNeeded(DrugOrder drugOrder, Date discontinuedDate, String discontinuedReasonStr) { DrugOrder discontinuationOrder = null; if (discontinuedDate != null) { discontinuationOrder = drugOrder.cloneForDiscontinuing(); discontinuationOrder.setDateActivated(discontinuedDate); if (!StringUtils.isEmpty(discontinuedReasonStr)) discontinuationOrder.setOrderReason(HtmlFormEntryUtil.getConcept(discontinuedReasonStr)); } else if (drugOrder.getAutoExpireDate() != null) { Date date = new Date(); if (drugOrder.getAutoExpireDate().getTime() < date.getTime()) { drugOrder.setDateActivated(drugOrder.getAutoExpireDate()); discontinuationOrder = drugOrder.cloneForDiscontinuing(); } } return discontinuationOrder; }
@Test public void saveOrder_shouldSetAutoExpireDateForReviseOrderWithSimpleDosingInstructions() { executeDataSet("org/openmrs/api/include/OrderServiceTest-drugOrderAutoExpireDate.xml"); DrugOrder originalOrder = (DrugOrder) orderService.getOrder(111); assertTrue(originalOrder.isActive()); DrugOrder revisedOrder = originalOrder.cloneForRevision(); revisedOrder.setOrderer(originalOrder.getOrderer()); revisedOrder.setEncounter(originalOrder.getEncounter()); revisedOrder.setNumRefills(0); revisedOrder.setAutoExpireDate(null); revisedOrder.setDuration(10); revisedOrder.setDurationUnits(conceptService.getConcept(1001)); orderService.saveOrder(revisedOrder, null); assertNotNull(revisedOrder.getAutoExpireDate()); }
Assert.assertEquals(order.getDateActivated(), order.getAutoExpireDate()); Assert.assertNotNull("previous order should be discontinued", previousOrder.getDateStopped());
Assert.assertEquals(expectedPreviousOrder, order.getPreviousOrder()); Assert.assertNotNull(expectedPreviousOrder.getDateStopped()); Assert.assertEquals(order.getDateActivated(), order.getAutoExpireDate());
if (existingOrder != null && existingOrder.getAutoExpireDate() != null){ Long autoDateMilis = existingOrder.getAutoExpireDate().getTime(); Long startDateMilis = existingOrder.getStartDate().getTime(); Long diffInMSec = autoDateMilis - startDateMilis;