Commit
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -365,4 +365,50 @@ public List<OrderFrequency> getOrderFrequencies(String searchPhrase, Locale loca | |
* @should fail for a voided order | ||
*/ | ||
public Order discontinueOrder(Order orderToDiscontinue, String reasonNonCoded, Date discontinueDate) throws Exception; | ||
|
||
/** | ||
* Creates or updates the given order frequency in the database | ||
* | ||
* @param orderFrequency the order frequency to save | ||
* @return the order frequency created/saved | ||
* @since 1.10 | ||
* @should add a new order frequency to the database | ||
* @should edit an existing order frequency that is not in use | ||
* @should not allow editing an existing order frequency that is in use | ||
*/ | ||
@Authorized(PrivilegeConstants.MANAGE_ORDER_FREQUENCIES) | ||
public OrderFrequency saveOrderFrequency(OrderFrequency orderFrequency) throws APIException; | ||
|
||
/** | ||
* Retires the given order frequency in the database | ||
* | ||
* @param orderFrequency the order frequency to retire | ||
* @param reason the retire reason | ||
* @return the retired order frequency | ||
* @since 1.10 | ||
* @should retire given order frequency | ||
*/ | ||
@Authorized(PrivilegeConstants.MANAGE_ORDER_FREQUENCIES) | ||
public OrderFrequency retireOrderFrequency(OrderFrequency orderFrequency, String reason); | ||
|
||
/** | ||
* Restores an order frequency that was previous retired in the database | ||
This comment has been minimized.
Sorry, something went wrong. |
||
* | ||
* @param orderFrequency the order frequency to unretire | ||
* @return the unretired order frequency | ||
* @since 1.10 | ||
* @should unretire given order frequency | ||
*/ | ||
@Authorized(PrivilegeConstants.MANAGE_ORDER_FREQUENCIES) | ||
public OrderFrequency unretireOrderFrequency(OrderFrequency orderFrequency); | ||
|
||
/** | ||
* Completely removes an order frequency from the database | ||
* | ||
* @param orderFrequency the order frequency to purge | ||
* @since 1.10 | ||
* @should delete given order frequency | ||
*/ | ||
This comment has been minimized.
Sorry, something went wrong.
wluyima
Member
|
||
@Authorized(PrivilegeConstants.PURGE_ORDER_FREQUENCIES) | ||
public void purgeOrderFrequency(OrderFrequency orderFrequency); | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -31,12 +31,14 @@ | |
import org.hibernate.transform.DistinctRootEntityResultTransformer; | ||
import org.openmrs.CareSetting; | ||
import org.openmrs.Concept; | ||
import org.openmrs.DrugOrder; | ||
import org.openmrs.Encounter; | ||
import org.openmrs.GlobalProperty; | ||
import org.openmrs.Order; | ||
import org.openmrs.Order.Action; | ||
import org.openmrs.OrderFrequency; | ||
import org.openmrs.Patient; | ||
import org.openmrs.TestOrder; | ||
import org.openmrs.User; | ||
import org.openmrs.api.APIException; | ||
import org.openmrs.api.db.DAOException; | ||
|
@@ -333,4 +335,43 @@ public List<OrderFrequency> getOrderFrequencies(String searchPhrase, Locale loca | |
|
||
return criteria.list(); | ||
} | ||
|
||
/** | ||
* @see org.openmrs.api.db.OrderDAO#saveOrderFrequency(org.openmrs.OrderFrequency) | ||
*/ | ||
@Override | ||
public OrderFrequency saveOrderFrequency(OrderFrequency orderFrequency) { | ||
sessionFactory.getCurrentSession().saveOrUpdate(orderFrequency); | ||
return orderFrequency; | ||
} | ||
|
||
/** | ||
* @see org.openmrs.api.db.OrderDAO#purgeOrderFrequency(org.openmrs.OrderFrequency) | ||
*/ | ||
@Override | ||
public void purgeOrderFrequency(OrderFrequency orderFrequency) { | ||
sessionFactory.getCurrentSession().delete(orderFrequency); | ||
} | ||
|
||
/** | ||
* @see org.openmrs.api.db.OrderDAO#isOrderFrequencyInUse(org.openmrs.OrderFrequency) | ||
*/ | ||
@Override | ||
public boolean isOrderFrequencyInUse(OrderFrequency orderFrequency) { | ||
Criteria criteria = sessionFactory.getCurrentSession().createCriteria(DrugOrder.class); | ||
This comment has been minimized.
Sorry, something went wrong.
wluyima
Member
|
||
criteria.add(Restrictions.eq("frequency", orderFrequency)); | ||
criteria.setMaxResults(1); | ||
if (criteria.list().size() > 0) { | ||
return true; | ||
} | ||
|
||
criteria = sessionFactory.getCurrentSession().createCriteria(TestOrder.class); | ||
criteria.add(Restrictions.eq("frequency", orderFrequency)); | ||
criteria.setMaxResults(1); | ||
if (criteria.list().size() > 0) { | ||
return true; | ||
} | ||
|
||
return false; | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -36,6 +36,7 @@ | |
import org.openmrs.api.context.Context; | ||
import org.openmrs.api.db.OrderDAO; | ||
import org.openmrs.util.OpenmrsUtil; | ||
import org.openmrs.validator.ValidateUtil; | ||
import org.springframework.transaction.annotation.Propagation; | ||
import org.springframework.transaction.annotation.Transactional; | ||
import org.springframework.util.StringUtils; | ||
|
@@ -456,4 +457,44 @@ private void stopOrder(Order orderToStop, Date discontinueDate) { | |
orderToStop.setDateStopped(discontinueDate); | ||
saveOrderInternal(orderToStop); | ||
} | ||
|
||
/** | ||
* @see org.openmrs.api.OrderService#saveOrderFrequency(org.openmrs.OrderFrequency) | ||
*/ | ||
@Override | ||
public OrderFrequency saveOrderFrequency(OrderFrequency orderFrequency) throws APIException { | ||
|
||
if (orderFrequency.getOrderFrequencyId() != null) { | ||
if (dao.isOrderFrequencyInUse(orderFrequency)) { | ||
throw new APIException("This order frequency cannot be edited because it is already in use"); | ||
} | ||
} | ||
|
||
//ValidateUtil.validate(orderFrequency); | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
wluyima
Member
|
||
return dao.saveOrderFrequency(orderFrequency); | ||
} | ||
|
||
/** | ||
* @see org.openmrs.api.OrderService#retireOrderFrequency(org.openmrs.OrderFrequency, java.lang.String) | ||
*/ | ||
@Override | ||
public OrderFrequency retireOrderFrequency(OrderFrequency orderFrequency, String reason) { | ||
return dao.saveOrderFrequency(orderFrequency); | ||
} | ||
|
||
/** | ||
* @see org.openmrs.api.OrderService#unretireOrderFrequency(org.openmrs.OrderFrequency) | ||
*/ | ||
@Override | ||
public OrderFrequency unretireOrderFrequency(OrderFrequency orderFrequency) { | ||
return dao.saveOrderFrequency(orderFrequency); | ||
} | ||
|
||
/** | ||
* @see org.openmrs.api.OrderService#purgeOrderFrequency(org.openmrs.OrderFrequency) | ||
*/ | ||
@Override | ||
public void purgeOrderFrequency(OrderFrequency orderFrequency) { | ||
dao.purgeOrderFrequency(orderFrequency); | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -18,6 +18,7 @@ | |
import static org.junit.Assert.assertFalse; | ||
import static org.junit.Assert.assertNotEquals; | ||
import static org.junit.Assert.assertNotNull; | ||
import static org.junit.Assert.assertNull; | ||
import static org.junit.Assert.assertThat; | ||
import static org.junit.Assert.assertTrue; | ||
import static org.openmrs.test.TestUtil.containsId; | ||
|
@@ -978,4 +979,104 @@ public void getOrderFrequencies_shouldRejectANullSearchPhrase() throws Exception | |
expectedException.expectMessage("searchPhrase is required"); | ||
orderService.getOrderFrequencies(null, Locale.ENGLISH, false, false); | ||
} | ||
|
||
@Test | ||
@Verifies(value = "should retire given order frequency", method = "retireOrderFrequency(orderFrequency, String)") | ||
public void retireOrderFrequency_shouldRetireGivenOrderFrequency() throws Exception { | ||
OrderFrequency orderFrequency = Context.getOrderService().getOrderFrequency(1); | ||
assertNotNull(orderFrequency); | ||
Assert.assertFalse(orderFrequency.isRetired()); | ||
Assert.assertNull(orderFrequency.getRetireReason()); | ||
This comment has been minimized.
Sorry, something went wrong. |
||
|
||
Context.getOrderService().retireOrderFrequency(orderFrequency, "retire reason"); | ||
|
||
orderFrequency = Context.getOrderService().getOrderFrequency(1); | ||
assertNotNull(orderFrequency); | ||
assertTrue(orderFrequency.isRetired()); | ||
assertEquals("retire reason", orderFrequency.getRetireReason()); | ||
This comment has been minimized.
Sorry, something went wrong. |
||
|
||
//Should not change the number of order frequencies. | ||
assertEquals(3, Context.getOrderService().getOrderFrequencies(true).size()); | ||
} | ||
|
||
@Test | ||
@Verifies(value = "should unretire given order frequency", method = "unretireOrderFrequency(OrderFrequency)") | ||
public void unretireOrderFrequency_shouldUnretireGivenOrderFrequency() throws Exception { | ||
OrderFrequency orderFrequency = Context.getOrderService().getOrderFrequency(3); | ||
assertNotNull(orderFrequency); | ||
assertTrue(orderFrequency.isRetired()); | ||
assertEquals("Some Retire Reason", orderFrequency.getRetireReason()); | ||
This comment has been minimized.
Sorry, something went wrong. |
||
|
||
Context.getOrderService().unretireOrderFrequency(orderFrequency); | ||
|
||
orderFrequency = Context.getOrderService().getOrderFrequency(3); | ||
assertNotNull(orderFrequency); | ||
assertFalse(orderFrequency.isRetired()); | ||
assertNull(orderFrequency.getRetireReason()); | ||
|
||
//Should not change the number of order frequencies. | ||
assertEquals(3, Context.getOrderService().getOrderFrequencies(true).size()); | ||
} | ||
|
||
@Test | ||
@Verifies(value = "should delete given order frequency", method = "purgeOrderFrequency(OrderFrequency)") | ||
public void purgeOrderFrequency_shouldDeleteGivenOrderFrequency() throws Exception { | ||
OrderFrequency orderFrequency = Context.getOrderService().getOrderFrequency(3); | ||
assertNotNull(orderFrequency); | ||
|
||
Context.getOrderService().purgeOrderFrequency(orderFrequency); | ||
|
||
orderFrequency = Context.getOrderService().getOrderFrequency(3); | ||
Assert.assertNull(orderFrequency); | ||
|
||
//Should reduce the existing number of order frequencies. | ||
assertEquals(2, Context.getOrderService().getOrderFrequencies(true).size()); | ||
} | ||
|
||
/** | ||
* @see {@link OrderService#saveOrderFrequency(OrderFrequency)} | ||
*/ | ||
@Test | ||
@Verifies(value = "should add a new order frequency to the database", method = "saveOrderFrequency(OrderFrequency)") | ||
public void saveOrderFrequency_shouldAddANewOrderFrequencyToTheDatabase() throws Exception { | ||
OrderService os = Context.getOrderService(); | ||
Integer originalSize = os.getOrderFrequencies(true).size(); | ||
OrderFrequency orderFrequency = new OrderFrequency(); | ||
orderFrequency.setConcept(new Concept(3)); | ||
orderFrequency.setFrequencyPerDay(2d); | ||
|
||
orderFrequency = os.saveOrderFrequency(orderFrequency); | ||
|
||
assertNotNull(orderFrequency.getId()); | ||
assertNotNull(orderFrequency.getUuid()); | ||
assertNotNull(orderFrequency.getCreator()); | ||
assertNotNull(orderFrequency.getDateCreated()); | ||
assertEquals(originalSize + 1, os.getOrderFrequencies(true).size()); | ||
} | ||
|
||
/** | ||
* @see {@link OrderService#saveOrderFrequency(OrderFrequency)} | ||
*/ | ||
@Test | ||
@Verifies(value = "should edit an existing order frequency that is not in use", method = "saveOrderFrequency(OrderFrequency)") | ||
public void saveOrderFrequency_shouldEditAnExistingOrderFrequencyThatIsNotInUse() throws Exception { | ||
OrderFrequency orderFrequency = Context.getOrderService().getOrderFrequency(2); | ||
assertNotNull(orderFrequency); | ||
|
||
orderFrequency.setFrequencyPerDay(4d); | ||
Context.getOrderService().saveOrderFrequency(orderFrequency); | ||
} | ||
|
||
/** | ||
* @see {@link OrderService#saveOrderFrequency(OrderFrequency)} | ||
*/ | ||
@Test(expected = APIException.class) | ||
@Verifies(value = "should not allow editing an existing order frequency that is in use", method = "saveOrderFrequency(OrderFrequency)") | ||
public void saveOrderFrequency_shouldNotAllowEditingAnExistingOrderFrequencyThatIsInUse() throws Exception { | ||
OrderFrequency orderFrequency = Context.getOrderService().getOrderFrequency(1); | ||
assertNotNull(orderFrequency); | ||
|
||
This comment has been minimized.
Sorry, something went wrong.
wluyima
Member
|
||
orderFrequency.setFrequencyPerDay(4d); | ||
Context.getOrderService().saveOrderFrequency(orderFrequency); | ||
} | ||
} |
previous -> previously