diff --git a/omod/src/main/java/org/openmrs/module/ipd/service/impl/SlotTimeCreationService.java b/omod/src/main/java/org/openmrs/module/ipd/service/impl/SlotTimeCreationService.java index 074bf79..4d25cbb 100644 --- a/omod/src/main/java/org/openmrs/module/ipd/service/impl/SlotTimeCreationService.java +++ b/omod/src/main/java/org/openmrs/module/ipd/service/impl/SlotTimeCreationService.java @@ -83,9 +83,9 @@ private List getSlotsStartTimeWithFixedScheduleFrequency(Schedule } private List getSlotsStartTimeWithStartTimeDurationFrequency(ScheduleMedicationRequest request, DrugOrder order) { - int numberOfSlotsStartTimeToBeCreated = (int) (Math.ceil(order.getQuantity() / order.getDose())); + int numberOfSlotsStartTimeToBeCreated = (order.getQuantity() == 0.0 || order.getFrequency() == null || order.getDuration() == null) ? 1 : (int) (Math.ceil(order.getQuantity() / order.getDose())); List slotsStartTime = new ArrayList<>(); - Double slotDurationInHours = 24 / order.getFrequency().getFrequencyPerDay(); + Double slotDurationInHours = order.getFrequency() != null ? 24 / order.getFrequency().getFrequencyPerDay() : 0; LocalDateTime slotStartTime = request.getSlotStartTimeAsLocaltime(); while (numberOfSlotsStartTimeToBeCreated-- > 0) { slotsStartTime.add(slotStartTime); @@ -105,7 +105,7 @@ private List getSlotsStartTimeWithStartTimeDurationFrequency(Sche HashMap drugOrderScheduleHash= new HashMap<>(); for (DrugOrder drugOrder : slotsByOrder.keySet()) { DrugOrderSchedule drugOrderSchedule = new DrugOrderSchedule(); - if (drugOrder.getAsNeeded()){ + if (drugOrder.getAsNeeded() || drugOrder.getFrequency() == null || drugOrder.getDuration() == null || drugOrder.getQuantity() == 0.0) { drugOrderSchedule.setSlotStartTime(DateTimeUtil.convertLocalDateTimeToUTCEpoc(slotsByOrder.get(drugOrder).get(0).getStartDateTime())); } else {