...
- Filtering is based on "Anding" i.e any one assigned filter fails its condition ,form fails to show on dashboard.
- All filters should have a single string parameter constructor.It takes filter properties as input. This constructor can be used to initialize filter properties.
Example:Code Block package org.openmrs.module.formfilter.impl; import java.lang.reflect.Field; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.openmrs.Patient; import org.openmrs.User; import org.openmrs.module.formfilter.FormFilterHandler; /** * This class will provide patient age based form filter. */ public class AgeFormFilter implements FormFilterHandler { protected Log log = LogFactory.getLog(getClass()); /** * Default Constructor */ public AgeFormFilter() { } /** * Constructor sets class field values. * @param properties ,string property from FormFilterProperty class in key=value based format * Example: minimumAge=value&maximumAge=value */ public AgeFormFilter(String properties){ for (String string : properties.split("&")) { String str[]=string.split("="); try { Field field=this.getClass().getDeclaredField(str[0]); field.set(this, (Object)Integer.parseInt(str[1])); }catch (Exception e) { log.info(e); } } } private int minimumAge; private int maximumAge; /** * @return minimumAge */ public int getMinimumAge() { return minimumAge; } /** * Sets maximumAge * * @param maximumAge */ public void setMinimumAge(int minimumAge) { this.minimumAge = minimumAge; } /** * @return maximumAge */ public int getMaximumAge() { return maximumAge; } /** * Sets maximumAge * * @param maximumAge */ public void setMaximumAge(int maximumAge) { this.maximumAge = maximumAge; } /** * @see org.openmrs.module.formfilter.FormFilterHandler#shouldDisplayForm(org.openmrs.Patient, org.openmrs.User) * @return True , if patient age lies between minimumAge and maximumAge. * @return False, if patient age does not between minimumAge and maximumAge. */ @Override public boolean shouldDisplayForm(Patient p, User u) { // TODO Auto-generated method stub if((p.getAge()>=minimumAge) && (p.getAge()<=maximumAge)) { return true; } return false; } }
Filters
Based on the 3 categories currently they are 6 filters.
1) Age Form Filter
Patient age should lie between the filter minimum and maximum age.
Parameters: a) Minimum Age b) Maximum Age
Example:
Filter returns true if patient age is between 10(minimum age) and 30(maximum age).
2)Gender Form Filter
Patients gender should match with the filter age.
Parameter: a)Gender
Filter returns true if patient gender is Male.
Cohort Form Filter
Date Form Filter
Role Form Filter
Privilege Form Filter