2626import static org .junit .Assert .assertNotNull ;
2727
2828public class BedManagementDaoImplTest extends BaseModuleContextSensitiveTest {
29-
29+
3030 private BedManagementDao bedManagementDao ;
31-
31+
3232 private Location defaultLocation ;
33-
33+
3434 private EncounterType defaultEncounterType ;
35-
35+
3636 @ Before
3737 public void setup () {
3838 bedManagementDao = Context .getRegisteredComponent ("bedManagementDao" , BedManagementDao .class );
3939 assertNotNull ("bedManagementDao should be initialized" , bedManagementDao );
40-
40+
4141 defaultLocation = Context .getLocationService ().getLocationByUuid ("8d6c993e-c2cc-11de-8d13-0010c6dffd0f" );
4242 assertNotNull ("Default location should not be null" , defaultLocation );
43-
43+
4444 defaultEncounterType = getOrCreateEncounterType ("Test Encounter Type" );
4545 }
46-
46+
4747 private EncounterType getOrCreateEncounterType (String name ) {
48- for ( EncounterType et : Context .getEncounterService ().getAllEncounterTypes ()) {
49- if ( name . equals ( et . getName ())) {
50- return et ;
51- }
48+ EncounterType encounterType = Context .getEncounterService ().getEncounterType ( name );
49+
50+ if ( encounterType != null ) {
51+ return encounterType ;
5252 }
53+
5354 EncounterType newType = new EncounterType ();
5455 newType .setName (name );
55- newType .setDescription ("Test Encounter Type Description" );
56- return Context .getEncounterService ().saveEncounterType (newType );
56+ newType .setDescription ("Created for testing: " + name );
57+ Context .getEncounterService ().saveEncounterType (newType );
58+ return newType ;
5759 }
58-
60+
5961 private Patient createPatient (String identifierString , String firstName , String middleName , String lastName ) {
6062 PatientIdentifierType pit = Context .getPatientService ().getPatientIdentifierTypeByName ("Test Identifier Type" );
6163 if (pit == null ) {
@@ -64,35 +66,35 @@ private Patient createPatient(String identifierString, String firstName, String
6466 pit .setDescription ("Test Identifier Type Description" );
6567 Context .getPatientService ().savePatientIdentifierType (pit );
6668 }
67-
69+
6870 PatientIdentifier identifier = new PatientIdentifier (identifierString , pit , defaultLocation );
6971 identifier .setPreferred (true );
70-
72+
7173 PersonName name = new PersonName (firstName , middleName , lastName );
7274 name .setPreferred (true );
73-
75+
7476 Patient patient = new Patient ();
7577 patient .addIdentifier (identifier );
7678 patient .addName (name );
7779 patient .setGender ("M" );
78-
80+
7981 return Context .getPatientService ().savePatient (patient );
8082 }
81-
83+
8284 private Bed createBed (String bedNumber ) {
8385 BedType bedType = new BedType ();
8486 bedType .setName ("Test BedType" );
8587 bedType .setDisplayName ("TB" );
8688 bedType .setDescription ("Test Bed Type" );
8789 bedType = bedManagementDao .saveBedType (bedType );
88-
90+
8991 Bed bed = new Bed ();
9092 bed .setBedNumber (bedNumber );
9193 bed .setStatus ("AVAILABLE" );
9294 bed .setBedType (bedType );
9395 return bedManagementDao .saveBed (bed );
9496 }
95-
97+
9698 private VisitType getOrCreateVisitType (String name ) {
9799 for (VisitType vt : Context .getVisitService ().getAllVisitTypes ()) {
98100 if (name .equals (vt .getName ())) {
@@ -104,17 +106,17 @@ private VisitType getOrCreateVisitType(String name) {
104106 newType .setDescription ("Test Visit Type" );
105107 return Context .getVisitService ().saveVisitType (newType );
106108 }
107-
109+
108110 private Visit createVisit (Patient patient ) {
109111 VisitType visitType = getOrCreateVisitType ("Outpatient" );
110-
112+
111113 Visit visit = new Visit ();
112114 visit .setPatient (patient );
113115 visit .setVisitType (visitType );
114116 visit .setStartDatetime (new Date ());
115117 return Context .getVisitService ().saveVisit (visit );
116118 }
117-
119+
118120 private Encounter createEncounter (Patient patient , Visit visit ) {
119121 Encounter encounter = new Encounter ();
120122 encounter .setPatient (patient );
@@ -124,115 +126,115 @@ private Encounter createEncounter(Patient patient, Visit visit) {
124126 encounter .setLocation (defaultLocation );
125127 return Context .getEncounterService ().saveEncounter (encounter );
126128 }
127-
129+
128130 @ Test
129131 public void shouldReturnBedByPatient () {
130132 Patient patient = createPatient ("PID123" , "John" , "A" , "Doe" );
131133 Bed bed = createBed ("B101" );
132-
134+
133135 Visit visit = createVisit (patient );
134136 Encounter encounter = createEncounter (patient , visit );
135-
137+
136138 BedPatientAssignment assignment = new BedPatientAssignment ();
137139 assignment .setBed (bed );
138140 assignment .setPatient (patient );
139141 assignment .setEncounter (encounter );
140142 assignment .setStartDatetime (new Date ());
141143 assignment .setEndDatetime (null );
142144 bedManagementDao .saveBedPatientAssignment (assignment );
143-
145+
144146 Bed result = bedManagementDao .getBedByPatient (patient );
145-
147+
146148 assertNotNull ("Expected a bed to be returned for the patient" , result );
147149 assertEquals ("B101" , result .getBedNumber ());
148150 }
149-
151+
150152 @ Test
151153 public void shouldReturnBedPatientAssignmentByUuid () {
152154 Patient patient = createPatient ("PID124" , "Jane" , "B" , "Smith" );
153155 Bed bed = createBed ("B102" );
154-
156+
155157 Visit visit = createVisit (patient );
156158 Encounter encounter = createEncounter (patient , visit );
157-
159+
158160 BedPatientAssignment assignment = new BedPatientAssignment ();
159161 assignment .setBed (bed );
160162 assignment .setPatient (patient );
161163 assignment .setEncounter (encounter );
162164 assignment .setStartDatetime (new Date ());
163165 assignment .setEndDatetime (null );
164166 BedPatientAssignment saved = bedManagementDao .saveBedPatientAssignment (assignment );
165-
167+
166168 BedPatientAssignment result = bedManagementDao .getBedPatientAssignmentByUuid (saved .getUuid ());
167-
169+
168170 assertNotNull ("Expected a BedPatientAssignment to be found by UUID" , result );
169171 assertEquals (patient .getUuid (), result .getPatient ().getUuid ());
170172 }
171-
173+
172174 @ Test
173175 public void shouldReturnCurrentAssignmentsByBed () {
174176 Bed bed = createBed ("B103" );
175177 Patient patient1 = createPatient ("PID125" , "Alice" , "C" , "Jones" );
176178 Patient patient2 = createPatient ("PID126" , "Bob" , "D" , "White" );
177-
179+
178180 Visit visit1 = createVisit (patient1 );
179181 Encounter encounter1 = createEncounter (patient1 , visit1 );
180-
182+
181183 Visit visit2 = createVisit (patient2 );
182184 Encounter encounter2 = createEncounter (patient2 , visit2 );
183-
185+
184186 BedPatientAssignment assignment1 = new BedPatientAssignment ();
185187 assignment1 .setBed (bed );
186188 assignment1 .setPatient (patient1 );
187189 assignment1 .setEncounter (encounter1 );
188190 assignment1 .setStartDatetime (new Date ());
189191 assignment1 .setEndDatetime (null );
190192 bedManagementDao .saveBedPatientAssignment (assignment1 );
191-
193+
192194 BedPatientAssignment assignment2 = new BedPatientAssignment ();
193195 assignment2 .setBed (bed );
194196 assignment2 .setPatient (patient2 );
195197 assignment2 .setEncounter (encounter2 );
196198 assignment2 .setStartDatetime (new Date ());
197199 assignment2 .setEndDatetime (null );
198200 bedManagementDao .saveBedPatientAssignment (assignment2 );
199-
201+
200202 List <BedPatientAssignment > results = bedManagementDao .getCurrentAssignmentsByBed (bed );
201-
203+
202204 assertNotNull ("Expected a list of current assignments" , results );
203205 assertEquals (2 , results .size ());
204206 }
205-
207+
206208 @ Test
207209 public void shouldReturnLatestBedByVisit () {
208210 Patient patient = createPatient ("PID127" , "Charlie" , "E" , "Brown" );
209-
211+
210212 Visit visit = createVisit (patient );
211-
213+
212214 Encounter encounter1 = createEncounter (patient , visit );
213215 Encounter encounter2 = createEncounter (patient , visit );
214-
216+
215217 Bed bed1 = createBed ("B104" );
216218 Bed bed2 = createBed ("B105" );
217-
219+
218220 BedPatientAssignment assignment1 = new BedPatientAssignment ();
219221 assignment1 .setBed (bed1 );
220222 assignment1 .setPatient (patient );
221223 assignment1 .setEncounter (encounter1 );
222224 assignment1 .setStartDatetime (new Date (System .currentTimeMillis () - 100000L ));
223225 assignment1 .setEndDatetime (new Date (System .currentTimeMillis () - 50000L ));
224226 bedManagementDao .saveBedPatientAssignment (assignment1 );
225-
227+
226228 BedPatientAssignment assignment2 = new BedPatientAssignment ();
227229 assignment2 .setBed (bed2 );
228230 assignment2 .setPatient (patient );
229231 assignment2 .setEncounter (encounter2 );
230232 assignment2 .setStartDatetime (new Date ());
231233 assignment2 .setEndDatetime (null );
232234 bedManagementDao .saveBedPatientAssignment (assignment2 );
233-
235+
234236 Bed latest = bedManagementDao .getLatestBedByVisit (visit .getUuid ());
235-
237+
236238 assertNotNull ("Expected the latest bed to be returned for the visit" , latest );
237239 assertEquals ("B105" , latest .getBedNumber ());
238240 }
0 commit comments