@aehrc/smart-forms-renderer 0.6.6 → 0.7.0
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/README.md +13 -10
- package/lib/components/Box.styles.d.ts +1 -0
- package/lib/components/Box.styles.js +5 -1
- package/lib/components/Box.styles.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.js +3 -5
- package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioSingle.js +2 -2
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioSingle.js.map +1 -1
- package/lib/components/FormComponents/DateItem/DateItem.js +7 -2
- package/lib/components/FormComponents/DateItem/DateItem.js.map +1 -1
- package/lib/components/FormComponents/DateTimeItem/DateTimeItem.js +7 -2
- package/lib/components/FormComponents/DateTimeItem/DateTimeItem.js.map +1 -1
- package/lib/components/FormComponents/GridGroup/GridRow.js +5 -0
- package/lib/components/FormComponents/GridGroup/GridRow.js.map +1 -1
- package/lib/components/FormComponents/ItemParts/CheckboxSingle.js +2 -2
- package/lib/components/FormComponents/ItemParts/CheckboxSingle.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.js +3 -5
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.js.map +1 -1
- package/lib/components/FormComponents/RepeatGroup/AddItemButton.js +1 -1
- package/lib/components/FormComponents/RepeatGroup/AddItemButton.js.map +1 -1
- package/lib/components/FormComponents/RepeatItem/AddItemButton.js +1 -1
- package/lib/components/FormComponents/RepeatItem/AddItemButton.js.map +1 -1
- package/lib/components/FormComponents/SingleItem/SingleItem.d.ts +1 -1
- package/lib/components/FormComponents/SingleItem/SingleItem.js +5 -0
- package/lib/components/FormComponents/SingleItem/SingleItem.js.map +1 -1
- package/lib/components/Renderer/FormBodyTabbed.js +2 -2
- package/lib/components/Renderer/FormBodyTabbed.js.map +1 -1
- package/lib/components/Renderer/SmartFormsRenderer.d.ts +1 -0
- package/lib/components/Renderer/SmartFormsRenderer.js +2 -3
- package/lib/components/Renderer/SmartFormsRenderer.js.map +1 -1
- package/lib/components/Tabs/FormBodySingleTab.d.ts +1 -1
- package/lib/components/Tabs/FormBodySingleTab.js +2 -4
- package/lib/components/Tabs/FormBodySingleTab.js.map +1 -1
- package/lib/components/Tabs/FormBodyTabList.d.ts +2 -1
- package/lib/components/Tabs/FormBodyTabList.js +24 -26
- package/lib/components/Tabs/FormBodyTabList.js.map +1 -1
- package/lib/components/Tabs/FormBodyTabListWrapper.d.ts +10 -0
- package/lib/components/Tabs/FormBodyTabListWrapper.js +44 -0
- package/lib/components/Tabs/FormBodyTabListWrapper.js.map +1 -0
- package/lib/hooks/useInitialiseRenderer.d.ts +1 -1
- package/lib/hooks/useInitialiseRenderer.js +17 -3
- package/lib/hooks/useInitialiseRenderer.js.map +1 -1
- package/lib/hooks/useTerminologyServerQuery.d.ts +2 -2
- package/lib/hooks/useTerminologyServerQuery.js +8 -4
- package/lib/hooks/useTerminologyServerQuery.js.map +1 -1
- package/lib/hooks/useValueSetCodings.js +5 -2
- package/lib/hooks/useValueSetCodings.js.map +1 -1
- package/lib/stores/useQuestionnaireStore.d.ts +1 -1
- package/lib/stores/useQuestionnaireStore.js +3 -2
- package/lib/stores/useQuestionnaireStore.js.map +1 -1
- package/lib/stores/useTerminologyServerStore.d.ts +7 -0
- package/{src/theme/overrides/Typography.ts → lib/stores/useTerminologyServerStore.js} +9 -17
- package/lib/stores/useTerminologyServerStore.js.map +1 -0
- package/lib/theme/overrides/Overrides.js +1 -2
- package/lib/theme/overrides/Overrides.js.map +1 -1
- package/lib/utils/isHidden.d.ts +3 -0
- package/lib/utils/isHidden.js +30 -0
- package/lib/utils/isHidden.js.map +1 -0
- package/lib/utils/qItem.d.ts +1 -1
- package/lib/utils/qItem.js +1 -1
- package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.d.ts +1 -1
- package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js +4 -4
- package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js.map +1 -1
- package/lib/utils/questionnaireStoreUtils/extractContainedValueSets.d.ts +1 -1
- package/lib/utils/questionnaireStoreUtils/extractContainedValueSets.js +2 -2
- package/lib/utils/questionnaireStoreUtils/extractContainedValueSets.js.map +1 -1
- package/lib/utils/questionnaireStoreUtils/extractOtherExtensions.d.ts +1 -1
- package/lib/utils/questionnaireStoreUtils/extractOtherExtensions.js +6 -4
- package/lib/utils/questionnaireStoreUtils/extractOtherExtensions.js.map +1 -1
- package/lib/utils/questionnaireStoreUtils/resolveValueSets.d.ts +1 -1
- package/lib/utils/questionnaireStoreUtils/resolveValueSets.js +2 -2
- package/lib/utils/questionnaireStoreUtils/resolveValueSets.js.map +1 -1
- package/lib/utils/tabs.d.ts +10 -0
- package/lib/utils/tabs.js +26 -1
- package/lib/utils/tabs.js.map +1 -1
- package/lib/utils/valueSet.d.ts +1 -1
- package/lib/utils/valueSet.js +3 -4
- package/lib/utils/valueSet.js.map +1 -1
- package/package.json +2 -2
- package/src/components/Box.styles.ts +6 -1
- package/src/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.tsx +5 -7
- package/src/components/FormComponents/ChoiceItems/ChoiceRadioSingle.tsx +2 -2
- package/src/components/FormComponents/DateItem/DateItem.tsx +7 -2
- package/src/components/FormComponents/DateTimeItem/DateTimeItem.tsx +6 -2
- package/src/components/FormComponents/GridGroup/GridRow.tsx +6 -0
- package/src/components/FormComponents/ItemParts/CheckboxSingle.tsx +2 -2
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.tsx +5 -7
- package/src/components/FormComponents/RepeatGroup/AddItemButton.tsx +1 -0
- package/src/components/FormComponents/RepeatItem/AddItemButton.tsx +1 -0
- package/src/components/FormComponents/SingleItem/SingleItem.tsx +6 -0
- package/src/components/Renderer/FormBodyTabbed.tsx +2 -2
- package/src/components/Renderer/SmartFormsRenderer.tsx +9 -2
- package/src/components/Tabs/FormBodySingleTab.tsx +3 -6
- package/src/components/Tabs/FormBodyTabList.tsx +41 -41
- package/src/components/Tabs/FormBodyTabListWrapper.tsx +80 -0
- package/src/hooks/useInitialiseRenderer.ts +22 -2
- package/src/hooks/useTerminologyServerQuery.ts +8 -6
- package/src/hooks/useValueSetCodings.ts +5 -2
- package/src/stores/useQuestionnaireStore.ts +10 -3
- package/src/stores/useTerminologyServerStore.ts +34 -0
- package/src/theme/overrides/Overrides.ts +0 -2
- package/src/utils/qItem.ts +1 -1
- package/src/utils/questionnaireStoreUtils/createQuestionaireModel.ts +10 -4
- package/src/utils/questionnaireStoreUtils/extractContainedValueSets.ts +5 -2
- package/src/utils/questionnaireStoreUtils/extractOtherExtensions.ts +8 -4
- package/src/utils/questionnaireStoreUtils/resolveValueSets.ts +3 -2
- package/src/utils/tabs.ts +54 -1
- package/src/utils/valueSet.ts +3 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extractOtherExtensions.js","sourceRoot":"","sources":["../../../src/utils/questionnaireStoreUtils/extractOtherExtensions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAWH,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE1E,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAWlF,MAAM,UAAU,sBAAsB,CACpC,aAA4B,EAC5B,SAAoB,EACpB,gBAAiD;
|
|
1
|
+
{"version":3,"file":"extractOtherExtensions.js","sourceRoot":"","sources":["../../../src/utils/questionnaireStoreUtils/extractOtherExtensions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Coding } from 'fhir/r4';
|
|
2
2
|
import type { Variables } from '../../interfaces/variables.interface';
|
|
3
3
|
import type { ValueSetPromise } from '../../interfaces/valueSet.interface';
|
|
4
|
-
export declare function resolveValueSets(variables: Variables, valueSetPromises: Record<string, ValueSetPromise>, processedValueSetCodings: Record<string, Coding[]
|
|
4
|
+
export declare function resolveValueSets(variables: Variables, valueSetPromises: Record<string, ValueSetPromise>, processedValueSetCodings: Record<string, Coding[]>, terminologyServerUrl: string): Promise<{
|
|
5
5
|
variables: Variables;
|
|
6
6
|
processedValueSetCodings: Record<string, Coding[]>;
|
|
7
7
|
}>;
|
|
@@ -24,14 +24,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
24
24
|
});
|
|
25
25
|
};
|
|
26
26
|
import { createValueSetToXFhirQueryVariableNameMap, getValueSetCodings, getValueSetPromise, resolvePromises } from '../valueSet';
|
|
27
|
-
export function resolveValueSets(variables, valueSetPromises, processedValueSetCodings) {
|
|
27
|
+
export function resolveValueSets(variables, valueSetPromises, processedValueSetCodings, terminologyServerUrl) {
|
|
28
28
|
return __awaiter(this, void 0, void 0, function* () {
|
|
29
29
|
// Create a <valueSetUrl, XFhirQueryVariableName> map
|
|
30
30
|
const valueSetToXFhirQueryVariableNameMap = createValueSetToXFhirQueryVariableNameMap(variables.xFhirQueryVariables);
|
|
31
31
|
if (Object.keys(valueSetToXFhirQueryVariableNameMap).length > 0) {
|
|
32
32
|
for (const valueSetUrl in valueSetToXFhirQueryVariableNameMap) {
|
|
33
33
|
valueSetPromises[valueSetUrl] = {
|
|
34
|
-
promise: getValueSetPromise(valueSetUrl)
|
|
34
|
+
promise: getValueSetPromise(valueSetUrl, terminologyServerUrl)
|
|
35
35
|
};
|
|
36
36
|
}
|
|
37
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveValueSets.js","sourceRoot":"","sources":["../../../src/utils/questionnaireStoreUtils/resolveValueSets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;;;;;;;;;;AAGH,OAAO,EACL,yCAAyC,EACzC,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EAChB,MAAM,aAAa,CAAC;AAIrB,MAAM,UAAgB,gBAAgB,CACpC,SAAoB,EACpB,gBAAiD,EACjD,wBAAkD;;
|
|
1
|
+
{"version":3,"file":"resolveValueSets.js","sourceRoot":"","sources":["../../../src/utils/questionnaireStoreUtils/resolveValueSets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;;;;;;;;;;AAGH,OAAO,EACL,yCAAyC,EACzC,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EAChB,MAAM,aAAa,CAAC;AAIrB,MAAM,UAAgB,gBAAgB,CACpC,SAAoB,EACpB,gBAAiD,EACjD,wBAAkD,EAClD,oBAA4B;;QAE5B,qDAAqD;QACrD,MAAM,mCAAmC,GACvC,yCAAyC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;QAE3E,IAAI,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/D,KAAK,MAAM,WAAW,IAAI,mCAAmC,EAAE;gBAC7D,gBAAgB,CAAC,WAAW,CAAC,GAAG;oBAC9B,OAAO,EAAE,kBAAkB,CAAC,WAAW,EAAE,oBAAoB,CAAC;iBAC/D,CAAC;aACH;SACF;QAED,qGAAqG;QACrG,MAAM,gBAAgB,GAAG,MAAM,eAAe,CAAC,gBAAgB,CAAC,CAAC;QAEjE,KAAK,MAAM,WAAW,IAAI,gBAAgB,EAAE;YAC1C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC;YAExD,IAAI,QAAQ,EAAE;gBACZ,IAAI,mCAAmC,CAAC,WAAW,CAAC,EAAE;oBACpD,6DAA6D;oBAC7D,MAAM,YAAY,GAAG,mCAAmC,CAAC,WAAW,CAAC,CAAC;oBACtE,MAAM,QAAQ,GAAG,SAAS,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;oBAC7D,SAAS,CAAC,mBAAmB,CAAC,YAAY,CAAC,mCACtC,QAAQ,KACX,MAAM,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC,QAAQ,GAC/C,CAAC;iBACH;qBAAM;oBACL,gFAAgF;oBAChF,wBAAwB,CAAC,WAAW,CAAC,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;iBACtE;aACF;SACF;QAED,OAAO,EAAE,SAAS,EAAE,wBAAwB,EAAE,CAAC;IACjD,CAAC;CAAA"}
|
package/lib/utils/tabs.d.ts
CHANGED
|
@@ -72,4 +72,14 @@ export declare function getFirstVisibleTabIndex(tabs: Tabs, enableWhenIsActivate
|
|
|
72
72
|
*/
|
|
73
73
|
export declare function findNumOfVisibleTabs(tabs: Tabs, enableWhenIsActivated: boolean, enableWhenItems: EnableWhenItems, enableWhenExpressions: Record<string, EnableWhenExpression>): number;
|
|
74
74
|
export declare function getContextDisplays(item: QuestionnaireItem): QuestionnaireItem[];
|
|
75
|
+
interface IsTabHiddenParams {
|
|
76
|
+
qItem: QuestionnaireItem;
|
|
77
|
+
contextDisplayItems: QuestionnaireItem[];
|
|
78
|
+
isTab: boolean;
|
|
79
|
+
enableWhenIsActivated: boolean;
|
|
80
|
+
enableWhenItems: EnableWhenItems;
|
|
81
|
+
enableWhenExpressions: Record<string, EnableWhenExpression>;
|
|
82
|
+
completedTabsCollapsed: boolean;
|
|
83
|
+
}
|
|
84
|
+
export declare function isTabHidden(params: IsTabHiddenParams): boolean;
|
|
75
85
|
export {};
|
package/lib/utils/tabs.js
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
17
|
import { hasHiddenExtension, isSpecificItemControl } from './itemControl';
|
|
18
|
-
import { isHiddenByEnableWhens } from './qItem';
|
|
18
|
+
import { isHidden, isHiddenByEnableWhens } from './qItem';
|
|
19
19
|
export function getFirstVisibleTab(tabs, enableWhenItems, enableWhenExpressions) {
|
|
20
20
|
return Object.entries(tabs)
|
|
21
21
|
.sort(([, tabA], [, tabB]) => tabA.tabIndex - tabB.tabIndex)
|
|
@@ -187,4 +187,29 @@ export function getContextDisplays(item) {
|
|
|
187
187
|
}
|
|
188
188
|
return item.item.filter((childItem) => isSpecificItemControl(childItem, 'context-display') && childItem.type === 'display');
|
|
189
189
|
}
|
|
190
|
+
export function isTabHidden(params) {
|
|
191
|
+
const { qItem, contextDisplayItems, isTab, enableWhenIsActivated, enableWhenItems, enableWhenExpressions, completedTabsCollapsed } = params;
|
|
192
|
+
if (!isTab ||
|
|
193
|
+
isHidden({
|
|
194
|
+
questionnaireItem: qItem,
|
|
195
|
+
enableWhenIsActivated,
|
|
196
|
+
enableWhenItems,
|
|
197
|
+
enableWhenExpressions
|
|
198
|
+
})) {
|
|
199
|
+
return true;
|
|
200
|
+
}
|
|
201
|
+
if (completedTabsCollapsed) {
|
|
202
|
+
const completedDisplayItem = contextDisplayItems.find((contextDisplayItem) => contextDisplayItem.text === 'Complete');
|
|
203
|
+
if (completedDisplayItem &&
|
|
204
|
+
!isHidden({
|
|
205
|
+
questionnaireItem: completedDisplayItem,
|
|
206
|
+
enableWhenIsActivated,
|
|
207
|
+
enableWhenItems,
|
|
208
|
+
enableWhenExpressions
|
|
209
|
+
})) {
|
|
210
|
+
return true;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
return false;
|
|
214
|
+
}
|
|
190
215
|
//# sourceMappingURL=tabs.js.map
|
package/lib/utils/tabs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../src/utils/tabs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../src/utils/tabs.ts"],"names":[],"mappings":"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"}
|
package/lib/utils/valueSet.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import type { FhirResourceString } from '../interfaces/populate.interface';
|
|
|
3
3
|
import type { ValueSetPromise } from '../interfaces/valueSet.interface';
|
|
4
4
|
import type { VariableXFhirQuery } from '../interfaces/variables.interface';
|
|
5
5
|
export declare function getTerminologyServerUrl(qItem: QuestionnaireItem): string | undefined;
|
|
6
|
-
export declare function getValueSetPromise(url: string,
|
|
6
|
+
export declare function getValueSetPromise(url: string, terminologyServerUrl: string): Promise<ValueSet>;
|
|
7
7
|
export declare function resolvePromises(valueSetPromises: Record<string, ValueSetPromise>): Promise<Record<string, ValueSetPromise>>;
|
|
8
8
|
/**
|
|
9
9
|
* Sets an array of codings with the values from a valueSet
|
package/lib/utils/valueSet.js
CHANGED
|
@@ -26,7 +26,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
26
26
|
import * as FHIR from 'fhirclient';
|
|
27
27
|
const VALID_VALUE_SET_URL_REGEX = /https?:\/\/(www\.)?[-\w@:%.+~#=]{2,256}\.[a-z]{2,4}\b([-@\w:%+.~#?&/=]*ValueSet[-@\w:%+.~#?&/=]*)/;
|
|
28
28
|
const VALID_FHIRPATH_VARIABLE_REGEX = /%(.*?)\./;
|
|
29
|
-
const ONTOSERVER_ENDPOINT = 'https://r4.ontoserver.csiro.au/fhir/';
|
|
30
29
|
export function getTerminologyServerUrl(qItem) {
|
|
31
30
|
var _a;
|
|
32
31
|
const itemControl = (_a = qItem.extension) === null || _a === void 0 ? void 0 : _a.find((extension) => extension.url === 'http://hl7.org/fhir/StructureDefinition/terminology-server');
|
|
@@ -35,15 +34,15 @@ export function getTerminologyServerUrl(qItem) {
|
|
|
35
34
|
}
|
|
36
35
|
return undefined;
|
|
37
36
|
}
|
|
38
|
-
export function getValueSetPromise(url,
|
|
37
|
+
export function getValueSetPromise(url, terminologyServerUrl) {
|
|
39
38
|
let valueSetUrl = url;
|
|
40
39
|
if (url.includes('ValueSet/$expand?url=')) {
|
|
41
40
|
const splitUrl = url.split('ValueSet/$expand?url=');
|
|
42
|
-
|
|
41
|
+
terminologyServerUrl = splitUrl[0];
|
|
43
42
|
valueSetUrl = splitUrl[1];
|
|
44
43
|
}
|
|
45
44
|
valueSetUrl = valueSetUrl.replace('|', '&version=');
|
|
46
|
-
return FHIR.client({ serverUrl:
|
|
45
|
+
return FHIR.client({ serverUrl: terminologyServerUrl }).request({
|
|
47
46
|
url: 'ValueSet/$expand?url=' + valueSetUrl
|
|
48
47
|
});
|
|
49
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"valueSet.js","sourceRoot":"","sources":["../../src/utils/valueSet.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;;;;;;;;;;AAaH,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AAKnC,MAAM,yBAAyB,GAC7B,mGAAmG,CAAC;AAEtG,MAAM,6BAA6B,GAAG,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"valueSet.js","sourceRoot":"","sources":["../../src/utils/valueSet.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;;;;;;;;;;AAaH,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AAKnC,MAAM,yBAAyB,GAC7B,mGAAmG,CAAC;AAEtG,MAAM,6BAA6B,GAAG,UAAU,CAAC;AAEjD,MAAM,UAAU,uBAAuB,CAAC,KAAwB;;IAC9D,MAAM,WAAW,GAAG,MAAA,KAAK,CAAC,SAAS,0CAAE,IAAI,CACvC,CAAC,SAAoB,EAAE,EAAE,CACvB,SAAS,CAAC,GAAG,KAAK,4DAA4D,CACjF,CAAC;IACF,IAAI,WAAW,EAAE;QACf,OAAO,WAAW,CAAC,QAAQ,CAAC;KAC7B;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAW,EAAE,oBAA4B;IAC1E,IAAI,WAAW,GAAG,GAAG,CAAC;IAEtB,IAAI,GAAG,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE;QACzC,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QACpD,oBAAoB,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACnC,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;KAC3B;IAED,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAEpD,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,oBAAoB,EAAE,CAAC,CAAC,OAAO,CAAC;QAC9D,GAAG,EAAE,uBAAuB,GAAG,WAAW;KAC3C,CAAC,CAAC;AACL,CAAC;AAED,SAAe,mBAAmB,CAAC,OAAqB,EAAE,SAAiB;;QACzE,MAAM,cAAc,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;YAC/C,UAAU,CAAC,GAAG,EAAE;gBACd,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,SAAS,eAAe,CAAC,CAAC,CAAC;YACzE,CAAC,EAAE,SAAS,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,kFAAkF;QAClF,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;IACjD,CAAC;CAAA;AAED,MAAM,UAAgB,eAAe,CACnC,gBAAiD;;QAEjD,MAAM,mBAAmB,GAAoC,EAAE,CAAC;QAEhE,MAAM,mBAAmB,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC1D,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAE9D,MAAM,SAAS,GAAG,IAAI,CAAC;QACvB,MAAM,QAAQ,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC,eAAe,EAAE,EAAE,CAC7D,mBAAmB,CAAC,eAAe,CAAC,OAAO,EAAE,SAAS,CAAC,CACxD,CAAC;QAEF,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAE3D,KAAK,MAAM,CAAC,CAAC,EAAE,cAAc,CAAC,IAAI,eAAe,CAAC,OAAO,EAAE,EAAE;YAC3D,iDAAiD;YACjD,IAAI,cAAc,CAAC,MAAM,KAAK,WAAW,EAAE;gBACzC,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC;gBACtC,MAAM,GAAG,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;gBACnC,MAAM,eAAe,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;gBAEjD,IAAI,GAAG,IAAI,eAAe,EAAE;oBAC1B,eAAe,CAAC,QAAQ,GAAG,QAAQ,CAAC;oBACpC,mBAAmB,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC;iBAC5C;aACF;SACF;QACD,OAAO,mBAAmB,CAAC;IAC7B,CAAC;CAAA;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAkB;;IACnD,OAAO,MAAA,MAAA,MAAA,QAAQ,CAAC,SAAS,0CAAE,QAAQ,0CAAE,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,mCAAI,EAAE,CAAC;AACrE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gCAAgC,CAC9C,gBAA4B,EAC5B,kBAAgC,EAChC,mBAA6C;;IAE7C,MAAM,UAAU,GAAG,gBAAgB,CAAC,UAAU,CAAC;IAC/C,IAAI,CAAC,UAAU;QAAE,OAAO,EAAE,CAAC;IAE3B,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,CAAC,CAAC,CAAC;IAChC,IAAI,CAAC,YAAY;QAAE,OAAO,EAAE,CAAC;IAE7B,MAAM,eAAe,GAAG,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;IAC/F,IAAI,CAAC,eAAe;QAAE,OAAO,EAAE,CAAC;IAEhC,MAAM,kBAAkB,GAAG,eAAe,CAAC,UAAU,CAAC;IACtD,IAAI,CAAC,kBAAkB;QAAE,OAAO,EAAE,CAAC;IAEnC,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,kBAAkB,CAAC;QAAE,OAAO,EAAE,CAAC;IAEnE,OAAO,MAAA,mBAAmB,CAAC,kBAAkB,CAAC,mCAAI,EAAE,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,yCAAyC,CACvD,SAA6C;IAE7C,MAAM,iBAAiB,GAA2B,EAAE,CAAC;IACrD,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;QACxD,MAAM,aAAa,GAAG,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAC;QAC1D,IAAI,aAAa,IAAI,yBAAyB,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;YAClE,iBAAiB,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;SACzC;KACF;IACD,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,YAAgC,EAChC,OAAuB,EACvB,IAAyB,EACzB,SAA2B;IAE3B,QAAQ,YAAY,EAAE;QACpB,KAAK,SAAS;YACZ,OAAO,OAAO,CAAC;QACjB,KAAK,cAAc;YACjB,OAAO,IAAI,CAAC;QACd,KAAK,WAAW;YACd,OAAO,SAAS,CAAC;KACpB;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aehrc/smart-forms-renderer",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "FHIR Structured Data Captured (SDC) rendering engine for Smart Forms",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
"@storybook/react": "^7.4.0",
|
|
59
59
|
"@storybook/react-vite": "^7.4.0",
|
|
60
60
|
"@storybook/testing-library": "^0.2.0",
|
|
61
|
-
"@testing-library/jest-dom": "^
|
|
61
|
+
"@testing-library/jest-dom": "^6.1.2",
|
|
62
62
|
"@testing-library/react": "^14.0.0",
|
|
63
63
|
"@testing-library/react-hooks": "^7.0.2",
|
|
64
64
|
"@types/jest": "^29.5.4",
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
import Box from '@mui/material/Box';
|
|
19
19
|
import { styled } from '@mui/material/styles';
|
|
20
|
+
import FormControlLabel from '@mui/material/FormControlLabel';
|
|
20
21
|
|
|
21
22
|
export const QGroupContainerBox = styled(Box, {
|
|
22
23
|
shouldForwardProp: (prop) => prop !== 'cardElevation' && prop !== 'isRepeated'
|
|
@@ -26,9 +27,13 @@ export const QGroupContainerBox = styled(Box, {
|
|
|
26
27
|
}));
|
|
27
28
|
|
|
28
29
|
export const FullWidthFormComponentBox = styled(Box)(() => ({
|
|
29
|
-
marginBottom:
|
|
30
|
+
marginBottom: 10
|
|
30
31
|
}));
|
|
31
32
|
|
|
32
33
|
export const FormTitleWrapper = styled(Box)(() => ({
|
|
33
34
|
marginTop: 12
|
|
34
35
|
}));
|
|
36
|
+
|
|
37
|
+
export const StyledFormControlLabel = styled(FormControlLabel)(() => ({
|
|
38
|
+
height: 34
|
|
39
|
+
}));
|
|
@@ -35,7 +35,6 @@ import WarningAmberIcon from '@mui/icons-material/WarningAmber';
|
|
|
35
35
|
import DoneIcon from '@mui/icons-material/Done';
|
|
36
36
|
import ErrorIcon from '@mui/icons-material/Error';
|
|
37
37
|
import useRenderingExtensions from '../../../hooks/useRenderingExtensions';
|
|
38
|
-
import { getTerminologyServerUrl } from '../../../utils/valueSet';
|
|
39
38
|
import type {
|
|
40
39
|
PropsWithIsRepeatedAttribute,
|
|
41
40
|
PropsWithIsTabledAttribute,
|
|
@@ -73,17 +72,16 @@ function ChoiceAutocompleteItem(props: ChoiceAutocompleteItemProps) {
|
|
|
73
72
|
const [input, setInput] = useState('');
|
|
74
73
|
const debouncedInput = useDebounce(input, AUTOCOMPLETE_DEBOUNCE_DURATION);
|
|
75
74
|
|
|
76
|
-
const answerValueSetUrl = qItem.answerValueSet;
|
|
77
|
-
const terminologyServerUrl = getTerminologyServerUrl(qItem);
|
|
78
75
|
const { options, loading, feedback } = useTerminologyServerQuery(
|
|
79
|
-
|
|
76
|
+
qItem,
|
|
80
77
|
maxList,
|
|
81
78
|
input,
|
|
82
|
-
debouncedInput
|
|
83
|
-
terminologyServerUrl
|
|
79
|
+
debouncedInput
|
|
84
80
|
);
|
|
85
81
|
|
|
86
|
-
if (!
|
|
82
|
+
if (!qItem.answerValueSet) {
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
87
85
|
|
|
88
86
|
// Event handlers
|
|
89
87
|
function handleValueChange(_: SyntheticEvent<Element, Event>, newValue: Coding | null) {
|
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
18
|
import React from 'react';
|
|
19
|
-
import FormControlLabel from '@mui/material/FormControlLabel';
|
|
20
19
|
import Radio from '@mui/material/Radio';
|
|
20
|
+
import { StyledFormControlLabel } from '../../Box.styles';
|
|
21
21
|
|
|
22
22
|
interface ChoiceRadioSingleProps {
|
|
23
23
|
value: string;
|
|
@@ -29,7 +29,7 @@ function ChoiceRadioSingle(props: ChoiceRadioSingleProps) {
|
|
|
29
29
|
const { value, label, readOnly } = props;
|
|
30
30
|
|
|
31
31
|
return (
|
|
32
|
-
<
|
|
32
|
+
<StyledFormControlLabel
|
|
33
33
|
disabled={readOnly}
|
|
34
34
|
value={value}
|
|
35
35
|
control={<Radio size="small" />}
|
|
@@ -48,9 +48,14 @@ function DateItem(props: DateItemProps) {
|
|
|
48
48
|
// Init input value
|
|
49
49
|
let dateString: string | null = null;
|
|
50
50
|
|
|
51
|
-
if (qrItem?.answer
|
|
52
|
-
|
|
51
|
+
if (qrItem?.answer) {
|
|
52
|
+
if (qrItem?.answer[0].valueDate) {
|
|
53
|
+
dateString = qrItem.answer[0].valueDate;
|
|
54
|
+
} else if (qrItem?.answer[0].valueDateTime) {
|
|
55
|
+
dateString = qrItem.answer[0].valueDateTime;
|
|
56
|
+
}
|
|
53
57
|
}
|
|
58
|
+
|
|
54
59
|
const dateDayJs = dateString ? dayjs(dateString) : null;
|
|
55
60
|
|
|
56
61
|
// Event handlers
|
|
@@ -47,8 +47,12 @@ function DateTimeItem(props: DateTimeItemProps) {
|
|
|
47
47
|
|
|
48
48
|
// Init input value
|
|
49
49
|
let dateTimeString: string | null = null;
|
|
50
|
-
if (qrItem?.answer
|
|
51
|
-
|
|
50
|
+
if (qrItem?.answer) {
|
|
51
|
+
if (qrItem?.answer[0].valueDate) {
|
|
52
|
+
dateTimeString = qrItem.answer[0].valueDate;
|
|
53
|
+
} else if (qrItem?.answer[0].valueDateTime) {
|
|
54
|
+
dateTimeString = qrItem.answer[0].valueDateTime;
|
|
55
|
+
}
|
|
52
56
|
}
|
|
53
57
|
const dateTimeDayJs = dateTimeString ? dayjs(dateTimeString) : null;
|
|
54
58
|
|
|
@@ -23,6 +23,7 @@ import { GridAnswerTableCell, GridTextTableCell } from '../Tables/Table.styles';
|
|
|
23
23
|
import SingleItem from '../SingleItem/SingleItem';
|
|
24
24
|
import { getQrItemsIndex, mapQItemsIndex } from '../../../utils/mapItem';
|
|
25
25
|
import Typography from '@mui/material/Typography';
|
|
26
|
+
import useHidden from '../../../hooks/useHidden';
|
|
26
27
|
|
|
27
28
|
interface GridRowProps extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem> {
|
|
28
29
|
qItem: QuestionnaireItem;
|
|
@@ -40,6 +41,11 @@ function GridRow(props: GridRowProps) {
|
|
|
40
41
|
|
|
41
42
|
const qItemsIndexMap = useMemo(() => mapQItemsIndex(qItem), [qItem]);
|
|
42
43
|
|
|
44
|
+
const itemIsHidden = useHidden(qItem);
|
|
45
|
+
if (itemIsHidden) {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
|
|
43
49
|
if (!rowQItems || !rowQrItems) {
|
|
44
50
|
return null;
|
|
45
51
|
}
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
import React from 'react';
|
|
19
19
|
import Checkbox from '@mui/material/Checkbox';
|
|
20
|
-
import
|
|
20
|
+
import { StyledFormControlLabel } from '../../Box.styles';
|
|
21
21
|
|
|
22
22
|
interface Props {
|
|
23
23
|
value: string;
|
|
@@ -31,7 +31,7 @@ function CheckboxSingle(props: Props) {
|
|
|
31
31
|
const { value, label, readOnly, isChecked, onCheckedChange } = props;
|
|
32
32
|
|
|
33
33
|
return (
|
|
34
|
-
<
|
|
34
|
+
<StyledFormControlLabel
|
|
35
35
|
disabled={readOnly}
|
|
36
36
|
control={
|
|
37
37
|
<Checkbox size="small" checked={isChecked} onChange={() => onCheckedChange(value)} />
|
|
@@ -37,7 +37,6 @@ import InfoIcon from '@mui/icons-material/Info';
|
|
|
37
37
|
import DoneIcon from '@mui/icons-material/Done';
|
|
38
38
|
import ErrorIcon from '@mui/icons-material/Error';
|
|
39
39
|
import useRenderingExtensions from '../../../hooks/useRenderingExtensions';
|
|
40
|
-
import { getTerminologyServerUrl } from '../../../utils/valueSet';
|
|
41
40
|
import type {
|
|
42
41
|
PropsWithIsRepeatedAttribute,
|
|
43
42
|
PropsWithIsTabledAttribute,
|
|
@@ -80,17 +79,16 @@ function OpenChoiceAutocompleteItem(props: OpenChoiceAutocompleteItemProps) {
|
|
|
80
79
|
const [input, setInput] = useState('');
|
|
81
80
|
const debouncedInput = useDebounce(input, AUTOCOMPLETE_DEBOUNCE_DURATION);
|
|
82
81
|
|
|
83
|
-
const answerValueSetUrl = qItem.answerValueSet;
|
|
84
|
-
const terminologyServerUrl = getTerminologyServerUrl(qItem);
|
|
85
82
|
const { options, loading, feedback } = useTerminologyServerQuery(
|
|
86
|
-
|
|
83
|
+
qItem,
|
|
87
84
|
maxList,
|
|
88
85
|
input,
|
|
89
|
-
debouncedInput
|
|
90
|
-
terminologyServerUrl
|
|
86
|
+
debouncedInput
|
|
91
87
|
);
|
|
92
88
|
|
|
93
|
-
if (!
|
|
89
|
+
if (!qItem.answerValueSet) {
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
94
92
|
|
|
95
93
|
// Event handlers
|
|
96
94
|
function handleValueChange(_: SyntheticEvent<Element, Event>, newValue: Coding | string | null) {
|
|
@@ -24,6 +24,7 @@ import type {
|
|
|
24
24
|
} from '../../../interfaces/renderProps.interface';
|
|
25
25
|
import useQuestionnaireStore from '../../../stores/useQuestionnaireStore';
|
|
26
26
|
import SingleItemSwitcher from './SingleItemSwitcher';
|
|
27
|
+
import useHidden from '../../../hooks/useHidden';
|
|
27
28
|
|
|
28
29
|
interface SingleItemProps
|
|
29
30
|
extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
|
|
@@ -48,6 +49,11 @@ function SingleItem(props: SingleItemProps) {
|
|
|
48
49
|
[updateEnableWhenItem, onQrItemChange, qItem.linkId]
|
|
49
50
|
);
|
|
50
51
|
|
|
52
|
+
const itemIsHidden = useHidden(qItem);
|
|
53
|
+
if (itemIsHidden) {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
|
|
51
57
|
return (
|
|
52
58
|
<SingleItemSwitcher
|
|
53
59
|
qItem={qItem}
|
|
@@ -23,7 +23,7 @@ import TabPanel from '@mui/lab/TabPanel';
|
|
|
23
23
|
import { getQrItemsIndex, mapQItemsIndex } from '../../utils/mapItem';
|
|
24
24
|
import GroupItem from '../FormComponents/GroupItem/GroupItem';
|
|
25
25
|
import { updateQrGroup } from '../../utils/qrItem';
|
|
26
|
-
import
|
|
26
|
+
import FormBodyTabListWrapper from '../Tabs/FormBodyTabListWrapper';
|
|
27
27
|
import type { PropsWithQrItemChangeHandler } from '../../interfaces/renderProps.interface';
|
|
28
28
|
import useQuestionnaireStore from '../../stores/useQuestionnaireStore';
|
|
29
29
|
|
|
@@ -61,7 +61,7 @@ function FormBodyTabbed(props: FormBodyTabbedProps) {
|
|
|
61
61
|
<Grid container spacing={2}>
|
|
62
62
|
<TabContext value={currentTab.toString()}>
|
|
63
63
|
<Grid item xs={12} md={3.5} lg={3} xl={2.75}>
|
|
64
|
-
<
|
|
64
|
+
<FormBodyTabListWrapper qFormItems={qItems} currentTabIndex={currentTab} tabs={tabs} />
|
|
65
65
|
</Grid>
|
|
66
66
|
|
|
67
67
|
<Grid item xs={12} md={8.5} lg={9} xl={9.25}>
|
|
@@ -32,17 +32,24 @@ interface SmartFormsRendererProps {
|
|
|
32
32
|
questionnaire: Questionnaire;
|
|
33
33
|
questionnaireResponse?: QuestionnaireResponse;
|
|
34
34
|
additionalVariables?: Record<string, object>;
|
|
35
|
+
terminologyServerUrl?: string;
|
|
35
36
|
fhirClient?: Client;
|
|
36
37
|
}
|
|
37
38
|
|
|
38
|
-
// TODO add terminiology server
|
|
39
39
|
function SmartFormsRenderer(props: SmartFormsRendererProps) {
|
|
40
|
-
const {
|
|
40
|
+
const {
|
|
41
|
+
questionnaire,
|
|
42
|
+
questionnaireResponse,
|
|
43
|
+
additionalVariables,
|
|
44
|
+
terminologyServerUrl,
|
|
45
|
+
fhirClient
|
|
46
|
+
} = props;
|
|
41
47
|
|
|
42
48
|
const isLoading = useInitialiseRenderer(
|
|
43
49
|
questionnaire,
|
|
44
50
|
questionnaireResponse,
|
|
45
51
|
additionalVariables,
|
|
52
|
+
terminologyServerUrl,
|
|
46
53
|
fhirClient
|
|
47
54
|
);
|
|
48
55
|
const queryClient = useQueryClient();
|
|
@@ -23,23 +23,20 @@ import Typography from '@mui/material/Typography';
|
|
|
23
23
|
|
|
24
24
|
import useQuestionnaireStore from '../../stores/useQuestionnaireStore';
|
|
25
25
|
import type { QuestionnaireItem } from 'fhir/r4';
|
|
26
|
-
import { getContextDisplays } from '../../utils/tabs';
|
|
27
26
|
import ContextDisplayItem from '../FormComponents/ItemParts/ContextDisplayItem';
|
|
28
27
|
|
|
29
28
|
interface FormBodySingleTabProps {
|
|
30
|
-
|
|
29
|
+
contextDisplayItems: QuestionnaireItem[];
|
|
31
30
|
selected: boolean;
|
|
32
31
|
tabLabel: string;
|
|
33
32
|
listIndex: number;
|
|
34
33
|
}
|
|
35
34
|
|
|
36
35
|
const FormBodySingleTab = memo(function FormBodySingleTab(props: FormBodySingleTabProps) {
|
|
37
|
-
const {
|
|
36
|
+
const { contextDisplayItems, selected, tabLabel, listIndex } = props;
|
|
38
37
|
|
|
39
38
|
const switchTab = useQuestionnaireStore((state) => state.switchTab);
|
|
40
39
|
|
|
41
|
-
const contextDisplayItems = getContextDisplays(qItem);
|
|
42
|
-
|
|
43
40
|
function handleTabClick() {
|
|
44
41
|
switchTab(listIndex);
|
|
45
42
|
window.scrollTo(0, 0);
|
|
@@ -55,7 +52,7 @@ const FormBodySingleTab = memo(function FormBodySingleTab(props: FormBodySingleT
|
|
|
55
52
|
primary={
|
|
56
53
|
<Box display="flex" alignItems="center" justifyContent="space-between">
|
|
57
54
|
<Typography variant="subtitle2">{tabLabel}</Typography>
|
|
58
|
-
<Box display="flex">
|
|
55
|
+
<Box display="flex" minHeight={24} minWidth={24} ml={1}>
|
|
59
56
|
{contextDisplayItems.map((item) => {
|
|
60
57
|
return <ContextDisplayItem key={item.linkId} displayItem={item} />;
|
|
61
58
|
})}
|
|
@@ -15,70 +15,70 @@
|
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
-
import React, { memo } from 'react';
|
|
19
|
-
import Box from '@mui/material/Box';
|
|
20
|
-
import Card from '@mui/material/Card';
|
|
18
|
+
import React, { memo, useMemo } from 'react';
|
|
21
19
|
import Collapse from '@mui/material/Collapse';
|
|
22
|
-
import { PrimarySelectableList } from '../Lists.styles';
|
|
23
20
|
import { TransitionGroup } from 'react-transition-group';
|
|
24
|
-
import { isHidden } from '../../utils/qItem';
|
|
25
21
|
import { getShortText } from '../../utils/itemControl';
|
|
26
22
|
import type { QuestionnaireItem } from 'fhir/r4';
|
|
27
23
|
import FormBodySingleTab from './FormBodySingleTab';
|
|
28
24
|
import type { Tabs } from '../../interfaces/tab.interface';
|
|
29
25
|
import useQuestionnaireStore from '../../stores/useQuestionnaireStore';
|
|
26
|
+
import { getContextDisplays, isTabHidden } from '../../utils/tabs';
|
|
30
27
|
|
|
31
28
|
interface FormBodyTabListProps {
|
|
32
|
-
|
|
29
|
+
topLevelItems: QuestionnaireItem[];
|
|
33
30
|
currentTabIndex: number;
|
|
34
31
|
tabs: Tabs;
|
|
32
|
+
completedTabsCollapsed: boolean;
|
|
35
33
|
}
|
|
36
34
|
|
|
37
35
|
const FormBodyTabList = memo(function FormBodyTabList(props: FormBodyTabListProps) {
|
|
38
|
-
const {
|
|
36
|
+
const { topLevelItems, currentTabIndex, tabs, completedTabsCollapsed } = props;
|
|
39
37
|
|
|
40
38
|
const enableWhenIsActivated = useQuestionnaireStore((state) => state.enableWhenIsActivated);
|
|
41
39
|
const enableWhenItems = useQuestionnaireStore((state) => state.enableWhenItems);
|
|
42
40
|
const enableWhenExpressions = useQuestionnaireStore((state) => state.enableWhenExpressions);
|
|
43
41
|
|
|
42
|
+
const allContextDisplayItems = useMemo(
|
|
43
|
+
() => topLevelItems.map((topLevelItem) => getContextDisplays(topLevelItem)),
|
|
44
|
+
[topLevelItems]
|
|
45
|
+
);
|
|
46
|
+
|
|
44
47
|
return (
|
|
45
|
-
<
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
{qFormItems.map((qItem, i) => {
|
|
50
|
-
const isTab = !!tabs[qItem.linkId];
|
|
48
|
+
<TransitionGroup>
|
|
49
|
+
{topLevelItems.map((qItem, i) => {
|
|
50
|
+
const contextDisplayItems = allContextDisplayItems[i];
|
|
51
|
+
const isTab = !!tabs[qItem.linkId];
|
|
51
52
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
53
|
+
if (
|
|
54
|
+
isTabHidden({
|
|
55
|
+
qItem,
|
|
56
|
+
contextDisplayItems,
|
|
57
|
+
isTab,
|
|
58
|
+
enableWhenIsActivated,
|
|
59
|
+
enableWhenItems,
|
|
60
|
+
enableWhenExpressions,
|
|
61
|
+
completedTabsCollapsed
|
|
62
|
+
})
|
|
63
|
+
) {
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
63
66
|
|
|
64
|
-
|
|
65
|
-
|
|
67
|
+
const tabIsSelected = currentTabIndex.toString() === i.toString();
|
|
68
|
+
const tabLabel = getShortText(qItem) ?? qItem.text ?? '';
|
|
66
69
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
</PrimarySelectableList>
|
|
80
|
-
</Box>
|
|
81
|
-
</Card>
|
|
70
|
+
return (
|
|
71
|
+
<Collapse key={qItem.linkId} timeout={100}>
|
|
72
|
+
<FormBodySingleTab
|
|
73
|
+
contextDisplayItems={contextDisplayItems}
|
|
74
|
+
selected={tabIsSelected}
|
|
75
|
+
tabLabel={tabLabel}
|
|
76
|
+
listIndex={i}
|
|
77
|
+
/>
|
|
78
|
+
</Collapse>
|
|
79
|
+
);
|
|
80
|
+
})}
|
|
81
|
+
</TransitionGroup>
|
|
82
82
|
);
|
|
83
83
|
});
|
|
84
84
|
|