### Eclipse Workspace Patch 1.0 #P openmrs Index: web/src/main/java/org/openmrs/web/dwr/DWROrderService.java =================================================================== --- web/src/main/java/org/openmrs/web/dwr/DWROrderService.java (revision 25689) +++ web/src/main/java/org/openmrs/web/dwr/DWROrderService.java (working copy) @@ -19,7 +19,6 @@ import java.util.List; import java.util.Map; import java.util.Vector; -import java.util.Calendar; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -106,12 +105,9 @@ public void discontinueOrder(Integer orderId, String discontinueReason, String discontinueDate) throws DWRException { Date dDiscDate = null; - Date currentDate = null; if (discontinueDate != null) { SimpleDateFormat sdf = Context.getDateFormat(); try { - String str = sdf.format(Calendar.getInstance().getTime()); - currentDate = sdf.parse(str); dDiscDate = sdf.parse(discontinueDate); } catch (ParseException e) { @@ -120,14 +116,8 @@ } Order o = Context.getOrderService().getOrder(orderId); try { - if (dDiscDate.after(currentDate)) { - Context.getOrderService().discontinueFutureOrder(o, - Context.getConceptService().getConcept(discontinueReason), dDiscDate); - } else { - Context.getOrderService().discontinueOrder(o, Context.getConceptService().getConcept(discontinueReason), - dDiscDate); - - } + Context.getOrderService().discontinueOrder(o, Context.getConceptService().getConcept(discontinueReason), + dDiscDate); } catch (APIException e) { throw new DWRException(e.getMessage()); ### Eclipse Workspace Patch 1.0 #P openmrs Index: api/src/main/java/org/openmrs/api/OrderService.java =================================================================== --- api/src/main/java/org/openmrs/api/OrderService.java (revision 25689) +++ api/src/main/java/org/openmrs/api/OrderService.java (working copy) @@ -173,8 +173,6 @@ * Unknown or Unknown Location, or if there's no encounter type with name 'Regimen * Change' */ - @Authorized(PrivilegeConstants.EDIT_ORDERS) - public Order discontinueFutureOrder(Order order, Concept discontinueReason, Date discontinueDate) throws APIException; @Authorized(value = { PrivilegeConstants.ADD_ORDERS, PrivilegeConstants.ADD_ENCOUNTERS }, requireAll = true) public void createOrdersAndEncounter(Patient p, Collection orders) throws APIException; ### Eclipse Workspace Patch 1.0 #P openmrs Index: api/src/main/java/org/openmrs/api/impl/OrderServiceImpl.java =================================================================== --- api/src/main/java/org/openmrs/api/impl/OrderServiceImpl.java (revision 25689) +++ api/src/main/java/org/openmrs/api/impl/OrderServiceImpl.java (working copy) @@ -157,22 +157,18 @@ * java.util.Date) */ public Order discontinueOrder(Order order, Concept discontinueReason, Date discontinueDate) throws APIException { - order.setDiscontinued(Boolean.TRUE); + if (discontinueDate.after(new Date())) + order.setAutoExpireDate(discontinueDate); + else { + order.setDiscontinued(Boolean.TRUE); + order.setDiscontinuedDate(discontinueDate); + } order.setDiscontinuedReason(discontinueReason); - order.setDiscontinuedDate(discontinueDate); order.setDiscontinuedBy(Context.getAuthenticatedUser()); return saveOrder(order); } - public Order discontinueFutureOrder(Order order, Concept discontinueReason, Date discontinueDate) throws APIException { - order.setDiscontinuedReason(discontinueReason); - order.setAutoExpireDate(discontinueDate); - order.setDiscontinuedBy(Context.getAuthenticatedUser()); - - return saveOrder(order); - } - /** * @see org.openmrs.api.OrderService#undiscontinueOrder(org.openmrs.Order) */ ### Eclipse Workspace Patch 1.0 #P openmrs Index: api/src/test/java/org/openmrs/api/OrderServiceTest.java =================================================================== --- api/src/test/java/org/openmrs/api/OrderServiceTest.java (revision 25689) +++ api/src/test/java/org/openmrs/api/OrderServiceTest.java (working copy) @@ -13,8 +13,11 @@ */ package org.openmrs.api; +import java.util.Date; + import org.junit.Assert; import org.junit.Test; +import org.openmrs.Concept; import org.openmrs.Order; import org.openmrs.OrderType; import org.openmrs.Patient; @@ -102,11 +105,31 @@ Assert.assertEquals(discontinuedReasonNonCoded, order.getDiscontinuedReasonNonCoded()); } + /** + * @see {@link OrderService#discontinueOrder(Order, Concept, Date)} + */ @Test + @Verifies(value = "when setting discontinue date or autoExpire date parameter the value is correctly stored to the database", method = "discontinueOrder(Order order, Concept discontinueReason, Date discontinueDate)") + public void discontinueOrder_shouldSaveDiscontinueDate() throws Exception { + String uuid = "921de0a3-05c4-444a-be03-e01b4c4b9142"; + Order order = Context.getOrderService().getOrderByUuid(uuid); + Concept discontinudReason = Context.getConceptService().getConcept(1107); + Date discontinueDate = new Date(); + + Order updatedOrder = Context.getOrderService().discontinueOrder(order, discontinudReason, discontinueDate); + if (discontinueDate.after(new Date())) + Assert.assertEquals(discontinueDate, updatedOrder.getAutoExpireDate()); + else + Assert.assertEquals(discontinueDate, updatedOrder.getDiscontinuedDate()); + + } + + @Test public void voidDrugSet_shouldNotVoidThePatient() throws Exception { Patient p = Context.getPatientService().getPatient(2); Assert.assertFalse(p.isVoided()); Context.getOrderService().voidDrugSet(p, "1", "Reason", OrderService.SHOW_ALL); Assert.assertFalse(p.isVoided()); } + }