/** * The contents of this file are subject to the OpenMRS Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://license.openmrs.org * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the * License for the specific language governing rights and limitations * under the License. * * Copyright (C) OpenMRS, LLC. All Rights Reserved. */ package org.openmrs.reporting; import java.util.ArrayList; import java.util.Date; import java.util.Iterator; import java.util.List; import org.openmrs.Cohort; import org.openmrs.EncounterType; import org.openmrs.Form; import org.openmrs.Location; import org.openmrs.api.PatientSetService; import org.openmrs.api.context.Context; import org.openmrs.report.EvaluationContext; import org.openmrs.util.OpenmrsUtil; /** * @deprecated see reportingcompatibility module */ @Deprecated public class EncounterPatientFilter extends CachingPatientFilter { private static final long serialVersionUID = 1L; private EncounterType encounterType; private List<EncounterType> encounterTypeList; private Form form; private Integer atLeastCount; private Integer atMostCount; private Integer withinLastDays; private Integer withinLastMonths; private Integer untilDaysAgo; private Integer untilMonthsAgo; private Date sinceDate; private Date untilDate; private Location location; public EncounterPatientFilter() { } @Override public String getCacheKey() { StringBuilder sb = new StringBuilder(); sb.append(getClass().getName()).append("."); sb.append(getForm() == null ? null : getForm().getFormId()).append("."); sb.append( OpenmrsUtil.fromDateHelper(null, withinLastDays, withinLastMonths, untilDaysAgo, untilMonthsAgo, sinceDate, untilDate)).append("."); sb.append( OpenmrsUtil.toDateHelper(null, withinLastDays, withinLastMonths, untilDaysAgo, untilMonthsAgo, sinceDate, untilDate)).append("."); sb.append(getAtLeastCount()).append("."); sb.append(getAtMostCount()).append("."); sb.append(getLocation() == null ? null : getLocation().getLocationId()).append("."); if (getEncounterTypeList() != null) for (EncounterType t : getEncounterTypeList()) sb.append(t.getEncounterTypeId()).append(","); return sb.toString(); } public String getDescription() { StringBuffer ret = new StringBuffer(); ret.append("Patients with "); if (atLeastCount != null || atMostCount != null) { if (atLeastCount != null) ret.append("at least " + atLeastCount + " "); if (atMostCount != null) ret.append("at most " + atMostCount + " "); } else { ret.append("any "); } if (encounterTypeList != null) { ret.append("["); for (Iterator<EncounterType> i = encounterTypeList.iterator(); i.hasNext();) { ret.append(" " + i.next().getName()); if (i.hasNext()) ret.append(" ,"); } ret.append(" ] "); } ret.append("encounters "); if (location != null) { ret.append("at " + location.getName() + " "); } if (withinLastMonths != null || withinLastDays != null) { ret.append("within the last "); if (withinLastMonths != null) ret.append(withinLastMonths + " month(s) "); if (withinLastDays != null) ret.append(withinLastDays + " day(s) "); } // TODO untilDaysAgo untilMonthsAgo if (sinceDate != null) ret.append("on or after " + sinceDate + " "); if (untilDate != null) ret.append("on or before " + untilDate + " "); if (form != null) ret.append("from the " + form.getName() + " form "); return ret.toString(); } @Override public Cohort filterImpl(EvaluationContext context) { PatientSetService service = Context.getPatientSetService(); return service.getPatientsHavingEncounters(encounterTypeList, location, form, OpenmrsUtil.fromDateHelper(null, withinLastDays, withinLastMonths, untilDaysAgo, untilMonthsAgo, sinceDate, untilDate), OpenmrsUtil.toDateHelper( null, withinLastDays, withinLastMonths, untilDaysAgo, untilMonthsAgo, sinceDate, untilDate), atLeastCount, atMostCount); } public boolean isReadyToRun() { return true; } // getters and setters @Deprecated public EncounterType getEncounterType() { return encounterType; } @Deprecated public void setEncounterType(EncounterType encounterType) { this.encounterType = encounterType; if (getEncounterTypeList() == null) setEncounterTypeList(new ArrayList<EncounterType>()); getEncounterTypeList().add(encounterType); } public List<EncounterType> getEncounterTypeList() { return encounterTypeList; } public void setEncounterTypeList(List<EncounterType> encounterTypeList) { this.encounterTypeList = encounterTypeList; } public Date getSinceDate() { return sinceDate; } public void setSinceDate(Date sinceDate) { this.sinceDate = sinceDate; } public Date getUntilDate() { return untilDate; } public void setUntilDate(Date untilDate) { this.untilDate = untilDate; } public Integer getUntilDaysAgo() { return untilDaysAgo; } public void setUntilDaysAgo(Integer untilDaysAgo) { this.untilDaysAgo = untilDaysAgo; } public Integer getUntilMonthsAgo() { return untilMonthsAgo; } public void setUntilMonthsAgo(Integer untilMonthsAgo) { this.untilMonthsAgo = untilMonthsAgo; } public Integer getWithinLastDays() { return withinLastDays; } public void setWithinLastDays(Integer withinLastDays) { this.withinLastDays = withinLastDays; } public Integer getWithinLastMonths() { return withinLastMonths; } public void setWithinLastMonths(Integer withinLastMonths) { this.withinLastMonths = withinLastMonths; } public Integer getAtLeastCount() { return atLeastCount; } public void setAtLeastCount(Integer atLeastCount) { this.atLeastCount = atLeastCount; } public Integer getAtMostCount() { return atMostCount; } public void setAtMostCount(Integer atMostCount) { this.atMostCount = atMostCount; } public Location getLocation() { return location; } public void setLocation(Location location) { this.location = location; } public Form getForm() { return form; } public void setForm(Form form) { this.form = form; } }