sdc-qrf 0.3.34 → 0.3.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/converter/fceToFhir/questionnaire/processExtensions.d.ts.map +1 -1
- package/dist/converter/fceToFhir/questionnaire/processExtensions.js +13 -1
- package/dist/converter/fceToFhir/questionnaire/processExtensions.js.map +1 -1
- package/dist/converter/fhirToFce/questionnaire/processExtensions.d.ts +3 -1
- package/dist/converter/fhirToFce/questionnaire/processExtensions.d.ts.map +1 -1
- package/dist/converter/fhirToFce/questionnaire/processExtensions.js +17 -0
- package/dist/converter/fhirToFce/questionnaire/processExtensions.js.map +1 -1
- package/package.json +1 -1
- package/src/converter/__tests__/fce.test.ts +4 -0
- package/src/converter/__tests__/resources/questionnaire_fce/assemble_context.json +24 -0
- package/src/converter/__tests__/resources/questionnaire_fhir/assemble_context.json +39 -0
- package/src/converter/fceToFhir/questionnaire/processExtensions.ts +26 -2
- package/src/converter/fhirToFce/questionnaire/processExtensions.ts +27 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processExtensions.d.ts","sourceRoot":"","sources":["../../../../src/converter/fceToFhir/questionnaire/processExtensions.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,aAAa,IAAI,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE1F,OAAO,EAAE,aAAa,IAAI,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAGhF,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,gBAAgB,GAAG,iBAAiB,
|
|
1
|
+
{"version":3,"file":"processExtensions.d.ts","sourceRoot":"","sources":["../../../../src/converter/fceToFhir/questionnaire/processExtensions.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,aAAa,IAAI,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE1F,OAAO,EAAE,aAAa,IAAI,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAGhF,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,gBAAgB,GAAG,iBAAiB,CAyGpF"}
|
|
@@ -5,7 +5,7 @@ const tslib_1 = require("tslib");
|
|
|
5
5
|
const constants_1 = require("../../constants");
|
|
6
6
|
function processExtensions(questionnaire) {
|
|
7
7
|
var _a, _b, _c;
|
|
8
|
-
const { launchContext, mapping, sourceQueries, targetStructureMap, assembledFrom } = questionnaire, fhirQuestionnaire = tslib_1.__rest(questionnaire, ["launchContext", "mapping", "sourceQueries", "targetStructureMap", "assembledFrom"]);
|
|
8
|
+
const { launchContext, mapping, sourceQueries, targetStructureMap, assembledFrom, assembleContext, itemPopulationContext } = questionnaire, fhirQuestionnaire = tslib_1.__rest(questionnaire, ["launchContext", "mapping", "sourceQueries", "targetStructureMap", "assembledFrom", "assembleContext", "itemPopulationContext"]);
|
|
9
9
|
let extensions = [];
|
|
10
10
|
if (launchContext) {
|
|
11
11
|
for (const launchContextItem of launchContext) {
|
|
@@ -62,6 +62,18 @@ function processExtensions(questionnaire) {
|
|
|
62
62
|
valueCanonical: assembledFrom,
|
|
63
63
|
});
|
|
64
64
|
}
|
|
65
|
+
if (assembleContext) {
|
|
66
|
+
extensions = extensions.concat(assembleContext.map((assembleContextItem) => ({
|
|
67
|
+
url: 'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-assembleContext',
|
|
68
|
+
valueString: assembleContextItem,
|
|
69
|
+
})));
|
|
70
|
+
}
|
|
71
|
+
if (itemPopulationContext) {
|
|
72
|
+
extensions.push({
|
|
73
|
+
url: 'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-itemPopulationContext',
|
|
74
|
+
valueExpression: itemPopulationContext,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
65
77
|
if (extensions.length) {
|
|
66
78
|
fhirQuestionnaire.extension = ((_c = fhirQuestionnaire.extension) !== null && _c !== void 0 ? _c : []).concat(extensions);
|
|
67
79
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processExtensions.js","sourceRoot":"","sources":["../../../../src/converter/fceToFhir/questionnaire/processExtensions.ts"],"names":[],"mappings":";;AAKA,
|
|
1
|
+
{"version":3,"file":"processExtensions.js","sourceRoot":"","sources":["../../../../src/converter/fceToFhir/questionnaire/processExtensions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import { Questionnaire as FHIRQuestionnaire } from 'fhir/r4b';
|
|
1
|
+
import { Questionnaire as FHIRQuestionnaire, Expression as FHIRExpression } from 'fhir/r4b';
|
|
2
2
|
export declare function processExtensions(fhirQuestionnaire: FHIRQuestionnaire): {
|
|
3
3
|
launchContext?: any[];
|
|
4
4
|
mapping?: any[];
|
|
5
5
|
sourceQueries?: any[];
|
|
6
6
|
targetStructureMap?: any[];
|
|
7
7
|
assembledFrom?: any;
|
|
8
|
+
assembleContext?: string[];
|
|
9
|
+
itemPopulationContext?: FHIRExpression;
|
|
8
10
|
};
|
|
9
11
|
export declare function processLaunchContext(fhirQuestionnaire: FHIRQuestionnaire): any[] | undefined;
|
|
10
12
|
//# sourceMappingURL=processExtensions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processExtensions.d.ts","sourceRoot":"","sources":["../../../../src/converter/fhirToFce/questionnaire/processExtensions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,IAAI,iBAAiB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"processExtensions.d.ts","sourceRoot":"","sources":["../../../../src/converter/fhirToFce/questionnaire/processExtensions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,IAAI,iBAAiB,EAAE,UAAU,IAAI,cAAc,EAAE,MAAM,UAAU,CAAC;AAE5F,wBAAgB,iBAAiB,CAAC,iBAAiB,EAAE,iBAAiB,GAAG;IACrE,aAAa,CAAC,EAAE,GAAG,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;IAChB,aAAa,CAAC,EAAE,GAAG,EAAE,CAAC;IACtB,kBAAkB,CAAC,EAAE,GAAG,EAAE,CAAC;IAC3B,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,qBAAqB,CAAC,EAAE,cAAc,CAAC;CAC1C,CAkBA;AAED,wBAAgB,oBAAoB,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,GAAG,EAAE,GAAG,SAAS,CA2C5F"}
|
|
@@ -9,12 +9,16 @@ function processExtensions(fhirQuestionnaire) {
|
|
|
9
9
|
const sourceQueries = processSourceQueries(fhirQuestionnaire);
|
|
10
10
|
const targetStructureMap = processTargetStructureMap(fhirQuestionnaire);
|
|
11
11
|
const assembledFrom = processAssembledFrom(fhirQuestionnaire);
|
|
12
|
+
const assembleContext = processAssembleContext(fhirQuestionnaire);
|
|
13
|
+
const itemPopulationContext = processItemPopulationContext(fhirQuestionnaire);
|
|
12
14
|
return {
|
|
13
15
|
launchContext: (launchContext === null || launchContext === void 0 ? void 0 : launchContext.length) ? launchContext : undefined,
|
|
14
16
|
mapping: (mapping === null || mapping === void 0 ? void 0 : mapping.length) ? mapping : undefined,
|
|
15
17
|
sourceQueries: (sourceQueries === null || sourceQueries === void 0 ? void 0 : sourceQueries.length) ? sourceQueries : undefined,
|
|
16
18
|
targetStructureMap: (targetStructureMap === null || targetStructureMap === void 0 ? void 0 : targetStructureMap.length) ? targetStructureMap : undefined,
|
|
17
19
|
assembledFrom: assembledFrom ? assembledFrom : undefined,
|
|
20
|
+
assembleContext: assembleContext.length ? assembleContext : undefined,
|
|
21
|
+
itemPopulationContext: itemPopulationContext ? itemPopulationContext : undefined,
|
|
18
22
|
};
|
|
19
23
|
}
|
|
20
24
|
function processLaunchContext(fhirQuestionnaire) {
|
|
@@ -93,4 +97,17 @@ function processAssembledFrom(fhirQuestionnaire) {
|
|
|
93
97
|
}
|
|
94
98
|
return extension.valueCanonical;
|
|
95
99
|
}
|
|
100
|
+
function processAssembleContext(fhirQuestionnaire) {
|
|
101
|
+
var _a;
|
|
102
|
+
const extensions = (_a = fhirQuestionnaire.extension) === null || _a === void 0 ? void 0 : _a.filter((ext) => ext.url === 'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-assembleContext');
|
|
103
|
+
return (extensions !== null && extensions !== void 0 ? extensions : []).map((extension) => extension.valueString);
|
|
104
|
+
}
|
|
105
|
+
function processItemPopulationContext(fhirQuestionnaire) {
|
|
106
|
+
var _a;
|
|
107
|
+
const extension = (_a = fhirQuestionnaire.extension) === null || _a === void 0 ? void 0 : _a.find((ext) => ext.url === 'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-itemPopulationContext');
|
|
108
|
+
if (!extension) {
|
|
109
|
+
return undefined;
|
|
110
|
+
}
|
|
111
|
+
return extension.valueExpression;
|
|
112
|
+
}
|
|
96
113
|
//# sourceMappingURL=processExtensions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processExtensions.js","sourceRoot":"","sources":["../../../../src/converter/fhirToFce/questionnaire/processExtensions.ts"],"names":[],"mappings":";;AAIA,
|
|
1
|
+
{"version":3,"file":"processExtensions.js","sourceRoot":"","sources":["../../../../src/converter/fhirToFce/questionnaire/processExtensions.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -39,6 +39,7 @@ import fce_with_attachment_questionnaire from './resources/questionnaire_fce/wit
|
|
|
39
39
|
import fce_mixed_fce_with_extensions from './resources/questionnaire_fce/mixed-fce-with-extensions.json';
|
|
40
40
|
import fce_unknown_extensions from './resources/questionnaire_fce/unknown-extensions.json';
|
|
41
41
|
import fce_occurs from './resources/questionnaire_fce/occurs.json';
|
|
42
|
+
import fce_assemble_context from './resources/questionnaire_fce/assemble_context.json';
|
|
42
43
|
// fhir questionnaire
|
|
43
44
|
import fhir_allergies from './resources/questionnaire_fhir/allergies.json';
|
|
44
45
|
import fhir_beverages from './resources/questionnaire_fhir/beverages.json';
|
|
@@ -72,6 +73,7 @@ import fhir_with_attachment_questionnaire from './resources/questionnaire_fhir/w
|
|
|
72
73
|
import fhir_mixed_fce_with_extensions from './resources/questionnaire_fhir/mixed-fce-with-extensions.json';
|
|
73
74
|
import fhir_unknown_extensions from './resources/questionnaire_fhir/unknown-extensions.json';
|
|
74
75
|
import fhir_occurs from './resources/questionnaire_fhir/occurs.json';
|
|
76
|
+
import fhir_assemble_context from './resources/questionnaire_fhir/assemble_context.json';
|
|
75
77
|
// fce questionnaire response
|
|
76
78
|
import fce_allergies_inprogress_qr from './resources/questionnaire_response_fce/allergies_inprogress.json';
|
|
77
79
|
import fce_cardiology_qr from './resources/questionnaire_response_fce/cardiology.json';
|
|
@@ -145,6 +147,7 @@ describe('Questionanire and QuestionnaireResponses transformation', () => {
|
|
|
145
147
|
// ['mixed-fce-with-extensions', fhir_mixed_fce_with_extensions, fce_mixed_fce_with_extensions],
|
|
146
148
|
['unknown-extensions', fhir_unknown_extensions, fce_unknown_extensions],
|
|
147
149
|
['occurs', fhir_occurs, fce_occurs],
|
|
150
|
+
['assemble-context', fhir_assemble_context, fce_assemble_context],
|
|
148
151
|
])('Each FHIR Questionnaire should convert to FCE %s', async (_, fhir_questionnaire, fce_questionnaire) => {
|
|
149
152
|
expect(toFirstClassExtension(fhir_questionnaire as FHIRQuestionnaire)).toStrictEqual(fce_questionnaire);
|
|
150
153
|
});
|
|
@@ -186,6 +189,7 @@ describe('Questionanire and QuestionnaireResponses transformation', () => {
|
|
|
186
189
|
['mixed-fce-with-extensions', fce_mixed_fce_with_extensions, fhir_mixed_fce_with_extensions],
|
|
187
190
|
['unknown-extensions', fce_unknown_extensions, fhir_unknown_extensions],
|
|
188
191
|
['occurs', fce_occurs, fhir_occurs],
|
|
192
|
+
['assemble-context', fce_assemble_context, fhir_assemble_context],
|
|
189
193
|
])('Each FCE Questionnaire should convert to FHIR %s', async (_, fce_questionnaire, fhir_questionnaire) => {
|
|
190
194
|
expect(sortExtensionsList(fromFirstClassExtension(fce_questionnaire as FCEQuestionnaire))).toStrictEqual(
|
|
191
195
|
sortExtensionsList(fhir_questionnaire),
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"resourceType": "Questionnaire",
|
|
3
|
+
"id": "assemble_context",
|
|
4
|
+
"meta": {
|
|
5
|
+
"profile": ["https://emr-core.beda.software/StructureDefinition/fhir-emr-questionnaire"]
|
|
6
|
+
},
|
|
7
|
+
"status": "active",
|
|
8
|
+
"assembledFrom": "assemble_context",
|
|
9
|
+
"assembleContext": ["prefix1", "prefix2"],
|
|
10
|
+
"itemPopulationContext": {
|
|
11
|
+
"language": "text/fhirpath",
|
|
12
|
+
"expression": "%LaunchPatient.name"
|
|
13
|
+
},
|
|
14
|
+
"item": [
|
|
15
|
+
{
|
|
16
|
+
"type": "string",
|
|
17
|
+
"linkId": "{{%prefix1}}test"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"type": "string",
|
|
21
|
+
"linkId": "{{%prefix2}}test"
|
|
22
|
+
}
|
|
23
|
+
]
|
|
24
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"item": [
|
|
3
|
+
{
|
|
4
|
+
"type": "string",
|
|
5
|
+
"linkId": "{{%prefix1}}test"
|
|
6
|
+
},
|
|
7
|
+
{
|
|
8
|
+
"type": "string",
|
|
9
|
+
"linkId": "{{%prefix2}}test"
|
|
10
|
+
}
|
|
11
|
+
],
|
|
12
|
+
"meta": {
|
|
13
|
+
"profile": ["https://emr-core.beda.software/StructureDefinition/fhir-emr-questionnaire"]
|
|
14
|
+
},
|
|
15
|
+
"extension": [
|
|
16
|
+
{
|
|
17
|
+
"url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-assembledFrom",
|
|
18
|
+
"valueCanonical": "assemble_context"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-assembleContext",
|
|
22
|
+
"valueString": "prefix1"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-assembleContext",
|
|
26
|
+
"valueString": "prefix2"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-itemPopulationContext",
|
|
30
|
+
"valueExpression": {
|
|
31
|
+
"language": "text/fhirpath",
|
|
32
|
+
"expression": "%LaunchPatient.name"
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
],
|
|
36
|
+
"status": "active",
|
|
37
|
+
"id": "assemble_context",
|
|
38
|
+
"resourceType": "Questionnaire"
|
|
39
|
+
}
|
|
@@ -4,8 +4,16 @@ import { Questionnaire as FCEQuestionnaire } from '@beda.software/aidbox-types';
|
|
|
4
4
|
import { legacyMappingExtensionUrl, legacyQuestionnaireProfileUrl, mappingExtensionUrl } from '../../constants';
|
|
5
5
|
|
|
6
6
|
export function processExtensions(questionnaire: FCEQuestionnaire): FHIRQuestionnaire {
|
|
7
|
-
const {
|
|
8
|
-
|
|
7
|
+
const {
|
|
8
|
+
launchContext,
|
|
9
|
+
mapping,
|
|
10
|
+
sourceQueries,
|
|
11
|
+
targetStructureMap,
|
|
12
|
+
assembledFrom,
|
|
13
|
+
assembleContext,
|
|
14
|
+
itemPopulationContext,
|
|
15
|
+
...fhirQuestionnaire
|
|
16
|
+
} = questionnaire;
|
|
9
17
|
|
|
10
18
|
let extensions: FHIRExtension[] = [];
|
|
11
19
|
|
|
@@ -79,6 +87,22 @@ export function processExtensions(questionnaire: FCEQuestionnaire): FHIRQuestion
|
|
|
79
87
|
});
|
|
80
88
|
}
|
|
81
89
|
|
|
90
|
+
if (assembleContext) {
|
|
91
|
+
extensions = extensions.concat(
|
|
92
|
+
assembleContext.map((assembleContextItem) => ({
|
|
93
|
+
url: 'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-assembleContext',
|
|
94
|
+
valueString: assembleContextItem,
|
|
95
|
+
})),
|
|
96
|
+
);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
if (itemPopulationContext) {
|
|
100
|
+
extensions.push({
|
|
101
|
+
url: 'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-itemPopulationContext',
|
|
102
|
+
valueExpression: itemPopulationContext,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
|
|
82
106
|
if (extensions.length) {
|
|
83
107
|
fhirQuestionnaire.extension = (fhirQuestionnaire.extension ?? []).concat(extensions);
|
|
84
108
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { canonical } from '@beda.software/aidbox-types';
|
|
2
2
|
import { legacyMappingExtensionUrl, mappingExtensionUrl } from '../../constants';
|
|
3
|
-
import { Questionnaire as FHIRQuestionnaire } from 'fhir/r4b';
|
|
3
|
+
import { Questionnaire as FHIRQuestionnaire, Expression as FHIRExpression } from 'fhir/r4b';
|
|
4
4
|
|
|
5
5
|
export function processExtensions(fhirQuestionnaire: FHIRQuestionnaire): {
|
|
6
6
|
launchContext?: any[];
|
|
@@ -8,12 +8,16 @@ export function processExtensions(fhirQuestionnaire: FHIRQuestionnaire): {
|
|
|
8
8
|
sourceQueries?: any[];
|
|
9
9
|
targetStructureMap?: any[];
|
|
10
10
|
assembledFrom?: any;
|
|
11
|
+
assembleContext?: string[];
|
|
12
|
+
itemPopulationContext?: FHIRExpression;
|
|
11
13
|
} {
|
|
12
14
|
const launchContext = processLaunchContext(fhirQuestionnaire);
|
|
13
15
|
const mapping = processMapping(fhirQuestionnaire);
|
|
14
16
|
const sourceQueries = processSourceQueries(fhirQuestionnaire);
|
|
15
17
|
const targetStructureMap = processTargetStructureMap(fhirQuestionnaire);
|
|
16
18
|
const assembledFrom = processAssembledFrom(fhirQuestionnaire);
|
|
19
|
+
const assembleContext = processAssembleContext(fhirQuestionnaire);
|
|
20
|
+
const itemPopulationContext = processItemPopulationContext(fhirQuestionnaire);
|
|
17
21
|
|
|
18
22
|
return {
|
|
19
23
|
launchContext: launchContext?.length ? launchContext : undefined,
|
|
@@ -21,6 +25,8 @@ export function processExtensions(fhirQuestionnaire: FHIRQuestionnaire): {
|
|
|
21
25
|
sourceQueries: sourceQueries?.length ? sourceQueries : undefined,
|
|
22
26
|
targetStructureMap: targetStructureMap?.length ? targetStructureMap : undefined,
|
|
23
27
|
assembledFrom: assembledFrom ? assembledFrom : undefined,
|
|
28
|
+
assembleContext: assembleContext.length ? assembleContext : undefined,
|
|
29
|
+
itemPopulationContext: itemPopulationContext ? itemPopulationContext : undefined,
|
|
24
30
|
};
|
|
25
31
|
}
|
|
26
32
|
|
|
@@ -118,3 +124,23 @@ function processAssembledFrom(fhirQuestionnaire: FHIRQuestionnaire): canonical |
|
|
|
118
124
|
|
|
119
125
|
return extension.valueCanonical;
|
|
120
126
|
}
|
|
127
|
+
|
|
128
|
+
function processAssembleContext(fhirQuestionnaire: FHIRQuestionnaire): string[] {
|
|
129
|
+
const extensions = fhirQuestionnaire.extension?.filter(
|
|
130
|
+
(ext) => ext.url === 'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-assembleContext',
|
|
131
|
+
);
|
|
132
|
+
|
|
133
|
+
return (extensions ?? []).map((extension) => extension.valueString!);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
function processItemPopulationContext(fhirQuestionnaire: FHIRQuestionnaire): FHIRExpression | undefined {
|
|
137
|
+
const extension = fhirQuestionnaire.extension?.find(
|
|
138
|
+
(ext) => ext.url === 'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-itemPopulationContext',
|
|
139
|
+
);
|
|
140
|
+
|
|
141
|
+
if (!extension) {
|
|
142
|
+
return undefined;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
return extension.valueExpression;
|
|
146
|
+
}
|