/**
* This Source Code Form is subject to the terms of the Mozilla Public License,
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
* obtain one at http://mozilla.org/MPL/2.0/. OpenMRS is also distributed under
* the terms of the Healthcare Disclaimer located at http://openmrs.org/license.
*
* Copyright (C) OpenMRS Inc. OpenMRS is a registered trademark and the OpenMRS
* graphic logo is a trademark of OpenMRS Inc.
*/
package org.openmrs.module.webservices.rest.web.v1_0.controller.openmrs1_10;
import org.apache.commons.beanutils.PropertyUtils;
import org.junit.Before;
import org.junit.Test;
import org.openmrs.CareSetting;
import org.openmrs.ConceptClass;
import org.openmrs.Encounter;
import org.openmrs.Order;
import org.openmrs.OrderType;
import org.openmrs.Patient;
import org.openmrs.api.EncounterService;
import org.openmrs.api.OrderService;
import org.openmrs.api.PatientService;
import org.openmrs.api.context.Context;
import org.openmrs.module.webservices.rest.SimpleObject;
import org.openmrs.module.webservices.rest.test.Util;
import org.openmrs.module.webservices.rest.web.RestConstants;
import org.openmrs.module.webservices.rest.web.RestTestConstants1_10;
import org.openmrs.module.webservices.rest.web.response.ResourceDoesNotSupportOperationException;
import org.openmrs.module.webservices.rest.web.v1_0.controller.MainResourceControllerTest;
import org.springframework.mock.web.MockHttpServletRequest;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import static org.hamcrest.Matchers.hasItems;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
/**
* Integration tests for the Order resource
*/
public class OrderController1_10Test extends MainResourceControllerTest {
protected static final String ORDER_ENTRY_DATASET_XML = "org/openmrs/api/include/OrderEntryIntegrationTest-other.xml";
private final static String PATIENT_UUID = "5946f880-b197-400b-9caa-a3c661d23041";
private OrderService orderService;
private PatientService patientService;
@Before
public void before() throws Exception {
this.orderService = Context.getOrderService();
this.patientService = Context.getPatientService();
executeDataSet(ORDER_ENTRY_DATASET_XML);
}
/**
* @see org.openmrs.module.webservices.rest.web.v1_0.controller.MainResourceControllerTest#getURI()
*/
@Override
public String getURI() {
return "order";
}
/**
* @see org.openmrs.module.webservices.rest.web.v1_0.controller.MainResourceControllerTest#getUuid()
*/
@Override
public String getUuid() {
return RestTestConstants1_10.ORDER_UUID;
}
/**
* @see org.openmrs.module.webservices.rest.web.v1_0.controller.MainResourceControllerTest#getAllCount()
*/
@Override
public long getAllCount() {
//TODO Not yet supported should be though after reworking OrderService.getOrders
//See https://tickets.openmrs.org/browse/TRUNK-4173
return 0;
}
/**
* @see org.openmrs.module.webservices.rest.web.v1_0.controller.MainResourceControllerTest#shouldGetAll()
*/
@Override
@Test(expected = ResourceDoesNotSupportOperationException.class)
public void shouldGetAll() throws Exception {
super.shouldGetAll();
}
@Test
public void shouldGetOrderByUuid() throws Exception {
SimpleObject result = deserialize(handle(newGetRequest(getURI() + "/" + getUuid())));
assertEquals(getUuid(), PropertyUtils.getProperty(result, "uuid"));
}
@Test
public void shouldGetOrderByOrderNumber() throws Exception {
SimpleObject result = deserialize(handle(newGetRequest(getURI() + "/ORD-7")));
assertEquals(getUuid(), PropertyUtils.getProperty(result, "uuid"));
}
@Test
public void shouldPlaceANewOrder() throws Exception {
executeDataSet("OrderController1_10Test-orderTypeAndConceptClassMap.xml");
CareSetting outPatient = orderService.getCareSettingByUuid(RestTestConstants1_10.CARE_SETTING_UUID);
Patient patient = patientService.getPatientByUuid(PATIENT_UUID);
int originalActiveOrderCount = orderService.getActiveOrders(patient, null, outPatient, null).size();
SimpleObject order = new SimpleObject();
order.add("type", "order");
order.add("patient", PATIENT_UUID);
order.add("concept", "0a9afe04-088b-44ca-9291-0a8c3b5c96fa");
order.add("careSetting", RestTestConstants1_10.CARE_SETTING_UUID);
order.add("encounter", "e403fafb-e5e4-42d0-9d11-4f52e89d148c");
order.add("orderer", "c2299800-cca9-11e0-9572-0800200c9a66");
order.add("accessionNumber", "100");
MockHttpServletRequest req = newPostRequest(getURI(), order);
SimpleObject newOrder = deserialize(handle(req));
List<Order> activeOrders = orderService.getActiveOrders(patient, null, outPatient, null);
assertEquals(++originalActiveOrderCount, activeOrders.size());
assertNotNull(PropertyUtils.getProperty(newOrder, "orderNumber"));
assertEquals("NEW", Util.getByPath(newOrder, "action"));
assertEquals(order.get("patient"), Util.getByPath(newOrder, "patient/uuid"));
assertEquals(order.get("concept"), Util.getByPath(newOrder, "concept/uuid"));
assertEquals(order.get("careSetting"), Util.getByPath(newOrder, "careSetting/uuid"));
assertNotNull(PropertyUtils.getProperty(newOrder, "dateActivated"));
assertEquals(order.get("encounter"), Util.getByPath(newOrder, "encounter/uuid"));
assertEquals(order.get("orderer"), Util.getByPath(newOrder, "orderer/uuid"));
assertEquals("100", Util.getByPath(newOrder, "accessionNumber"));
}
@Test
public void shouldPlaceANewDrugOrder() throws Exception {
executeDataSet(ORDER_ENTRY_DATASET_XML);
executeDataSet("OrderController1_10Test-conceptMappings.xml");
CareSetting outPatient = orderService.getCareSettingByUuid(RestTestConstants1_10.CARE_SETTING_UUID);
Patient patient = patientService.getPatientByUuid(PATIENT_UUID);
OrderType drugOrderType = orderService.getOrderTypeByName("Drug order");
if (drugOrderType.getConceptClasses().isEmpty()) {
ConceptClass drugClass = Context.getConceptService().getConceptClassByName("Drug");
assertNotNull(drugClass);
drugOrderType.getConceptClasses().add(drugClass);
}
int originalActiveDrugOrderCount = orderService.getActiveOrders(patient, drugOrderType, outPatient, null).size();
SimpleObject order = new SimpleObject();
order.add("type", "drugorder");
order.add("patient", PATIENT_UUID);
order.add("careSetting", RestTestConstants1_10.CARE_SETTING_UUID);
order.add("encounter", "e403fafb-e5e4-42d0-9d11-4f52e89d148c");
order.add("drug", "3cfcf118-931c-46f7-8ff6-7b876f0d4202");
order.add("orderer", "c2299800-cca9-11e0-9572-0800200c9a66");
order.add("dosingType", "org.openmrs.SimpleDosingInstructions");
order.add("dose", "300.0");
order.add("doseUnits", "557b9699-68a3-11e3-bd76-0800271c1b75");
order.add("quantity", "20.0");
order.add("quantityUnits", "5a2aa3db-68a3-11e3-bd76-0800271c1b75");
order.add("duration", "20");
order.add("durationUnits", "7bfdcbf0-d9e7-11e3-9c1a-0800200c9a66");
order.add("frequency", "38090760-7c38-11e4-baa7-0800200c9a67");
order.add("numRefills", "2");
order.add("route", "e10ffe54-5184-4efe-8960-cd565ec1cdf8");
order.add("brandName", "Some brand name");
order.add("dispenseAsWritten", true);
MockHttpServletRequest req = newPostRequest(getURI(), order);
SimpleObject newOrder = deserialize(handle(req));
List<Order> activeDrugOrders = orderService.getActiveOrders(patient, orderService.getOrderTypeByName("Drug order"),
outPatient, null);
assertEquals(++originalActiveDrugOrderCount, activeDrugOrders.size());
assertNotNull(PropertyUtils.getProperty(newOrder, "orderNumber"));
assertEquals("NEW", Util.getByPath(newOrder, "action"));
assertEquals(order.get("patient"), Util.getByPath(newOrder, "patient/uuid"));
final String expectedConceptUuid = Context.getConceptService().getDrugByUuid(order.get("drug").toString())
.getConcept().getUuid();
assertEquals(expectedConceptUuid, Util.getByPath(newOrder, "concept/uuid"));
assertEquals(order.get("careSetting"), Util.getByPath(newOrder, "careSetting/uuid"));
assertNotNull(PropertyUtils.getProperty(newOrder, "dateActivated"));
assertEquals(order.get("encounter"), Util.getByPath(newOrder, "encounter/uuid"));
assertEquals(order.get("orderer"), Util.getByPath(newOrder, "orderer/uuid"));
assertEquals("(NEW) Triomune-30: 300.0 mg UNKNOWN Once 20 day", Util.getByPath(newOrder, "display"));
assertEquals(order.get("drug"), Util.getByPath(newOrder, "drug/uuid"));
assertEquals(order.get("dosingType"), Util.getByPath(newOrder, "dosingType"));
assertEquals(order.get("dose"), Util.getByPath(newOrder, "dose").toString());
assertEquals(order.get("doseUnits"), Util.getByPath(newOrder, "doseUnits/uuid"));
assertEquals(order.get("quantity"), Util.getByPath(newOrder, "quantity").toString());
assertEquals(order.get("quantityUnits"), Util.getByPath(newOrder, "quantityUnits/uuid"));
assertEquals(order.get("duration"), Util.getByPath(newOrder, "duration").toString());
assertEquals(order.get("durationUnits"), Util.getByPath(newOrder, "durationUnits/uuid"));
assertEquals(order.get("frequency"), Util.getByPath(newOrder, "frequency/uuid"));
assertEquals(order.get("brandName"), Util.getByPath(newOrder, "brandName"));
assertEquals(order.get("dispenseAsWritten"), Util.getByPath(newOrder, "dispenseAsWritten"));
}
@Test
public void shouldSetDrugOrderDisplayWithoutDrug() throws Exception {
executeDataSet(ORDER_ENTRY_DATASET_XML);
executeDataSet("OrderController1_10Test-conceptMappings.xml");
CareSetting outPatient = orderService.getCareSettingByUuid(RestTestConstants1_10.CARE_SETTING_UUID);
Patient patient = patientService.getPatientByUuid(PATIENT_UUID);
OrderType drugOrderType = orderService.getOrderTypeByName("Drug order");
if (drugOrderType.getConceptClasses().isEmpty()) {
ConceptClass drugClass = Context.getConceptService().getConceptClassByName("Drug");
assertNotNull(drugClass);
drugOrderType.getConceptClasses().add(drugClass);
}
int originalActiveDrugOrderCount = orderService.getActiveOrders(patient, drugOrderType, outPatient, null).size();
SimpleObject order = new SimpleObject();
order.add("type", "drugorder");
order.add("patient", PATIENT_UUID);
order.add("careSetting", RestTestConstants1_10.CARE_SETTING_UUID);
order.add("encounter", "e403fafb-e5e4-42d0-9d11-4f52e89d148c");
order.add("orderer", "c2299800-cca9-11e0-9572-0800200c9a66");
order.add("concept", "15f83cd6-64e9-4e06-a5f9-364d3b14a43d");
order.add("dosingType", "org.openmrs.FreeTextDosingInstructions");
order.add("dosingInstructions", "Follow these instructions closely");
order.add("dose", "300.0");
order.add("doseUnits", "557b9699-68a3-11e3-bd76-0800271c1b75");
order.add("quantity", "20.0");
order.add("quantityUnits", "5a2aa3db-68a3-11e3-bd76-0800271c1b75");
order.add("duration", "20");
order.add("durationUnits", "7bfdcbf0-d9e7-11e3-9c1a-0800200c9a66");
order.add("frequency", "38090760-7c38-11e4-baa7-0800200c9a67");
order.add("numRefills", "2");
order.add("route", "e10ffe54-5184-4efe-8960-cd565ec1cdf8");
order.add("brandName", "Some brand name");
order.add("dispenseAsWritten", true);
MockHttpServletRequest req = newPostRequest(getURI(), order);
SimpleObject newOrder = deserialize(handle(req));
List<Order> activeDrugOrders = orderService.getActiveOrders(patient, orderService.getOrderTypeByName("Drug order"),
outPatient, null);
assertEquals(++originalActiveDrugOrderCount, activeDrugOrders.size());
assertEquals("(NEW) ASPIRIN: Follow these instructions closely", Util.getByPath(newOrder, "display"));
}
@Test
public void shouldPlaceANewTestOrder() throws Exception {
executeDataSet(ORDER_ENTRY_DATASET_XML);
CareSetting outPatient = orderService.getCareSettingByUuid(RestTestConstants1_10.CARE_SETTING_UUID);
Patient patient = patientService.getPatientByUuid(PATIENT_UUID);
int originalActiveTestOrderCount = orderService.getActiveOrders(patient,
orderService.getOrderTypeByName("Test order"), outPatient, null).size();
SimpleObject order = new SimpleObject();
order.add("type", "testorder");
order.add("patient", PATIENT_UUID);
final String cd4CountUuid = "a09ab2c5-878e-4905-b25d-5784167d0216";
order.add("concept", cd4CountUuid);
order.add("careSetting", RestTestConstants1_10.CARE_SETTING_UUID);
order.add("encounter", "e403fafb-e5e4-42d0-9d11-4f52e89d148c");
order.add("orderer", "c2299800-cca9-11e0-9572-0800200c9a66");
order.add("clinicalHistory", "Patient had a negative reaction to the test in the past");
String onceUuid = "38090760-7c38-11e4-baa7-0800200c9a67";
order.add("frequency", onceUuid);
order.add("specimenSource", "e10ffe54-5184-4efe-8960-cd565ec1cdf8");
order.add("numberOfRepeats", "3");
MockHttpServletRequest req = newPostRequest(getURI(), order);
SimpleObject newOrder = deserialize(handle(req));
List<Order> activeTestOrders = orderService.getActiveOrders(patient, orderService.getOrderTypeByName("Test order"),
outPatient, null);
assertEquals(++originalActiveTestOrderCount, activeTestOrders.size());
assertNotNull(PropertyUtils.getProperty(newOrder, "orderNumber"));
assertEquals("NEW", Util.getByPath(newOrder, "action"));
assertEquals(order.get("patient"), Util.getByPath(newOrder, "patient/uuid"));
assertEquals(order.get("concept"), Util.getByPath(newOrder, "concept/uuid"));
assertEquals(order.get("careSetting"), Util.getByPath(newOrder, "careSetting/uuid"));
assertNotNull(PropertyUtils.getProperty(newOrder, "dateActivated"));
assertEquals(order.get("encounter"), Util.getByPath(newOrder, "encounter/uuid"));
assertEquals(order.get("orderer"), Util.getByPath(newOrder, "orderer/uuid"));
assertEquals(order.get("specimenSource"), Util.getByPath(newOrder, "specimenSource/uuid"));
assertNull(Util.getByPath(newOrder, "laterality"));
assertEquals(order.get("clinicalHistory"), Util.getByPath(newOrder, "clinicalHistory"));
assertEquals(order.get("frequency"), Util.getByPath(newOrder, "frequency/uuid"));
assertEquals(order.get("numberOfRepeats"), Util.getByPath(newOrder, "numberOfRepeats").toString());
}
@Test
public void shouldDiscontinueAnActiveOrder() throws Exception {
Order orderToDiscontinue = orderService.getOrder(7);
Patient patient = orderToDiscontinue.getPatient();
List<Order> originalActiveOrders = orderService.getActiveOrders(patient, null, null, null);
assertTrue(originalActiveOrders.contains(orderToDiscontinue));
SimpleObject dcOrder = new SimpleObject();
dcOrder.add("type", "testorder");
dcOrder.add("action", "DISCONTINUE");
dcOrder.add("patient", patient.getUuid());
dcOrder.add("concept", orderToDiscontinue.getConcept().getUuid());
dcOrder.add("careSetting", orderToDiscontinue.getCareSetting().getUuid());
dcOrder.add("previousOrder", orderToDiscontinue.getUuid());
dcOrder.add("encounter", Context.getEncounterService().getEncounter(6).getUuid());
dcOrder.add("orderer", "c2299800-cca9-11e0-9572-0800200c9a66");
dcOrder.add("orderReasonNonCoded", "Patient is allergic");
SimpleObject savedDCOrder = deserialize(handle(newPostRequest(getURI(), dcOrder)));
List<Order> newActiveOrders = orderService.getActiveOrders(patient, null, null, null);
assertEquals(originalActiveOrders.size() - 1, newActiveOrders.size());
assertFalse(newActiveOrders.contains(orderToDiscontinue));
assertNotNull(PropertyUtils.getProperty(savedDCOrder, "orderNumber"));
assertEquals(dcOrder.get("action"), Util.getByPath(savedDCOrder, "action"));
assertEquals(orderToDiscontinue.getPatient().getUuid(), Util.getByPath(savedDCOrder, "patient/uuid"));
assertEquals(orderToDiscontinue.getCareSetting().getUuid(), Util.getByPath(savedDCOrder, "careSetting/uuid"));
assertEquals(dcOrder.get("previousOrder"), Util.getByPath(savedDCOrder, "previousOrder/uuid"));
assertNotNull(PropertyUtils.getProperty(savedDCOrder, "dateActivated"));
assertEquals(orderToDiscontinue.getConcept().getUuid(), Util.getByPath(savedDCOrder, "concept/uuid"));
assertEquals(dcOrder.get("encounter"), Util.getByPath(savedDCOrder, "encounter/uuid"));
assertEquals(dcOrder.get("orderer"), Util.getByPath(savedDCOrder, "orderer/uuid"));
assertEquals(dcOrder.get("orderReasonNonCoded"), Util.getByPath(savedDCOrder, "orderReasonNonCoded"));
}
@Test
public void shouldReviseAnActiveOrder() throws Exception {
Order orderToRevise = orderService.getOrder(7);
Patient patient = orderToRevise.getPatient();
List<Order> originalActiveOrders = orderService.getActiveOrders(patient, null, null, null);
assertTrue(originalActiveOrders.contains(orderToRevise));
EncounterService es = Context.getEncounterService();
Date date = new Date();
Encounter encounter = new Encounter();
encounter.setEncounterType(es.getEncounterType(1));
encounter.setPatient(patient);
encounter.setEncounterDatetime(date);
es.saveEncounter(encounter);
SimpleObject revisedOrder = new SimpleObject();
revisedOrder.add("type", "testorder");
revisedOrder.add("action", "REVISE");
revisedOrder.add("previousOrder", orderToRevise.getUuid());
revisedOrder.add("patient", patient.getUuid());
revisedOrder.add("careSetting", orderToRevise.getCareSetting().getUuid());
revisedOrder.add("concept", orderToRevise.getConcept().getUuid());
revisedOrder.add("encounter", encounter.getUuid());
revisedOrder.add("orderer", "c2299800-cca9-11e0-9572-0800200c9a66");
revisedOrder.add("instructions", "To be taken after a meal");
revisedOrder.add("orderReasonNonCoded", "Changed instructions");
SimpleObject savedOrder = deserialize(handle(newPostRequest(getURI(), revisedOrder)));
List<Order> newActiveOrders = orderService.getActiveOrders(patient, null, null, null);
assertEquals(originalActiveOrders.size(), newActiveOrders.size());
assertFalse(newActiveOrders.contains(orderToRevise));
assertNotNull(PropertyUtils.getProperty(savedOrder, "orderNumber"));
assertEquals(revisedOrder.get("action"), Util.getByPath(savedOrder, "action"));
assertEquals(patient.getUuid(), Util.getByPath(savedOrder, "patient/uuid"));
assertEquals(orderToRevise.getCareSetting().getUuid(), Util.getByPath(savedOrder, "careSetting/uuid"));
assertEquals(revisedOrder.get("previousOrder"), Util.getByPath(savedOrder, "previousOrder/uuid"));
assertEquals(revisedOrder.get("concept"), Util.getByPath(savedOrder, "concept/uuid"));
assertEquals(revisedOrder.get("encounter"), Util.getByPath(savedOrder, "encounter/uuid"));
assertEquals(revisedOrder.get("orderer"), Util.getByPath(savedOrder, "orderer/uuid"));
assertEquals(revisedOrder.get("instructions"), Util.getByPath(savedOrder, "instructions"));
assertEquals(revisedOrder.get("orderReasonNonCoded"), Util.getByPath(savedOrder, "orderReasonNonCoded"));
}
@Test
public void shouldGetTheActiveOrdersForAPatient() throws Exception {
String[] expectedOrderUuids = { orderService.getOrder(3).getUuid(), orderService.getOrder(5).getUuid(),
orderService.getOrder(7).getUuid(), orderService.getOrder(222).getUuid(),
orderService.getOrder(444).getUuid() };
SimpleObject results = deserialize(handle(newGetRequest(getURI(), new Parameter("patient",
"da7f524f-27ce-4bb2-86d6-6d1d05312bd5"))));
assertEquals(expectedOrderUuids.length, Util.getResultsSize(results));
List<Object> resultList = Util.getResultsList(results);
List<String> uuids = Arrays.asList(new String[] { PropertyUtils.getProperty(resultList.get(0), "uuid").toString(),
PropertyUtils.getProperty(resultList.get(1), "uuid").toString(),
PropertyUtils.getProperty(resultList.get(2), "uuid").toString(),
PropertyUtils.getProperty(resultList.get(3), "uuid").toString(),
PropertyUtils.getProperty(resultList.get(4), "uuid").toString() });
assertThat(uuids, hasItems(expectedOrderUuids));
}
@Test
public void shouldGetTheActiveOrdersForAPatientInTheSpecifiedCareSetting() throws Exception {
String expectedOrderUuid = orderService.getOrder(222).getUuid();
SimpleObject results = deserialize(handle(newGetRequest(getURI(), new Parameter("patient",
"da7f524f-27ce-4bb2-86d6-6d1d05312bd5"),
new Parameter("careSetting", "c365e560-c3ec-11e3-9c1a-0800200c9a66"))));
assertEquals(1, Util.getResultsSize(results));
assertEquals(expectedOrderUuid, PropertyUtils.getProperty(Util.getResultsList(results).get(0), "uuid"));
}
@Test
public void shouldGetTheActiveOrdersForAPatientAsOfTheSpecifiedDate() throws Exception {
SimpleObject results = deserialize(handle(newGetRequest(getURI(), new Parameter("patient", patientService
.getPatient(2).getUuid()), new Parameter("asOfDate", "2007-12-10"))));
assertEquals(2, Util.getResultsSize(results));
results = deserialize(handle(newGetRequest(getURI(),
new Parameter("patient", patientService.getPatient(2).getUuid()), new Parameter("asOfDate",
"2007-12-10 00:01:00"))));
assertEquals(1, Util.getResultsSize(results));
}
@Test
public void shouldGetTheActiveDrugOrdersForAPatient() throws Exception {
String[] expectedOrderUuids = { orderService.getOrder(3).getUuid(), orderService.getOrder(5).getUuid(),
orderService.getOrder(222).getUuid(), orderService.getOrder(444).getUuid() };
SimpleObject results = deserialize(handle(newGetRequest(getURI(), new Parameter(
RestConstants.REQUEST_PROPERTY_FOR_TYPE, "drugorder"), new Parameter("patient",
"da7f524f-27ce-4bb2-86d6-6d1d05312bd5"))));
assertEquals(expectedOrderUuids.length, Util.getResultsSize(results));
List<Object> resultList = Util.getResultsList(results);
List<String> uuids = Arrays.asList(new String[] { PropertyUtils.getProperty(resultList.get(0), "uuid").toString(),
PropertyUtils.getProperty(resultList.get(1), "uuid").toString(),
PropertyUtils.getProperty(resultList.get(2), "uuid").toString(),
PropertyUtils.getProperty(resultList.get(3), "uuid").toString(), });
assertThat(uuids, hasItems(expectedOrderUuids));
}
@Test
public void shouldGetTheActiveTestOrdersForAPatient() throws Exception {
String expectedOrderUuid = orderService.getOrder(7).getUuid();
SimpleObject results = deserialize(handle(newGetRequest(getURI(), new Parameter(
RestConstants.REQUEST_PROPERTY_FOR_TYPE, "testorder"), new Parameter("patient",
"da7f524f-27ce-4bb2-86d6-6d1d05312bd5"))));
assertEquals(1, Util.getResultsSize(results));
assertEquals(expectedOrderUuid, PropertyUtils.getProperty(Util.getResultsList(results).get(0), "uuid"));
}
@Test
public void shouldGetAllInActiveOrdersForAPatient() throws Exception {
SimpleObject results = deserialize(handle(newGetRequest(getURI(), new Parameter("patient",
"da7f524f-27ce-4bb2-86d6-6d1d05312bd5"), new Parameter("status", "inactive"), new Parameter("careSetting",
RestTestConstants1_10.CARE_SETTING_UUID), new Parameter("asOfDate", "2007-12-10"))));
assertEquals(0, Util.getResultsSize(results));
String orderUuid = "dfca4077-493c-496b-8312-856ee5d1cc26";
results = deserialize(handle(newGetRequest(getURI(),
new Parameter("patient", "da7f524f-27ce-4bb2-86d6-6d1d05312bd5"), new Parameter("status", "inactive"),
new Parameter("careSetting", RestTestConstants1_10.CARE_SETTING_UUID), new Parameter("asOfDate",
"2007-12-10 00:00:01"))));
assertEquals(1, Util.getResultsSize(results));
assertEquals(orderUuid, PropertyUtils.getProperty(Util.getResultsList(results).get(0), "uuid"));
results = deserialize(handle(newGetRequest(getURI(),
new Parameter("patient", "da7f524f-27ce-4bb2-86d6-6d1d05312bd5"), new Parameter("status", "inactive"),
new Parameter("careSetting", RestTestConstants1_10.CARE_SETTING_UUID), new Parameter("asOfDate", "2007-12-17"))));
assertEquals(1, Util.getResultsSize(results));
assertEquals(orderUuid, PropertyUtils.getProperty(Util.getResultsList(results).get(0), "uuid"));
results = deserialize(handle(newGetRequest(getURI(),
new Parameter("patient", "da7f524f-27ce-4bb2-86d6-6d1d05312bd5"), new Parameter("status", "inactive"),
new Parameter("careSetting", RestTestConstants1_10.CARE_SETTING_UUID), new Parameter("asOfDate",
"2007-12-17 00:00:01"))));
assertEquals(2, Util.getResultsSize(results));
String[] expectedOrderUuids = new String[] { orderUuid, "4c96f25c-4949-4f72-9931-d808fbc226dh" };
List<Object> resultList = Util.getResultsList(results);
List<String> uuids = Arrays.asList(new String[] { PropertyUtils.getProperty(resultList.get(0), "uuid").toString(),
PropertyUtils.getProperty(resultList.get(1), "uuid").toString() });
assertThat(uuids, hasItems(expectedOrderUuids));
}
@Test
public void shouldGetAllOrdersForAPatientInTheSpecifiedCareSetting() throws Exception {
SimpleObject results = deserialize(handle(newGetRequest(getURI(), new Parameter("patient",
"da7f524f-27ce-4bb2-86d6-6d1d05312bd5"), new Parameter("status", "any"), new Parameter("careSetting",
RestTestConstants1_10.CARE_SETTING_UUID))));
assertEquals(8, Util.getResultsSize(results));
}
@Test
public void shouldGetAllOrdersForAPatientInTheSpecifiedCareSettingIncludingVoidedOnesIfRequested() throws Exception {
SimpleObject results = deserialize(handle(newGetRequest(getURI(), new Parameter("patient",
"da7f524f-27ce-4bb2-86d6-6d1d05312bd5"), new Parameter("status", "any"), new Parameter("careSetting",
RestTestConstants1_10.CARE_SETTING_UUID), new Parameter("includeAll", "true"))));
assertEquals(9, Util.getResultsSize(results));
}
}