Skip to content

Commit

Permalink
Merge pull request #31 from Bahmni/prn-workflow
Browse files Browse the repository at this point in the history
Kavitha | Kalai - Changes to accomodate PRN Work flow add DrugOrderScheduleObject
  • Loading branch information
SooryaKumaranC-tw authored Feb 14, 2024
2 parents 80ad1b3 + de43977 commit 9cefd25
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -105,9 +105,14 @@ private Map<String, DrugOrderSchedule> getDrugOrderScheduleForOrders(String pati
.map(BahmniDrugOrder::getUuid)
.collect(Collectors.toList());
List<Slot> slots = ipdScheduleService.getMedicationSlots(patientUuid, ServiceType.MEDICATION_REQUEST,orderUuids);
List<Slot> prnSlots = ipdScheduleService.getMedicationSlots(patientUuid, ServiceType.AS_NEEDED_MEDICATION_REQUEST,orderUuids);
slots.addAll(prnSlots);
Map<DrugOrder, List<Slot>> groupedByOrders = slots.stream()
.collect(Collectors.groupingBy(slot -> (DrugOrder) slot.getOrder()));

Map<String, DrugOrderSchedule> drugOrderScheduleByOrders = slotTimeCreationService.getDrugOrderScheduledTime(groupedByOrders);


return drugOrderScheduleByOrders;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,33 +104,37 @@ private List<LocalDateTime> getSlotsStartTimeWithStartTimeDurationFrequency(Sche
public HashMap<String , DrugOrderSchedule> getDrugOrderScheduledTime(Map<DrugOrder,List<Slot>> slotsByOrder){
HashMap<String, DrugOrderSchedule> drugOrderScheduleHash= new HashMap<>();
for (DrugOrder drugOrder : slotsByOrder.keySet()) {
Double frequencyPerDay = drugOrder.getFrequency().getFrequencyPerDay();
String frequency=drugOrder.getFrequency().getName();
Map<LocalDate, List<LocalDateTime>> groupedByDateAndEpoch = slotsByOrder.get(drugOrder).stream()
.collect(Collectors.groupingBy(
obj -> obj.getStartDateTime().toLocalDate(),
Collectors.mapping(
obj -> obj.getStartDateTime(),
Collectors.toList()
)
));

List<List<LocalDateTime>> sortedList = groupedByDateAndEpoch.entrySet().stream()
.sorted(Map.Entry.comparingByKey()) // Sort by LocalDate in ascending order
.map(Map.Entry::getValue) // Get the list of Longs for each entry
.collect(Collectors.toList()); // Collect the list of lists into a single ArrayList

DrugOrderSchedule drugOrderSchedule=new DrugOrderSchedule();
if (START_TIME_FREQUENCIES.contains(frequency)){
drugOrderSchedule.setSlotStartTime(DateTimeUtil.convertLocalDateTimeToUTCEpoc(sortedList.get(0).get(0)));
DrugOrderSchedule drugOrderSchedule = new DrugOrderSchedule();
if (drugOrder.getAsNeeded()){
drugOrderSchedule.setSlotStartTime(DateTimeUtil.convertLocalDateTimeToUTCEpoc(slotsByOrder.get(drugOrder).get(0).getStartDateTime()));
}
else if (sortedList.get(0).size() == frequencyPerDay || (sortedList.size() == 1)) {
drugOrderSchedule.setDayWiseSlotsStartTime(sortedList.get(0).stream().map(DateTimeUtil::convertLocalDateTimeToUTCEpoc).collect(Collectors.toList()));
} else {
drugOrderSchedule.setFirstDaySlotsStartTime(sortedList.get(0).stream().map(DateTimeUtil::convertLocalDateTimeToUTCEpoc).collect(Collectors.toList()));
drugOrderSchedule.setRemainingDaySlotsStartTime(sortedList.get(sortedList.size() - 1).stream().map(DateTimeUtil::convertLocalDateTimeToUTCEpoc).collect(Collectors.toList()));
if (sortedList.size() > 2) {
drugOrderSchedule.setDayWiseSlotsStartTime(sortedList.get(1).stream().map(DateTimeUtil::convertLocalDateTimeToUTCEpoc).collect(Collectors.toList()));
else {
Double frequencyPerDay = drugOrder.getFrequency().getFrequencyPerDay();
String frequency = drugOrder.getFrequency().getName();
Map<LocalDate, List<LocalDateTime>> groupedByDateAndEpoch = slotsByOrder.get(drugOrder).stream()
.collect(Collectors.groupingBy(
obj -> obj.getStartDateTime().toLocalDate(),
Collectors.mapping(
obj -> obj.getStartDateTime(),
Collectors.toList()
)
));

List<List<LocalDateTime>> sortedList = groupedByDateAndEpoch.entrySet().stream()
.sorted(Map.Entry.comparingByKey()) // Sort by LocalDate in ascending order
.map(Map.Entry::getValue) // Get the list of Longs for each entry
.collect(Collectors.toList()); // Collect the list of lists into a single ArrayList

if (START_TIME_FREQUENCIES.contains(frequency)) {
drugOrderSchedule.setSlotStartTime(DateTimeUtil.convertLocalDateTimeToUTCEpoc(sortedList.get(0).get(0)));
} else if (sortedList.get(0).size() == frequencyPerDay || (sortedList.size() == 1)) {
drugOrderSchedule.setDayWiseSlotsStartTime(sortedList.get(0).stream().map(DateTimeUtil::convertLocalDateTimeToUTCEpoc).collect(Collectors.toList()));
} else {
drugOrderSchedule.setFirstDaySlotsStartTime(sortedList.get(0).stream().map(DateTimeUtil::convertLocalDateTimeToUTCEpoc).collect(Collectors.toList()));
drugOrderSchedule.setRemainingDaySlotsStartTime(sortedList.get(sortedList.size() - 1).stream().map(DateTimeUtil::convertLocalDateTimeToUTCEpoc).collect(Collectors.toList()));
if (sortedList.size() > 2) {
drugOrderSchedule.setDayWiseSlotsStartTime(sortedList.get(1).stream().map(DateTimeUtil::convertLocalDateTimeToUTCEpoc).collect(Collectors.toList()));
}
}
}
drugOrderSchedule.setSlots(slotsByOrder.get(drugOrder));
Expand Down

0 comments on commit 9cefd25

Please sign in to comment.