Skip to content

Commit 0776662

Browse files
authored
Merge pull request #745 from FluxNotes/clq_api_fixes
Clq api fixes
2 parents 2449f2a + 4c143a7 commit 0776662

File tree

3 files changed

+1010
-17
lines changed

3 files changed

+1010
-17
lines changed

src/__test__/backend/mcode/services/filter.json

+6-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
{
22
"demographics": {
33
"gender": {
4-
"codeSystemName": "AdministrativeGender",
5-
"codeSystem": "2.16.840.1.113883.4.642.2.1",
6-
"code": "female"
4+
"codeSystem": "SNOMEDCT",
5+
"displayName": "Female",
6+
"code": "703118005"
77
},
88
"age": {
99
"min": 42,
@@ -16,8 +16,10 @@
1616
"race": {
1717
"codeSystemName": "HL7 v3 Code System Race",
1818
"codeSystem": "2.16.840.1.113883.5.104",
19-
"code": "white"
19+
"displayName": "White",
20+
"code" : "2106-3"
2021
}
22+
2123
},
2224
"diagnosis" : { "stage": "IA", "grade": 3, "tnm": { "t": "T1c", "m": "M0",
2325
"n" : "N0" } },

src/mcode-pilot/services/outcomes/CLQOutcomesService.js

+62-13
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ import request from "request";
22
import IOutcomesService from './IOutcomesService';
33
import _ from 'lodash';
44

5+
import find_race_code from './race_codes';
6+
57
export default class CLQOutcomesService extends IOutcomesService {
68
constructor(params) {
79
super();
@@ -11,20 +13,60 @@ export default class CLQOutcomesService extends IOutcomesService {
1113
this.filters = params.filters;
1214
}
1315

16+
_genderMapping(gender) {
17+
const lowered = gender ? _.toLower(gender) : null;
18+
let code = 'UNK';
19+
let display = 'UNKNOWN';
20+
if (lowered === "female" || lowered === 'f') {
21+
code = '703118005';
22+
display = 'Female';
23+
} else if (lowered === 'male' || lowered === 'm') {
24+
code = '703117000';
25+
display = 'Male';
26+
}
27+
return {
28+
code: code,
29+
displayName: display,
30+
codeSystem: 'SNOMEDCT'
31+
};
32+
}
33+
34+
__raceCodeMapping(race) {
35+
let code = find_race_code(race);
36+
if (code) {
37+
// if the value is one of the codes from the code system make sure it is one that clq supports
38+
if (!['2028-9', '2106-3', '2054-5', '2131-1'].includes(code.code)) {
39+
code = {
40+
code: '2131-1',
41+
text: 'Other Race'
42+
};
43+
}
44+
return {
45+
"codeSystemName": "HL7 v3 Code System Race",
46+
"codeSystem": "2.16.840.1.113883.5.104",
47+
"code": code.code,
48+
"displayName": code.text
49+
};
50+
}
51+
52+
return {
53+
"codeSystemName": "HL7 v3 Code System Race",
54+
"codeSystem": "2.16.840.1.113883.5.104",
55+
"code": 'UNK'
56+
};
57+
58+
}
1459
/* Build the CLQ demograpchics filter section based off of the Compass filter criteria
1560
*/
1661
buildDemographicsFilter(activeFilterValues) {
1762
const filter = {};
1863
const gender = activeFilterValues["shr.core.BirthSex"];
1964
const race = activeFilterValues["shr.core.Race"];
65+
const ethnicity = activeFilterValues["shr.core.Ethnicity"];
2066
const age = activeFilterValues["shr.core.DateOfBirth"];
2167
const age_at_diagnosis = activeFilterValues["shr.core.DateOfDiagnosis"];
2268
if (gender) {
23-
filter.gender = {
24-
codeSystemName: "AdministrativeGender",
25-
codeSystem: "2.16.840.1.113883.4.642.2.1",
26-
code: gender.value
27-
};
69+
filter.gender = this._genderMapping(gender.value);
2870
}
2971
if (age) {
3072
filter.age = {
@@ -39,10 +81,15 @@ export default class CLQOutcomesService extends IOutcomesService {
3981
};
4082
}
4183
if (race) {
42-
filter.race = {
43-
"codeSystemName": "HL7 v3 Code System Race",
44-
"codeSystem": "2.16.840.1.113883.5.104",
45-
"code": race.value
84+
filter.race = this.__raceCodeMapping(race.value);
85+
}
86+
87+
if (ethnicity) {
88+
const ethCode = ethnicity.value;
89+
filter.ethnicity = {
90+
"codeSystemName": "HL7 v3 Code System Ethnicity",
91+
"codeSystem": "2.16.840.1.113883.5.50",
92+
"code": ethCode
4693
};
4794
}
4895
return filter;
@@ -91,9 +138,9 @@ export default class CLQOutcomesService extends IOutcomesService {
91138
const code = option.reference.receptorTypeCodeableConcept;
92139
const value = option.value;
93140
filter.push({
94-
code: code.codeValue.code,
95-
codeSystem: code.codeSystem.uri,
96-
displayName: code.displayText.string,
141+
code: code.codeValue.value,
142+
codeSystem: code.codeSystem.value,
143+
displayName: code.displayText.value,
97144
value: _.startCase(_.toLower(value))
98145
});
99146
}
@@ -116,7 +163,9 @@ export default class CLQOutcomesService extends IOutcomesService {
116163
request({
117164
url: this.serviceUrl,
118165
method: "POST",
119-
headers: {'Authorization': this.apiKey},
166+
headers: {
167+
'Authorization': this.apiKey
168+
},
120169
json: filter
121170
}, (err, _response, data) => {
122171
if (err) {

0 commit comments

Comments
 (0)