Skip to content

Commit 7bca6ca

Browse files
Ruhangamks-d
authored andcommitted
RA-1598: Pref. coding source configurable for <encounterDiagnoses*/>.
1 parent d6cd5b1 commit 7bca6ca

11 files changed

Lines changed: 101 additions & 14 deletions

File tree

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
12
/**
23
* This Source Code Form is subject to the terms of the Mozilla Public License,
34
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
@@ -68,6 +69,8 @@ public class EncounterDiagnosesElement implements HtmlGeneratorElement, FormSubm
6869

6970
private String diagnosisConceptSources;
7071

72+
private String preferredCodingSource;
73+
7174
private EmrApiProperties emrApiProperties;
7275

7376
private ConceptService conceptService;
@@ -139,6 +142,7 @@ public String generateHtml(FormEntryContext context) {
139142
fragmentConfig.put("formFieldName", "encounterDiagnoses");
140143
fragmentConfig.put("existingDiagnoses", existingDiagnoses);
141144
fragmentConfig.put("diagnosisSets", validateAndFormat(diagnosisSets));
145+
fragmentConfig.put("preferredCodingSource", preferredCodingSource);
142146
fragmentConfig.put("diagnosisConceptSources", StringUtils.deleteWhitespace(diagnosisConceptSources));
143147

144148
// add the prior diagnoses if requested
@@ -419,6 +423,14 @@ public String getDiagnosisConceptSources() {
419423
return diagnosisConceptSources;
420424
}
421425

426+
public void setPreferredCodingSource(String preferredCodingSource) {
427+
this.preferredCodingSource = preferredCodingSource;
428+
}
429+
430+
public String getPreferredCodingSource() {
431+
return preferredCodingSource;
432+
}
433+
422434
public void setUiUtils(UiUtils uiUtils) {
423435
this.uiUtils = uiUtils;
424436
}

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
12
/**
23
* This Source Code Form is subject to the terms of the Mozilla Public License,
34
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
@@ -65,6 +66,8 @@ public class EncounterDiagnosesElement implements HtmlGeneratorElement, FormSubm
6566
private UiUtils uiUtils;
6667
private String selectedDiagnosesTarget;
6768

69+
private String preferredCodingSource;
70+
6871
private EmrApiProperties emrApiProperties;
6972

7073
private ConceptService conceptService;
@@ -118,6 +121,7 @@ public String generateHtml(FormEntryContext context) {
118121
fragmentConfig.put("formFieldName", "encounterDiagnoses");
119122
fragmentConfig.put("existingDiagnoses", existingDiagnoses);
120123
fragmentConfig.put("diagnosisSets", validateAndFormat(diagnosisSets));
124+
fragmentConfig.put("preferredCodingSource", preferredCodingSource);
121125
fragmentConfig.put("diagnosisConceptSources", StringUtils.deleteWhitespace(diagnosisConceptSources));
122126

123127
// add the prior diagnoses if requested
@@ -368,6 +372,14 @@ public String getDiagnosisConceptSources() {
368372
return diagnosisConceptSources;
369373
}
370374

375+
public void setPreferredCodingSource(String preferredCodingSource) {
376+
this.preferredCodingSource = preferredCodingSource;
377+
}
378+
379+
public String getPreferredCodingSource() {
380+
return preferredCodingSource;
381+
}
382+
371383
public void setUiUtils(UiUtils uiUtils) {
372384
this.uiUtils = uiUtils;
373385
}

api/src/main/java/org/openmrs/module/coreapps/CoreAppsConstants.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,5 +53,8 @@ public class CoreAppsConstants {
5353

5454
// Condition list
5555
public static final String MANAGE_CONDITIONS_PRIVILEGE = "Task: Manage Condition Lists";
56+
5657
public static final String GLOBAL_PROPERTY_CONDITIONS_CRITERIA = "coreapps.conditionListClasses";
58+
59+
public static final String DEFAULT_CODING_SOURCE = "ICD-10-WHO";
5760
}

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
12
/**
23
* This Source Code Form is subject to the terms of the Mozilla Public License,
34
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
@@ -73,6 +74,8 @@ public class EncounterDiagnosesByObsElement implements HtmlGeneratorElement, For
7374

7475
private String diagnosisConceptSources;
7576

77+
private String preferredCodingSource;
78+
7679
private AdtService adtService;
7780

7881
private DispositionType dispositionTypeForPriorDiagnoses = null;
@@ -118,6 +121,7 @@ public String generateHtml(FormEntryContext context) {
118121
fragmentConfig.put("formFieldName", "encounterDiagnoses");
119122
fragmentConfig.put("existingDiagnoses", existingDiagnoses);
120123
fragmentConfig.put("diagnosisSets", validateAndFormat(diagnosisSets));
124+
fragmentConfig.put("preferredCodingSource", preferredCodingSource);
121125
fragmentConfig.put("diagnosisConceptSources", StringUtils.deleteWhitespace(diagnosisConceptSources));
122126

123127
// add the prior diagnoses if requested
@@ -367,6 +371,14 @@ public void setDiagnosisConceptSources(String diagnosisConceptSources) {
367371
public String getDiagnosisConceptSources() {
368372
return diagnosisConceptSources;
369373
}
374+
375+
public void setPreferredCodingSource(String preferredCodingSource) {
376+
this.preferredCodingSource = preferredCodingSource;
377+
}
378+
379+
public String getPreferredCodingSource() {
380+
return preferredCodingSource;
381+
}
370382

371383
public void setUiUtils(UiUtils uiUtils) {
372384
this.uiUtils = uiUtils;

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
12
package org.openmrs.module.coreapps.htmlformentry;
23

34
import org.openmrs.api.ConceptService;
@@ -77,6 +78,7 @@ protected String getSubstitution(FormEntrySession session, FormSubmissionControl
7778
element.setAdtService(adtService);
7879
element.setDiagnosisSets(attributes.get("diagnosisSets") != null ? attributes.get("diagnosisSets") : "");
7980
element.setDiagnosisConceptSources(attributes.get("diagnosisConceptSources") != null ? attributes.get("diagnosisConceptSources") : "");
81+
element.setPreferredCodingSource(attributes.get("preferredCodingSource") != null ? attributes.get("preferredCodingSource"): CoreAppsConstants.DEFAULT_CODING_SOURCE);
8082

8183
/**
8284
* Handle the attribute to specify loading any prior diagnoses from the most recent encounter with a specific disposition

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
12
package org.openmrs.module.coreapps.htmlformentry;
23

34
import org.openmrs.api.ConceptService;
@@ -18,9 +19,11 @@
1819
*
1920
* In enter/edit mode, includes the diagnosis/encounterDiagnoses fragment.
2021
* Currently this is hardcoded to use specific ids and names, and can only be included once on a form
22+
*
23+
* It supports specifying the concept source to use for obtaining concept code displayed on the UI
2124
*
2225
* Example usage:
23-
* <encounterDiagnoses required="true" selectedDiagnosesTarget="#encounter-diagnoses-target" includePriorDiagnosesFromMostRecentEncounterWithDispositionOfType="ADMIT"/>)
26+
* <encounterDiagnoses required="true" selectedDiagnosesTarget="#encounter-diagnoses-target" includePriorDiagnosesFromMostRecentEncounterWithDispositionOfType="ADMIT" preferredCodingSource="CIEL"/>)
2427
*
2528
*/
2629
public class EncounterDiagnosesTagHandler extends SubstitutionTagHandler {
@@ -77,6 +80,7 @@ protected String getSubstitution(FormEntrySession session, FormSubmissionControl
7780
element.setAdtService(adtService);
7881
element.setDiagnosisSets(attributes.get("diagnosisSets") != null ? attributes.get("diagnosisSets") : "");
7982
element.setDiagnosisConceptSources(attributes.get("diagnosisConceptSources") != null ? attributes.get("diagnosisConceptSources") : "");
83+
element.setPreferredCodingSource(attributes.get("preferredCodingSource") != null ? attributes.get("preferredCodingSource"): CoreAppsConstants.DEFAULT_CODING_SOURCE);
8084

8185
/**
8286
* Handle the attribute to specify loading any prior diagnoses from the most recent encounter with a specific disposition

api/src/main/resources/messages.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -511,7 +511,7 @@ coreapps.consult.primaryDiagnosis=Primary Diagnosis:
511511
coreapps.consult.primaryDiagnosis.notChosen=Not chosen
512512
coreapps.consult.secondaryDiagnoses=Secondary Diagnoses:
513513
coreapps.consult.secondaryDiagnoses.notChosen=None
514-
coreapps.consult.codedButNoCode=ICD code unknown
514+
coreapps.consult.codedButNoCode={0} code unknown
515515
coreapps.consult.nonCoded=Non-Coded
516516
coreapps.consult.synonymFor=a.k.a.
517517
coreapps.consult.successMessage=Saved Consult Note for {0}

api/src/test/java/org/openmrs/module/coreapps/htmlformentry/EncounterDiagnosesTagHandlerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,4 +109,4 @@ public boolean matches(Object o) {
109109
return matches;
110110
}
111111
}
112-
}
112+
}

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
{{ if (item.code) { }}
1414
{{- item.code }}
1515
{{ } else if (item.concept) { }}
16-
${ui.message("coreapps.consult.codedButNoCode")}
16+
${ui.message("coreapps.consult.codedButNoCode", config.preferredCodingSource)}
1717
{{ } else { }}
1818
${ui.message("coreapps.consult.nonCoded")}
1919
{{ } }}
@@ -36,7 +36,7 @@
3636
<span class="code">
3737
<span data-ng-show="d.diagnosis.code">{{ d.diagnosis.code }}</span>
3838
<span data-ng-show="!d.diagnosis.code && d.diagnosis.concept">
39-
${ui.message("coreapps.consult.codedButNoCode")}
39+
${ui.message("coreapps.consult.codedButNoCode", config.preferredCodingSource)}
4040
</span>
4141
<span data-ng-show="!d.diagnosis.code && !d.diagnosis.concept">
4242
${ui.message("coreapps.consult.nonCoded")}
@@ -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 }"/>
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 }"/>
7070

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

omod/src/main/webapp/resources/scripts/diagnoses/diagnoses.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
(function(diagnoses, $, _, undefined) {
22

3-
var codingSystemToUse = 'ICD-10-WHO';
4-
53
var mapTypeOrder = [ "SAME-AS", "NARROWER-THAN" ]
4+
5+
findPreferredCodingSource = function() {
6+
var preferredCodingSource = $("#diagnosis-search").attr("preferredcodingsource");
7+
return preferredCodingSource;
8+
};
69

7-
findConceptMapping = function(concept, sourceName) {
10+
findConceptMapping = function(concept) {
11+
var sourceName = findPreferredCodingSource();
812
var matches = _.filter(concept.conceptMappings, function(item) {
913
return item.conceptReferenceTerm.conceptSource.name == sourceName
1014
});
@@ -60,7 +64,7 @@
6064
matchedName: item.conceptName ? item.conceptName.name : item.concept.preferredName,
6165
preferredName: item.conceptName && item.conceptName.name != item.concept.preferredName ? item.concept.preferredName : null,
6266
nameIsPreferred: item.conceptName ? (item.conceptName === item.concept.preferredName) : true,
63-
code: findConceptMapping(item.concept, codingSystemToUse),
67+
code: findConceptMapping(item.concept),
6468
conceptId: item.concept.id,
6569
exactlyMatchesQuery: function(query) {
6670
query = emr.stripAccents(query.toLowerCase());

0 commit comments

Comments
 (0)