Skip to content

Commit fa22355

Browse files
authored
AP-64 | Sukreet | Ignore cancelled appointments for determining conflicts. (Bahmni#38)
1 parent 21882b2 commit fa22355

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

api/src/main/java/org/openmrs/module/appointments/conflicts/impl/PatientDoubleBookingConflict.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import org.openmrs.module.appointments.model.AppointmentConflictType;
66
import org.openmrs.module.appointments.dao.AppointmentDao;
77
import org.openmrs.module.appointments.model.Appointment;
8+
import org.openmrs.module.appointments.model.AppointmentStatus;
89

910
import java.util.ArrayList;
1011
import java.util.Date;
@@ -48,7 +49,8 @@ private boolean isConflicting(Appointment appointment, Appointment patientAppoin
4849
return !patientAppointment.isSameAppointment(appointment)
4950
&& !patientAppointment.getVoided()
5051
&& patientAppointment.isFutureAppointment()
51-
&& isAppointmentOverlapping(patientAppointment, appointment);
52+
&& isAppointmentOverlapping(patientAppointment, appointment)
53+
&& patientAppointment.getStatus() != AppointmentStatus.Cancelled;
5254
}
5355

5456
private boolean isAppointmentOverlapping(Appointment patientAppointment, Appointment appointment) {

api/src/test/java/org/openmrs/module/appointments/conflicts/impl/PatientDoubleBookingConflictTest.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import org.openmrs.module.appointments.dao.AppointmentDao;
1212
import org.openmrs.module.appointments.helper.DateHelper;
1313
import org.openmrs.module.appointments.model.Appointment;
14+
import org.openmrs.module.appointments.model.AppointmentStatus;
1415

1516
import java.util.Arrays;
1617
import java.util.Collections;
@@ -54,6 +55,26 @@ public void shouldReturnDoubleBookingConflictWithSameTime() {
5455
assertEquals(patientAppointment,appointments.get(0));
5556
}
5657

58+
@Test
59+
public void shouldNotConflictWithCancelledAppointmentOnSameTime() {
60+
Patient patient = new Patient();
61+
patient.setId(1);
62+
Appointment patientAppointment = new Appointment();
63+
patientAppointment.setStartDateTime(DateHelper.getDate(2119,8,1,11,0,0));
64+
patientAppointment.setEndDateTime(DateHelper.getDate(2119,8,1,12,0,0));
65+
patientAppointment.setStatus(AppointmentStatus.Cancelled);
66+
67+
Appointment appointment = new Appointment();
68+
appointment.setPatient(patient);
69+
appointment.setStartDateTime(DateHelper.getDate(2119,8,1,11,0,0));
70+
appointment.setEndDateTime(DateHelper.getDate(2119,8,1,12,0,0));
71+
when(appointmentDao.getAppointmentsForPatient(1)).thenReturn(Collections.singletonList(patientAppointment));
72+
73+
List<Appointment> appointments = patientDoubleBookingConflict.getConflicts(Collections.singletonList(appointment));
74+
75+
assertNotNull(appointments);
76+
assertEquals(0,appointments.size());
77+
}
5778

5879
@Test
5980
public void shouldReturnAppointmentWithOverlapping() {

0 commit comments

Comments
 (0)