private boolean hasActiveOrderOfType(Patient patient, String orderTypeName) { OrderType drugOrder = Context.getOrderService().getOrderTypeByName(orderTypeName); List<Order> preferredPatientOrders = Context.getOrderService().getAllOrdersByPatient(patient).stream() .filter(Order::isActive) .filter(order -> Objects.equals(drugOrder, order.getOrderType())) .collect(Collectors.toList()); return !preferredPatientOrders.isEmpty(); }
/** * @see OrderService#getOrderTypeByName(String) */ @Test public void getOrderTypeByName_shouldReturnTheOrderTypeThatMatchesTheSpecifiedName() { OrderType orderType = orderService.getOrderTypeByName("Drug order"); assertEquals("131168f4-15f5-102d-96e4-000c29c2a5d7", orderType.getUuid()); }
/** * @see OrderService#getActiveOrders(org.openmrs.Patient, org.openmrs.OrderType, * org.openmrs.CareSetting, java.util.Date) */ @Test public void getActiveOrders_shouldReturnAllActiveTestOrdersForTheSpecifiedPatient() { Patient patient = patientService.getPatient(2); List<Order> orders = orderService .getActiveOrders(patient, orderService.getOrderTypeByName("Test order"), null, null); assertEquals(1, orders.size()); assertEquals(orders.get(0), orderService.getOrder(7)); }
@Test public void shouldGetTheActiveDrugOrdersForAPatient() { Patient patient = patientService.getPatient(2); List<Order> activeDrugOrders = orderService.getActiveOrders(patient, orderService.getOrderTypeByName("Drug order"), null, null); assertEquals(4, activeDrugOrders.size()); Order[] expectedDrugOrders = { orderService.getOrder(222), orderService.getOrder(3), orderService.getOrder(444), orderService.getOrder(5) }; assertThat(activeDrugOrders, hasItems(expectedDrugOrders)); }
/** * @see OrderValidator#validate(Object,Errors) */ @Test public void validate_shouldPassValidationIfAllFieldsAreCorrect() { Order order = new DrugOrder(); Encounter encounter = new Encounter(); order.setConcept(Context.getConceptService().getConcept(88)); order.setOrderer(Context.getProviderService().getProvider(1)); Patient patient = Context.getPatientService().getPatient(2); encounter.setPatient(patient); order.setPatient(patient); Calendar cal = Calendar.getInstance(); cal.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.DAY_OF_MONTH) - 1); order.setDateActivated(cal.getTime()); order.setAutoExpireDate(new Date()); order.setCareSetting(new CareSetting()); order.setEncounter(encounter); order.setUrgency(Order.Urgency.ROUTINE); order.setAction(Order.Action.NEW); order.setOrderType(Context.getOrderService().getOrderTypeByName("Drug order")); Errors errors = new BindException(order, "order"); new OrderValidator().validate(order, errors); Assert.assertFalse(errors.hasErrors()); }
/** * @see PatientService#mergePatients(org.openmrs.Patient, org.openmrs.Patient) */ @Test public void mergePatients_shouldNotFailIfMultiplePatientsHaveActiveOrderOfDifferentTypes() throws Exception { Patient preferredPatient = patientService.getPatient(2); Patient notPreferredPatient = patientService.getPatient(7); OrderType DrugOrder = Context.getOrderService().getOrderTypeByName("Drug order"); voidOrdersForType(Collections.singleton(preferredPatient), DrugOrder); assertFalse("Test pre-request: No Active Drug order in " + preferredPatient, hasActiveOrderOfType(preferredPatient, "Drug order")); assertTrue("Test pre-request: At least one Active Test order in " + preferredPatient, hasActiveOrderOfType(preferredPatient, "Test order")); assertTrue("Test pre-request: At least one Active Drug order in " + notPreferredPatient, hasActiveOrderOfType(notPreferredPatient, "Drug order")); assertFalse("Test pre-request: No Active Test order in " + notPreferredPatient, hasActiveOrderOfType(notPreferredPatient, "Test order")); patientService.mergePatients(preferredPatient, notPreferredPatient); }
/** * @see OrderValidator#validate(Object, org.springframework.validation.Errors) */ @Test public void validate_shouldFailValidationIfOrderTypejavaClassDoesNotMatchOrderclass() { Order order = new DrugOrder(); order.setConcept(Context.getConceptService().getConcept(88)); order.setPatient(Context.getPatientService().getPatient(2)); order.setOrderer(Context.getProviderService().getProvider(1)); order.setOrderType(Context.getOrderService().getOrderTypeByName("Test order")); Errors errors = new BindException(order, "order"); new OrderValidator().validate(order, errors); Assert.assertTrue(errors.hasFieldErrors("orderType")); Assert.assertTrue(Arrays.asList(errors.getFieldError("orderType").getCodes()).contains( "Order.error.orderTypeClassMismatchesOrderClass")); }
/** * @see OrderValidator#validate(Object, org.springframework.validation.Errors) */ @Test public void validate_shouldNotAllowAFutureDateActivated() { Patient patient = Context.getPatientService().getPatient(7); TestOrder order = new TestOrder(); order.setPatient(patient); order.setOrderType(orderService.getOrderTypeByName("Test order")); order.setEncounter(Context.getEncounterService().getEncounter(3)); order.setConcept(Context.getConceptService().getConcept(5497)); order.setOrderer(Context.getProviderService().getProvider(1)); order.setCareSetting(orderService.getCareSetting(1)); Calendar cal = Calendar.getInstance(); cal.add(Calendar.HOUR_OF_DAY, 1); order.setDateActivated(cal.getTime()); Errors errors = new BindException(order, "order"); new OrderValidator().validate(order, errors); Assert.assertTrue(errors.hasFieldErrors("dateActivated")); Assert.assertEquals("Order.error.dateActivatedInFuture", errors.getFieldError("dateActivated").getCode()); }
/** * @see OrderValidator#validate(Object, org.springframework.validation.Errors) */ @Test public void validate_shouldPassValidationIfTheClassOfTheOrderIsASubclassOfOrderTypejavaClass() { SomeDrugOrder order = new SomeDrugOrder(); order.setConcept(Context.getConceptService().getConcept(88)); order.setPatient(Context.getPatientService().getPatient(2)); order.setOrderer(Context.getProviderService().getProvider(1)); order.setOrderType(Context.getOrderService().getOrderTypeByName("Drug order")); Errors errors = new BindException(order, "order"); new OrderValidator().validate(order, errors); Assert.assertFalse(errors.hasFieldErrors("orderType")); }
/** * @see TestOrderValidator#validate(Object, org.springframework.validation.Errors) */ @Test public void validate_shouldFailValidationIfTheSpecimenSourceIsInvalid() { ConceptService conceptService = Context.getConceptService(); Concept specimenSource = conceptService.getConcept(3); OrderService orderService = Context.getOrderService(); assertThat(specimenSource, not(isIn(orderService.getDrugRoutes()))); TestOrder order = new TestOrder(); Patient patient = new Patient(8); order.setPatient(patient); order.setOrderType(orderService.getOrderTypeByName("Test order")); order.setConcept(conceptService.getConcept(5497)); order.setOrderer(new Provider()); order.setCareSetting(new CareSetting()); Encounter encounter = new Encounter(); encounter.setPatient(patient); order.setEncounter(encounter); order.setDateActivated(new Date()); order.setSpecimenSource(specimenSource); Errors errors = new BindException(order, "order"); new TestOrderValidator().validate(order, errors); Assert.assertTrue(errors.hasFieldErrors("specimenSource")); Assert.assertEquals("TestOrder.error.specimenSourceNotAmongAllowedConcepts", errors.getFieldError("specimenSource") .getCode()); }
/** * @see TestOrderValidator#validate(Object, org.springframework.validation.Errors) */ @Test public void validate_shouldPassValidationIfTheSpecimenSourceIsValid() { ConceptService conceptService = Context.getConceptService(); Concept specimenSource = conceptService.getConcept(22); OrderService orderService = Context.getOrderService(); assertThat(specimenSource, isIn(orderService.getDrugRoutes())); TestOrder order = new TestOrder(); Patient patient = new Patient(8); order.setPatient(patient); order.setOrderType(orderService.getOrderTypeByName("Test order")); order.setConcept(conceptService.getConcept(5497)); order.setOrderer(Context.getProviderService().getProvider(1)); order.setCareSetting(new CareSetting()); Encounter encounter = new Encounter(); encounter.setPatient(patient); order.setEncounter(encounter); order.setDateActivated(new Date()); order.setSpecimenSource(specimenSource); Errors errors = new BindException(order, "order"); new TestOrderValidator().validate(order, errors); Assert.assertFalse(errors.hasFieldErrors()); } }
/** * @see OrderService#saveOrder(org.openmrs.Order, OrderContext) */ @Test public void saveOrder_shouldSetConceptForDrugOrdersIfNull() { Patient patient = patientService.getPatient(7); CareSetting careSetting = orderService.getCareSetting(2); OrderType orderType = orderService.getOrderTypeByName("Drug order"); //place drug order DrugOrder order = new DrugOrder(); Encounter encounter = encounterService.getEncounter(3); order.setEncounter(encounter); order.setPatient(patient); order.setDrug(conceptService.getDrug(2)); order.setCareSetting(careSetting); order.setOrderer(Context.getProviderService().getProvider(1)); order.setDateActivated(encounter.getEncounterDatetime()); order.setOrderType(orderType); order.setDosingType(FreeTextDosingInstructions.class); order.setInstructions("None"); order.setDosingInstructions("Test Instruction"); orderService.saveOrder(order, null); assertNotNull(order.getOrderId()); }
order.setOrderType(orderService.getOrderTypeByName("Drug order")); order.setAction(Order.Action.DISCONTINUE); order.setOrderReasonNonCoded("Discontinue this");
@Test public void saveOrder_shouldFailDrugOrderWithNeitherDrugNonCodedNorDrugAreSetForDrugOrderWhenDrugRequiredSet() { Patient patient = Context.getPatientService().getPatient(7); CareSetting careSetting = Context.getOrderService().getCareSetting(2); OrderType orderType = Context.getOrderService().getOrderTypeByName("Drug order"); GlobalProperty gp = new GlobalProperty(OpenmrsConstants.GLOBAL_PROPERTY_DRUG_ORDER_REQUIRE_DRUG, "true"); Context.getAdministrationService().saveGlobalProperty(gp); //place drug order DrugOrder order = new DrugOrder(); Encounter encounter = Context.getEncounterService().getEncounter(3); order.setEncounter(encounter); order.setPatient(patient); order.setCareSetting(careSetting); order.setOrderer(Context.getProviderService().getProvider(1)); order.setDateActivated(encounter.getEncounterDatetime()); order.setOrderType(orderType); order.setDosingType(FreeTextDosingInstructions.class); order.setInstructions("None"); order.setDosingInstructions("Test Instruction"); Errors errors = new BindException(order, "order"); new DrugOrderValidator().validate(order, errors); Assert.assertTrue(errors.hasFieldErrors()); assertEquals("DrugOrder.error.drugIsRequired", errors.getFieldError("drug").getCode()); }
/** * @see org.openmrs.api.OrderService#saveOrder(org.openmrs.Order, org.openmrs.api.OrderContext) */ @Test public void saveOrder_shouldFailDrugOrderWithoutADrugWhenDrugOrderRequireDrugGBIsTrue() { GlobalProperty gp = new GlobalProperty(OpenmrsConstants.GLOBAL_PROPERTY_DRUG_ORDER_REQUIRE_DRUG, "true"); Context.getAdministrationService().saveGlobalProperty(gp); Patient patient = Context.getPatientService().getPatient(7); CareSetting careSetting = Context.getOrderService().getCareSetting(2); OrderType orderType = Context.getOrderService().getOrderTypeByName("Drug order"); //place drug order DrugOrder order = new DrugOrder(); Encounter encounter = Context.getEncounterService().getEncounter(3); order.setEncounter(encounter); order.setConcept(Context.getConceptService().getConcept(5497)); order.setPatient(patient); order.setCareSetting(careSetting); order.setOrderer(Context.getProviderService().getProvider(1)); order.setDateActivated(encounter.getEncounterDatetime()); order.setOrderType(orderType); order.setDosingType(FreeTextDosingInstructions.class); order.setInstructions("None"); order.setDosingInstructions("Test Instruction"); Errors errors = new BindException(order, "order"); new DrugOrderValidator().validate(order, errors); Assert.assertTrue(errors.hasFieldErrors("drug")); }
/** * @see org.openmrs.api.OrderService#saveOrder(org.openmrs.Order, org.openmrs.api.OrderContext) */ @Test public void saveOrder_shouldPassDrugOrderWithoutADrugWhenDrugOrderRequireDrugGBIsFalse() { GlobalProperty gp = new GlobalProperty(OpenmrsConstants.GLOBAL_PROPERTY_DRUG_ORDER_REQUIRE_DRUG, "false"); Context.getAdministrationService().saveGlobalProperty(gp); Patient patient = Context.getPatientService().getPatient(7); CareSetting careSetting = Context.getOrderService().getCareSetting(2); OrderType orderType = Context.getOrderService().getOrderTypeByName("Drug order"); //place drug order DrugOrder order = new DrugOrder(); Encounter encounter = Context.getEncounterService().getEncounter(3); order.setEncounter(encounter); order.setConcept(Context.getConceptService().getConcept(5497)); order.setPatient(patient); order.setCareSetting(careSetting); order.setOrderer(Context.getProviderService().getProvider(1)); order.setDateActivated(encounter.getEncounterDatetime()); order.setOrderType(orderType); order.setDosingType(FreeTextDosingInstructions.class); order.setInstructions("None"); order.setDosingInstructions("Test Instruction"); Errors errors = new BindException(order, "order"); new DrugOrderValidator().validate(order, errors); Assert.assertFalse(errors.hasFieldErrors()); }
@Test public void saveOrder_shouldPassDrugOrderWithNeitherDrugNonCodedNorDrugAreSetForDrugOrderWhenDrugRequiredISNotSet() { executeDataSet("org/openmrs/api/include/OrderServiceTest-nonCodedDrugs.xml");Patient patient = Context.getPatientService().getPatient(7); CareSetting careSetting = Context.getOrderService().getCareSetting(2); OrderType orderType = Context.getOrderService().getOrderTypeByName("Drug order"); GlobalProperty gp = new GlobalProperty(OpenmrsConstants.GLOBAL_PROPERTY_DRUG_ORDER_REQUIRE_DRUG, "false"); Context.getAdministrationService().saveGlobalProperty(gp); //place drug order DrugOrder order = new DrugOrder(); Encounter encounter = Context.getEncounterService().getEncounter(3); order.setEncounter(encounter); order.setPatient(patient); order.setCareSetting(careSetting); order.setConcept(Context.getOrderService().getNonCodedDrugConcept()); order.setOrderer(Context.getProviderService().getProvider(1)); order.setDateActivated(encounter.getEncounterDatetime()); order.setOrderType(orderType); order.setDosingType(FreeTextDosingInstructions.class); order.setInstructions("None"); order.setDosingInstructions("Test Instruction"); Errors errors = new BindException(order, "order"); new DrugOrderValidator().validate(order, errors); Assert.assertFalse(errors.hasFieldErrors()); } }
@Test public void saveOrder_shouldPassDrugOrderWithADrugNonCodedWhenDrugOrderIsNonCoded() { executeDataSet("org/openmrs/api/include/OrderServiceTest-nonCodedDrugs.xml"); Patient patient = Context.getPatientService().getPatient(7); CareSetting careSetting = Context.getOrderService().getCareSetting(2); OrderType orderType = Context.getOrderService().getOrderTypeByName("Drug order"); GlobalProperty gp = new GlobalProperty(OpenmrsConstants.GLOBAL_PROPERTY_DRUG_ORDER_REQUIRE_DRUG, "true"); Context.getAdministrationService().saveGlobalProperty(gp); //place drug order DrugOrder order = new DrugOrder(); Encounter encounter = Context.getEncounterService().getEncounter(3); order.setEncounter(encounter); order.setConcept(Context.getOrderService().getNonCodedDrugConcept()); order.setDrugNonCoded("Non coded drug"); order.setPatient(patient); order.setCareSetting(careSetting); order.setOrderer(Context.getProviderService().getProvider(1)); order.setDateActivated(encounter.getEncounterDatetime()); order.setOrderType(orderType); order.setDosingType(FreeTextDosingInstructions.class); order.setInstructions("None"); order.setDosingInstructions("Test Instruction"); Errors errors = new BindException(order, "order"); new DrugOrderValidator().validate(order, errors); Assert.assertFalse(errors.hasFieldErrors()); }
@Test public void saveOrder_shouldFailDrugOrderWithBothDrugNonCodedAndDrugAreSetForDrugOrder() { Patient patient = Context.getPatientService().getPatient(7); CareSetting careSetting = Context.getOrderService().getCareSetting(2); OrderType orderType = Context.getOrderService().getOrderTypeByName("Drug order"); GlobalProperty gp = new GlobalProperty(OpenmrsConstants.GLOBAL_PROPERTY_DRUG_ORDER_REQUIRE_DRUG, "true"); Context.getAdministrationService().saveGlobalProperty(gp); //place drug order DrugOrder order = new DrugOrder(); Encounter encounter = Context.getEncounterService().getEncounter(3); order.setEncounter(encounter); order.setDrug(Context.getConceptService().getDrug(3)); order.setDrugNonCoded("paracetemol drug non coded"); order.setPatient(patient); order.setCareSetting(careSetting); order.setOrderer(Context.getProviderService().getProvider(1)); order.setDateActivated(encounter.getEncounterDatetime()); order.setOrderType(orderType); order.setDosingType(FreeTextDosingInstructions.class); order.setInstructions("None"); order.setDosingInstructions("Test Instruction"); Errors errors = new BindException(order, "order"); new DrugOrderValidator().validate(order, errors); Assert.assertTrue(errors.hasFieldErrors()); assertEquals("DrugOrder.error.onlyOneOfDrugOrNonCodedShouldBeSet", errors.getFieldError("concept").getCode()); }
@Test public void saveOrder_shouldFailDrugOrderWithoutADrugNonCodedWhenDrugOrderIsNonCoded() { executeDataSet("org/openmrs/api/include/OrderServiceTest-nonCodedDrugs.xml"); Patient patient = Context.getPatientService().getPatient(7); CareSetting careSetting = Context.getOrderService().getCareSetting(2); OrderType orderType = Context.getOrderService().getOrderTypeByName("Drug order"); GlobalProperty gp = new GlobalProperty(OpenmrsConstants.GLOBAL_PROPERTY_DRUG_ORDER_REQUIRE_DRUG, "true"); Context.getAdministrationService().saveGlobalProperty(gp); //place drug order DrugOrder order = new DrugOrder(); Encounter encounter = Context.getEncounterService().getEncounter(3); order.setEncounter(encounter); order.setConcept(Context.getOrderService().getNonCodedDrugConcept()); order.setPatient(patient); order.setCareSetting(careSetting); order.setOrderer(Context.getProviderService().getProvider(1)); order.setDateActivated(encounter.getEncounterDatetime()); order.setOrderType(orderType); order.setDosingType(FreeTextDosingInstructions.class); order.setInstructions("None"); order.setDosingInstructions("Test Instruction"); Errors errors = new BindException(order, "order"); new DrugOrderValidator().validate(order, errors); Assert.assertTrue(errors.hasFieldErrors()); assertEquals("DrugOrder.error.drugNonCodedIsRequired", errors.getFieldError("drugNonCoded").getCode()); }