diff --git a/api/src/main/java/org/openmrs/module/appointments/model/Appointment.java b/api/src/main/java/org/openmrs/module/appointments/model/Appointment.java
index 106b5808..1684d54e 100644
--- a/api/src/main/java/org/openmrs/module/appointments/model/Appointment.java
+++ b/api/src/main/java/org/openmrs/module/appointments/model/Appointment.java
@@ -23,6 +23,12 @@ public class Appointment extends BaseOpenmrsData implements Serializable {
private Integer appointmentId;
private String appointmentNumber;
private Date dateCreated;
+ /**
+ * The date when the appointment was scheduled. This can be today or in the past (for retrospective entry), but not in the future.
+ * This property is useful for documenting the visit when the patient booked the appointment or when the patient called to book the appointment
+ * NOTE: This is *not* the date the appointment is scheduled to take place. We use startDateTime for this
+ */
+ private Date dateAppointmentScheduled = new Date();
private Patient patient;
private AppointmentServiceDefinition service;
private AppointmentServiceType serviceType;
@@ -250,6 +256,14 @@ public Date getDateCreated() {
return dateCreated;
}
+ public Date getDateAppointmentScheduled() {
+ return dateAppointmentScheduled;
+ }
+
+ public void setDateAppointmentScheduled(Date dateAppointmentScheduled) {
+ this.dateAppointmentScheduled = dateAppointmentScheduled;
+ }
+
@Override
public void setDateCreated(Date dateCreated) {
this.dateCreated = dateCreated;
diff --git a/api/src/main/resources/Appointment.hbm.xml b/api/src/main/resources/Appointment.hbm.xml
index 90413cc6..9cb4368e 100644
--- a/api/src/main/resources/Appointment.hbm.xml
+++ b/api/src/main/resources/Appointment.hbm.xml
@@ -45,6 +45,7 @@
+
diff --git a/api/src/main/resources/liquibase.xml b/api/src/main/resources/liquibase.xml
index 169a8cbe..690d1db6 100644
--- a/api/src/main/resources/liquibase.xml
+++ b/api/src/main/resources/liquibase.xml
@@ -731,4 +731,22 @@
+
+
+
+
+
+
+ add a column to record the date an appointment was issued
+
+
+
+
+
+
+ Default the date an appointment was issued to the appointment date_created
+
+ update patient_appointment set date_appointment_scheduled = date_created where date_appointment_scheduled is null;
+
+
diff --git a/omod/src/main/java/org/openmrs/module/appointments/web/contract/AppointmentDefaultResponse.java b/omod/src/main/java/org/openmrs/module/appointments/web/contract/AppointmentDefaultResponse.java
index 5e1be017..473922a2 100644
--- a/omod/src/main/java/org/openmrs/module/appointments/web/contract/AppointmentDefaultResponse.java
+++ b/omod/src/main/java/org/openmrs/module/appointments/web/contract/AppointmentDefaultResponse.java
@@ -9,6 +9,7 @@ public class AppointmentDefaultResponse {
private String uuid;
private String appointmentNumber;
private Date dateCreated;
+ private Date dateAppointmentScheduled;
private Map patient;
private AppointmentServiceDefaultResponse service;
private Map serviceType;
@@ -194,4 +195,12 @@ public Date getDateCreated() {
public void setDateCreated(Date dateCreated) {
this.dateCreated = dateCreated;
}
+
+ public Date getDateAppointmentScheduled() {
+ return dateAppointmentScheduled;
+ }
+
+ public void setDateAppointmentScheduled(Date dateAppointmentScheduled) {
+ this.dateAppointmentScheduled = dateAppointmentScheduled;
+ }
}
diff --git a/omod/src/main/java/org/openmrs/module/appointments/web/contract/AppointmentRequest.java b/omod/src/main/java/org/openmrs/module/appointments/web/contract/AppointmentRequest.java
index c1efe0e7..eca18e4c 100644
--- a/omod/src/main/java/org/openmrs/module/appointments/web/contract/AppointmentRequest.java
+++ b/omod/src/main/java/org/openmrs/module/appointments/web/contract/AppointmentRequest.java
@@ -16,6 +16,7 @@ public class AppointmentRequest {
private String serviceTypeUuid;
private String providerUuid;
private String locationUuid;
+ private Date dateAppointmentScheduled;
private Date startDateTime;
private Date endDateTime;
private String status;
@@ -135,4 +136,12 @@ public String getPriority() {
public void setPriority(String priority) {
this.priority = priority;
}
+
+ public Date getDateAppointmentScheduled() {
+ return dateAppointmentScheduled;
+ }
+
+ public void setDateAppointmentScheduled(Date dateAppointmentScheduled) {
+ this.dateAppointmentScheduled = dateAppointmentScheduled;
+ }
}
diff --git a/omod/src/main/java/org/openmrs/module/appointments/web/mapper/AppointmentMapper.java b/omod/src/main/java/org/openmrs/module/appointments/web/mapper/AppointmentMapper.java
index c8e1c71e..f5050aa5 100644
--- a/omod/src/main/java/org/openmrs/module/appointments/web/mapper/AppointmentMapper.java
+++ b/omod/src/main/java/org/openmrs/module/appointments/web/mapper/AppointmentMapper.java
@@ -99,6 +99,10 @@ public void mapAppointmentRequestToAppointment(AppointmentRequest appointmentReq
if (StringUtils.isNotBlank(appointmentRequest.getStatus())){
appointment.setStatus(AppointmentStatus.valueOf(appointmentRequest.getStatus()));
}
+
+ if (appointmentRequest.getDateAppointmentScheduled() != null) {
+ appointment.setDateAppointmentScheduled(appointmentRequest.getDateAppointmentScheduled());
+ }
appointment.setServiceType(appointmentServiceType);
appointment.setService(appointmentServiceDefinition);
//appointment.setProvider(identifyAppointmentProvider(appointmentRequest.getProviderUuid()));
@@ -199,6 +203,7 @@ private AppointmentDefaultResponse mapToDefaultResponse(Appointment a, Appointme
response.setUuid(a.getUuid());
response.setAppointmentNumber(a.getAppointmentNumber());
response.setDateCreated(a.getDateCreated());
+ response.setDateAppointmentScheduled(a.getDateAppointmentScheduled());
response.setPatient(createPatientMap(a.getPatient()));
response.setService(appointmentServiceMapper.constructDefaultResponse(a.getService()));
response.setServiceType(createServiceTypeMap(a.getServiceType()));