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 473922a2..b4bdbc05 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 @@ -28,6 +28,7 @@ public class AppointmentDefaultResponse { private HashMap extensions; private String teleconsultationLink; private String priority; + private String[] fulfillingEncounters = new String[0]; public String getUuid() { return uuid; @@ -203,4 +204,12 @@ public Date getDateAppointmentScheduled() { public void setDateAppointmentScheduled(Date dateAppointmentScheduled) { this.dateAppointmentScheduled = dateAppointmentScheduled; } + + public String[] getFulfillingEncounters() { + return fulfillingEncounters; + } + + public void setFulfillingEncounters(String[] fulfillingEncounters) { + this.fulfillingEncounters = fulfillingEncounters; + } } 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 eca18e4c..c70290bf 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 @@ -24,6 +24,7 @@ public class AppointmentRequest { private String comments; private List providers = new ArrayList<>(); private String priority; + private String[] fulfillingEncounters = new String[0]; public String getAppointmentNumber() { return appointmentNumber; @@ -144,4 +145,12 @@ public Date getDateAppointmentScheduled() { public void setDateAppointmentScheduled(Date dateAppointmentScheduled) { this.dateAppointmentScheduled = dateAppointmentScheduled; } + + public String[] getFulfillingEncounters() { + return fulfillingEncounters; + } + + public void setFulfillingEncounters(String[] fulfillingEncounters) { + this.fulfillingEncounters = fulfillingEncounters; + } } 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 e1450b7e..690d83ad 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 @@ -3,9 +3,11 @@ import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.openmrs.Encounter; import org.openmrs.Location; import org.openmrs.Patient; import org.openmrs.Provider; +import org.openmrs.api.EncounterService; import org.openmrs.api.LocationService; import org.openmrs.api.PatientService; import org.openmrs.api.ProviderService; @@ -30,11 +32,13 @@ import org.springframework.stereotype.Component; import java.util.ArrayList; +import java.util.Arrays; import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -59,6 +63,9 @@ public class AppointmentMapper { @Autowired AppointmentsService appointmentsService; + @Autowired + EncounterService encounterService; + @Autowired(required = false) AppointmentResponseExtension appointmentResponseExtension; @@ -118,6 +125,15 @@ public void mapAppointmentRequestToAppointment(AppointmentRequest appointmentReq if (appointmentRequest.getPriority() != null || StringUtils.isNotBlank(appointmentRequest.getPriority())) { appointment.setPriority(AppointmentPriority.valueOf(appointmentRequest.getPriority())); } + + if (appointmentRequest.getFulfillingEncounters().length > 0){ + Set fulfillingEncounters = Arrays.stream(appointmentRequest.getFulfillingEncounters()) + .map(encounterService::getEncounterByUuid) + .filter(Objects::nonNull) + .collect(Collectors.toSet()); + + appointment.setFulfillingEncounters(fulfillingEncounters); + } mapProvidersForAppointment(appointment, appointmentRequest.getProviders()); } @@ -239,6 +255,9 @@ private AppointmentDefaultResponse mapToDefaultResponse(Appointment a, Appointme response.getExtensions().put("notificationResults", collect); } } + if(a.getFulfillingEncounters() != null && !a.getFulfillingEncounters().isEmpty()) { + response.setFulfillingEncounters(a.getFulfillingEncounters().stream().map(Encounter::getUuid).toArray(String[]::new)); + } return response; }