@aehrc/smart-forms-renderer 0.26.0 → 0.26.1
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/Renderer/BaseRenderer.js +3 -3
- package/lib/components/Renderer/BaseRenderer.js.map +1 -1
- package/lib/stores/questionnaireStore.d.ts +6 -2
- package/lib/stores/questionnaireStore.js +7 -2
- package/lib/stores/questionnaireStore.js.map +1 -1
- package/lib/utils/index.d.ts +1 -0
- package/lib/utils/index.js +1 -0
- package/lib/utils/index.js.map +1 -1
- package/package.json +2 -1
- package/src/components/Renderer/BaseRenderer.tsx +3 -3
- package/src/stores/questionnaireStore.ts +15 -2
- package/src/utils/index.ts +1 -0
|
@@ -28,21 +28,21 @@ function BaseRenderer() {
|
|
|
28
28
|
const updateExpressions = useQuestionnaireStore.use.updateExpressions();
|
|
29
29
|
const readOnly = useQuestionnaireStore.use.readOnly();
|
|
30
30
|
const updatableResponse = useQuestionnaireResponseStore.use.updatableResponse();
|
|
31
|
-
const
|
|
31
|
+
const validateQuestionnaire = useQuestionnaireResponseStore.use.validateQuestionnaire();
|
|
32
32
|
const updateResponse = useQuestionnaireResponseStore.use.updateResponse();
|
|
33
33
|
const qItemsIndexMap = useMemo(() => mapQItemsIndex(sourceQuestionnaire), [sourceQuestionnaire]);
|
|
34
34
|
function handleTopLevelQRItemSingleChange(newTopLevelQRItem) {
|
|
35
35
|
const updatedResponse = cloneDeep(updatableResponse);
|
|
36
36
|
updateQrItemsInGroup(newTopLevelQRItem, null, updatedResponse, qItemsIndexMap);
|
|
37
37
|
updateExpressions(updatedResponse);
|
|
38
|
-
|
|
38
|
+
validateQuestionnaire(sourceQuestionnaire, updatedResponse);
|
|
39
39
|
updateResponse(updatedResponse);
|
|
40
40
|
}
|
|
41
41
|
function handleTopLevelQRItemMultipleChange(newTopLevelQRItems) {
|
|
42
42
|
const updatedResponse = cloneDeep(updatableResponse);
|
|
43
43
|
updateQrItemsInGroup(null, newTopLevelQRItems, updatedResponse, qItemsIndexMap);
|
|
44
44
|
updateExpressions(updatedResponse);
|
|
45
|
-
|
|
45
|
+
validateQuestionnaire(sourceQuestionnaire, updatedResponse);
|
|
46
46
|
updateResponse(updatedResponse);
|
|
47
47
|
}
|
|
48
48
|
const topLevelQItems = sourceQuestionnaire.item;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseRenderer.js","sourceRoot":"","sources":["../../../src/components/Renderer/BaseRenderer.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,SAAS,MAAM,yBAAyB,CAAC;AAChD,OAAO,IAAI,MAAM,oBAAoB,CAAC;AACtC,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,6BAA6B,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACpF,OAAO,SAAS,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAG1D,SAAS,YAAY;;IACnB,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;IAC5E,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;IACxE,MAAM,QAAQ,GAAG,qBAAqB,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;IAEtD,MAAM,iBAAiB,GAAG,6BAA6B,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;IAChF,MAAM,
|
|
1
|
+
{"version":3,"file":"BaseRenderer.js","sourceRoot":"","sources":["../../../src/components/Renderer/BaseRenderer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,7 @@ interface QuestionnaireStoreType {
|
|
|
22
22
|
processedValueSetUrls: Record<string, string>;
|
|
23
23
|
cachedValueSetCodings: Record<string, Coding[]>;
|
|
24
24
|
fhirPathContext: Record<string, any>;
|
|
25
|
+
populatedContext: Record<string, any>;
|
|
25
26
|
focusedLinkId: string;
|
|
26
27
|
readOnly: boolean;
|
|
27
28
|
buildSourceQuestionnaire: (questionnaire: Questionnaire, questionnaireResponse?: QuestionnaireResponse, additionalVariables?: Record<string, object>, terminologyServerUrl?: string, readOnly?: boolean) => Promise<void>;
|
|
@@ -33,8 +34,9 @@ interface QuestionnaireStoreType {
|
|
|
33
34
|
toggleEnableWhenActivation: (isActivated: boolean) => void;
|
|
34
35
|
updateExpressions: (updatedResponse: QuestionnaireResponse) => void;
|
|
35
36
|
addCodingToCache: (valueSetUrl: string, codings: Coding[]) => void;
|
|
36
|
-
updatePopulatedProperties: (populatedResponse: QuestionnaireResponse, persistTabIndex?: boolean) => QuestionnaireResponse;
|
|
37
|
+
updatePopulatedProperties: (populatedResponse: QuestionnaireResponse, populatedContext?: Record<string, any>, persistTabIndex?: boolean) => QuestionnaireResponse;
|
|
37
38
|
onFocusLinkId: (linkId: string) => void;
|
|
39
|
+
setPopulatedContext: (newPopulatedContext: Record<string, any>) => void;
|
|
38
40
|
}
|
|
39
41
|
export declare const questionnaireStore: import("zustand/vanilla").StoreApi<QuestionnaireStoreType>;
|
|
40
42
|
export declare const useQuestionnaireStore: import("zustand/vanilla").StoreApi<QuestionnaireStoreType> & {
|
|
@@ -55,6 +57,7 @@ export declare const useQuestionnaireStore: import("zustand/vanilla").StoreApi<Q
|
|
|
55
57
|
processedValueSetUrls: () => Record<string, string>;
|
|
56
58
|
cachedValueSetCodings: () => Record<string, Coding[]>;
|
|
57
59
|
fhirPathContext: () => Record<string, any>;
|
|
60
|
+
populatedContext: () => Record<string, any>;
|
|
58
61
|
focusedLinkId: () => string;
|
|
59
62
|
readOnly: () => boolean;
|
|
60
63
|
buildSourceQuestionnaire: () => (questionnaire: Questionnaire, questionnaireResponse?: QuestionnaireResponse, additionalVariables?: Record<string, object>, terminologyServerUrl?: string, readOnly?: boolean) => Promise<void>;
|
|
@@ -66,8 +69,9 @@ export declare const useQuestionnaireStore: import("zustand/vanilla").StoreApi<Q
|
|
|
66
69
|
toggleEnableWhenActivation: () => (isActivated: boolean) => void;
|
|
67
70
|
updateExpressions: () => (updatedResponse: QuestionnaireResponse) => void;
|
|
68
71
|
addCodingToCache: () => (valueSetUrl: string, codings: Coding[]) => void;
|
|
69
|
-
updatePopulatedProperties: () => (populatedResponse: QuestionnaireResponse, persistTabIndex?: boolean) => QuestionnaireResponse;
|
|
72
|
+
updatePopulatedProperties: () => (populatedResponse: QuestionnaireResponse, populatedContext?: Record<string, any>, persistTabIndex?: boolean) => QuestionnaireResponse;
|
|
70
73
|
onFocusLinkId: () => (linkId: string) => void;
|
|
74
|
+
setPopulatedContext: () => (newPopulatedContext: Record<string, any>) => void;
|
|
71
75
|
};
|
|
72
76
|
};
|
|
73
77
|
export {};
|
|
@@ -53,6 +53,7 @@ export const questionnaireStore = createStore()((set, get) => ({
|
|
|
53
53
|
processedValueSetUrls: {},
|
|
54
54
|
cachedValueSetCodings: {},
|
|
55
55
|
fhirPathContext: {},
|
|
56
|
+
populatedContext: {},
|
|
56
57
|
focusedLinkId: '',
|
|
57
58
|
readOnly: false,
|
|
58
59
|
buildSourceQuestionnaire: (questionnaire, questionnaireResponse = cloneDeep(emptyResponse), additionalVariables = {}, terminologyServerUrl = terminologyServerStore.getState().url, readOnly = false) => __awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -166,7 +167,7 @@ export const questionnaireStore = createStore()((set, get) => ({
|
|
|
166
167
|
addCodingToCache: (valueSetUrl, codings) => set(() => ({
|
|
167
168
|
cachedValueSetCodings: Object.assign(Object.assign({}, get().cachedValueSetCodings), { [valueSetUrl]: codings })
|
|
168
169
|
})),
|
|
169
|
-
updatePopulatedProperties: (populatedResponse, persistTabIndex) => {
|
|
170
|
+
updatePopulatedProperties: (populatedResponse, populatedContext, persistTabIndex) => {
|
|
170
171
|
const initialResponseItemMap = createQuestionnaireResponseItemMap(populatedResponse);
|
|
171
172
|
const evaluateInitialCalculatedExpressionsResult = evaluateInitialCalculatedExpressions({
|
|
172
173
|
initialResponse: populatedResponse,
|
|
@@ -194,12 +195,16 @@ export const questionnaireStore = createStore()((set, get) => ({
|
|
|
194
195
|
enableWhenExpressions: initialEnableWhenExpressions,
|
|
195
196
|
calculatedExpressions: initialCalculatedExpressions,
|
|
196
197
|
currentTabIndex: persistTabIndex ? get().currentTabIndex : firstVisibleTab,
|
|
197
|
-
fhirPathContext: updatedFhirPathContext
|
|
198
|
+
fhirPathContext: updatedFhirPathContext,
|
|
199
|
+
populatedContext: populatedContext !== null && populatedContext !== void 0 ? populatedContext : get().populatedContext
|
|
198
200
|
}));
|
|
199
201
|
return updatedResponse;
|
|
200
202
|
},
|
|
201
203
|
onFocusLinkId: (linkId) => set(() => ({
|
|
202
204
|
focusedLinkId: linkId
|
|
205
|
+
})),
|
|
206
|
+
setPopulatedContext: (newPopulatedContext) => set(() => ({
|
|
207
|
+
populatedContext: newPopulatedContext
|
|
203
208
|
}))
|
|
204
209
|
}));
|
|
205
210
|
export const useQuestionnaireStore = createSelectors(questionnaireStore);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"questionnaireStore.js","sourceRoot":"","sources":["../../src/stores/questionnaireStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;;;;;;;;;;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAa9C,OAAO,EACL,mCAAmC,EACnC,0BAA0B,EAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EACL,oCAAoC,EACpC,oCAAoC,EACrC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,wBAAwB,EAAE,MAAM,0DAA0D,CAAC;AACpG,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,SAAS,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,yCAAyC,EAAE,MAAM,+BAA+B,CAAC;AAC1F,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,kCAAkC,EAAE,MAAM,iEAAiE,CAAC;
|
|
1
|
+
{"version":3,"file":"questionnaireStore.js","sourceRoot":"","sources":["../../src/stores/questionnaireStore.ts"],"names":[],"mappings":"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"}
|
package/lib/utils/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export { isSpecificItemControl } from './itemControl';
|
|
2
2
|
export { isRepeatItemAndNotCheckbox } from './qItem';
|
|
3
3
|
export { createEnableWhenLinkedQuestions, readInitialAnswers, setInitialAnswers } from './enableWhen';
|
|
4
|
+
export { initialiseQuestionnaireResponse } from './initialise';
|
package/lib/utils/index.js
CHANGED
|
@@ -17,4 +17,5 @@
|
|
|
17
17
|
export { isSpecificItemControl } from './itemControl';
|
|
18
18
|
export { isRepeatItemAndNotCheckbox } from './qItem';
|
|
19
19
|
export { createEnableWhenLinkedQuestions, readInitialAnswers, setInitialAnswers } from './enableWhen';
|
|
20
|
+
export { initialiseQuestionnaireResponse } from './initialise';
|
|
20
21
|
//# sourceMappingURL=index.js.map
|
package/lib/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EACL,+BAA+B,EAC/B,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EACL,+BAA+B,EAC/B,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,+BAA+B,EAAE,MAAM,cAAc,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aehrc/smart-forms-renderer",
|
|
3
|
-
"version": "0.26.
|
|
3
|
+
"version": "0.26.1",
|
|
4
4
|
"description": "FHIR Structured Data Captured (SDC) rendering engine for Smart Forms",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -31,6 +31,7 @@
|
|
|
31
31
|
"fhirclient": "^2.5.2",
|
|
32
32
|
"fhirpath": "^3.7.1",
|
|
33
33
|
"html-react-parser": "4.2.10",
|
|
34
|
+
"js-base64": "^3.7.7",
|
|
34
35
|
"lodash.clonedeep": "^4.5.0",
|
|
35
36
|
"lodash.debounce": "^4.0.8",
|
|
36
37
|
"nanoid": "^5.0.1",
|
|
@@ -32,7 +32,7 @@ function BaseRenderer() {
|
|
|
32
32
|
const readOnly = useQuestionnaireStore.use.readOnly();
|
|
33
33
|
|
|
34
34
|
const updatableResponse = useQuestionnaireResponseStore.use.updatableResponse();
|
|
35
|
-
const
|
|
35
|
+
const validateQuestionnaire = useQuestionnaireResponseStore.use.validateQuestionnaire();
|
|
36
36
|
const updateResponse = useQuestionnaireResponseStore.use.updateResponse();
|
|
37
37
|
|
|
38
38
|
const qItemsIndexMap = useMemo(() => mapQItemsIndex(sourceQuestionnaire), [sourceQuestionnaire]);
|
|
@@ -43,7 +43,7 @@ function BaseRenderer() {
|
|
|
43
43
|
updateQrItemsInGroup(newTopLevelQRItem, null, updatedResponse, qItemsIndexMap);
|
|
44
44
|
|
|
45
45
|
updateExpressions(updatedResponse);
|
|
46
|
-
|
|
46
|
+
validateQuestionnaire(sourceQuestionnaire, updatedResponse);
|
|
47
47
|
updateResponse(updatedResponse);
|
|
48
48
|
}
|
|
49
49
|
|
|
@@ -53,7 +53,7 @@ function BaseRenderer() {
|
|
|
53
53
|
updateQrItemsInGroup(null, newTopLevelQRItems, updatedResponse, qItemsIndexMap);
|
|
54
54
|
|
|
55
55
|
updateExpressions(updatedResponse);
|
|
56
|
-
|
|
56
|
+
validateQuestionnaire(sourceQuestionnaire, updatedResponse);
|
|
57
57
|
updateResponse(updatedResponse);
|
|
58
58
|
}
|
|
59
59
|
|
|
@@ -64,6 +64,7 @@ interface QuestionnaireStoreType {
|
|
|
64
64
|
processedValueSetUrls: Record<string, string>;
|
|
65
65
|
cachedValueSetCodings: Record<string, Coding[]>;
|
|
66
66
|
fhirPathContext: Record<string, any>;
|
|
67
|
+
populatedContext: Record<string, any>;
|
|
67
68
|
focusedLinkId: string;
|
|
68
69
|
readOnly: boolean;
|
|
69
70
|
buildSourceQuestionnaire: (
|
|
@@ -91,9 +92,11 @@ interface QuestionnaireStoreType {
|
|
|
91
92
|
addCodingToCache: (valueSetUrl: string, codings: Coding[]) => void;
|
|
92
93
|
updatePopulatedProperties: (
|
|
93
94
|
populatedResponse: QuestionnaireResponse,
|
|
95
|
+
populatedContext?: Record<string, any>,
|
|
94
96
|
persistTabIndex?: boolean
|
|
95
97
|
) => QuestionnaireResponse;
|
|
96
98
|
onFocusLinkId: (linkId: string) => void;
|
|
99
|
+
setPopulatedContext: (newPopulatedContext: Record<string, any>) => void;
|
|
97
100
|
}
|
|
98
101
|
|
|
99
102
|
export const questionnaireStore = createStore<QuestionnaireStoreType>()((set, get) => ({
|
|
@@ -113,6 +116,7 @@ export const questionnaireStore = createStore<QuestionnaireStoreType>()((set, ge
|
|
|
113
116
|
processedValueSetUrls: {},
|
|
114
117
|
cachedValueSetCodings: {},
|
|
115
118
|
fhirPathContext: {},
|
|
119
|
+
populatedContext: {},
|
|
116
120
|
focusedLinkId: '',
|
|
117
121
|
readOnly: false,
|
|
118
122
|
buildSourceQuestionnaire: async (
|
|
@@ -287,7 +291,11 @@ export const questionnaireStore = createStore<QuestionnaireStoreType>()((set, ge
|
|
|
287
291
|
[valueSetUrl]: codings
|
|
288
292
|
}
|
|
289
293
|
})),
|
|
290
|
-
updatePopulatedProperties: (
|
|
294
|
+
updatePopulatedProperties: (
|
|
295
|
+
populatedResponse: QuestionnaireResponse,
|
|
296
|
+
populatedContext?: Record<string, any>,
|
|
297
|
+
persistTabIndex?: boolean
|
|
298
|
+
) => {
|
|
291
299
|
const initialResponseItemMap = createQuestionnaireResponseItemMap(populatedResponse);
|
|
292
300
|
|
|
293
301
|
const evaluateInitialCalculatedExpressionsResult = evaluateInitialCalculatedExpressions({
|
|
@@ -328,7 +336,8 @@ export const questionnaireStore = createStore<QuestionnaireStoreType>()((set, ge
|
|
|
328
336
|
enableWhenExpressions: initialEnableWhenExpressions,
|
|
329
337
|
calculatedExpressions: initialCalculatedExpressions,
|
|
330
338
|
currentTabIndex: persistTabIndex ? get().currentTabIndex : firstVisibleTab,
|
|
331
|
-
fhirPathContext: updatedFhirPathContext
|
|
339
|
+
fhirPathContext: updatedFhirPathContext,
|
|
340
|
+
populatedContext: populatedContext ?? get().populatedContext
|
|
332
341
|
}));
|
|
333
342
|
|
|
334
343
|
return updatedResponse;
|
|
@@ -336,6 +345,10 @@ export const questionnaireStore = createStore<QuestionnaireStoreType>()((set, ge
|
|
|
336
345
|
onFocusLinkId: (linkId: string) =>
|
|
337
346
|
set(() => ({
|
|
338
347
|
focusedLinkId: linkId
|
|
348
|
+
})),
|
|
349
|
+
setPopulatedContext: (newPopulatedContext: Record<string, any>) =>
|
|
350
|
+
set(() => ({
|
|
351
|
+
populatedContext: newPopulatedContext
|
|
339
352
|
}))
|
|
340
353
|
}));
|
|
341
354
|
|
package/src/utils/index.ts
CHANGED