@aehrc/smart-forms-renderer 1.2.0 → 1.2.2
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/FormComponents/ItemParts/FadingCheckIcon.d.ts +7 -0
- package/lib/components/FormComponents/ItemParts/FadingCheckIcon.js +26 -0
- package/lib/components/FormComponents/ItemParts/FadingCheckIcon.js.map +1 -0
- package/lib/components/FormComponents/ItemParts/ItemLabelText.d.ts +8 -0
- package/lib/components/FormComponents/ItemParts/ItemLabelText.js +63 -0
- package/lib/components/FormComponents/ItemParts/ItemLabelText.js.map +1 -0
- package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.d.ts +8 -0
- package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.js +53 -0
- package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.js.map +1 -0
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.js +4 -3
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.js.map +1 -1
- package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.d.ts +10 -0
- package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.js +30 -0
- package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.js.map +1 -0
- package/lib/components/FormComponents/SingleItem/SingleItem.js +15 -2
- package/lib/components/FormComponents/SingleItem/SingleItem.js.map +1 -1
- package/lib/components/FormComponents/SingleItem/SingleNestedItems.js +8 -8
- package/lib/components/FormComponents/SingleItem/SingleNestedItems.js.map +1 -1
- package/lib/components/Iconify/Iconify.d.ts +10 -0
- package/lib/components/Iconify/Iconify.js +26 -0
- package/lib/components/Iconify/Iconify.js.map +1 -0
- package/lib/components/Renderer/FormBodyPage.d.ts +9 -0
- package/lib/components/Renderer/FormBodyPage.js +43 -0
- package/lib/components/Renderer/FormBodyPage.js.map +1 -0
- package/lib/components/Renderer/FormTitle.d.ts +7 -0
- package/lib/components/Renderer/FormTitle.js +30 -0
- package/lib/components/Renderer/FormTitle.js.map +1 -0
- package/lib/components/Renderer/FormTopLevelPage.d.ts +9 -0
- package/lib/components/Renderer/FormTopLevelPage.js +29 -0
- package/lib/components/Renderer/FormTopLevelPage.js.map +1 -0
- package/lib/components/Tabs/FormBodyTabListWrapper.js +1 -1
- package/lib/components/Tabs/FormBodyTabListWrapper.js.map +1 -1
- package/lib/hooks/useBooleanCalculatedExpression.d.ts +12 -0
- package/lib/hooks/useBooleanCalculatedExpression.js +53 -0
- package/lib/hooks/useBooleanCalculatedExpression.js.map +1 -0
- package/lib/hooks/useDecimalCalculatedExpression.d.ts +13 -0
- package/lib/hooks/useDecimalCalculatedExpression.js +59 -0
- package/lib/hooks/useDecimalCalculatedExpression.js.map +1 -0
- package/lib/hooks/useIntegerCalculatedExpression.d.ts +12 -0
- package/lib/hooks/useIntegerCalculatedExpression.js +56 -0
- package/lib/hooks/useIntegerCalculatedExpression.js.map +1 -0
- package/lib/hooks/useQuantityCalculatedExpression.d.ts +14 -0
- package/lib/hooks/useQuantityCalculatedExpression.js +107 -0
- package/lib/hooks/useQuantityCalculatedExpression.js.map +1 -0
- package/lib/hooks/useStringCalculatedExpression.d.ts +12 -0
- package/lib/hooks/useStringCalculatedExpression.js +58 -0
- package/lib/hooks/useStringCalculatedExpression.js.map +1 -0
- package/lib/stores/rendererConfigStore.d.ts +1 -1
- package/lib/stories/storybookWrappers/InitialiseFormWrapperForStorybook.d.ts +3 -2
- package/lib/stories/storybookWrappers/InitialiseFormWrapperForStorybook.js +27 -6
- package/lib/stories/storybookWrappers/InitialiseFormWrapperForStorybook.js.map +1 -1
- package/lib/stories/storybookWrappers/index.js +1 -1
- package/lib/theme/Theme.d.ts +44 -0
- package/lib/theme/Theme.js +43 -0
- package/lib/theme/Theme.js.map +1 -0
- package/lib/theme/customGlobalStyles.d.ts +2 -0
- package/lib/theme/customGlobalStyles.js +61 -0
- package/lib/theme/customGlobalStyles.js.map +1 -0
- package/lib/theme/overrides/Accordion.d.ts +14 -0
- package/lib/theme/overrides/Accordion.js +32 -0
- package/lib/theme/overrides/Accordion.js.map +1 -0
- package/lib/theme/overrides/Autocomplete.d.ts +10 -0
- package/lib/theme/overrides/Autocomplete.js +28 -0
- package/lib/theme/overrides/Autocomplete.js.map +1 -0
- package/lib/theme/overrides/Button.d.ts +33 -0
- package/lib/theme/overrides/Button.js +52 -0
- package/lib/theme/overrides/Button.js.map +1 -0
- package/lib/theme/overrides/Card.d.ts +35 -0
- package/lib/theme/overrides/Card.js +49 -0
- package/lib/theme/overrides/Card.js.map +1 -0
- package/lib/theme/overrides/Input.d.ts +64 -0
- package/lib/theme/overrides/Input.js +81 -0
- package/lib/theme/overrides/Input.js.map +1 -0
- package/lib/theme/overrides/Overrides.d.ts +3 -0
- package/lib/theme/overrides/Overrides.js +29 -0
- package/lib/theme/overrides/Overrides.js.map +1 -0
- package/lib/theme/overrides/Paper.d.ts +12 -0
- package/lib/theme/overrides/Paper.js +31 -0
- package/lib/theme/overrides/Paper.js.map +1 -0
- package/lib/theme/overrides/SpeedDial.d.ts +16 -0
- package/lib/theme/overrides/SpeedDial.js +34 -0
- package/lib/theme/overrides/SpeedDial.js.map +1 -0
- package/lib/theme/overrides/Table.d.ts +12 -0
- package/lib/theme/overrides/Table.js +30 -0
- package/lib/theme/overrides/Table.js.map +1 -0
- package/lib/theme/palette.d.ts +27 -0
- package/lib/theme/palette.js +63 -0
- package/lib/theme/palette.js.map +1 -0
- package/lib/theme/shadows.d.ts +2 -0
- package/lib/theme/shadows.js +52 -0
- package/lib/theme/shadows.js.map +1 -0
- package/lib/utils/calculatedExpression.js +11 -0
- package/lib/utils/calculatedExpression.js.map +1 -1
- package/lib/utils/dayjsExtend.d.ts +1 -0
- package/lib/utils/dayjsExtend.js +22 -0
- package/lib/utils/dayjsExtend.js.map +1 -0
- package/lib/utils/initialise.js +8 -1
- package/lib/utils/initialise.js.map +1 -1
- package/lib/utils/itemControl.d.ts +103 -0
- package/lib/utils/itemControl.js +350 -0
- package/lib/utils/itemControl.js.map +1 -0
- package/lib/utils/mapItem.d.ts +1 -1
- package/lib/utils/mapItem.js +2 -0
- package/lib/utils/mapItem.js.map +1 -1
- package/lib/utils/qrItem.d.ts +13 -0
- package/lib/utils/qrItem.js +76 -0
- package/lib/utils/qrItem.js.map +1 -1
- package/lib/utils/questionnaireStoreUtils/addAdditionalVariables.d.ts +2 -0
- package/lib/utils/questionnaireStoreUtils/addAdditionalVariables.js +43 -0
- package/lib/utils/questionnaireStoreUtils/addAdditionalVariables.js.map +1 -0
- package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.d.ts +3 -0
- package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js +101 -0
- package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js.map +1 -0
- package/lib/utils/questionnaireStoreUtils/extractOtherExtensions.js +4 -2
- package/lib/utils/questionnaireStoreUtils/extractOtherExtensions.js.map +1 -1
- package/lib/utils/validateQuestionnaire.d.ts +66 -0
- package/lib/utils/validateQuestionnaire.js +559 -0
- package/lib/utils/validateQuestionnaire.js.map +1 -0
- package/package.json +1 -1
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.tsx +4 -3
- package/src/components/FormComponents/SingleItem/SingleItem.tsx +16 -2
- package/src/components/FormComponents/SingleItem/SingleNestedItems.tsx +8 -9
- package/src/components/Tabs/FormBodyTabListWrapper.tsx +1 -1
- package/src/stores/rendererConfigStore.ts +1 -1
- package/src/utils/calculatedExpression.ts +11 -0
- package/src/utils/initialise.ts +8 -1
- package/src/utils/mapItem.ts +3 -1
- package/src/utils/qrItem.ts +91 -0
- package/src/utils/questionnaireStoreUtils/extractOtherExtensions.ts +4 -2
- package/lib/interfaces/itemPath.interface.d.ts +0 -31
- package/lib/interfaces/itemPath.interface.js +0 -2
- package/lib/interfaces/itemPath.interface.js.map +0 -1
- package/lib/utils/itemPath.d.ts +0 -57
- package/lib/utils/itemPath.js +0 -75
- package/lib/utils/itemPath.js.map +0 -1
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2024 Commonwealth Scientific and Industrial Research
|
|
3
|
+
* Organisation (CSIRO) ABN 41 687 119 230.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
import { structuredDataCapture } from 'fhir-sdc-helpers';
|
|
18
|
+
function hasDisplayCategory(qItem) {
|
|
19
|
+
var _a;
|
|
20
|
+
return !!((_a = qItem.extension) === null || _a === void 0 ? void 0 : _a.some((extension) => extension.url === 'http://hl7.org/fhir/StructureDefinition/questionnaire-displayCategory'));
|
|
21
|
+
}
|
|
22
|
+
function hasItemControl(qItem) {
|
|
23
|
+
var _a;
|
|
24
|
+
return !!((_a = qItem.extension) === null || _a === void 0 ? void 0 : _a.some((extension) => extension.url === 'http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl'));
|
|
25
|
+
}
|
|
26
|
+
// If all nested items are of type display and have itemControl, then they should not be rendered
|
|
27
|
+
export function shouldRenderNestedItems(qItem) {
|
|
28
|
+
var _a;
|
|
29
|
+
return !((_a = qItem.item) === null || _a === void 0 ? void 0 : _a.every((childItem) => childItem.type === 'display' && (hasDisplayCategory(childItem) || hasItemControl(childItem))));
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Check if the extension has an itemControl code equal to the given itemControlCode
|
|
33
|
+
*
|
|
34
|
+
* @author Sean Fong
|
|
35
|
+
*/
|
|
36
|
+
export function isSpecificItemControl(qItem, itemControlCode) {
|
|
37
|
+
var _a, _b, _c;
|
|
38
|
+
const itemControl = (_a = qItem === null || qItem === void 0 ? void 0 : qItem.extension) === null || _a === void 0 ? void 0 : _a.find((extension) => extension.url === 'http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl');
|
|
39
|
+
if (itemControl) {
|
|
40
|
+
const code = (_c = (_b = itemControl.valueCodeableConcept) === null || _b === void 0 ? void 0 : _b.coding) === null || _c === void 0 ? void 0 : _c.find((coding) => coding.code === itemControlCode);
|
|
41
|
+
if (code) {
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Check if the extension has an displayCategory code equal to the given displayCategory
|
|
49
|
+
*
|
|
50
|
+
* @author Sean Fong
|
|
51
|
+
*/
|
|
52
|
+
export function isSpecificDisplayCategory(qItem, itemControlCode) {
|
|
53
|
+
var _a, _b, _c;
|
|
54
|
+
const displayCategory = (_a = qItem.extension) === null || _a === void 0 ? void 0 : _a.find((extension) => extension.url === 'http://hl7.org/fhir/StructureDefinition/questionnaire-displayCategory');
|
|
55
|
+
if (displayCategory) {
|
|
56
|
+
const code = (_c = (_b = displayCategory.valueCodeableConcept) === null || _b === void 0 ? void 0 : _b.coding) === null || _c === void 0 ? void 0 : _c.find((coding) => coding.code === itemControlCode);
|
|
57
|
+
if (code) {
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Check if the extension has url for items that use shortText
|
|
65
|
+
*
|
|
66
|
+
* @author Sean Fong
|
|
67
|
+
*/
|
|
68
|
+
export function getShortText(qItem) {
|
|
69
|
+
var _a;
|
|
70
|
+
const itemControl = (_a = qItem.extension) === null || _a === void 0 ? void 0 : _a.find((extension) => extension.url === 'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-shortText');
|
|
71
|
+
if (itemControl) {
|
|
72
|
+
if (itemControl.valueString) {
|
|
73
|
+
return itemControl.valueString;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Check if the extension has url for hidden questions
|
|
80
|
+
*
|
|
81
|
+
* @author Sean Fong
|
|
82
|
+
*/
|
|
83
|
+
export function hasHiddenExtension(qItem) {
|
|
84
|
+
var _a;
|
|
85
|
+
const itemControl = (_a = qItem.extension) === null || _a === void 0 ? void 0 : _a.find((extension) => extension.url === 'http://hl7.org/fhir/StructureDefinition/questionnaire-hidden');
|
|
86
|
+
if (itemControl) {
|
|
87
|
+
if (itemControl.valueBoolean) {
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Check if the extension has url for items that use open label
|
|
95
|
+
*
|
|
96
|
+
* @author Sean Fong
|
|
97
|
+
*/
|
|
98
|
+
export function getOpenLabelText(qItem) {
|
|
99
|
+
var _a;
|
|
100
|
+
const itemControl = (_a = qItem.extension) === null || _a === void 0 ? void 0 : _a.find((extension) => extension.url === 'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-openLabel');
|
|
101
|
+
if (itemControl) {
|
|
102
|
+
if (itemControl.valueString) {
|
|
103
|
+
return itemControl.valueString;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Check if the decimal value has a quantity precision for the decimal value
|
|
110
|
+
*
|
|
111
|
+
* @author Sean Fong
|
|
112
|
+
*/
|
|
113
|
+
export function getDecimalPrecision(qItem) {
|
|
114
|
+
var _a;
|
|
115
|
+
const itemControl = (_a = qItem.extension) === null || _a === void 0 ? void 0 : _a.find((extension) => extension.url === 'http://hl7.org/fhir/StructureDefinition/quantity-precision');
|
|
116
|
+
if (itemControl) {
|
|
117
|
+
if (itemControl.valueInteger) {
|
|
118
|
+
return itemControl.valueInteger;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Check if the extension has a url for xhtml rendering
|
|
125
|
+
*
|
|
126
|
+
* @author Sean Fong
|
|
127
|
+
*/
|
|
128
|
+
export function getXHtmlString(qItem) {
|
|
129
|
+
var _a, _b;
|
|
130
|
+
let xHtmlString = null;
|
|
131
|
+
if (qItem.extension) {
|
|
132
|
+
xHtmlString = getXHtmlStringFromExtension(qItem.extension);
|
|
133
|
+
if (xHtmlString) {
|
|
134
|
+
return xHtmlString;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
if ((_a = qItem._text) === null || _a === void 0 ? void 0 : _a.extension) {
|
|
138
|
+
xHtmlString = getXHtmlStringFromExtension((_b = qItem._text) === null || _b === void 0 ? void 0 : _b.extension);
|
|
139
|
+
if (xHtmlString) {
|
|
140
|
+
return xHtmlString;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return null;
|
|
144
|
+
}
|
|
145
|
+
export function getXHtmlStringFromExtension(extensions) {
|
|
146
|
+
const itemControl = extensions === null || extensions === void 0 ? void 0 : extensions.find((extension) => extension.url === 'http://hl7.org/fhir/StructureDefinition/rendering-xhtml');
|
|
147
|
+
if (itemControl) {
|
|
148
|
+
if (itemControl.valueString) {
|
|
149
|
+
return itemControl.valueString;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return null;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Check if the item label (text) has a valueMarkdown extension
|
|
156
|
+
*
|
|
157
|
+
* @author Sean Fong
|
|
158
|
+
*/
|
|
159
|
+
export function getMarkdownString(qItem) {
|
|
160
|
+
var _a, _b;
|
|
161
|
+
const itemControl = (_b = (_a = qItem._text) === null || _a === void 0 ? void 0 : _a.extension) === null || _b === void 0 ? void 0 : _b.find((extension) => extension.url === 'http://hl7.org/fhir/StructureDefinition/rendering-markdown');
|
|
162
|
+
if (itemControl) {
|
|
163
|
+
if (itemControl.valueMarkdown) {
|
|
164
|
+
return itemControl.valueMarkdown;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return null;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Get text display prompt for items with itemControlCode prompt and has a prompt childItem
|
|
171
|
+
*
|
|
172
|
+
* @author Sean Fong
|
|
173
|
+
*/
|
|
174
|
+
export function getTextDisplayPrompt(qItem) {
|
|
175
|
+
if (qItem.item) {
|
|
176
|
+
for (const childItem of qItem.item) {
|
|
177
|
+
if (childItem.type === 'display' && isSpecificItemControl(childItem, 'prompt')) {
|
|
178
|
+
const promptText = `${childItem.text}`;
|
|
179
|
+
return promptText[0].toUpperCase() + promptText.substring(1);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
return '';
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Get Quantity unit for items with itemControlCode unit and has a unit childItem
|
|
187
|
+
*
|
|
188
|
+
* @author Sean Fong
|
|
189
|
+
*/
|
|
190
|
+
export function getQuantityUnit(qItem) {
|
|
191
|
+
var _a;
|
|
192
|
+
// Otherwise, check if the item has a unit extension
|
|
193
|
+
const itemControl = (_a = qItem.extension) === null || _a === void 0 ? void 0 : _a.find((extension) => extension.url === 'http://hl7.org/fhir/StructureDefinition/questionnaire-unit');
|
|
194
|
+
if (itemControl && itemControl.valueCoding) {
|
|
195
|
+
return itemControl;
|
|
196
|
+
}
|
|
197
|
+
return null;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Get decimal text display unit for items with itemControlCode unit and has a unit childItem
|
|
201
|
+
*
|
|
202
|
+
* @author Sean Fong
|
|
203
|
+
*/
|
|
204
|
+
export function getTextDisplayUnit(qItem) {
|
|
205
|
+
var _a, _b;
|
|
206
|
+
// Check if the item has a display unit childItem
|
|
207
|
+
if (qItem.item) {
|
|
208
|
+
for (const childItem of qItem.item) {
|
|
209
|
+
if (childItem.type === 'display' && isSpecificItemControl(childItem, 'unit')) {
|
|
210
|
+
return `${childItem.text}`;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
// Otherwise, check if the item has a unit extension
|
|
215
|
+
const itemControl = (_a = qItem.extension) === null || _a === void 0 ? void 0 : _a.find((extension) => extension.url === 'http://hl7.org/fhir/StructureDefinition/questionnaire-unit');
|
|
216
|
+
if (itemControl && itemControl.valueCoding) {
|
|
217
|
+
return (_b = itemControl.valueCoding.display) !== null && _b !== void 0 ? _b : '';
|
|
218
|
+
}
|
|
219
|
+
return '';
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Get text display lower bound for items with itemControlCode "lower" and has a "lower" childItem
|
|
223
|
+
*
|
|
224
|
+
* @author Sean Fong
|
|
225
|
+
*/
|
|
226
|
+
export function getTextDisplayLower(qItem) {
|
|
227
|
+
if (qItem.item) {
|
|
228
|
+
for (const childItem of qItem.item) {
|
|
229
|
+
if (childItem.type === 'display' && isSpecificItemControl(childItem, 'lower')) {
|
|
230
|
+
return `${childItem.text}`;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
return '';
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Get text display upper bound for items with itemControlCode "upper" and has a "upper" childItem
|
|
238
|
+
*
|
|
239
|
+
* @author Sean Fong
|
|
240
|
+
*/
|
|
241
|
+
export function getTextDisplayUpper(qItem) {
|
|
242
|
+
if (qItem.item) {
|
|
243
|
+
for (const childItem of qItem.item) {
|
|
244
|
+
if (childItem.type === 'display' && isSpecificItemControl(childItem, 'upper')) {
|
|
245
|
+
return `${childItem.text}`;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
return '';
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Get text display instructions for items with itemControlCode instructions and has an instructions childItem
|
|
253
|
+
*
|
|
254
|
+
* @author Sean Fong
|
|
255
|
+
*/
|
|
256
|
+
export function getTextDisplayInstructions(qItem) {
|
|
257
|
+
if (qItem.item) {
|
|
258
|
+
for (const childItem of qItem.item) {
|
|
259
|
+
if (childItem.type === 'display' && isSpecificDisplayCategory(childItem, 'instructions')) {
|
|
260
|
+
return `${childItem.text}`;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
return '';
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Get text display flyover for items with itemControlCode flyover and has an flyover childItem
|
|
268
|
+
*
|
|
269
|
+
* @author Sean Fong
|
|
270
|
+
*/
|
|
271
|
+
export function getTextDisplayFlyover(qItem) {
|
|
272
|
+
if (qItem.item) {
|
|
273
|
+
for (const childItem of qItem.item) {
|
|
274
|
+
if (childItem.type === 'display' && isSpecificItemControl(childItem, 'flyover')) {
|
|
275
|
+
return `${childItem.text}`;
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
return '';
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Get regex validation for items with regex extensions
|
|
283
|
+
*
|
|
284
|
+
* @author Sean Fong
|
|
285
|
+
*/
|
|
286
|
+
export function getRegexValidation(qItem) {
|
|
287
|
+
// Get regex expression from extension
|
|
288
|
+
const regexString = getRegexString(qItem);
|
|
289
|
+
if (regexString) {
|
|
290
|
+
return { expression: new RegExp(regexString), feedback: null };
|
|
291
|
+
}
|
|
292
|
+
// Get regex expression from item types if regex extensions not present
|
|
293
|
+
if (qItem.type === 'url') {
|
|
294
|
+
return { expression: new RegExp(/^\S*$/), feedback: 'URLs should not contain any whitespaces' };
|
|
295
|
+
}
|
|
296
|
+
return undefined;
|
|
297
|
+
}
|
|
298
|
+
export function getRegexString(qItem) {
|
|
299
|
+
var _a;
|
|
300
|
+
const itemControl = (_a = qItem.extension) === null || _a === void 0 ? void 0 : _a.find((extension) => extension.url === 'http://hl7.org/fhir/StructureDefinition/regex');
|
|
301
|
+
if (itemControl) {
|
|
302
|
+
const extensionString = itemControl.valueString;
|
|
303
|
+
if (extensionString) {
|
|
304
|
+
let regexString;
|
|
305
|
+
if (extensionString.includes('matches(')) {
|
|
306
|
+
regexString = extensionString.substring(extensionString.indexOf("matches('") + "matches('".length, extensionString.lastIndexOf("')"));
|
|
307
|
+
}
|
|
308
|
+
else {
|
|
309
|
+
regexString = extensionString;
|
|
310
|
+
}
|
|
311
|
+
return regexString;
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
return null;
|
|
315
|
+
}
|
|
316
|
+
export function getMinValue(qItem) {
|
|
317
|
+
var _a, _b;
|
|
318
|
+
switch (qItem.type) {
|
|
319
|
+
case 'integer':
|
|
320
|
+
return structuredDataCapture.getMinValueAsInteger(qItem);
|
|
321
|
+
case 'decimal':
|
|
322
|
+
// In the case for decimals, permit minValue to be a decimal or integer
|
|
323
|
+
return ((_a = structuredDataCapture.getMinValueAsDecimal(qItem)) !== null && _a !== void 0 ? _a : structuredDataCapture.getMinValueAsInteger(qItem));
|
|
324
|
+
case 'date':
|
|
325
|
+
return structuredDataCapture.getMinValueAsDate(qItem);
|
|
326
|
+
case 'dateTime':
|
|
327
|
+
// In the case for dateTime, permit minValue to be a dateTime or date
|
|
328
|
+
return ((_b = structuredDataCapture.getMinValueAsDateTime(qItem)) !== null && _b !== void 0 ? _b : structuredDataCapture.getMinValueAsDate(qItem));
|
|
329
|
+
default:
|
|
330
|
+
return undefined;
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
export function getMaxValue(qItem) {
|
|
334
|
+
var _a, _b;
|
|
335
|
+
switch (qItem.type) {
|
|
336
|
+
case 'integer':
|
|
337
|
+
return structuredDataCapture.getMaxValueAsInteger(qItem);
|
|
338
|
+
case 'decimal':
|
|
339
|
+
// In the case for decimals, permit maxValue to be a decimal or integer
|
|
340
|
+
return ((_a = structuredDataCapture.getMaxValueAsDecimal(qItem)) !== null && _a !== void 0 ? _a : structuredDataCapture.getMaxValueAsInteger(qItem));
|
|
341
|
+
case 'date':
|
|
342
|
+
return structuredDataCapture.getMaxValueAsDate(qItem);
|
|
343
|
+
case 'dateTime':
|
|
344
|
+
// In the case for dateTime, permit maxValue to be a dateTime or date
|
|
345
|
+
return ((_b = structuredDataCapture.getMaxValueAsDateTime(qItem)) !== null && _b !== void 0 ? _b : structuredDataCapture.getMaxValueAsDate(qItem));
|
|
346
|
+
default:
|
|
347
|
+
return undefined;
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
//# sourceMappingURL=itemControl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"itemControl.js","sourceRoot":"","sources":["../../src/utils/itemControl.ts"],"names":[],"mappings":"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"}
|
package/lib/utils/mapItem.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ import type { Questionnaire, QuestionnaireItem, QuestionnaireResponseItem } from
|
|
|
9
9
|
*
|
|
10
10
|
* @author Sean Fong
|
|
11
11
|
*/
|
|
12
|
-
export declare function getQrItemsIndex(qItems: QuestionnaireItem[], qrItems: QuestionnaireResponseItem[], qItemsIndexMap: Record<string, number>): (QuestionnaireResponseItem | QuestionnaireResponseItem[] | undefined)[];
|
|
12
|
+
export declare function getQrItemsIndex(qItems: QuestionnaireItem[], qrItems: QuestionnaireResponseItem[] | undefined, qItemsIndexMap: Record<string, number>): (QuestionnaireResponseItem | QuestionnaireResponseItem[] | undefined)[];
|
|
13
13
|
/**
|
|
14
14
|
* Generate a dictionary of QuestionnaireItems linkIds mapped to their respective array indexes `<linkId, QItemIndex>`
|
|
15
15
|
* i.e. `{ ee2589d5: 0, f9aaa187: 1, 88cab112: 2 }`
|
package/lib/utils/mapItem.js
CHANGED
|
@@ -28,6 +28,8 @@ import { isRepeatItemAndNotCheckbox } from './qItem';
|
|
|
28
28
|
export function getQrItemsIndex(qItems, qrItems, qItemsIndexMap) {
|
|
29
29
|
// Generate a <linkId, QrItem OR QrItems> dictionary
|
|
30
30
|
const qrItemsCollected = {};
|
|
31
|
+
if (!qrItems)
|
|
32
|
+
return [];
|
|
31
33
|
for (const qrItem of qrItems) {
|
|
32
34
|
const linkId = qrItem.linkId;
|
|
33
35
|
// If item already exists, it has multiple qrItems and is therefore a repeat group
|
package/lib/utils/mapItem.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapItem.js","sourceRoot":"","sources":["../../src/utils/mapItem.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAErD;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAC7B,MAA2B,EAC3B,
|
|
1
|
+
{"version":3,"file":"mapItem.js","sourceRoot":"","sources":["../../src/utils/mapItem.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAErD;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAC7B,MAA2B,EAC3B,OAAgD,EAChD,cAAsC;IAEtC,oDAAoD;IACpD,MAAM,gBAAgB,GACpB,EAAE,CAAC;IAEL,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAE7B,kFAAkF;QAClF,IAAI,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7B,IAAI,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAE3C,8EAA8E;YAC9E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;gBAChC,WAAW,GAAG,CAAC,WAAW,CAAC,CAAC;YAC9B,CAAC;YAED,6BAA6B;YAC7B,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzB,gBAAgB,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;YAE1C,8FAA8F;YAC9F,MAAM,aAAa,GACjB,0BAA0B,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC;YAExF,gBAAgB,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC/D,CAAC;IACH,CAAC;IAED,6GAA6G;IAC7G,0DAA0D;IAC1D,OAAO,MAAM,CAAC,MAAM,CAClB,CAAC,OAAoE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACjF,MAAM,aAAa,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACrD,iFAAiF;QACjF,IAAI,0BAA0B,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAChE,OAAO,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,EACD,EAAE,CACH,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAC5B,oBAAuD;IAEvD,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;QAC/B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,6CAA6C;IAC7C,OAAO,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAA+B,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE;QACnF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,OAAO,OAAO,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC"}
|
package/lib/utils/qrItem.d.ts
CHANGED
|
@@ -14,6 +14,12 @@ export declare function removeNoAnswerQrItem(qrItem: QuestionnaireResponseItem):
|
|
|
14
14
|
* @author Sean Fong
|
|
15
15
|
*/
|
|
16
16
|
export declare function createEmptyQrGroup(qItem: QuestionnaireItem): QuestionnaireResponseItem;
|
|
17
|
+
/**
|
|
18
|
+
* Create an empty repeat qrItem from a given repeat qItem
|
|
19
|
+
*
|
|
20
|
+
* @author Clinton Gillespie
|
|
21
|
+
*/
|
|
22
|
+
export declare function createEmptyRepeatNestedItems(qItem: QuestionnaireItem): QuestionnaireResponseItem;
|
|
17
23
|
/**
|
|
18
24
|
* Create an empty qrItem from a given qItem, optionally with an answer key
|
|
19
25
|
*
|
|
@@ -27,3 +33,10 @@ export declare function createEmptyQrItem(qItem: QuestionnaireItem, answerKey: s
|
|
|
27
33
|
* @author Sean Fong
|
|
28
34
|
*/
|
|
29
35
|
export declare function updateQrItemsInGroup(newQrItem: QuestionnaireResponseItem | null, newQrRepeatGroup: QrRepeatGroup | null, questionnaireResponseOrQrItem: QuestionnaireResponseItem | QuestionnaireResponse, qItemsIndexMap: Record<string, number>): void;
|
|
36
|
+
/**
|
|
37
|
+
* Updates the QuestionnaireResponseItem group by adding/removing a new/modified child QuestionnaireResponseItem into/from a qrGroup
|
|
38
|
+
* Specifically handles nested repeat items where each item has an answer array rather than nested items
|
|
39
|
+
*
|
|
40
|
+
* @author Sean Fong
|
|
41
|
+
*/
|
|
42
|
+
export declare function updateQrNestedItems(newQrItem: QuestionnaireResponseItem | null, questionnaireResponseOrQrItem: QuestionnaireResponseItem, qItemsIndexMap: Record<string, number>): void;
|
package/lib/utils/qrItem.js
CHANGED
|
@@ -54,6 +54,19 @@ export function createEmptyQrGroup(qItem) {
|
|
|
54
54
|
item: []
|
|
55
55
|
};
|
|
56
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* Create an empty repeat qrItem from a given repeat qItem
|
|
59
|
+
*
|
|
60
|
+
* @author Clinton Gillespie
|
|
61
|
+
*/
|
|
62
|
+
export function createEmptyRepeatNestedItems(qItem) {
|
|
63
|
+
return {
|
|
64
|
+
linkId: qItem.linkId,
|
|
65
|
+
text: qItem.text,
|
|
66
|
+
answer: [],
|
|
67
|
+
item: []
|
|
68
|
+
};
|
|
69
|
+
}
|
|
57
70
|
/**
|
|
58
71
|
* Create an empty qrItem from a given qItem, optionally with an answer key
|
|
59
72
|
*
|
|
@@ -186,4 +199,67 @@ export function updateQrItemsInGroup(newQrItem, newQrRepeatGroup, questionnaireR
|
|
|
186
199
|
}
|
|
187
200
|
}
|
|
188
201
|
}
|
|
202
|
+
/**
|
|
203
|
+
* Updates the QuestionnaireResponseItem group by adding/removing a new/modified child QuestionnaireResponseItem into/from a qrGroup
|
|
204
|
+
* Specifically handles nested repeat items where each item has an answer array rather than nested items
|
|
205
|
+
*
|
|
206
|
+
* @author Sean Fong
|
|
207
|
+
*/
|
|
208
|
+
export function updateQrNestedItems(newQrItem, questionnaireResponseOrQrItem, qItemsIndexMap) {
|
|
209
|
+
if (!newQrItem)
|
|
210
|
+
return;
|
|
211
|
+
if (!questionnaireResponseOrQrItem.answer) {
|
|
212
|
+
questionnaireResponseOrQrItem.answer = [];
|
|
213
|
+
}
|
|
214
|
+
let qrAnswerItems = questionnaireResponseOrQrItem.answer;
|
|
215
|
+
if (!qrAnswerItems) {
|
|
216
|
+
qrAnswerItems = [];
|
|
217
|
+
}
|
|
218
|
+
if (newQrItem && newQrItem.linkId in qItemsIndexMap) {
|
|
219
|
+
if (qrAnswerItems.length === 0) {
|
|
220
|
+
// Only add if the item has answers (nested items use answer array, not item array)
|
|
221
|
+
if (newQrItem.answer?.length) {
|
|
222
|
+
qrAnswerItems.push({ item: [newQrItem] });
|
|
223
|
+
}
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
// Find the index where newQrItem should be inserted based on qItemsIndexMap
|
|
228
|
+
const newItemSequenceIndex = qItemsIndexMap[newQrItem.linkId];
|
|
229
|
+
// Find the last answer object (group) that exists
|
|
230
|
+
const lastAnswerGroup = qrAnswerItems[qrAnswerItems.length - 1];
|
|
231
|
+
// If no answer group exists yet, create one
|
|
232
|
+
if (!lastAnswerGroup) {
|
|
233
|
+
const newGroup = {
|
|
234
|
+
item: [newQrItem]
|
|
235
|
+
};
|
|
236
|
+
qrAnswerItems.push(newGroup);
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
// If the last answer group doesn't have an item array, create one
|
|
240
|
+
if (!lastAnswerGroup.item) {
|
|
241
|
+
lastAnswerGroup.item = [newQrItem];
|
|
242
|
+
return;
|
|
243
|
+
}
|
|
244
|
+
// Check if newQrItem already exists in the last group's item array
|
|
245
|
+
const existingItemIndex = lastAnswerGroup.item.findIndex((item) => item.linkId === newQrItem.linkId);
|
|
246
|
+
if (existingItemIndex !== -1) {
|
|
247
|
+
// Item exists - overwrite it
|
|
248
|
+
lastAnswerGroup.item[existingItemIndex] = newQrItem;
|
|
249
|
+
}
|
|
250
|
+
else {
|
|
251
|
+
// Item doesn't exist - find correct position to insert based on sequence
|
|
252
|
+
let insertIndex = lastAnswerGroup.item.length;
|
|
253
|
+
for (let i = 0; i < lastAnswerGroup.item.length; i++) {
|
|
254
|
+
const currentItemSequenceIndex = qItemsIndexMap[lastAnswerGroup.item[i].linkId];
|
|
255
|
+
if (newItemSequenceIndex < currentItemSequenceIndex) {
|
|
256
|
+
insertIndex = i;
|
|
257
|
+
break;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
// Insert at the correct position
|
|
261
|
+
lastAnswerGroup.item.splice(insertIndex, 0, newQrItem);
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
189
265
|
//# sourceMappingURL=qrItem.js.map
|
package/lib/utils/qrItem.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qrItem.js","sourceRoot":"","sources":["../../src/utils/qrItem.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"qrItem.js","sourceRoot":"","sources":["../../src/utils/qrItem.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2024 Commonwealth Scientific and Industrial Research
|
|
3
|
+
* Organisation (CSIRO) ABN 41 687 119 230.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
export function addAdditionalVariables(existingVariables, additionalVariables) {
|
|
18
|
+
for (const key in additionalVariables) {
|
|
19
|
+
const variable = additionalVariables[key];
|
|
20
|
+
if (variable && isVariable(variable)) {
|
|
21
|
+
const expression = variable.valueExpression;
|
|
22
|
+
if (expression && expression.language && expression.name) {
|
|
23
|
+
if (expression.language === 'text/fhirpath') {
|
|
24
|
+
existingVariables.fhirPathVariables['QuestionnaireLevel'].push(expression);
|
|
25
|
+
}
|
|
26
|
+
else if (expression.language === 'application/x-fhir-query') {
|
|
27
|
+
existingVariables.xFhirQueryVariables[expression.name] = {
|
|
28
|
+
valueExpression: expression
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return existingVariables;
|
|
35
|
+
}
|
|
36
|
+
function isVariable(variable) {
|
|
37
|
+
var _a, _b;
|
|
38
|
+
const v = variable;
|
|
39
|
+
return ((v.url === 'http://hl7.org/fhir/StructureDefinition/variable' &&
|
|
40
|
+
((_a = v.valueExpression) === null || _a === void 0 ? void 0 : _a.language) === 'text/fhirpath') ||
|
|
41
|
+
((_b = v.valueExpression) === null || _b === void 0 ? void 0 : _b.language) === 'application/x-fhir-query');
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=addAdditionalVariables.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addAdditionalVariables.js","sourceRoot":"","sources":["../../../src/utils/questionnaireStoreUtils/addAdditionalVariables.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,MAAM,UAAU,sBAAsB,CACpC,iBAA4B,EAC5B,mBAA2C;IAE3C,KAAK,MAAM,GAAG,IAAI,mBAAmB,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAE1C,IAAI,QAAQ,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrC,MAAM,UAAU,GAAG,QAAQ,CAAC,eAAe,CAAC;YAC5C,IAAI,UAAU,IAAI,UAAU,CAAC,QAAQ,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;gBACzD,IAAI,UAAU,CAAC,QAAQ,KAAK,eAAe,EAAE,CAAC;oBAC5C,iBAAiB,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC7E,CAAC;qBAAM,IAAI,UAAU,CAAC,QAAQ,KAAK,0BAA0B,EAAE,CAAC;oBAC9D,iBAAiB,CAAC,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG;wBACvD,eAAe,EAAE,UAAU;qBAC5B,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,SAAS,UAAU,CAAC,QAAgB;;IAClC,MAAM,CAAC,GAAG,QAAqB,CAAC;IAChC,OAAO,CACL,CAAC,CAAC,CAAC,GAAG,KAAK,kDAAkD;QAC3D,CAAA,MAAA,CAAC,CAAC,eAAe,0CAAE,QAAQ,MAAK,eAAe,CAAC;QAClD,CAAA,MAAA,CAAC,CAAC,eAAe,0CAAE,QAAQ,MAAK,0BAA0B,CAC3D,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { Questionnaire } from 'fhir/r4';
|
|
2
|
+
import type { QuestionnaireModel } from '../../interfaces/questionnaireStore.interface';
|
|
3
|
+
export declare function createQuestionnaireModel(questionnaire: Questionnaire, additionalVariables: Record<string, object>, terminologyServerUrl: string): Promise<QuestionnaireModel>;
|