Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: openmrs/openmrs-core
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 001a0537d5bd
Choose a base ref
...
head repository: openmrs/openmrs-core
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: babbe52393ee
Choose a head ref
  • 2 commits
  • 11 files changed
  • 2 contributors

Commits on Mar 9, 2014

  1. Orders.orderer should be required - TRUNK-4282

    Trunk 4282: Orders.orderer should be required
    alexisduque authored and wluyima committed Mar 9, 2014
    Copy the full SHA
    f98656d View commit details
  2. Follow up to fix preconditions for columns that make orders.encounter…

    … and order.orderer required - TRUNK-4282
    wluyima committed Mar 9, 2014
    Copy the full SHA
    babbe52 View commit details
1 change: 0 additions & 1 deletion api/src/main/java/org/openmrs/DrugOrder.java
Original file line number Diff line number Diff line change
@@ -435,7 +435,6 @@ public Order cloneForDiscontinuing() {
newOrder.setPatient(this.getPatient());
newOrder.setDrug(this.getDrug());
newOrder.setStartDate(this.getStartDate());

return newOrder;
}

2 changes: 2 additions & 0 deletions api/src/main/java/org/openmrs/validator/OrderValidator.java
Original file line number Diff line number Diff line change
@@ -55,6 +55,7 @@ public boolean supports(Class c) {
* @should fail validation if voided is null
* @should fail validation if concept is null
* @should fail validation if patient is null
* @should fail validation if orderer is null
* @should fail validation if startDate after dateStopped
* @should fail validation if startDate after autoExpireDate
* @should pass validation if all fields are correct
@@ -73,6 +74,7 @@ public void validate(Object obj, Errors errors) {
ValidationUtils.rejectIfEmpty(errors, "voided", "error.null");
ValidationUtils.rejectIfEmpty(errors, "concept", "Concept.noConceptSelected");
ValidationUtils.rejectIfEmpty(errors, "patient", "error.null");
ValidationUtils.rejectIfEmpty(errors, "orderer", "error.null");

Date startDate = order.getStartDate();
if (startDate != null) {
15 changes: 15 additions & 0 deletions api/src/main/resources/liquibase-update-to-latest.xml
Original file line number Diff line number Diff line change
@@ -6422,6 +6422,9 @@
</changeSet>

<changeSet id="201402281648-TRUNK-4274" author="k-joseph">
<preConditions onFail="MARK_RAN">
<columnExists tableName="orders" columnName="encounter_id" />
</preConditions>
<comment>Making order.encounter required</comment>
<ext:modifyColumn tableName="orders">
<column name="encounter_id" type="int">
@@ -6430,6 +6433,18 @@
</ext:modifyColumn>
</changeSet>

<changeSet id="201403011348" author="alexisduque">
<preConditions onFail="MARK_RAN">
<columnExists tableName="orders" columnName="orderer" />
</preConditions>
<comment>Make orders.orderer not NULLable</comment>
<ext:modifyColumn tableName="orders">
<column name="orderer" type="int">
<constraints nullable="false" />
</column>
</ext:modifyColumn>
</changeSet>

<changeSet id="201403011303-TRUNK-4198_1" author="harsha">
<preConditions onFail="MARK_RAN">
<foreignKeyConstraintExists foreignKeyName="type_of_order"/>
7 changes: 7 additions & 0 deletions api/src/test/java/org/openmrs/OrderEntryIntegrationTest.java
Original file line number Diff line number Diff line change
@@ -26,6 +26,7 @@
import org.openmrs.api.ConceptService;
import org.openmrs.api.OrderService;
import org.openmrs.api.PatientService;
import org.openmrs.api.ProviderService;
import org.openmrs.api.context.Context;
import org.openmrs.order.OrderUtil;
import org.openmrs.test.BaseContextSensitiveTest;
@@ -47,6 +48,9 @@ public class OrderEntryIntegrationTest extends BaseContextSensitiveTest {
@Autowired
private ConceptService conceptService;

@Autowired
private ProviderService providerService;

@Test
public void shouldGetTheActiveOrdersForAPatient() {
Patient patient = patientService.getPatient(2);
@@ -111,6 +115,7 @@ public void shouldPlaceATestOrder() throws Exception {
TestOrder order = new TestOrder();
order.setPatient(patient);
order.setConcept(conceptService.getConcept(5497));
order.setOrderer(providerService.getProvider(1));
order.setCareSetting(careSetting);
order.setStartDate(new Date());
order.setClinicalHistory("Patient had a negative reaction to the test in the past");
@@ -152,6 +157,7 @@ public void shouldDiscontinueAnActiveOrder() throws Exception {
Order thirdOrderToDiscontinue = orderService.getOrder(7);
assertTrue(OrderUtil.isOrderActive(thirdOrderToDiscontinue, null));
Order discontinuationOrder = thirdOrderToDiscontinue.cloneForDiscontinuing();
discontinuationOrder.setOrderer(providerService.getProvider(1));
orderService.saveOrder(discontinuationOrder);

List<Order> activeOrders = orderService.getActiveOrders(patient, null, null, null);
@@ -173,6 +179,7 @@ public void shouldReviseAnOrder() throws Exception {
Order revisedOrder = originalOrder.cloneForRevision();
revisedOrder.setInstructions("Take after a meal");
revisedOrder.setStartDate(new Date());
revisedOrder.setOrderer(providerService.getProvider(1));
orderService.saveOrder(revisedOrder);

List<Order> activeOrders = orderService.getActiveOrders(patient, null, null, null);
16 changes: 16 additions & 0 deletions api/src/test/java/org/openmrs/api/OrderServiceTest.java
Original file line number Diff line number Diff line change
@@ -66,6 +66,8 @@ public class OrderServiceTest extends BaseContextSensitiveTest {
private PatientService patientService;

private EncounterService encounterService;

private ProviderService providerService;

@Rule
public ExpectedException expectedException = ExpectedException.none();
@@ -86,6 +88,9 @@ public void setup() {
if (encounterService == null) {
encounterService = Context.getEncounterService();
}
if (providerService == null) {
providerService = Context.getProviderService();
}
}

/**
@@ -97,6 +102,7 @@ public void saveOrder_shouldNotSaveOrderIfOrderDoesntValidate() throws Exception
OrderService orderService = Context.getOrderService();
Order order = new Order();
order.setPatient(null);
order.setOrderer(null);
orderService.saveOrder(order);
}

@@ -567,6 +573,7 @@ public void saveOrder_shouldDiscontinueExistingActiveOrderIfNewOrderBeingSavedWi
order.setAction(Order.Action.DISCONTINUE);
order.setOrderReasonNonCoded("Discontinue this");
order.setPatient(Context.getPatientService().getPatient(7));
order.setOrderer(Context.getProviderService().getProvider(1));
order.setConcept(Context.getConceptService().getConcept(88));
order.setCareSetting(orderService.getCareSetting(1));
order.setStartDate(new Date());
@@ -594,6 +601,7 @@ public void saveOrder_shouldDiscontinuePreviousOrderIfItIsNotAlreadyDiscontinued
order.setAction(Order.Action.DISCONTINUE);
order.setOrderReasonNonCoded("Discontinue this");
order.setPatient(Context.getPatientService().getPatient(7));
order.setOrderer(Context.getProviderService().getProvider(1));
order.setConcept(Context.getConceptService().getConcept(88));
order.setCareSetting(orderService.getCareSetting(1));
order.setStartDate(new Date());
@@ -618,6 +626,7 @@ public void saveOrder_shouldFailIfConceptInPreviousOrderDoesNotMatchThisConcept(
order.setAction(Order.Action.DISCONTINUE);
order.setOrderReasonNonCoded("Discontinue this");
order.setPatient(Context.getPatientService().getPatient(7));
order.setOrderer(Context.getProviderService().getProvider(1));
order.setConcept(Context.getConceptService().getConcept(3));
order.setCareSetting(orderService.getCareSetting(1));
order.setStartDate(new Date());
@@ -671,6 +680,7 @@ public void saveOrder_shouldPassIfTheExistingDrugOrderMatchesTheConceptAndDrugOf
order.setOrderReasonNonCoded("Discontinue this");
order.setPatient(orderToDiscontinue.getPatient());
order.setConcept(orderToDiscontinue.getConcept());
order.setOrderer(orderToDiscontinue.getOrderer());
order.setCareSetting(orderToDiscontinue.getCareSetting());
order.setStartDate(new Date());

@@ -701,6 +711,7 @@ public void saveOrder_shouldFailIfTheExistingDrugOrderMatchesTheConceptAndNotDru
order.setOrderReasonNonCoded("Discontinue this");
order.setPatient(orderToDiscontinue.getPatient());
order.setConcept(orderToDiscontinue.getConcept());
order.setOrderer(orderToDiscontinue.getOrderer());
order.setCareSetting(orderToDiscontinue.getCareSetting());
order.setStartDate(new Date());

@@ -815,6 +826,7 @@ public void saveOrder_shouldNotAllowRevisingAStoppedOrder() throws Exception {
assertNotNull(originalOrder.getDateStopped());
Order revisedOrder = originalOrder.cloneForRevision();
revisedOrder.setInstructions("Take after a meal");
revisedOrder.setOrderer(providerService.getProvider(1));
expectedException.expect(APIException.class);
expectedException.expectMessage("Cannot discontinue an order that is already stopped, expired or voided");
orderService.saveOrder(revisedOrder);
@@ -830,6 +842,7 @@ public void saveOrder_shouldNotAllowRevisingAVoidedOrder() throws Exception {
assertTrue(originalOrder.isVoided());
Order revisedOrder = originalOrder.cloneForRevision();
revisedOrder.setInstructions("Take after a meal");
revisedOrder.setOrderer(providerService.getProvider(1));
expectedException.expect(APIException.class);
expectedException.expectMessage("Cannot discontinue an order that is already stopped, expired or voided");
orderService.saveOrder(revisedOrder);
@@ -846,6 +859,7 @@ public void saveOrder_shouldNotAllowRevisingAnExpiredOrder() throws Exception {
assertTrue(originalOrder.getAutoExpireDate().before(new Date()));
Order revisedOrder = originalOrder.cloneForRevision();
revisedOrder.setInstructions("Take after a meal");
revisedOrder.setOrderer(providerService.getProvider(1));
expectedException.expect(APIException.class);
expectedException.expectMessage("Cannot discontinue an order that is already stopped, expired or voided");
orderService.saveOrder(revisedOrder);
@@ -862,6 +876,7 @@ public void saveOrder_shouldNotAllowRevisingAnOrderWithNoPreviousOrder() throws
Order revisedOrder = originalOrder.cloneForRevision();
revisedOrder.setInstructions("Take after a meal");
revisedOrder.setPreviousOrder(null);
revisedOrder.setOrderer(providerService.getProvider(1));

expectedException.expect(APIException.class);
expectedException.expectMessage("Previous Order is required for a revised order");
@@ -883,6 +898,7 @@ public void saveOrder_shouldSaveARevisedOrder() throws Exception {
Order revisedOrder = originalOrder.cloneForRevision();
revisedOrder.setInstructions("Take after a meal");
revisedOrder.setStartDate(new Date());
revisedOrder.setOrderer(providerService.getProvider(1));
orderService.saveOrder(revisedOrder);

List<Order> activeOrders = orderService.getActiveOrders(patient, null, null, null);
Original file line number Diff line number Diff line change
@@ -85,6 +85,7 @@ public void validate_shouldPassValidationIfAllFieldsAreCorrect() throws Exceptio
DrugOrder order = new DrugOrder();
order.setConcept(Context.getConceptService().getConcept(88));
order.setPatient(Context.getPatientService().getPatient(2));
order.setOrderer(Context.getProviderService().getProvider(1));
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.DAY_OF_MONTH) - 1);
order.setStartDate(cal.getTime());
30 changes: 29 additions & 1 deletion api/src/test/java/org/openmrs/validator/OrderValidatorTest.java
Original file line number Diff line number Diff line change
@@ -40,7 +40,7 @@ public void validate_shouldFailValidationIfOrderAndEncounterHaveDifferentPatient
order.setConcept(Context.getConceptService().getConcept(88));
order.setPatient(Context.getPatientService().getPatient(2));
order.setEncounter(Context.getEncounterService().getEncounter(3));

order.setOrderer(Context.getProviderService().getProvider(1));
Errors errors = new BindException(order, "order");
new OrderValidator().validate(order, errors);

@@ -57,6 +57,7 @@ public void validate_shouldFailValidationIfVoidedIsNull() throws Exception {
order.setVoided(null);
order.setConcept(Context.getConceptService().getConcept(88));
order.setPatient(Context.getPatientService().getPatient(2));
order.setOrderer(Context.getProviderService().getProvider(1));

Errors errors = new BindException(order, "order");
new OrderValidator().validate(order, errors);
@@ -65,6 +66,7 @@ public void validate_shouldFailValidationIfVoidedIsNull() throws Exception {
Assert.assertTrue(errors.hasFieldErrors("voided"));
Assert.assertFalse(errors.hasFieldErrors("concept"));
Assert.assertFalse(errors.hasFieldErrors("patient"));
Assert.assertFalse(errors.hasFieldErrors("orderer"));
}

/**
@@ -75,13 +77,15 @@ public void validate_shouldFailValidationIfVoidedIsNull() throws Exception {
public void validate_shouldFailValidationIfConceptIsNull() throws Exception {
Order order = new Order();
order.setPatient(Context.getPatientService().getPatient(2));
order.setOrderer(Context.getProviderService().getProvider(1));

Errors errors = new BindException(order, "order");
new OrderValidator().validate(order, errors);

Assert.assertFalse(errors.hasFieldErrors("discontinued"));
Assert.assertTrue(errors.hasFieldErrors("concept"));
Assert.assertFalse(errors.hasFieldErrors("patient"));
Assert.assertFalse(errors.hasFieldErrors("orderer"));
}

/**
@@ -92,13 +96,34 @@ public void validate_shouldFailValidationIfConceptIsNull() throws Exception {
public void validate_shouldFailValidationIfPatientIsNull() throws Exception {
Order order = new Order();
order.setConcept(Context.getConceptService().getConcept(88));
order.setOrderer(Context.getProviderService().getProvider(1));

Errors errors = new BindException(order, "order");
new OrderValidator().validate(order, errors);

Assert.assertFalse(errors.hasFieldErrors("discontinued"));
Assert.assertFalse(errors.hasFieldErrors("concept"));
Assert.assertTrue(errors.hasFieldErrors("patient"));
Assert.assertFalse(errors.hasFieldErrors("orderer"));
}

/**
* @see {@link OrderValidator#validate(Object,Errors)}
*/
@Test
@Verifies(value = "should fail validation if orderer is null", method = "validate(Object,Errors)")
public void validate_shouldFailValidationIfOrdererIsNull() throws Exception {
Order order = new Order();
order.setConcept(Context.getConceptService().getConcept(88));
order.setPatient(Context.getPatientService().getPatient(2));

Errors errors = new BindException(order, "order");
new OrderValidator().validate(order, errors);

Assert.assertFalse(errors.hasFieldErrors("discontinued"));
Assert.assertFalse(errors.hasFieldErrors("concept"));
Assert.assertTrue(errors.hasFieldErrors("orderer"));
Assert.assertFalse(errors.hasFieldErrors("patient"));
}

/**
@@ -110,6 +135,7 @@ public void validate_shouldFailValidationIfStartDateAfterDiscontinuedDate() thro
Order order = new Order();
order.setConcept(Context.getConceptService().getConcept(88));
order.setPatient(Context.getPatientService().getPatient(2));
order.setOrderer(Context.getProviderService().getProvider(1));
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.DAY_OF_MONTH) - 1);
order.setStartDate(new Date());
@@ -131,6 +157,7 @@ public void validate_shouldFailValidationIfStartDateAfterAutoExpireDate() throws
Order order = new Order();
order.setConcept(Context.getConceptService().getConcept(88));
order.setPatient(Context.getPatientService().getPatient(2));
order.setOrderer(Context.getProviderService().getProvider(1));
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.DAY_OF_MONTH) - 1);
order.setStartDate(new Date());
@@ -152,6 +179,7 @@ public void validate_shouldPassValidationIfAllFieldsAreCorrect() throws Exceptio
Order order = new Order();
order.setConcept(Context.getConceptService().getConcept(88));
order.setPatient(Context.getPatientService().getPatient(2));
order.setOrderer(Context.getProviderService().getProvider(1));
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.DAY_OF_MONTH) - 1);
order.setStartDate(cal.getTime());
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<?xml version='1.0' encoding='UTF-8'?>
<dataset>
<orders order_id="61" order_number="61" urgency="ROUTINE" order_action="NEW" start_date="2012-08-19 00:00:00.0" creator="1" date_created="2012-01-19 12:24:10.0" voided="false" uuid="0c96f25c-4949-4f72-9931-d808fbcdb612" care_setting="1"/>
<orders order_id="71" order_number="71" urgency="ROUTINE" order_action="NEW" start_date="2012-09-19 00:00:00.0" creator="1" date_created="2012-01-19 12:24:10.0" voided="false" uuid="1c96f25c-4949-4f72-9931-d808fbcdb613" care_setting="1"/>
<orders order_id="72" order_number="72" urgency="ROUTINE" order_action="NEW" start_date="2012-08-19 00:00:00.0" creator="1" date_created="2012-01-19 12:24:10.0" voided="true" uuid="1c96f25c-4949-4f72-9931-d808fbcdb615" care_setting="1"/>
<orders order_id="61" order_number="61" urgency="ROUTINE" order_action="NEW" orderer="1" start_date="2012-08-19 00:00:00.0" creator="1" date_created="2012-01-19 12:24:10.0" voided="false" uuid="0c96f25c-4949-4f72-9931-d808fbcdb612" care_setting="1"/>
<orders order_id="71" order_number="71" urgency="ROUTINE" order_action="NEW" orderer="1" start_date="2012-09-19 00:00:00.0" creator="1" date_created="2012-01-19 12:24:10.0" voided="false" uuid="1c96f25c-4949-4f72-9931-d808fbcdb613" care_setting="1"/>
<orders order_id="72" order_number="72" urgency="ROUTINE" order_action="NEW" orderer="1" start_date="2012-08-19 00:00:00.0" creator="1" date_created="2012-01-19 12:24:10.0" voided="true" uuid="1c96f25c-4949-4f72-9931-d808fbcdb615" care_setting="1"/>

<obs obs_id="1" person_id="2" concept_id="88" order_id="61" obs_datetime="2006-02-09 00:00:00.0" creator="1" date_created="2006-02-10 15:57:35.0" voided="true" uuid="be3a4d7a-f9ab-47bb-aaad-bc0b452fcda4"/>
<obs obs_id="2" person_id="2" concept_id="792" order_id="61" obs_datetime="2006-02-09 00:00:00.0" creator="1" date_created="2006-02-10 15:57:35.0" voided="true" uuid="b5499df2-b17c-4b39-88a6-44591c165569"/>
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<dataset>
<orders order_id="25" order_number="1" urgency="ROUTINE" order_action="NEW" concept_id="88" orderer="1" instructions="2x daily" start_date="2008-08-08 00:00:00.0" date_stopped="2008-08-15 00:00:00.0" creator="1" date_created="2008-08-19 12:20:22.0" voided="false" patient_id="7" uuid="921de0a3-05c4-444a-be03-e01b4c4b9152" care_setting="1"/>
<orders order_id="26" previous_order_id="1" order_number="111" urgency="ROUTINE" order_action="DISCONTINUE" concept_id="88" creator="1" start_date="2008-08-08 00:00:00.0" date_created="2008-08-15 00:00:00.0" voided="false" patient_id="7" uuid="e1f95924-697a-11e3-bd76-0800271c1b55" care_setting="1"/>
<orders order_id="26" previous_order_id="1" order_number="111" urgency="ROUTINE" order_action="DISCONTINUE" concept_id="88" orderer="1" creator="1" start_date="2008-08-08 00:00:00.0" date_created="2008-08-15 00:00:00.0" voided="false" patient_id="7" uuid="e1f95924-697a-11e3-bd76-0800271c1b55" care_setting="1"/>
</dataset>
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version='1.0' encoding='UTF-8'?>
<dataset>
<orders order_id="4444" urgency="ROUTINE" start_date="2012-08-19 00:00:00.0" creator="1" date_created="2012-01-19 12:24:10.0" voided="false" uuid="0c96f25c-4949-4f72-9931-d808fbcdb612" order_action="NEW" care_setting="1"/>
<orders order_id="4444" urgency="ROUTINE" start_date="2012-08-19 00:00:00.0" creator="1" orderer="1" date_created="2012-01-19 12:24:10.0" voided="false" uuid="0c96f25c-4949-4f72-9931-d808fbcdb612" order_action="NEW" care_setting="1"/>

<orders order_id="55555" urgency="ROUTINE" start_date="2012-09-19 00:00:00.0" creator="1" date_created="2012-01-19 12:24:10.0" voided="false" uuid="1c96f25c-4949-4f72-9931-d808fbcdb613" order_action="NEW" previous_order_id="4444" care_setting="1"/>
<orders order_id="55555" urgency="ROUTINE" start_date="2012-09-19 00:00:00.0" creator="1" orderer="1" date_created="2012-01-19 12:24:10.0" voided="false" uuid="1c96f25c-4949-4f72-9931-d808fbcdb613" order_action="NEW" previous_order_id="4444" care_setting="1"/>

</dataset>
Loading