...
- Create a table for form_filtering. form_id, form_filter_id. If a form's form_id is listed in this table, the associated filter MUST return true in order to be displayed in the list of forms
- Create a table for the filters and their parameters: form_filter. form_filter_id, class_name, properties (a key/value pairing)
- Create an interface FormFilter where the logic for each type of filtering will be stored. important method is "public boolean shouldDisplayForm(Patient p, User u)"
- Create an admin page for administrators to choose which forms get which filters
- The admin page should look for all implementations of FormFilter and allow the admin to choose one
- The admin page for each FormFilter should look at properties on the FormFilter to know what to ask of the admin
- answers to these properties are stored in form_filter.properties as "age=18,value=after" vs "age=18,value=before" (using AgeFormFilter as example)
- Create a GenderFormFilter that uses the patient's gender
- Create a RoleFormFilter that requires the current user to have a specific Role
- Create a PrivilegeFormFilter that requires the current user to have a specific Privilege
- Create a DateFormFilter that requires it be before or after a certain date to be displayed
- Create an AgeFormFilter that requires the patient be over or under a certain age
- Create a CohortFormFilter that is based on the patient being in the defined cohort – this should be added in by the ReportingCompatibility Module
Mockup
Wiki Markup |
---|
{mockup:FormFilter|3} |
Wiki Markup |
---|
{mockup:FormFilter_2|13} |
...
Mockup | ||||||
---|---|---|---|---|---|---|
|
Mockup | ||||||
---|---|---|---|---|---|---|
|
...
Mockup | ||||||
---|---|---|---|---|---|---|
|