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()));