Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Added support for defining preferred names to display under category …
…filter
  • Loading branch information
k-joseph committed Aug 2, 2015
1 parent 8723cc1 commit a58ee0d
Show file tree
Hide file tree
Showing 9 changed files with 162 additions and 57 deletions.
Expand Up @@ -27,6 +27,7 @@
import org.openmrs.module.chartsearch.cache.ChartSearchHistory;
import org.openmrs.module.chartsearch.cache.ChartSearchNote;
import org.openmrs.module.chartsearch.cache.ChartSearchPreference;
import org.openmrs.module.chartsearch.categories.CategoryFilter;

import com.google.common.collect.Lists;

Expand Down Expand Up @@ -461,11 +462,25 @@ public JSONObject restorePreferences() {

public JSONObject saveOrUpdatePreferences(Boolean enableHistory, Boolean enableBookmarks, Boolean enableNotes,
Boolean enableQuickSearches, Boolean enableDefaultSearch,
Boolean enableDuplicateResults, Boolean enableMultiFiltering) {
Boolean enableDuplicateResults, Boolean enableMultiFiltering, JSONArray cats) {
List<ChartSearchPreference> allPrefs = chartSearchService.getAllChartSearchPreferences();
Boolean exists = false;
ChartSearchPreference preference = new ChartSearchPreference();

if (cats != null && !cats.isEmpty()) {
for (int i = 0; i < cats.size(); i++) {
JSONObject json = cats.getJSONObject(i);
String uuid = json.getString("uuid");
String name = json.getString("name");
CategoryFilter cat = chartSearchService.getACategoryFilterByItsUuid(uuid);

if (StringUtils.isNotBlank(uuid) && StringUtils.isNotBlank(name) && cat != null) {
cat.setDisplayName(name);
chartSearchService.updateACategoryFilter(cat);
}
}
}

for (ChartSearchPreference pref : allPrefs) {
if (pref.getPreferenceOwner().getUserId().equals(Context.getAuthenticatedUser().getUserId())) {
exists = true;
Expand Down
Expand Up @@ -37,6 +37,7 @@
import org.openmrs.module.chartsearch.cache.ChartSearchHistory;
import org.openmrs.module.chartsearch.cache.ChartSearchNote;
import org.openmrs.module.chartsearch.cache.ChartSearchPreference;
import org.openmrs.module.chartsearch.categories.CategoryFilter;
import org.openmrs.module.chartsearch.solr.ChartSearchSearcher;

/**
Expand Down Expand Up @@ -702,6 +703,7 @@ private static JSONObject generatePreferencesJSON(ChartSearchPreference pref) {
json.put("enableMultipleFiltering", pref.isEnableMultipleFiltering());
json.put("enableNotes", pref.isEnableNotes());
json.put("enableQuickSearches", pref.isEnableQuickSearches());
json.put("categoryFilters", generateAllCategoriesJSON());
}
return json;
}
Expand All @@ -714,6 +716,23 @@ public static JSONObject generateRightMatchedPreferencesJSON() {
return generatePreferencesJSON(chartSearchService.getRightMatchedPreferences());
}

public static JSONArray generateAllCategoriesJSON() {
JSONArray jsonArray = new JSONArray();
List<CategoryFilter> allCats = chartSearchService.getAllCategoryFilters();

for (CategoryFilter cat : allCats) {
JSONObject json = new JSONObject();

json.put("name", cat.getCategoryName());
json.put("displayName", cat.getDisplayName());
json.put("uuid", cat.getCategoryUuid());

jsonArray.add(json);
}

return jsonArray;
}

private static <T> T getComponent(Class<T> clazz) {
List<T> list = Context.getRegisteredComponents(clazz);
if (list == null || list.size() == 0)
Expand Down
Expand Up @@ -14,13 +14,11 @@

import java.io.Serializable;

import org.openmrs.BaseOpenmrsObject;

/**
* This class represents A category to be used to filter returned results; items such as; diagnosis,
* labs, meds, orders, Others, reports, vitals
*/
public class CategoryFilter extends BaseOpenmrsObject implements Serializable {
public class CategoryFilter implements Serializable {

private static final long serialVersionUID = 1L;

Expand Down Expand Up @@ -83,30 +81,20 @@ public void setCategoryDescription(String catDescription) {
this.categoryDescription = catDescription;
}

@Override
public Integer getId() {
return getCategoryId();
}

@Override
public void setId(Integer id) {
setCategoryId(id);
}

public String getFilterQuery() {
return filterQuery;
}

public void setFilterQuery(String filterQuery) {
this.filterQuery = filterQuery;
}

public String getDisplayName() {
return displayName;
}

return displayName;
}
public void setDisplayName(String displayName) {
this.displayName = displayName;
}
this.displayName = displayName;
}

}
Expand Up @@ -116,9 +116,7 @@ public List<ChartListItem> getDocumentList(Integer patientId, String searchText,
}

query.addFilterQuery(String.format("person_id:%d", patientId));

addSelectedFilterQueriesToQuery(query, selectedCategories);

query.setStart(start);
query.setRows(length);
query.setHighlight(true).setHighlightSnippets(1).setHighlightSimplePre("<b>").setHighlightSimplePost("</b>");
Expand Down
17 changes: 17 additions & 0 deletions api/src/main/resources/liquibase.xml
Expand Up @@ -511,4 +511,21 @@
</column>
</addColumn>
</changeSet>

<changeSet id="CSM-95_02082015_1517" author="k-joseph">
<comment>Save allergies and appointments category filters
</comment>
<insert tableName="chartsearch_categories">
<column name="name" value="Allergies" />
<column name="filter_query" value="none" />
<column name="description" value="Category filter item for Patient Allergies" />
<column name="uuid" value="dc33c2c0-3910-11e5-a151-feff819cdc9f" />
</insert>
<insert tableName="chartsearch_categories">
<column name="name" value="Appointments" />
<column name="filter_query" value="none" />
<column name="description" value="Category filter item for Patient Appointments" />
<column name="uuid" value="dc33c630-3910-11e5-a151-feff819cdc9f" />
</insert>
</changeSet>
</databaseChangeLog>
Expand Up @@ -9,20 +9,23 @@
*/
package org.openmrs.module.chartsearch.fragment.controller;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import org.openmrs.module.chartsearch.ChartSearchCache;
import org.openmrs.module.chartsearch.GeneratingJson;
import org.openmrs.ui.framework.UiUtils;
import org.openmrs.ui.framework.fragment.FragmentModel;
import org.springframework.web.bind.annotation.RequestParam;

public class ManagePreferencesFragmentController {

ChartSearchCache cache = new ChartSearchCache();

public void controller(FragmentModel model) {
public void controller(FragmentModel model, UiUtils ui) {
model.put("preferences", GeneratingJson.generateRightMatchedPreferencesJSON().toString());
model.put("daemonPreferences", GeneratingJson.generateDaemonPreferencesJSON().toString());
model.put("categoryFilters", ui.escapeJs(GeneratingJson.generateAllCategoriesJSON().toString()));
}

public JSONObject saveOrUpdatePrefereces(@RequestParam("history") Boolean enableHistory,
Expand All @@ -31,10 +34,11 @@ public JSONObject saveOrUpdatePrefereces(@RequestParam("history") Boolean enable
@RequestParam("quickSearches") Boolean enableQuickSearches,
@RequestParam("defaultSearch") Boolean enableDefaultSearch,
@RequestParam("duplicateResults") Boolean enableDuplicateResults,
@RequestParam("multiFiltering") Boolean enableMultiFiltering) {
@RequestParam("multiFiltering") Boolean enableMultiFiltering,
@RequestParam("categories[]") JSONArray cats) {

return cache.saveOrUpdatePreferences(enableHistory, enableBookmarks, enableNotes, enableQuickSearches,
enableDefaultSearch, enableDuplicateResults, enableMultiFiltering);
enableDefaultSearch, enableDuplicateResults, enableMultiFiltering, cats);
}

public JSONObject restoreDefaultPrefereces() {
Expand Down
2 changes: 1 addition & 1 deletion omod/src/main/webapp/fragments/manageBookmarks.gsp
Expand Up @@ -36,7 +36,7 @@
});
jq("table").on('mouseenter', 'tr', function(event) {
if(event.delegateTarget.id !== "manage-notes-display-table" && event.delegateTarget.id !== "patient-search-results-table" && event.target.localName !== "th" && event.target.localName !== "input" && event.target.localName !== "label" && event.target.offsetParent.id !== "todays-history" && event.target.offsetParent.id !== "this-weeks-history" && event.target.offsetParent.id !== "this-month-history" && event.target.offsetParent.id !== "other-history" && event.target.offsetParent.id !== "this-year-history") {
if(event.delegateTarget.id !== "manage-notes-display-table" && event.delegateTarget.id !== "patient-search-results-table" && event.target.localName !== "th" && event.target.localName !== "input" && event.target.localName !== "label" && event.target.offsetParent.id !== "todays-history" && event.target.offsetParent.id !== "preferences-cats" && event.target.offsetParent.id !== "this-weeks-history" && event.target.offsetParent.id !== "this-month-history" && event.target.offsetParent.id !== "other-history" && event.target.offsetParent.id !== "this-year-history") {
jq(this).css("cursor", "pointer");
jq(this).css('background', '#F0EAEA');
}
Expand Down
34 changes: 23 additions & 11 deletions omod/src/main/webapp/fragments/managePreferences.gsp
Expand Up @@ -29,10 +29,13 @@
var prefs ='${preferences}';
var daemonPrefs = '${daemonPreferences}';
var preferences = JSON.parse(prefs);
var daemonPreferences = JSON.parse(daemonPrefs);//TODO use for restoring default preferences
var daemonPreferences = JSON.parse(daemonPrefs);//used for restoring default preferences
var catFilters = '${categoryFilters}';
var cats = JSON.parse(catFilters);
jq(document).ready(function() {
displayCategoriesForPreferences(cats);
updatePreferencesDisplay(preferences);
jq('#pref-summary-item-toggle').click(function(event) {
Expand All @@ -53,7 +56,11 @@
});
jq("#apply-and-save-prefs").click(function(event) {
submitPreferences(true);
if(checkIfCatDisplayNamesHaveRightNumberOfCharacters()) {
submitPreferences(true);
} else {
alert("Display Names must not exceed 12 characters!");
}
});
jq("#cancel-prefs-changing").click(function(event) {
Expand All @@ -71,6 +78,7 @@
jq("#enable_defaultsearch").prop('checked', prefs.enableDefaultSearch);
jq("#enable_multiplefiltering").prop('checked', prefs.enableMultipleFiltering);
jq("#enable_duplicateresults").prop('checked', prefs.enableDuplicateResults);
displayCategoriesForPreferences(prefs.categoryFilters);
}
//TODO add support for filters and note colors here
}
Expand All @@ -86,10 +94,19 @@
var multiFiltering = jq("#enable_multiplefiltering").prop('checked');
var url = "${ ui.actionLink('restoreDefaultPrefereces') }";
var data = {};
var categories = {};
jq(".pref-cat-names").each(function(event) {
var id = jq(this).attr("id");
var name = jq(this).val();
var json = { "uuid" : id, "name" : name };
categories.push(json);
});
if(isNotDefault === true) {
url = "${ ui.actionLink('saveOrUpdatePrefereces') }";
data = {"history" : history, "bookmarks" : bookmarks, "notes" : notes, "quickSearches" : quickSearches, "defaultSearch" : defaultSearch, "duplicateResults" : duplicateResults, "multiFiltering" : multiFiltering};
data = {"history" : history, "bookmarks" : bookmarks, "notes" : notes, "quickSearches" : quickSearches, "defaultSearch" : defaultSearch, "duplicateResults" : duplicateResults, "multiFiltering" : multiFiltering, "categories" : categories};
}
if(isNotDefault === false && (confirm("Are you sure you want to Restore Preferences?")) || isNotDefault === true) {
Expand Down Expand Up @@ -128,7 +145,8 @@
<div class="pref-summary-item" id="pref-summary-item-categoryfilter">Category Filters</div>
<div id="pref-summary-item-categoryfilter-details" class="pref-summary-item-details">
<br />
Details for cat filters
<b>NOTE:</b> Category Names are displayed by default, providing your preferred Display name will instead display your name than the default<br /><br />
<table id="preferences-cats"></table>
<br /><br />
</div>

Expand All @@ -141,10 +159,4 @@
<br />
<input type="button" value="Restore Default" id="restore-default-prefs" /> <input type="button" value="Apply and Save" id="apply-and-save-prefs" />
<input type="button" value="Cancel" id="cancel-prefs-changing" />
</div>






</div>

0 comments on commit a58ee0d

Please sign in to comment.