sdc-qrf 0.3.6 → 0.3.8
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/lib/components.js +3 -7
- package/lib/components.js.map +1 -1
- package/lib/converter/index.d.ts +1 -0
- package/lib/converter/index.js +1 -0
- package/lib/converter/index.js.map +1 -1
- package/lib/converter/utils.d.ts +1 -0
- package/lib/converter/utils.js +29 -0
- package/lib/converter/utils.js.map +1 -0
- package/package.json +1 -1
- package/src/components.tsx +4 -15
- package/src/converter/__tests__/fce.test.ts +1 -24
- package/src/converter/index.ts +1 -0
- package/src/converter/utils.ts +24 -0
package/lib/components.js
CHANGED
|
@@ -29,7 +29,6 @@ function QuestionItems(props) {
|
|
|
29
29
|
}) }));
|
|
30
30
|
}
|
|
31
31
|
exports.QuestionItems = QuestionItems;
|
|
32
|
-
const cqfExpressionExtensionUrl = 'http://hl7.org/fhir/StructureDefinition/cqf-expression';
|
|
33
32
|
function QuestionItem(props) {
|
|
34
33
|
const { questionItem: initialQuestionItem, context: initialContext, parentPath } = props;
|
|
35
34
|
const { questionItemComponents, customWidgets, groupItemComponent, itemControlQuestionItemComponents, itemControlGroupItemComponents, } = (0, react_1.useContext)(context_1.QRFContext);
|
|
@@ -77,24 +76,21 @@ function QuestionItem(props) {
|
|
|
77
76
|
(0, react_1.useEffect)(() => {
|
|
78
77
|
var _a, _b, _c;
|
|
79
78
|
if (itemContext && _text) {
|
|
80
|
-
const
|
|
81
|
-
const cqfExpression = extension === null || extension === void 0 ? void 0 : extension.valueExpression;
|
|
79
|
+
const cqfExpression = _text.cqfExpression;
|
|
82
80
|
const calculatedValue = (_a = evaluateQuestionItemExpression(linkId, '_text.cqfExpression', itemContext, cqfExpression)[0]) !== null && _a !== void 0 ? _a : initialQuestionItem.text;
|
|
83
81
|
if ((prevQuestionItem === null || prevQuestionItem === void 0 ? void 0 : prevQuestionItem.text) !== calculatedValue) {
|
|
84
82
|
setQuestionItem((qi) => (Object.assign(Object.assign({}, qi), { text: calculatedValue })));
|
|
85
83
|
}
|
|
86
84
|
}
|
|
87
85
|
if (itemContext && _readOnly) {
|
|
88
|
-
const
|
|
89
|
-
const cqfExpression = extension === null || extension === void 0 ? void 0 : extension.valueExpression;
|
|
86
|
+
const cqfExpression = _readOnly.cqfExpression;
|
|
90
87
|
const calculatedValue = (_b = evaluateQuestionItemExpression(linkId, '_readOnly.cqfExpression', itemContext, cqfExpression)[0]) !== null && _b !== void 0 ? _b : initialQuestionItem.readOnly;
|
|
91
88
|
if ((prevQuestionItem === null || prevQuestionItem === void 0 ? void 0 : prevQuestionItem.readOnly) !== calculatedValue) {
|
|
92
89
|
setQuestionItem((qi) => (Object.assign(Object.assign({}, qi), { readOnly: calculatedValue })));
|
|
93
90
|
}
|
|
94
91
|
}
|
|
95
92
|
if (itemContext && _required) {
|
|
96
|
-
const
|
|
97
|
-
const cqfExpression = extension === null || extension === void 0 ? void 0 : extension.valueExpression;
|
|
93
|
+
const cqfExpression = _required.cqfExpression;
|
|
98
94
|
const calculatedValue = (_c = evaluateQuestionItemExpression(linkId, '_required.cqfExpression', itemContext, cqfExpression)[0]) !== null && _c !== void 0 ? _c : initialQuestionItem.required;
|
|
99
95
|
if ((prevQuestionItem === null || prevQuestionItem === void 0 ? void 0 : prevQuestionItem.required) !== calculatedValue) {
|
|
100
96
|
setQuestionItem((qi) => (Object.assign(Object.assign({}, qi), { required: calculatedValue })));
|
package/lib/components.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components.js","sourceRoot":"","sources":["../src/components.tsx"],"names":[],"mappings":";;;;;AACA,gEAAgC;AAChC,4DAAuB;AACvB,qEAAqC;AACrC,uDAA4F;AAI5F,wBAAwD;AACxD,uCAAuC;AAQvC,
|
|
1
|
+
{"version":3,"file":"components.js","sourceRoot":"","sources":["../src/components.tsx"],"names":[],"mappings":"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"}
|
package/lib/converter/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { Extension as FCEExtension, QuestionnaireItem as FCEQuestionnaireItem, I
|
|
|
3
3
|
import { fromFirstClassExtension } from './fceToFhir';
|
|
4
4
|
import { toFirstClassExtension } from './fhirToFce';
|
|
5
5
|
import { processLaunchContext as processLaunchContextToFce } from './fhirToFce/questionnaire/processExtensions';
|
|
6
|
+
export * from './utils';
|
|
6
7
|
export declare function convertFromFHIRExtension(extension: FHIRExtension): Partial<FCEQuestionnaireItem> | undefined;
|
|
7
8
|
export declare function convertToFHIRExtension(item: FCEQuestionnaireItem): FHIRExtension[];
|
|
8
9
|
export declare function extractExtension(extension: FCEExtension[] | undefined, url: 'ex:createdAt'): string | undefined;
|
package/lib/converter/index.js
CHANGED
|
@@ -9,6 +9,7 @@ const fhirToFce_1 = require("./fhirToFce");
|
|
|
9
9
|
Object.defineProperty(exports, "toFirstClassExtension", { enumerable: true, get: function () { return fhirToFce_1.toFirstClassExtension; } });
|
|
10
10
|
const processExtensions_1 = require("./fhirToFce/questionnaire/processExtensions");
|
|
11
11
|
Object.defineProperty(exports, "processLaunchContextToFce", { enumerable: true, get: function () { return processExtensions_1.processLaunchContext; } });
|
|
12
|
+
tslib_1.__exportStar(require("./utils"), exports);
|
|
12
13
|
function convertFromFHIRExtension(extension) {
|
|
13
14
|
const identifier = extension.url;
|
|
14
15
|
const transformer = extensions_1.extensionTransformers[identifier];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/converter/index.ts"],"names":[],"mappings":";;;;AAYA,6CAA0E;AAC1E,2CAAsD;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/converter/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function sortExtensionsList(object: any): any;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sortExtensionsList = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const cloneDeep_1 = tslib_1.__importDefault(require("lodash/cloneDeep"));
|
|
6
|
+
function sortExtensionsRecursive(object) {
|
|
7
|
+
if (typeof object !== 'object' || object === null) {
|
|
8
|
+
return object;
|
|
9
|
+
}
|
|
10
|
+
for (const [key, property] of Object.entries(object)) {
|
|
11
|
+
if (Array.isArray(property)) {
|
|
12
|
+
if (key === 'extension') {
|
|
13
|
+
property.sort((a, b) => (a.url === b.url ? 0 : a.url < b.url ? -1 : 1));
|
|
14
|
+
}
|
|
15
|
+
for (const nestedProperty of property) {
|
|
16
|
+
sortExtensionsRecursive(nestedProperty);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
sortExtensionsRecursive(property);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return object;
|
|
24
|
+
}
|
|
25
|
+
function sortExtensionsList(object) {
|
|
26
|
+
return sortExtensionsRecursive((0, cloneDeep_1.default)(object));
|
|
27
|
+
}
|
|
28
|
+
exports.sortExtensionsList = sortExtensionsList;
|
|
29
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/converter/utils.ts"],"names":[],"mappings":";;;;AAAA,yEAAyC;AAEzC,SAAS,uBAAuB,CAAC,MAAW;IACxC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE;QAC/C,OAAO,MAAM,CAAC;KACjB;IACD,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QAClD,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YACzB,IAAI,GAAG,KAAK,WAAW,EAAE;gBACrB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAC3E;YACD,KAAK,MAAM,cAAc,IAAI,QAAQ,EAAE;gBACnC,uBAAuB,CAAC,cAAc,CAAC,CAAC;aAC3C;SACJ;aAAM;YACH,uBAAuB,CAAC,QAAQ,CAAC,CAAC;SACrC;KACJ;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAgB,kBAAkB,CAAC,MAAW;IAC1C,OAAO,uBAAuB,CAAC,IAAA,mBAAS,EAAC,MAAM,CAAC,CAAC,CAAC;AACtD,CAAC;AAFD,gDAEC"}
|
package/package.json
CHANGED
package/src/components.tsx
CHANGED
|
@@ -15,13 +15,7 @@ import {
|
|
|
15
15
|
QuestionItemProps,
|
|
16
16
|
QuestionItemsProps,
|
|
17
17
|
} from './types';
|
|
18
|
-
import {
|
|
19
|
-
calcContext,
|
|
20
|
-
findExtensionByUrl,
|
|
21
|
-
getBranchItems,
|
|
22
|
-
getEnabledQuestions,
|
|
23
|
-
wrapAnswerValue,
|
|
24
|
-
} from './utils';
|
|
18
|
+
import { calcContext, getBranchItems, getEnabledQuestions, wrapAnswerValue } from './utils';
|
|
25
19
|
|
|
26
20
|
export function usePreviousValue<T = any>(value: T) {
|
|
27
21
|
const prevValue = useRef<T>();
|
|
@@ -57,8 +51,6 @@ export function QuestionItems(props: QuestionItemsProps) {
|
|
|
57
51
|
);
|
|
58
52
|
}
|
|
59
53
|
|
|
60
|
-
const cqfExpressionExtensionUrl = 'http://hl7.org/fhir/StructureDefinition/cqf-expression';
|
|
61
|
-
|
|
62
54
|
export function QuestionItem(props: QuestionItemProps) {
|
|
63
55
|
const { questionItem: initialQuestionItem, context: initialContext, parentPath } = props;
|
|
64
56
|
const {
|
|
@@ -147,8 +139,7 @@ export function QuestionItem(props: QuestionItemProps) {
|
|
|
147
139
|
|
|
148
140
|
useEffect(() => {
|
|
149
141
|
if (itemContext && _text) {
|
|
150
|
-
const
|
|
151
|
-
const cqfExpression = extension?.valueExpression;
|
|
142
|
+
const cqfExpression = _text.cqfExpression;
|
|
152
143
|
const calculatedValue =
|
|
153
144
|
evaluateQuestionItemExpression(
|
|
154
145
|
linkId,
|
|
@@ -166,8 +157,7 @@ export function QuestionItem(props: QuestionItemProps) {
|
|
|
166
157
|
}
|
|
167
158
|
|
|
168
159
|
if (itemContext && _readOnly) {
|
|
169
|
-
const
|
|
170
|
-
const cqfExpression = extension?.valueExpression;
|
|
160
|
+
const cqfExpression = _readOnly.cqfExpression;
|
|
171
161
|
const calculatedValue =
|
|
172
162
|
evaluateQuestionItemExpression(
|
|
173
163
|
linkId,
|
|
@@ -185,8 +175,7 @@ export function QuestionItem(props: QuestionItemProps) {
|
|
|
185
175
|
}
|
|
186
176
|
|
|
187
177
|
if (itemContext && _required) {
|
|
188
|
-
const
|
|
189
|
-
const cqfExpression = extension?.valueExpression;
|
|
178
|
+
const cqfExpression = _required.cqfExpression;
|
|
190
179
|
const calculatedValue =
|
|
191
180
|
evaluateQuestionItemExpression(
|
|
192
181
|
linkId,
|
|
@@ -2,7 +2,6 @@ import {
|
|
|
2
2
|
QuestionnaireResponse as FHIRQuestionnaireResponse,
|
|
3
3
|
Questionnaire as FHIRQuestionnaire,
|
|
4
4
|
} from 'fhir/r4b';
|
|
5
|
-
import cloneDeep from 'lodash/cloneDeep';
|
|
6
5
|
|
|
7
6
|
import {
|
|
8
7
|
QuestionnaireResponse as FCEQuestionnaireResponse,
|
|
@@ -88,29 +87,7 @@ import fhir_reference_answer_with_assoc from './resources/questionnaire_response
|
|
|
88
87
|
import fhir_review_of_systems_qr from './resources/questionnaire_response_fhir/review_of_systems.json';
|
|
89
88
|
import fhir_vitals_qr from './resources/questionnaire_response_fhir/vitals.json';
|
|
90
89
|
import { toFirstClassExtension, fromFirstClassExtension } from '../../converter';
|
|
91
|
-
|
|
92
|
-
function sortExtensionsRecursive(object: any) {
|
|
93
|
-
if (typeof object !== 'object' || object === null) {
|
|
94
|
-
return object;
|
|
95
|
-
}
|
|
96
|
-
for (const [key, property] of Object.entries(object)) {
|
|
97
|
-
if (Array.isArray(property)) {
|
|
98
|
-
if (key === 'extension') {
|
|
99
|
-
property.sort((a, b) => (a.url === b.url ? 0 : a.url < b.url ? -1 : 1));
|
|
100
|
-
}
|
|
101
|
-
for (const nestedProperty of property) {
|
|
102
|
-
sortExtensionsRecursive(nestedProperty);
|
|
103
|
-
}
|
|
104
|
-
} else {
|
|
105
|
-
sortExtensionsRecursive(property);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
return object;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
export function sortExtensionsList(object: any) {
|
|
112
|
-
return sortExtensionsRecursive(cloneDeep(object));
|
|
113
|
-
}
|
|
90
|
+
import { sortExtensionsList } from '../utils';
|
|
114
91
|
|
|
115
92
|
describe('Questionanire and QuestionnaireResponses transformation', () => {
|
|
116
93
|
test.each([
|
package/src/converter/index.ts
CHANGED
|
@@ -14,6 +14,7 @@ import { ExtensionIdentifier, extensionTransformers } from './extensions';
|
|
|
14
14
|
import { fromFirstClassExtension } from './fceToFhir';
|
|
15
15
|
import { toFirstClassExtension } from './fhirToFce';
|
|
16
16
|
import { processLaunchContext as processLaunchContextToFce } from './fhirToFce/questionnaire/processExtensions';
|
|
17
|
+
export * from './utils';
|
|
17
18
|
|
|
18
19
|
export function convertFromFHIRExtension(
|
|
19
20
|
extension: FHIRExtension,
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import cloneDeep from 'lodash/cloneDeep';
|
|
2
|
+
|
|
3
|
+
function sortExtensionsRecursive(object: any) {
|
|
4
|
+
if (typeof object !== 'object' || object === null) {
|
|
5
|
+
return object;
|
|
6
|
+
}
|
|
7
|
+
for (const [key, property] of Object.entries(object)) {
|
|
8
|
+
if (Array.isArray(property)) {
|
|
9
|
+
if (key === 'extension') {
|
|
10
|
+
property.sort((a, b) => (a.url === b.url ? 0 : a.url < b.url ? -1 : 1));
|
|
11
|
+
}
|
|
12
|
+
for (const nestedProperty of property) {
|
|
13
|
+
sortExtensionsRecursive(nestedProperty);
|
|
14
|
+
}
|
|
15
|
+
} else {
|
|
16
|
+
sortExtensionsRecursive(property);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return object;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export function sortExtensionsList(object: any) {
|
|
23
|
+
return sortExtensionsRecursive(cloneDeep(object));
|
|
24
|
+
}
|