Skip to content

Commit 7d0bfdc

Browse files
committed
Merge branch 'master' of https://github.com/openmrs/openmrs-module-coreapps into gsoc
2 parents c5bdb39 + 7c48d7a commit 7d0bfdc

14 files changed

Lines changed: 262 additions & 69 deletions

File tree

api-2.2/src/main/java/org/openmrs/module/coreapps/htmlformentry/EncounterDiagnosesElement.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@ public class EncounterDiagnosesElement implements HtmlGeneratorElement, FormSubm
7070
private String diagnosisConceptSources;
7171

7272
private String preferredCodingSource;
73+
74+
private String diagnosisConceptClasses;
7375

7476
private EmrApiProperties emrApiProperties;
7577

@@ -141,9 +143,12 @@ public String generateHtml(FormEntryContext context) {
141143
Map<String, Object> fragmentConfig = new HashMap<String, Object>();
142144
fragmentConfig.put("formFieldName", "encounterDiagnoses");
143145
fragmentConfig.put("existingDiagnoses", existingDiagnoses);
144-
fragmentConfig.put("diagnosisSets", validateAndFormat(diagnosisSets));
146+
// Parse '0' to config attribute if specified such that null value can be used during the search in 'DiagnosesFragmentController' class
147+
fragmentConfig.put("diagnosisSets", "0".equals(diagnosisSets) ? "0" : validateAndFormat(diagnosisSets));
148+
145149
fragmentConfig.put("preferredCodingSource", preferredCodingSource);
146150
fragmentConfig.put("diagnosisConceptSources", StringUtils.deleteWhitespace(diagnosisConceptSources));
151+
fragmentConfig.put("diagnosisConceptClasses", StringUtils.deleteWhitespace(diagnosisConceptClasses));
147152

148153
// add the prior diagnoses if requested
149154
if (FormEntryContext.Mode.ENTER == context.getMode() && dispositionTypeForPriorDiagnoses != null) {
@@ -181,8 +186,8 @@ public String generateHtml(FormEntryContext context) {
181186
* @throws IllegalArgumentException if one or more sets cannot be fetched from the database.
182187
*/
183188
private String validateAndFormat(String diagnosisSetIds) {
184-
if ("".equals(diagnosisSetIds)) {
185-
return diagnosisSetIds;
189+
if (diagnosisSetIds == null) {
190+
return null;
186191
}
187192
List<Concept> concepts = new ArrayList<Concept>();
188193
for (StringTokenizer st = new StringTokenizer(diagnosisSetIds, ","); st.hasMoreTokens();) {
@@ -430,6 +435,14 @@ public void setPreferredCodingSource(String preferredCodingSource) {
430435
public String getPreferredCodingSource() {
431436
return preferredCodingSource;
432437
}
438+
439+
public void setDiagnosisConceptClasses(String diagnosisConceptClasses) {
440+
this.diagnosisConceptClasses = diagnosisConceptClasses;
441+
}
442+
443+
public String getDiagnosisConceptClasses() {
444+
return diagnosisConceptClasses;
445+
}
433446

434447
public void setUiUtils(UiUtils uiUtils) {
435448
this.uiUtils = uiUtils;

api-pre2.2/src/main/java/org/openmrs/module/coreapps/htmlformentry/EncounterDiagnosesElement.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@ public class EncounterDiagnosesElement implements HtmlGeneratorElement, FormSubm
7575
private String diagnosisSets;
7676

7777
private String diagnosisConceptSources;
78+
79+
private String diagnosisConceptClasses;
7880

7981
private AdtService adtService;
8082

@@ -120,9 +122,12 @@ public String generateHtml(FormEntryContext context) {
120122
Map<String, Object> fragmentConfig = new HashMap<String, Object>();
121123
fragmentConfig.put("formFieldName", "encounterDiagnoses");
122124
fragmentConfig.put("existingDiagnoses", existingDiagnoses);
123-
fragmentConfig.put("diagnosisSets", validateAndFormat(diagnosisSets));
125+
// Parse '0' to config attribute if specified such that null value can be used during the search in 'DiagnosesFragmentController' class
126+
fragmentConfig.put("diagnosisSets", "0".equals(diagnosisSets) ? "0" : validateAndFormat(diagnosisSets));
127+
124128
fragmentConfig.put("preferredCodingSource", preferredCodingSource);
125129
fragmentConfig.put("diagnosisConceptSources", StringUtils.deleteWhitespace(diagnosisConceptSources));
130+
fragmentConfig.put("diagnosisConceptClasses", StringUtils.deleteWhitespace(diagnosisConceptClasses));
126131

127132
// add the prior diagnoses if requested
128133
if (FormEntryContext.Mode.ENTER == context.getMode() && dispositionTypeForPriorDiagnoses != null) {
@@ -160,8 +165,8 @@ public String generateHtml(FormEntryContext context) {
160165
* @throws IllegalArgumentException if one or more sets cannot be fetched from the database.
161166
*/
162167
private String validateAndFormat(String diagnosisSetIds) {
163-
if (StringUtils.isEmpty(diagnosisSetIds)) {
164-
return "";
168+
if (diagnosisSetIds == null) {
169+
return null;
165170
}
166171
List<Concept> concepts = new ArrayList<Concept>();
167172
for (StringTokenizer st = new StringTokenizer(diagnosisSetIds, ","); st.hasMoreTokens();) {
@@ -379,6 +384,14 @@ public void setPreferredCodingSource(String preferredCodingSource) {
379384
public String getPreferredCodingSource() {
380385
return preferredCodingSource;
381386
}
387+
388+
public void setDiagnosisConceptClasses(String diagnosisConceptClasses) {
389+
this.diagnosisConceptClasses = diagnosisConceptClasses;
390+
}
391+
392+
public String getDiagnosisConceptClasses() {
393+
return diagnosisConceptClasses;
394+
}
382395

383396
public void setUiUtils(UiUtils uiUtils) {
384397
this.uiUtils = uiUtils;

api/src/main/java/org/openmrs/module/coreapps/htmlformentry/EncounterDiagnosesByObsElement.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@ public class EncounterDiagnosesByObsElement implements HtmlGeneratorElement, For
7575
private String diagnosisConceptSources;
7676

7777
private String preferredCodingSource;
78+
79+
private String diagnosisConceptClasses;
7880

7981
private AdtService adtService;
8082

@@ -120,9 +122,12 @@ public String generateHtml(FormEntryContext context) {
120122
Map<String, Object> fragmentConfig = new HashMap<String, Object>();
121123
fragmentConfig.put("formFieldName", "encounterDiagnoses");
122124
fragmentConfig.put("existingDiagnoses", existingDiagnoses);
123-
fragmentConfig.put("diagnosisSets", validateAndFormat(diagnosisSets));
125+
// Parse '0' to config attribute if specified such that null value can be used during the search in 'DiagnosesFragmentController' class
126+
fragmentConfig.put("diagnosisSets", "0".equals(diagnosisSets) ? "0" : validateAndFormat(diagnosisSets));
127+
124128
fragmentConfig.put("preferredCodingSource", preferredCodingSource);
125129
fragmentConfig.put("diagnosisConceptSources", StringUtils.deleteWhitespace(diagnosisConceptSources));
130+
fragmentConfig.put("diagnosisConceptClasses", StringUtils.deleteWhitespace(diagnosisConceptClasses));
126131

127132
// add the prior diagnoses if requested
128133
if (FormEntryContext.Mode.ENTER == context.getMode() && dispositionTypeForPriorDiagnoses != null) {
@@ -160,8 +165,8 @@ public String generateHtml(FormEntryContext context) {
160165
* @throws IllegalArgumentException if one or more sets cannot be fetched from the database.
161166
*/
162167
private String validateAndFormat(String diagnosisSetIds) {
163-
if ("".equals(diagnosisSetIds)) {
164-
return diagnosisSetIds;
168+
if (diagnosisSetIds == null) {
169+
return null;
165170
}
166171
List<Concept> concepts = new ArrayList<Concept>();
167172
for (StringTokenizer st = new StringTokenizer(diagnosisSetIds, ","); st.hasMoreTokens();) {
@@ -379,6 +384,14 @@ public void setPreferredCodingSource(String preferredCodingSource) {
379384
public String getPreferredCodingSource() {
380385
return preferredCodingSource;
381386
}
387+
388+
public void setDiagnosisConceptClasses(String diagnosisConceptClasses) {
389+
this.diagnosisConceptClasses = diagnosisConceptClasses;
390+
}
391+
392+
public String getDiagnosisConceptClasses() {
393+
return diagnosisConceptClasses;
394+
}
382395

383396
public void setUiUtils(UiUtils uiUtils) {
384397
this.uiUtils = uiUtils;

api/src/main/java/org/openmrs/module/coreapps/htmlformentry/EncounterDiagnosesByObsTagHandler.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,9 @@ protected String getSubstitution(FormEntrySession session, FormSubmissionControl
7676
element.setEmrApiProperties(emrApiProperties);
7777
element.setConceptService(conceptService);
7878
element.setAdtService(adtService);
79-
element.setDiagnosisSets(attributes.get("diagnosisSets") != null ? attributes.get("diagnosisSets") : "");
80-
element.setDiagnosisConceptSources(attributes.get("diagnosisConceptSources") != null ? attributes.get("diagnosisConceptSources") : "");
79+
element.setDiagnosisSets(attributes.get("diagnosisSets"));
80+
element.setDiagnosisConceptClasses(attributes.get("diagnosisConceptClasses"));
81+
element.setDiagnosisConceptSources(attributes.get("diagnosisConceptSources"));
8182
element.setPreferredCodingSource(attributes.get("preferredCodingSource") != null ? attributes.get("preferredCodingSource"): CoreAppsConstants.DEFAULT_CODING_SOURCE);
8283

8384
/**

api/src/main/java/org/openmrs/module/coreapps/htmlformentry/EncounterDiagnosesTagHandler.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,9 @@ protected String getSubstitution(FormEntrySession session, FormSubmissionControl
7878
element.setEmrApiProperties(emrApiProperties);
7979
element.setConceptService(conceptService);
8080
element.setAdtService(adtService);
81-
element.setDiagnosisSets(attributes.get("diagnosisSets") != null ? attributes.get("diagnosisSets") : "");
82-
element.setDiagnosisConceptSources(attributes.get("diagnosisConceptSources") != null ? attributes.get("diagnosisConceptSources") : "");
81+
element.setDiagnosisSets(attributes.get("diagnosisSets"));
82+
element.setDiagnosisConceptClasses(attributes.get("diagnosisConceptClasses"));
83+
element.setDiagnosisConceptSources(attributes.get("diagnosisConceptSources"));
8384
element.setPreferredCodingSource(attributes.get("preferredCodingSource") != null ? attributes.get("preferredCodingSource"): CoreAppsConstants.DEFAULT_CODING_SOURCE);
8485

8586
/**

omod/src/main/java/org/openmrs/module/coreapps/fragment/controller/DiagnosesFragmentController.java

Lines changed: 65 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,12 @@
1515
package org.openmrs.module.coreapps.fragment.controller;
1616

1717
import org.apache.commons.beanutils.PropertyUtils;
18+
import org.apache.commons.collections.CollectionUtils;
1819
import org.apache.commons.lang.StringUtils;
1920
import org.codehaus.jackson.JsonNode;
2021
import org.codehaus.jackson.map.ObjectMapper;
2122
import org.openmrs.Concept;
23+
import org.openmrs.ConceptClass;
2224
import org.openmrs.ConceptName;
2325
import org.openmrs.ConceptSearchResult;
2426
import org.openmrs.ConceptSource;
@@ -50,49 +52,92 @@
5052
*/
5153
public class DiagnosesFragmentController {
5254

55+
private final static String USE_NULL_VALUE = "0";
56+
57+
/**
58+
* Searches for diagnoses with names matching query in the specified 1) diagnosisSets, 2) diagnosisConceptSources and/or diagnosisConceptClasses
59+
* If diagnosisSets or diagnosisConceptSources attributes are missing, default values specided by emrApiProperties are used.
60+
* If '0' is specified for any of diagnosisSets or diagnosisConceptSources attributes, null is used for their corresponding values in the search.
61+
*
62+
* @param context
63+
* @param ui
64+
* @param emrApiProperties
65+
* @param emrConceptService
66+
* @param conceptService
67+
* @param query
68+
* @param diagnosisSetUuids
69+
* @param diagnosisConceptSources
70+
* @param diagnosisConceptClasses
71+
* @param start
72+
* @param size
73+
* @return diagnoses search results
74+
* @throws Exception
75+
*/
5376
public List<SimpleObject> search(UiSessionContext context,
5477
UiUtils ui,
5578
@SpringBean("emrApiProperties") EmrApiProperties emrApiProperties,
5679
@SpringBean("emrConceptService") EmrConceptService emrConceptService,
5780
@SpringBean("conceptService") ConceptService conceptService,
5881
@RequestParam("term") String query,
59-
@RequestParam(value = "diagnosisSets", defaultValue = "") String diagnosisSetUuids,
60-
@RequestParam(value = "diagnosisConceptSources", defaultValue = "") String diagnosisConceptSources,
82+
@RequestParam(value = "diagnosisSets", required = false) String diagnosisSetUuids,
83+
@RequestParam(value = "diagnosisConceptSources", required = false) String diagnosisConceptSources,
84+
@RequestParam(value = "diagnosisConceptClasses", required = false) String diagnosisConceptClasses,
6185
@RequestParam(value = "start", defaultValue = "0") Integer start,
6286
@RequestParam(value = "size", defaultValue = "50") Integer size) throws Exception {
6387

88+
List<ConceptClass> conceptClasses = new ArrayList<ConceptClass>();
89+
if (StringUtils.isNotEmpty(diagnosisConceptClasses)) {
90+
String [] conceptClassNames = diagnosisConceptClasses.split(",");
91+
for (String className : conceptClassNames) {
92+
ConceptClass conceptClass = conceptService.getConceptClassByName(className);
93+
if (conceptClass != null) {
94+
conceptClasses.add(conceptClass);
95+
}
96+
}
97+
}
98+
else {
99+
conceptClasses = null;
100+
}
101+
64102
Collection<Concept> diagnosisSets = new ArrayList<Concept>();
65103
if (StringUtils.isNotEmpty(diagnosisSetUuids)) {
66-
String [] setUuids = diagnosisSetUuids.split(",");
67-
for (String setUuid : setUuids) {
68-
Concept conceptSet = conceptService.getConceptByUuid(setUuid);
69-
if (conceptSet != null) {
70-
diagnosisSets.add(conceptSet);
71-
}
104+
if (USE_NULL_VALUE.equals(diagnosisSetUuids) ) {
105+
diagnosisSets = null;
106+
} else {
107+
String [] setUuids = diagnosisSetUuids.split(",");
108+
for (String setUuid : setUuids) {
109+
Concept conceptSet = conceptService.getConceptByUuid(setUuid);
110+
if (conceptSet != null) {
111+
diagnosisSets.add(conceptSet);
112+
}
113+
}
72114
}
73115
}
74-
else{
116+
else {
75117
diagnosisSets = emrApiProperties.getDiagnosisSets();
76118
}
77-
119+
78120
List<ConceptSource> sources = new ArrayList<ConceptSource>();
79-
80121
if (StringUtils.isNotEmpty(diagnosisConceptSources)) {
81-
String [] sourceNames = diagnosisConceptSources.split(",");
82-
for (String sourceName : sourceNames) {
83-
ConceptSource source = conceptService.getConceptSourceByName(sourceName);
84-
if (source != null) {
85-
sources.add(source);
86-
}
122+
if (USE_NULL_VALUE.equals(diagnosisConceptSources) ) {
123+
sources = null;
124+
} else {
125+
String [] sourceNames = diagnosisConceptSources.split(",");
126+
for (String sourceName : sourceNames) {
127+
ConceptSource source = conceptService.getConceptSourceByName(sourceName);
128+
if (source != null) {
129+
sources.add(source);
130+
}
131+
}
87132
}
88133
}
89-
else{
134+
else {
90135
sources = emrApiProperties.getConceptSourcesForDiagnosisSearch();
91136
}
92137

93138
Locale locale = context.getLocale();
94139

95-
List<ConceptSearchResult> hits = emrConceptService.conceptSearch(query, locale, null, diagnosisSets, sources, null);
140+
List<ConceptSearchResult> hits = emrConceptService.conceptSearch(query, locale, conceptClasses, diagnosisSets, sources, null);
96141
List<SimpleObject> ret = new ArrayList<SimpleObject>();
97142
for (ConceptSearchResult hit : hits) {
98143
ret.add(simplify(hit, ui, locale));
@@ -110,7 +155,7 @@ public List<SimpleObject> searchNonCoded(UiSessionContext context,
110155
@RequestParam(value = "start", defaultValue = "0") Integer start,
111156
@RequestParam(value = "size", defaultValue = "50") Integer size) throws Exception {
112157

113-
return search(context, ui, emrApiProperties, emrConceptService, conceptService, query, null, null, start, size);
158+
return search(context, ui, emrApiProperties, emrConceptService, conceptService, query, null, null, null, start, size);
114159
}
115160

116161
public FragmentActionResult codeDiagnosis(UiUtils ui,

omod/src/main/webapp/fragments/conditionlist/conditions.gsp

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,28 @@
3434
<div class="info-body">
3535
<ul ng-repeat="conditionHistory in conditionHistoryList">
3636
<li class="conditionStatus" ng-init="condition = conditionHistory.conditions[0]"
37-
ng-show="condition.status === 'ACTIVE'">
37+
ng-show="condition.status === 'ACTIVE' && condition.voided==false">
3838
<span ng-style="strikeThrough(condition.voided)">{{condition.concept.name}}</span>
3939
<i class="icon-remove delete-action" title="${ui.message("coreapps.delete")}"
40-
ng-click="removeCondition(condition)" ng-if="condition.voided===false && '${hasModifyConditionsPrivilege}'"></i>
40+
ng-click="conditionConfirmation(condition)" ng-if="condition.voided===false && '${hasModifyConditionsPrivilege}'"></i>
4141
<i class="icon-undo delete-action" title="${ui.message("conditionui.undo")}"
4242
ng-click="undoCondition(condition)" ng-if="condition.voided===true && '${hasModifyConditionsPrivilege}'"></i>
4343
</li>
4444
</ul>
4545
</div>
46+
47+
<div id="remove-condition-dialog" class="dialog" style="display: none; position: absolute; left: 35%; top:30%;">
48+
<div class="dialog-header">
49+
<h3>${ ui.message("coreapps.conditionui.removeCondition") }</h3>
50+
</div>
51+
<div class="dialog-content">
52+
<ul>
53+
<li class="info">
54+
<span id="removeConditionMessage">${ ui.message("coreapps.conditionui.removeCondition.message","")}</span>
55+
</li>
56+
</ul>
57+
<button class="confirm right" type="submit" ng-click="removeCondition()">${ ui.message("general.yes") }</button>
58+
<button class="cancel" ng-click="cancelDeletion()">${ ui.message("general.no") }</button>
59+
</div>
60+
</div>
4661
</div>

omod/src/main/webapp/fragments/diagnosis/encounterDiagnoses.gsp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@
6666

6767
<div id="diagnosis-search-container">
6868
<label for="diagnosis-search">${ ui.message("coreapps.consult.addDiagnosis") }</label>
69-
<input id="diagnosis-search" type="text" placeholder="${ ui.message("coreapps.consult.addDiagnosis.placeholder") }" autocomplete itemFormatter="autocomplete-render-item" diagnosisSets="${ config.diagnosisSets }" diagnosisConceptSources="${ config.diagnosisConceptSources }" preferredCodingSource="${ config.preferredCodingSource }"/>
69+
<input id="diagnosis-search" type="text" placeholder="${ ui.message("coreapps.consult.addDiagnosis.placeholder") }" autocomplete itemFormatter="autocomplete-render-item" preferredCodingSource="${ config.preferredCodingSource }" ${ config.diagnosisSets != null ? "diagnosisSets=\"" + config.diagnosisSets + "\"" : ""} ${ config.diagnosisConceptSources != null ? "diagnosisConceptSources=\"" + config.diagnosisConceptSources + "\"" : ""} ${ config.diagnosisConceptClasses != null ? "diagnosisConceptClasses=\"" + config.diagnosisConceptClasses + "\"" : ""}/>
7070

7171
<% if(jsForPrior.size > 0) { %>
7272
<button type="button" ng-click="addPriorDiagnoses()">${ ui.message("coreapps.consult.priorDiagnoses.add") }</button>

omod/src/main/webapp/pages/conditionlist/addCondition.gsp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,8 @@
6161
endDate : new Date(),
6262
])}
6363
</li>
64-
64+
&nbsp; &nbsp;
6565
<li id="status" class="group">
66-
<br/> <br/>
6766
<label>${ui.message('coreapps.stopDate.label')} </label>
6867
${ui.includeFragment("uicommons", "field/datetimepicker", [
6968
formFieldName: "conditionEndDate",
@@ -72,7 +71,7 @@
7271
endDate : new Date(),
7372
])}
7473
</li>
75-
74+
<br/> <br/>
7675
<div id="status" class="horizontal">
7776
<p>
7877
<input type="radio" id="status-1" class="condition-status" value="${ui.message('coreapps.conditionui.active.label')}" name="status" ng-model="condition.status" ng-change="showEndDate()"/>

0 commit comments

Comments
 (0)