@aehrc/smart-forms-renderer 0.43.1 → 0.44.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/.storybook/preview.tsx +1 -1
- package/lib/hooks/useTerminologyServerQuery.js +5 -3
- package/lib/hooks/useTerminologyServerQuery.js.map +1 -1
- package/lib/hooks/useValueSetCodings.js +4 -2
- package/lib/hooks/useValueSetCodings.js.map +1 -1
- package/lib/interfaces/questionnaireStore.interface.d.ts +1 -0
- package/lib/stores/questionnaireStore.d.ts +3 -0
- package/lib/stores/questionnaireStore.js +3 -0
- package/lib/stores/questionnaireStore.js.map +1 -1
- package/lib/stories/storybookWrappers/iframeResizerChild.d.ts +1 -0
- package/lib/stories/storybookWrappers/iframeResizerChild.js +849 -0
- package/lib/stories/storybookWrappers/iframeResizerChild.js.map +1 -0
- package/lib/utils/qItem.d.ts +1 -0
- package/lib/utils/qItem.js +38 -0
- package/lib/utils/qItem.js.map +1 -1
- package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js +5 -2
- package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.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/valueSet.js +1 -0
- package/lib/utils/valueSet.js.map +1 -1
- package/package.json +2 -3
- package/src/hooks/useTerminologyServerQuery.ts +5 -1
- package/src/hooks/useValueSetCodings.ts +7 -1
- package/src/interfaces/questionnaireStore.interface.ts +1 -0
- package/src/stores/questionnaireStore.ts +5 -0
- package/src/stories/assets/questionnaires/QTerminologyControl.ts +59 -0
- package/src/stories/assets/questionnaires/index.ts +1 -0
- package/src/stories/sdc/OtherExtensions.stories.tsx +39 -0
- package/src/stories/storybookWrappers/BuildFormWrapperForStorybook.tsx +3 -0
- package/src/utils/qItem.ts +68 -1
- package/src/utils/questionnaireStoreUtils/createQuestionaireModel.ts +7 -1
- package/src/utils/questionnaireStoreUtils/extractOtherExtensions.ts +10 -1
- package/src/utils/valueSet.ts +1 -0
- /package/{.storybook → src/stories/storybookWrappers}/iframeResizerChild.js +0 -0
|
@@ -29,7 +29,7 @@ import { extractOtherExtensions } from './extractOtherExtensions';
|
|
|
29
29
|
import type { Variables } from '../../interfaces/variables.interface';
|
|
30
30
|
import { resolveValueSets } from './resolveValueSets';
|
|
31
31
|
import { addAdditionalVariables } from './addAdditionalVariables';
|
|
32
|
-
import { getLinkIdTypeTuples } from '../qItem';
|
|
32
|
+
import { getLinkIdPreferredTerminologyServerTuples, getLinkIdTypeTuples } from '../qItem';
|
|
33
33
|
import { addDisplayToAnswerOptions, addDisplayToProcessedCodings } from './addDisplayToCodings';
|
|
34
34
|
|
|
35
35
|
export async function createQuestionnaireModel(
|
|
@@ -42,6 +42,9 @@ export async function createQuestionnaireModel(
|
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
const itemTypes: Record<string, string> = Object.fromEntries(getLinkIdTypeTuples(questionnaire));
|
|
45
|
+
const itemPreferredTerminologyServers: Record<string, string> = Object.fromEntries(
|
|
46
|
+
getLinkIdPreferredTerminologyServerTuples(questionnaire)
|
|
47
|
+
);
|
|
45
48
|
const tabs: Tabs = extractTabs(questionnaire);
|
|
46
49
|
const pages: Pages = extractPages(questionnaire);
|
|
47
50
|
|
|
@@ -62,6 +65,7 @@ export async function createQuestionnaireModel(
|
|
|
62
65
|
questionnaire,
|
|
63
66
|
variables,
|
|
64
67
|
valueSetPromises,
|
|
68
|
+
itemPreferredTerminologyServers,
|
|
65
69
|
terminologyServerUrl
|
|
66
70
|
);
|
|
67
71
|
|
|
@@ -100,6 +104,7 @@ export async function createQuestionnaireModel(
|
|
|
100
104
|
|
|
101
105
|
return {
|
|
102
106
|
itemTypes,
|
|
107
|
+
itemPreferredTerminologyServers,
|
|
103
108
|
tabs,
|
|
104
109
|
pages,
|
|
105
110
|
variables,
|
|
@@ -119,6 +124,7 @@ export async function createQuestionnaireModel(
|
|
|
119
124
|
function createEmptyModel(): QuestionnaireModel {
|
|
120
125
|
return {
|
|
121
126
|
itemTypes: {},
|
|
127
|
+
itemPreferredTerminologyServers: {},
|
|
122
128
|
tabs: {},
|
|
123
129
|
pages: {},
|
|
124
130
|
variables: { fhirPathVariables: {}, xFhirQueryVariables: {} },
|
|
@@ -65,6 +65,7 @@ export function extractOtherExtensions(
|
|
|
65
65
|
questionnaire: Questionnaire,
|
|
66
66
|
variables: Variables,
|
|
67
67
|
valueSetPromises: Record<string, ValueSetPromise>,
|
|
68
|
+
itemPreferredTerminologyServers: Record<string, string>,
|
|
68
69
|
terminologyServerUrl: string
|
|
69
70
|
): ReturnParamsRecursive {
|
|
70
71
|
const enableWhenItems: EnableWhenItems = { singleItems: {}, repeatItems: {} };
|
|
@@ -106,6 +107,7 @@ export function extractOtherExtensions(
|
|
|
106
107
|
answerExpressions,
|
|
107
108
|
answerOptions,
|
|
108
109
|
valueSetPromises,
|
|
110
|
+
itemPreferredTerminologyServers,
|
|
109
111
|
defaultTerminologyServerUrl: terminologyServerUrl,
|
|
110
112
|
parentRepeatGroupLinkId: isRepeatGroup ? topLevelItem.linkId : undefined
|
|
111
113
|
});
|
|
@@ -134,6 +136,7 @@ interface extractExtensionsFromItemRecursiveParams {
|
|
|
134
136
|
answerExpressions: Record<string, AnswerExpression>;
|
|
135
137
|
answerOptions: Record<string, QuestionnaireItemAnswerOption[]>;
|
|
136
138
|
valueSetPromises: Record<string, ValueSetPromise>;
|
|
139
|
+
itemPreferredTerminologyServers: Record<string, string>;
|
|
137
140
|
defaultTerminologyServerUrl: string;
|
|
138
141
|
parentRepeatGroupLinkId?: string;
|
|
139
142
|
}
|
|
@@ -152,6 +155,7 @@ function extractExtensionsFromItemRecursive(
|
|
|
152
155
|
answerExpressions,
|
|
153
156
|
answerOptions,
|
|
154
157
|
valueSetPromises,
|
|
158
|
+
itemPreferredTerminologyServers,
|
|
155
159
|
defaultTerminologyServerUrl,
|
|
156
160
|
parentRepeatGroupLinkId
|
|
157
161
|
} = params;
|
|
@@ -234,7 +238,12 @@ function extractExtensionsFromItemRecursive(
|
|
|
234
238
|
const valueSetUrl = item.answerValueSet;
|
|
235
239
|
if (valueSetUrl) {
|
|
236
240
|
if (!valueSetPromises[valueSetUrl] && !valueSetUrl.startsWith('#')) {
|
|
237
|
-
const
|
|
241
|
+
const preferredTerminologyServerUrl = itemPreferredTerminologyServers[item.linkId];
|
|
242
|
+
const terminologyServerUrl =
|
|
243
|
+
getTerminologyServerUrl(item) ??
|
|
244
|
+
preferredTerminologyServerUrl ??
|
|
245
|
+
defaultTerminologyServerUrl;
|
|
246
|
+
|
|
238
247
|
valueSetPromises[valueSetUrl] = {
|
|
239
248
|
promise: getValueSetPromise(valueSetUrl, terminologyServerUrl)
|
|
240
249
|
};
|
package/src/utils/valueSet.ts
CHANGED
|
@@ -36,6 +36,7 @@ const VALID_VALUE_SET_URL_REGEX =
|
|
|
36
36
|
|
|
37
37
|
const VALID_FHIRPATH_VARIABLE_REGEX = /%(.*?)\./;
|
|
38
38
|
|
|
39
|
+
// Mainly for backwards compatibility, doesn't exist in the SDC spec anymore
|
|
39
40
|
export function getTerminologyServerUrl(qItem: QuestionnaireItem): string | undefined {
|
|
40
41
|
const itemControl = qItem.extension?.find(
|
|
41
42
|
(extension: Extension) =>
|
|
File without changes
|