diff --git a/.gitignore b/.gitignore index 81d2f5143..44ee5c07b 100644 --- a/.gitignore +++ b/.gitignore @@ -13,4 +13,5 @@ hs_err_pid* .idea target/ -*.iml \ No newline at end of file +*.iml +/bin/ diff --git a/omod/src/main/java/org/bahmni/flowsheet/ui/FlowsheetUI.java b/omod/src/main/java/org/bahmni/flowsheet/ui/FlowsheetUI.java index 0f01e21d2..709ef6921 100644 --- a/omod/src/main/java/org/bahmni/flowsheet/ui/FlowsheetUI.java +++ b/omod/src/main/java/org/bahmni/flowsheet/ui/FlowsheetUI.java @@ -13,7 +13,8 @@ public class FlowsheetUI { private List milestones; private Map> flowsheetData; - private String highlightedMilestone; + private String highlightedCurrentMilestone; + private String endDateMilestone; public Map> getFlowsheetData() { if(null == this.flowsheetData) { @@ -27,11 +28,11 @@ public void setFlowsheetData(Map> flowsheetData) { } public String getHighlightedMilestone() { - return highlightedMilestone; + return highlightedCurrentMilestone; } public void setHighlightedMilestone(String highlightedMilestone) { - this.highlightedMilestone = highlightedMilestone; + this.highlightedCurrentMilestone = highlightedMilestone; } public List getMilestones() { @@ -41,4 +42,13 @@ public List getMilestones() { public void setMilestones(List milestones) { this.milestones = milestones; } + + public String getEndDateMilestone() { + return endDateMilestone; + } + + public void setEndDateMilestone(String endDateMilestone) { + this.endDateMilestone = endDateMilestone; + } + } diff --git a/omod/src/main/java/org/openmrs/module/endtb/flowsheet/service/impl/PatientMonitoringFlowsheetServiceImpl.java b/omod/src/main/java/org/openmrs/module/endtb/flowsheet/service/impl/PatientMonitoringFlowsheetServiceImpl.java index a51b8118c..16f61414c 100644 --- a/omod/src/main/java/org/openmrs/module/endtb/flowsheet/service/impl/PatientMonitoringFlowsheetServiceImpl.java +++ b/omod/src/main/java/org/openmrs/module/endtb/flowsheet/service/impl/PatientMonitoringFlowsheetServiceImpl.java @@ -73,8 +73,9 @@ public FlowsheetUI getFlowsheetForPatientProgram(PatientProgram patientProgram, Set floatingMilestoneNames = getFloatingMilestoneNames(flowsheetConfig.getMilestoneConfigs()); setNotApplicableStatusToFixedMilestones(endDate, milestones, floatingMilestoneNames); - String highlightedMilestoneName = findHighlightedMilestoneInFixedMilestones(milestones, endDate, floatingMilestoneNames); - + String highlightedCurrentMilestoneName = findCurrentMonthMilestone(milestones, endDate, floatingMilestoneNames); + String treatmentEndMilestoneName = findEndDateMilestone(milestones, endDate, floatingMilestoneNames); + List questionConfigs = flowsheetConfig.getQuestionConfigs(); Map> flowsheetData = new LinkedHashMap<>(); @@ -99,7 +100,8 @@ public FlowsheetUI getFlowsheetForPatientProgram(PatientProgram patientProgram, } presentationFlowsheet.setMilestones(flowsheetMilestones); - presentationFlowsheet.setHighlightedMilestone(highlightedMilestoneName); + presentationFlowsheet.setHighlightedMilestone(highlightedCurrentMilestoneName); + presentationFlowsheet.setEndDateMilestone(treatmentEndMilestoneName); presentationFlowsheet.setFlowsheetData(flowsheetData); return presentationFlowsheet; } @@ -244,17 +246,43 @@ private String getProgramAttribute(BahmniPatientProgram bahmniPatientProgram, St return ""; } - private String findHighlightedMilestoneInFixedMilestones(Set milestones, Date endDate, Set floatingMilestones) { + private String findCurrentMonthMilestone(Set milestones, Date endDate, Set floatingMilestones) { if (endDate == null) { endDate = new Date(); } + + //TODO: Use the following snippet based on Configuration json + + Calendar cal = GregorianCalendar.getInstance(); + cal.setTime(endDate); + cal.add(6, Calendar.MONTH); + endDate = cal.getTime(); + for (Milestone milestone : milestones) { - if ((!floatingMilestones.contains(milestone.getName())) && (milestone.getStartDate().before(endDate) || DateUtils.isSameDay(milestone.getStartDate(), endDate)) && (milestone.getEndDate().after(endDate) || DateUtils.isSameDay(milestone.getEndDate(), endDate))) { + if ((!floatingMilestones.contains(milestone.getName())) + && (milestone.getStartDate().before(endDate) || DateUtils.isSameDay(milestone.getStartDate(), endDate)) + && (milestone.getEndDate().after(endDate) || DateUtils.isSameDay(milestone.getEndDate(), endDate))) { + return milestone.getName(); + } + } + return ""; + } + + private String findEndDateMilestone(Set milestones, Date endDate, Set floatingMilestones) { + if (endDate == null) { + endDate = new Date(); + } + + for (Milestone milestone : milestones) { + if ((!floatingMilestones.contains(milestone.getName())) + && (milestone.getStartDate().before(endDate) || DateUtils.isSameDay(milestone.getStartDate(), endDate)) + && (milestone.getEndDate().after(endDate) || DateUtils.isSameDay(milestone.getEndDate(), endDate))) { return milestone.getName(); } } return ""; } + private Set getFloatingMilestoneNames(List milestoneConfigs) { Set floatingMilestoneNames = new HashSet<>(); @@ -288,10 +316,10 @@ private String getColorCodeForStatus(Status status) { return "green"; } if (status.equals(Status.PLANNED)) { - return "yellow"; + return "grey"; } if (status.equals(Status.PENDING)) { - return "purple"; + return "grey"; } if (status.equals(Status.NOT_APPLICABLE)) { return "grey";