Skip to content

Commit a9fd717

Browse files
committed
Migrate 1.10
1 parent fcc1e09 commit a9fd717

File tree

7 files changed

+733
-1
lines changed

7 files changed

+733
-1
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,263 @@
1+
/**
2+
* This Source Code Form is subject to the terms of the Mozilla Public License,
3+
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
4+
* obtain one at http://mozilla.org/MPL/2.0/. OpenMRS is also distributed under
5+
* the terms of the Healthcare Disclaimer located at http://openmrs.org/license.
6+
*
7+
* Copyright (C) OpenMRS Inc. OpenMRS is a registered trademark and the OpenMRS
8+
* graphic logo is a trademark of OpenMRS Inc.
9+
*/
10+
11+
package org.openmrs.module.reporting.cohort.definition.evaluator;
12+
13+
import org.apache.commons.lang3.time.DateUtils;
14+
import org.junit.After;
15+
import org.junit.Assert;
16+
import org.junit.Before;
17+
import org.junit.Test;
18+
import org.openmrs.CareSetting;
19+
import org.openmrs.Cohort;
20+
import org.openmrs.Concept;
21+
import org.openmrs.Drug;
22+
import org.openmrs.api.OrderService;
23+
import org.openmrs.api.context.Context;
24+
import org.openmrs.module.reporting.cohort.definition.DrugOrderCohortDefinition;
25+
import org.openmrs.module.reporting.cohort.definition.service.CohortDefinitionService;
26+
import org.openmrs.module.reporting.common.DateUtil;
27+
import org.openmrs.module.reporting.common.Match;
28+
import org.openmrs.test.BaseModuleContextSensitiveTest;
29+
30+
import java.util.ArrayList;
31+
import java.util.Date;
32+
import java.util.List;
33+
34+
35+
public class DrugOrderCohortDefinitionEvaluatorTest extends BaseModuleContextSensitiveTest {
36+
37+
protected static final String TEST_DATA = "org/openmrs/module/reporting/include/DrugOrderCohortEvaluationData.xml";
38+
private DrugOrderCohortDefinition cohortDefinition;
39+
40+
@Before
41+
public void setup() throws Exception {
42+
cohortDefinition = new DrugOrderCohortDefinition();
43+
executeDataSet(TEST_DATA);
44+
}
45+
46+
@After
47+
public void tearDown() {
48+
cohortDefinition = null;
49+
}
50+
51+
@Test
52+
public void evaluateShouldReturnAllPatients() throws Exception {
53+
Cohort cohort = Context.getService(CohortDefinitionService.class).evaluate(cohortDefinition, null);
54+
55+
Assert.assertTrue(cohort.contains(2));
56+
Assert.assertTrue(cohort.contains(7));
57+
Assert.assertTrue(cohort.contains(8));
58+
Assert.assertTrue(cohort.contains(21));
59+
Assert.assertTrue(cohort.contains(22));
60+
Assert.assertEquals(5, cohort.size());
61+
}
62+
63+
@Test
64+
public void evaluateShouldReturnAllPatientsCurrentlyActiveOnDrugs() throws Exception {
65+
cohortDefinition.setActiveOnOrAfter(new Date());
66+
Cohort cohort = Context.getService(CohortDefinitionService.class).evaluate(cohortDefinition, null);
67+
Assert.assertTrue(cohort.contains(2));
68+
Assert.assertTrue(cohort.contains(22));
69+
Assert.assertTrue(cohort.contains(7));
70+
Assert.assertEquals(3, cohort.size());
71+
}
72+
73+
@Test
74+
public void evaluateShouldReturnAllPatientsCurrentlyNotActiveOnDrugs() throws Exception {
75+
76+
cohortDefinition.setActiveOnOrBefore(DateUtils.addDays(new Date(2013, 12, 2), -1));
77+
Cohort cohort = Context.getService(CohortDefinitionService.class).evaluate(cohortDefinition, null);
78+
Assert.assertTrue(cohort.contains(8));
79+
Assert.assertTrue(cohort.contains(2));
80+
Assert.assertTrue(cohort.contains(21));
81+
Assert.assertEquals(3, cohort.size());
82+
}
83+
84+
@Test
85+
public void evaluateShouldReturnAllPatientsThatHaveTakenAnyofListedDrugs() throws Exception {
86+
List drugSetList = new ArrayList<Concept>();
87+
drugSetList.add(new Concept(88));
88+
drugSetList.add(new Concept(792));
89+
cohortDefinition.setDrugSets(drugSetList);
90+
cohortDefinition.setWhich(Match.ANY);
91+
Cohort cohort = Context.getService(CohortDefinitionService.class).evaluate(cohortDefinition, null);
92+
Assert.assertTrue(cohort.contains(2));
93+
Assert.assertTrue(cohort.contains(7));
94+
Assert.assertEquals(2, cohort.size());
95+
96+
}
97+
98+
@Test
99+
public void evaluateShouldReturnAllPatientsThatHaveTakenAnyListedDrugByDefault() throws Exception {
100+
List drugSetList = new ArrayList<Concept>();
101+
drugSetList.add(new Concept(3));
102+
drugSetList.add(new Concept(792));
103+
cohortDefinition.setDrugSets(drugSetList);
104+
Cohort cohort = Context.getService(CohortDefinitionService.class).evaluate(cohortDefinition, null);
105+
Assert.assertTrue(cohort.contains(2));
106+
Assert.assertTrue(cohort.contains(8));
107+
Assert.assertTrue(cohort.contains(21));
108+
Assert.assertTrue(cohort.contains(22));
109+
Assert.assertEquals(4, cohort.size());
110+
111+
}
112+
113+
@Test
114+
public void evaluateShouldReturnAllPatientsThatHaveTakenAnyofDrugs() throws Exception {
115+
List drugs = new ArrayList<Drug>();
116+
drugs.add(new Drug(3));
117+
drugs.add(new Drug(2));
118+
cohortDefinition.setDrugs(drugs);
119+
cohortDefinition.setWhich(Match.ANY);
120+
Cohort cohort = Context.getService(CohortDefinitionService.class).evaluate(cohortDefinition, null);
121+
Assert.assertTrue(cohort.contains(2));
122+
Assert.assertTrue(cohort.contains(7));
123+
Assert.assertEquals(2, cohort.size());
124+
125+
}
126+
127+
@Test
128+
public void evaluateShouldReturnAllPatientsThatHaveTakenAnyDrugByDefault() throws Exception {
129+
List drugs = new ArrayList<Drug>();
130+
drugs.add(new Drug(11));
131+
drugs.add(new Drug(2));
132+
cohortDefinition.setDrugs(drugs);
133+
Cohort cohort = Context.getService(CohortDefinitionService.class).evaluate(cohortDefinition, null);
134+
Assert.assertTrue(cohort.contains(2));
135+
Assert.assertTrue(cohort.contains(8));
136+
Assert.assertTrue(cohort.contains(21));
137+
Assert.assertTrue(cohort.contains(22));
138+
Assert.assertEquals(4, cohort.size());
139+
140+
}
141+
142+
@Test
143+
public void evaluateShouldReturnAllPatientsThatHaveNeverTakenDrugs() throws Exception {
144+
List drugs = new ArrayList<Concept>();
145+
drugs.add(new Drug(3));
146+
drugs.add(new Drug(2));
147+
cohortDefinition.setDrugs(drugs);
148+
cohortDefinition.setWhich(Match.NONE);
149+
Cohort cohort = Context.getService(CohortDefinitionService.class).evaluate(cohortDefinition, null);
150+
Assert.assertTrue(cohort.contains(8));
151+
Assert.assertTrue(cohort.contains(21));
152+
Assert.assertTrue(cohort.contains(22));
153+
Assert.assertEquals(3, cohort.size());
154+
}
155+
156+
@Test
157+
public void evaluateShouldReturnAllPatientsThatHaveNeverTakenListedDrugs() throws Exception {
158+
List drugSetList = new ArrayList<Concept>();
159+
drugSetList.add(new Concept(88));
160+
drugSetList.add(new Concept(792));
161+
cohortDefinition.setDrugSets(drugSetList);
162+
cohortDefinition.setWhich(Match.NONE);
163+
Cohort cohort = Context.getService(CohortDefinitionService.class).evaluate(cohortDefinition, null);
164+
Assert.assertTrue(cohort.contains(8));
165+
Assert.assertTrue(cohort.contains(21));
166+
Assert.assertTrue(cohort.contains(22));
167+
Assert.assertEquals(3, cohort.size());
168+
}
169+
170+
@Test
171+
public void evaluateShouldReturnAllPatientsThatHaveTakenAllListedDrugs() throws Exception {
172+
List drugSetList = new ArrayList<Concept>();
173+
drugSetList.add(new Concept(88));
174+
drugSetList.add(new Concept(792));
175+
cohortDefinition.setDrugSets(drugSetList);
176+
cohortDefinition.setWhich(Match.ALL);
177+
Cohort cohort = Context.getService(CohortDefinitionService.class).evaluate(cohortDefinition, null);
178+
Assert.assertEquals(1, cohort.size());
179+
Assert.assertTrue(cohort.contains(2));
180+
}
181+
182+
@Test
183+
public void evaluateShouldReturnAllPatientsNotActiveOnDrugsAfterDate() throws Exception {
184+
cohortDefinition.setActiveOnOrBefore(DateUtil.getDateTime(2013, 12, 2));
185+
Cohort cohort = Context.getService(CohortDefinitionService.class).evaluate(cohortDefinition, null);
186+
Assert.assertTrue(cohort.contains(8));
187+
Assert.assertTrue(cohort.contains(2));
188+
Assert.assertEquals(2, cohort.size());
189+
}
190+
191+
@Test
192+
public void evaluateShouldReturnAllPatientsCurrentlyActiveOnDrugsFromDate() throws Exception {
193+
cohortDefinition.setActiveOnOrAfter(DateUtil.getDateTime(2013, 12, 7));
194+
Cohort cohort = Context.getService(CohortDefinitionService.class).evaluate(cohortDefinition, null);
195+
Assert.assertTrue(cohort.contains(22));
196+
Assert.assertTrue(cohort.contains(7));
197+
Assert.assertTrue(cohort.contains(2));
198+
Assert.assertTrue(cohort.contains(21));
199+
Assert.assertEquals(4, cohort.size());
200+
}
201+
@Test
202+
public void evaluateShouldReturnAllPatientsWhoStartedTakingDrugsBeforeSpecifiedDate() throws Exception {
203+
cohortDefinition.setActivatedOnOrBefore(DateUtil.getDateTime(2008, 8, 2));
204+
Cohort cohort = Context.getService(CohortDefinitionService.class).evaluate(cohortDefinition, null);
205+
Assert.assertTrue(cohort.contains(2));
206+
Assert.assertTrue(cohort.contains(22));
207+
Assert.assertEquals(2, cohort.size());
208+
}
209+
210+
@Test
211+
public void evaluateShouldReturnAllPatientsWhoStartedTakingDrugsAfterSpecifiedDate() throws Exception {
212+
cohortDefinition.setActivatedOnOrAfter(DateUtil.getDateTime(2008, 8, 10));
213+
Cohort cohort = Context.getService(CohortDefinitionService.class).evaluate(cohortDefinition, null);
214+
Assert.assertTrue(cohort.contains(2));
215+
Assert.assertTrue(cohort.contains(7));
216+
Assert.assertEquals(2, cohort.size());
217+
}
218+
219+
@Test
220+
public void evaluateShouldReturnAllPatientsOnDrugsOnSpecifiedDate() throws Exception {
221+
cohortDefinition.setActiveOnDate(DateUtil.getDateTime(2007, 12, 3));
222+
Cohort cohort = Context.getService(CohortDefinitionService.class).evaluate(cohortDefinition, null);
223+
Assert.assertTrue(cohort.contains(2));
224+
Assert.assertEquals(1, cohort.size());
225+
}
226+
227+
@Test
228+
public void evaluateShouldReturnAllPatientsTakingAnyDrugWithinADateRange() throws Exception {
229+
cohortDefinition.setActivatedOnOrAfter(DateUtil.getDateTime(2008, 8, 1));
230+
cohortDefinition.setActivatedOnOrBefore(DateUtil.getDateTime(2008, 8, 8));
231+
Cohort cohort = Context.getService(CohortDefinitionService.class).evaluate(cohortDefinition, null);
232+
Assert.assertTrue(cohort.contains(2));
233+
Assert.assertTrue(cohort.contains(7));
234+
Assert.assertTrue(cohort.contains(8));
235+
Assert.assertTrue(cohort.contains(21));
236+
Assert.assertTrue(cohort.contains(22));
237+
Assert.assertEquals(5, cohort.size());
238+
}
239+
240+
@Test
241+
public void evaluateShouldReturnAllPatientsTakingSpecifiedDrugBeforeDate() throws Exception {
242+
List drugSetList = new ArrayList<Concept>();
243+
drugSetList.add(new Concept(88));
244+
cohortDefinition.setDrugSets(drugSetList);
245+
cohortDefinition.setActivatedOnOrBefore(DateUtil.getDateTime(2008, 8, 2));
246+
Cohort cohort = Context.getService(CohortDefinitionService.class).evaluate(cohortDefinition, null);
247+
Assert.assertTrue(cohort.contains(2));
248+
}
249+
250+
@Test
251+
public void evaluateShouldReturnAllInSpecifiedCareSetting() throws Exception {
252+
CareSetting careSetting = Context.getService(OrderService.class).getCareSetting(1);
253+
cohortDefinition.setCareSetting(careSetting);
254+
Cohort cohort = Context.getService(CohortDefinitionService.class).evaluate(cohortDefinition, null);
255+
Assert.assertTrue(cohort.contains(2));
256+
Assert.assertTrue(cohort.contains(7));
257+
Assert.assertTrue(cohort.contains(8));
258+
Assert.assertTrue(cohort.contains(21));
259+
Assert.assertTrue(cohort.contains(22));
260+
Assert.assertEquals(5, cohort.size());
261+
262+
}
263+
}

api-tests/src/test/java/org/openmrs/module/reporting/cohort/definition/library/BuiltInCohortDefinitionLibraryTest.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,19 @@
1111

1212
import org.junit.Before;
1313
import org.junit.Test;
14+
import org.openmrs.CareSetting;
15+
import org.openmrs.Concept;
16+
import org.openmrs.Drug;
1417
import org.openmrs.EncounterType;
1518
import org.openmrs.module.reporting.cohort.definition.AgeCohortDefinition;
1619
import org.openmrs.module.reporting.cohort.definition.BirthAndDeathCohortDefinition;
1720
import org.openmrs.module.reporting.cohort.definition.CohortDefinition;
21+
import org.openmrs.module.reporting.cohort.definition.DrugOrderCohortDefinition;
1822
import org.openmrs.module.reporting.cohort.definition.EncounterCohortDefinition;
1923
import org.openmrs.module.reporting.cohort.definition.GenderCohortDefinition;
2024
import org.openmrs.module.reporting.cohort.definition.MappedParametersCohortDefinition;
2125
import org.openmrs.module.reporting.common.DurationUnit;
26+
import org.openmrs.module.reporting.common.Match;
2227
import org.openmrs.module.reporting.evaluation.parameter.Mapped;
2328

2429
import java.util.Date;
@@ -143,4 +148,20 @@ public void testGetDiedDuringPeriod() throws Exception {
143148
assertThat(cd, hasParameter("startDate", Date.class));
144149
assertThat(cd, hasParameter("endDate", Date.class));
145150
}
151+
152+
@Test
153+
public void testgetDrugOrderSearch() throws Exception {
154+
CohortDefinition drugOrderCohortDefinition = library.getDrugOrderSearch();
155+
assertTrue(DrugOrderCohortDefinition.class.isAssignableFrom(drugOrderCohortDefinition.getClass()));
156+
assertThat(drugOrderCohortDefinition, hasParameter("which", Match.class));
157+
assertThat(drugOrderCohortDefinition, hasParameter("drugConcepts", Concept.class, List.class));
158+
assertThat(drugOrderCohortDefinition, hasParameter("drugSets", Concept.class, List.class));
159+
assertThat(drugOrderCohortDefinition, hasParameter("activatedOnOrBefore", Date.class));
160+
assertThat(drugOrderCohortDefinition, hasParameter("activatedOnOrAfter", Date.class));
161+
assertThat(drugOrderCohortDefinition, hasParameter("activeOnOrBefore", Date.class));
162+
assertThat(drugOrderCohortDefinition, hasParameter("activeOnOrAfter", Date.class));
163+
assertThat(drugOrderCohortDefinition, hasParameter("activeOnDate", Date.class));
164+
assertThat(drugOrderCohortDefinition, hasParameter("careSetting", CareSetting.class));
165+
assertThat(drugOrderCohortDefinition, hasParameter("drugs", Drug.class, List.class));
166+
}
146167
}

0 commit comments

Comments
 (0)