@aehrc/smart-forms-renderer 0.10.6 → 0.11.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/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteField.d.ts +19 -0
- package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteField.js +46 -0
- package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteField.js.map +1 -0
- package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.js +5 -27
- package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.js +1 -2
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.js +1 -2
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.js +1 -2
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.js.map +1 -1
- package/lib/hooks/useInitialiseRenderer.js +1 -1
- package/lib/hooks/useInitialiseRenderer.js.map +1 -1
- package/lib/index.js +2 -7
- package/lib/index.js.map +1 -1
- package/lib/stores/questionnaireStore.js +1 -1
- package/lib/stores/questionnaireStore.js.map +1 -1
- package/lib/utils/choice.d.ts +6 -0
- package/lib/utils/choice.js +31 -17
- package/lib/utils/choice.js.map +1 -1
- package/lib/utils/initialise.d.ts +1 -2
- package/lib/utils/initialise.js +91 -34
- package/lib/utils/initialise.js.map +1 -1
- package/lib/utils/openChoice.js +1 -2
- package/lib/utils/openChoice.js.map +1 -1
- package/lib/utils/qrItem.d.ts +1 -9
- package/lib/utils/qrItem.js +0 -47
- package/lib/utils/qrItem.js.map +1 -1
- package/lib/utils/questionnaireStoreUtils/extractContainedValueSets.d.ts +1 -1
- package/lib/utils/questionnaireStoreUtils/extractOtherExtensions.d.ts +1 -1
- package/lib/utils/questionnaireStoreUtils/resolveValueSets.d.ts +1 -1
- package/lib/utils/valueSet.d.ts +1 -1
- package/package.json +12 -15
- package/src/components/FormComponents/ChoiceItems/ChoiceAutocompleteField.tsx +126 -0
- package/src/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.tsx +25 -76
- package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.tsx +1 -2
- package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.tsx +1 -2
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.tsx +1 -2
- package/src/hooks/useInitialiseRenderer.ts +1 -1
- package/src/index.ts +2 -8
- package/src/stores/questionnaireStore.ts +1 -1
- package/src/utils/choice.ts +38 -2
- package/src/utils/initialise.ts +379 -0
- package/src/utils/openChoice.ts +1 -2
- package/src/utils/qrItem.ts +1 -63
- package/src/utils/questionnaireStoreUtils/extractContainedValueSets.ts +1 -1
- package/src/utils/questionnaireStoreUtils/extractOtherExtensions.ts +1 -1
- package/src/utils/questionnaireStoreUtils/resolveValueSets.ts +1 -1
- package/src/utils/valueSet.ts +1 -1
- package/src/hooks/useBackToTop.ts +0 -29
- package/src/utils/initialiseForm.ts +0 -91
package/lib/utils/initialise.js
CHANGED
|
@@ -37,13 +37,17 @@ export function initialiseQuestionnaireResponse(questionnaire, questionnaireResp
|
|
|
37
37
|
}
|
|
38
38
|
const firstTopLevelItem = (_a = questionnaire === null || questionnaire === void 0 ? void 0 : questionnaire.item) === null || _a === void 0 ? void 0 : _a[0];
|
|
39
39
|
if (firstTopLevelItem && !questionnaireResponse.item) {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
40
|
+
const initialItems = readItemInitialValues(questionnaire);
|
|
41
|
+
questionnaireResponse.item =
|
|
42
|
+
initialItems && initialItems.length > 0
|
|
43
|
+
? initialItems
|
|
44
|
+
: [
|
|
45
|
+
{
|
|
46
|
+
linkId: firstTopLevelItem.linkId,
|
|
47
|
+
text: firstTopLevelItem.text,
|
|
48
|
+
item: []
|
|
49
|
+
}
|
|
50
|
+
];
|
|
47
51
|
}
|
|
48
52
|
if (!questionnaireResponse.questionnaire) {
|
|
49
53
|
questionnaireResponse.questionnaire = setQuestionnaireReference(questionnaire);
|
|
@@ -65,32 +69,35 @@ function setQuestionnaireReference(questionnaire) {
|
|
|
65
69
|
}
|
|
66
70
|
return '';
|
|
67
71
|
}
|
|
68
|
-
function readItemInitialValues(questionnaire
|
|
72
|
+
function readItemInitialValues(questionnaire) {
|
|
69
73
|
if (!questionnaire.item || questionnaire.item.length === 0) {
|
|
70
|
-
return
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
const topLevelQrItems = [];
|
|
77
|
+
for (const topLevelQItem of questionnaire.item) {
|
|
78
|
+
const updatedTopLevelQRItem = readItemInitialValueRecursive(topLevelQItem);
|
|
79
|
+
if (Array.isArray(updatedTopLevelQRItem)) {
|
|
80
|
+
if (updatedTopLevelQRItem.length > 0) {
|
|
81
|
+
topLevelQrItems.push(...updatedTopLevelQRItem);
|
|
82
|
+
}
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
if (updatedTopLevelQRItem) {
|
|
86
|
+
topLevelQrItems.push(updatedTopLevelQRItem);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
if (topLevelQrItems.length === 0) {
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
return topLevelQrItems;
|
|
88
93
|
}
|
|
89
94
|
function readItemInitialValueRecursive(qItem) {
|
|
90
95
|
const childQItems = qItem.item;
|
|
91
96
|
if (childQItems && childQItems.length > 0) {
|
|
97
|
+
// TODO No support for multiple rows at the moment
|
|
92
98
|
if (qItem.type === 'group' && qItem.repeats) {
|
|
93
|
-
|
|
99
|
+
const initialItemsFromRepeatGroup = getInitialValueAnswersFromRepeatGroup(qItem);
|
|
100
|
+
return createNewRepeatGroupQuestionnaireResponseItem(qItem, initialItemsFromRepeatGroup);
|
|
94
101
|
}
|
|
95
102
|
const initialQRItems = [];
|
|
96
103
|
for (const childQItem of childQItems) {
|
|
@@ -105,23 +112,63 @@ function readItemInitialValueRecursive(qItem) {
|
|
|
105
112
|
initialQRItems.push(initialChildQRItemOrItems);
|
|
106
113
|
}
|
|
107
114
|
}
|
|
108
|
-
|
|
109
|
-
if (
|
|
115
|
+
let qrItem = createNewQuestionnaireResponseItem(qItem, getInitialValueAnswers(qItem));
|
|
116
|
+
if (initialQRItems.length > 0) {
|
|
117
|
+
if (!qrItem) {
|
|
118
|
+
qrItem = {
|
|
119
|
+
linkId: qItem.linkId,
|
|
120
|
+
text: qItem.text
|
|
121
|
+
};
|
|
122
|
+
}
|
|
110
123
|
qrItem.item = initialQRItems;
|
|
111
124
|
}
|
|
112
125
|
return qrItem;
|
|
113
126
|
}
|
|
114
|
-
return
|
|
127
|
+
return createNewQuestionnaireResponseItem(qItem, getInitialValueAnswers(qItem));
|
|
115
128
|
}
|
|
116
|
-
function
|
|
129
|
+
function getInitialValueAnswers(qItem) {
|
|
130
|
+
// For answerOption.initialSelected
|
|
131
|
+
if (qItem.type === 'choice' && qItem.answerOption) {
|
|
132
|
+
return qItem.answerOption
|
|
133
|
+
.filter((option) => option.initialSelected)
|
|
134
|
+
.map((option) => {
|
|
135
|
+
if (option.valueCoding) {
|
|
136
|
+
return {
|
|
137
|
+
valueCoding: option.valueCoding
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
if (option.valueString) {
|
|
141
|
+
return {
|
|
142
|
+
valueString: option.valueString
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
if (option.valueInteger) {
|
|
146
|
+
return {
|
|
147
|
+
valueInteger: option.valueInteger
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
return null;
|
|
151
|
+
})
|
|
152
|
+
.filter((item) => !!item);
|
|
153
|
+
}
|
|
154
|
+
// For item.initial
|
|
117
155
|
const initialValues = qItem.initial;
|
|
118
156
|
if (!initialValues) {
|
|
119
|
-
return
|
|
157
|
+
return [];
|
|
120
158
|
}
|
|
121
|
-
|
|
159
|
+
return initialValues
|
|
122
160
|
.map((initialValue) => initialValueSwitcher(initialValue))
|
|
123
161
|
.filter((item) => item !== null);
|
|
124
|
-
|
|
162
|
+
}
|
|
163
|
+
function getInitialValueAnswersFromRepeatGroup(qItem) {
|
|
164
|
+
if (!qItem.item) {
|
|
165
|
+
return [];
|
|
166
|
+
}
|
|
167
|
+
return qItem.item
|
|
168
|
+
.map((childQItem) => {
|
|
169
|
+
return Object.assign(Object.assign({ linkId: childQItem.linkId }, (childQItem.text ? { text: childQItem.text } : {})), { answer: getInitialValueAnswers(childQItem) });
|
|
170
|
+
})
|
|
171
|
+
.filter((childQRItem) => childQRItem.answer && childQRItem.answer.length > 0);
|
|
125
172
|
}
|
|
126
173
|
function initialValueSwitcher(initialValue) {
|
|
127
174
|
if (initialValue.valueBoolean) {
|
|
@@ -176,6 +223,16 @@ function createNewQuestionnaireResponseItem(qItem, initialValueAnswers) {
|
|
|
176
223
|
answer: initialValueAnswers
|
|
177
224
|
};
|
|
178
225
|
}
|
|
226
|
+
function createNewRepeatGroupQuestionnaireResponseItem(qItem, initialValueItems) {
|
|
227
|
+
if (initialValueItems.length === 0) {
|
|
228
|
+
return null;
|
|
229
|
+
}
|
|
230
|
+
return {
|
|
231
|
+
linkId: qItem.linkId,
|
|
232
|
+
text: qItem.text,
|
|
233
|
+
item: initialValueItems
|
|
234
|
+
};
|
|
235
|
+
}
|
|
179
236
|
export function initialiseFormFromResponse(params) {
|
|
180
237
|
const { questionnaireResponse, enableWhenItems, enableWhenExpressions, calculatedExpressions, variablesFhirPath, tabs } = params;
|
|
181
238
|
let updatedFhirPathContext = params.fhirPathContext;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initialise.js","sourceRoot":"","sources":["../../src/utils/initialise.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,oCAAoC,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"initialise.js","sourceRoot":"","sources":["../../src/utils/initialise.ts"],"names":[],"mappings":"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"}
|
package/lib/utils/openChoice.js
CHANGED
|
@@ -16,8 +16,7 @@
|
|
|
16
16
|
*/
|
|
17
17
|
import { CheckBoxOption, OpenChoiceItemControl } from '../interfaces/choice.enum';
|
|
18
18
|
import { isSpecificItemControl } from './itemControl';
|
|
19
|
-
import { findInAnswerValueSetCodings } from './choice';
|
|
20
|
-
import { findInAnswerOptions } from '@aehrc/fhir-questionnaire-helpers';
|
|
19
|
+
import { findInAnswerOptions, findInAnswerValueSetCodings } from './choice';
|
|
21
20
|
/**
|
|
22
21
|
* Update open-choice checkbox group answers based on checkbox changes
|
|
23
22
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openChoice.js","sourceRoot":"","sources":["../../src/utils/openChoice.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AASH,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"openChoice.js","sourceRoot":"","sources":["../../src/utils/openChoice.ts"],"names":[],"mappings":"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"}
|
package/lib/utils/qrItem.d.ts
CHANGED
|
@@ -1,13 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { QuestionnaireItem, QuestionnaireResponse, QuestionnaireResponseItem } from 'fhir/r4';
|
|
2
2
|
import type { QrRepeatGroup } from '../interfaces/repeatGroup.interface';
|
|
3
|
-
/**
|
|
4
|
-
* Initialise a conformant questionnaireResponse from a given questionnaire
|
|
5
|
-
* optionally takes in an existing questionnaireResponse to be initialised
|
|
6
|
-
*
|
|
7
|
-
* @author Sean Fong
|
|
8
|
-
*/
|
|
9
|
-
export declare function initialiseQuestionnaireResponse(questionnaire: Questionnaire, questionnaireResponse?: QuestionnaireResponse): QuestionnaireResponse;
|
|
10
|
-
export declare function setQuestionnaireReference(questionnaire: Questionnaire): string;
|
|
11
3
|
/**
|
|
12
4
|
* Remove items with no answers from a given questionnaireResponse
|
|
13
5
|
* Also remove any starting or trailing whitespace from valueStrings
|
package/lib/utils/qrItem.js
CHANGED
|
@@ -14,53 +14,6 @@
|
|
|
14
14
|
* See the License for the specific language governing permissions and
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
|
-
/**
|
|
18
|
-
* Initialise a conformant questionnaireResponse from a given questionnaire
|
|
19
|
-
* optionally takes in an existing questionnaireResponse to be initialised
|
|
20
|
-
*
|
|
21
|
-
* @author Sean Fong
|
|
22
|
-
*/
|
|
23
|
-
export function initialiseQuestionnaireResponse(questionnaire, questionnaireResponse) {
|
|
24
|
-
var _a;
|
|
25
|
-
if (!questionnaireResponse) {
|
|
26
|
-
questionnaireResponse = {
|
|
27
|
-
resourceType: 'QuestionnaireResponse',
|
|
28
|
-
status: 'in-progress'
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
if (!questionnaireResponse.status) {
|
|
32
|
-
questionnaireResponse.status = 'in-progress';
|
|
33
|
-
}
|
|
34
|
-
const firstTopLevelItem = (_a = questionnaire === null || questionnaire === void 0 ? void 0 : questionnaire.item) === null || _a === void 0 ? void 0 : _a[0];
|
|
35
|
-
if (firstTopLevelItem && !questionnaireResponse.item) {
|
|
36
|
-
questionnaireResponse.item = [
|
|
37
|
-
{
|
|
38
|
-
linkId: firstTopLevelItem.linkId,
|
|
39
|
-
text: firstTopLevelItem.text,
|
|
40
|
-
item: []
|
|
41
|
-
}
|
|
42
|
-
];
|
|
43
|
-
}
|
|
44
|
-
if (!questionnaireResponse.questionnaire) {
|
|
45
|
-
questionnaireResponse.questionnaire = setQuestionnaireReference(questionnaire);
|
|
46
|
-
}
|
|
47
|
-
return questionnaireResponse;
|
|
48
|
-
}
|
|
49
|
-
export function setQuestionnaireReference(questionnaire) {
|
|
50
|
-
// Use {url}|{version} - the ideal way
|
|
51
|
-
if (questionnaire.url) {
|
|
52
|
-
let questionnaireReference = questionnaire.url;
|
|
53
|
-
if (questionnaire.version) {
|
|
54
|
-
questionnaireReference += '|' + questionnaire.version;
|
|
55
|
-
}
|
|
56
|
-
return questionnaireReference;
|
|
57
|
-
}
|
|
58
|
-
// If no url exists, use Questionnaire/{id}
|
|
59
|
-
if (questionnaire.id) {
|
|
60
|
-
return `Questionnaire/${questionnaire.id}`;
|
|
61
|
-
}
|
|
62
|
-
return '';
|
|
63
|
-
}
|
|
64
17
|
/**
|
|
65
18
|
* Remove items with no answers from a given questionnaireResponse
|
|
66
19
|
* Also remove any starting or trailing whitespace from valueStrings
|
package/lib/utils/qrItem.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qrItem.js","sourceRoot":"","sources":["../../src/utils/qrItem.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;
|
|
1
|
+
{"version":3,"file":"qrItem.js","sourceRoot":"","sources":["../../src/utils/qrItem.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ValueSetPromise } from '
|
|
1
|
+
import type { ValueSetPromise } from '../../interfaces/valueSet.interface';
|
|
2
2
|
import type { Coding, Questionnaire, ValueSet } from 'fhir/r4';
|
|
3
3
|
export declare function extractContainedValueSets(questionnaire: Questionnaire, terminologyServerUrl: string): {
|
|
4
4
|
processedValueSetCodings: Record<string, Coding[]>;
|
|
@@ -2,7 +2,7 @@ import type { Expression, Questionnaire, QuestionnaireItem } from 'fhir/r4';
|
|
|
2
2
|
import type { CalculatedExpression } from '../../interfaces/calculatedExpression.interface';
|
|
3
3
|
import type { EnableWhenExpression, EnableWhenItemProperties } from '../../interfaces/enableWhen.interface';
|
|
4
4
|
import type { AnswerExpression } from '../../interfaces/answerExpression.interface';
|
|
5
|
-
import type { ValueSetPromise } from '
|
|
5
|
+
import type { ValueSetPromise } from '../../interfaces/valueSet.interface';
|
|
6
6
|
import type { Variables } from '../../interfaces/variables.interface';
|
|
7
7
|
interface ReturnParamsRecursive {
|
|
8
8
|
variables: Variables;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Coding } from 'fhir/r4';
|
|
2
2
|
import type { Variables } from '../../interfaces/variables.interface';
|
|
3
|
-
import type { ValueSetPromise } from '
|
|
3
|
+
import type { ValueSetPromise } from '../../interfaces/valueSet.interface';
|
|
4
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[]>;
|
package/lib/utils/valueSet.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Coding, Encounter, Expression, FhirResource, Patient, Practitioner, QuestionnaireItem, ValueSet } from 'fhir/r4';
|
|
2
2
|
import type { FhirResourceString } from '../interfaces/populate.interface';
|
|
3
3
|
import type { VariableXFhirQuery } from '../interfaces/variables.interface';
|
|
4
|
-
import type { ValueSetPromise } from '
|
|
4
|
+
import type { ValueSetPromise } from '../interfaces/valueSet.interface';
|
|
5
5
|
export declare function getTerminologyServerUrl(qItem: QuestionnaireItem): string | undefined;
|
|
6
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>>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aehrc/smart-forms-renderer",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"description": "FHIR Structured Data Captured (SDC) rendering engine for Smart Forms",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -24,7 +24,6 @@
|
|
|
24
24
|
},
|
|
25
25
|
"homepage": "https://github.com/aehrc/smart-forms#readme",
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@aehrc/fhir-questionnaire-helpers": "^0.1.1",
|
|
28
27
|
"@iconify/react": "^4.1.1",
|
|
29
28
|
"@types/fhir": "^0.0.38",
|
|
30
29
|
"dayjs": "^1.11.10",
|
|
@@ -40,15 +39,15 @@
|
|
|
40
39
|
"zustand": "^4.4.6"
|
|
41
40
|
},
|
|
42
41
|
"peerDependencies": {
|
|
43
|
-
"@emotion/react": "
|
|
44
|
-
"@emotion/styled": "
|
|
45
|
-
"@mui/icons-material": "
|
|
46
|
-
"@mui/lab": "
|
|
47
|
-
"@mui/material": "
|
|
48
|
-
"@mui/x-date-pickers": "
|
|
49
|
-
"@tanstack/react-query": "
|
|
50
|
-
"react": ">=
|
|
51
|
-
"react-dom": ">=
|
|
42
|
+
"@emotion/react": "^11.11.3",
|
|
43
|
+
"@emotion/styled": "^11.11.0",
|
|
44
|
+
"@mui/icons-material": "^5.15.10",
|
|
45
|
+
"@mui/lab": "^5.0.0-alpha.165",
|
|
46
|
+
"@mui/material": "^5.15.10",
|
|
47
|
+
"@mui/x-date-pickers": "^6.19.4",
|
|
48
|
+
"@tanstack/react-query": "^4.36.0",
|
|
49
|
+
"react": ">=17.0.0",
|
|
50
|
+
"react-dom": ">=17.0.0"
|
|
52
51
|
},
|
|
53
52
|
"devDependencies": {
|
|
54
53
|
"@babel/core": "^7.23.3",
|
|
@@ -70,14 +69,12 @@
|
|
|
70
69
|
"@types/jest": "^29.5.7",
|
|
71
70
|
"@types/lodash.clonedeep": "^4.5.7",
|
|
72
71
|
"@types/lodash.debounce": "^4.0.7",
|
|
73
|
-
"@types/react": "
|
|
72
|
+
"@types/react": ">=17.0.0",
|
|
74
73
|
"@types/react-beautiful-dnd": "^13.1.7",
|
|
75
|
-
"@types/react-dom": "
|
|
74
|
+
"@types/react-dom": ">=17.0.0",
|
|
76
75
|
"chokidar": "^3.5.3",
|
|
77
76
|
"jest": "^29.7.0",
|
|
78
77
|
"jest-environment-jsdom": "^29.7.0",
|
|
79
|
-
"react": "^18.2.0",
|
|
80
|
-
"react-dom": "^18.2.0",
|
|
81
78
|
"storybook": "^7.5.3",
|
|
82
79
|
"ts-jest": "^29.1.1",
|
|
83
80
|
"tslib": "^2.6.2",
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2023 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
|
+
|
|
18
|
+
import React from 'react';
|
|
19
|
+
import Autocomplete from '@mui/material/Autocomplete';
|
|
20
|
+
import CircularProgress from '@mui/material/CircularProgress';
|
|
21
|
+
import Fade from '@mui/material/Fade';
|
|
22
|
+
import Tooltip from '@mui/material/Tooltip';
|
|
23
|
+
import type { Coding, QuestionnaireItem } from 'fhir/r4';
|
|
24
|
+
import { StandardTextField } from '../Textfield.styles';
|
|
25
|
+
import SearchIcon from '@mui/icons-material/Search';
|
|
26
|
+
import InfoIcon from '@mui/icons-material/Info';
|
|
27
|
+
import WarningAmberIcon from '@mui/icons-material/WarningAmber';
|
|
28
|
+
import DoneIcon from '@mui/icons-material/Done';
|
|
29
|
+
import ErrorIcon from '@mui/icons-material/Error';
|
|
30
|
+
import useRenderingExtensions from '../../../hooks/useRenderingExtensions';
|
|
31
|
+
import type {
|
|
32
|
+
PropsWithIsTabledAttribute,
|
|
33
|
+
PropsWithParentIsReadOnlyAttribute
|
|
34
|
+
} from '../../../interfaces/renderProps.interface';
|
|
35
|
+
import { AlertColor } from '@mui/material/Alert';
|
|
36
|
+
|
|
37
|
+
interface ChoiceAutocompleteFieldsProps
|
|
38
|
+
extends PropsWithIsTabledAttribute,
|
|
39
|
+
PropsWithParentIsReadOnlyAttribute {
|
|
40
|
+
qItem: QuestionnaireItem;
|
|
41
|
+
options: Coding[];
|
|
42
|
+
valueCoding: Coding | null;
|
|
43
|
+
loading: boolean;
|
|
44
|
+
feedback: { message: string; color: AlertColor } | null;
|
|
45
|
+
readOnly: boolean;
|
|
46
|
+
onInputChange: (newInput: string) => void;
|
|
47
|
+
onValueChange: (newValue: Coding | null) => void;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function ChoiceAutocompleteField(props: ChoiceAutocompleteFieldsProps) {
|
|
51
|
+
const {
|
|
52
|
+
qItem,
|
|
53
|
+
options,
|
|
54
|
+
valueCoding,
|
|
55
|
+
loading,
|
|
56
|
+
feedback,
|
|
57
|
+
readOnly,
|
|
58
|
+
isTabled,
|
|
59
|
+
onInputChange,
|
|
60
|
+
onValueChange
|
|
61
|
+
} = props;
|
|
62
|
+
|
|
63
|
+
const { displayUnit, displayPrompt, entryFormat } = useRenderingExtensions(qItem);
|
|
64
|
+
|
|
65
|
+
return (
|
|
66
|
+
<Autocomplete
|
|
67
|
+
id={qItem.id}
|
|
68
|
+
value={valueCoding ?? null}
|
|
69
|
+
placeholder={entryFormat}
|
|
70
|
+
options={options}
|
|
71
|
+
getOptionLabel={(option) => `${option.display}`}
|
|
72
|
+
isOptionEqualToValue={(option, value) => option.id === value.id}
|
|
73
|
+
disabled={readOnly}
|
|
74
|
+
loading={loading}
|
|
75
|
+
loadingText={'Fetching results...'}
|
|
76
|
+
clearOnEscape
|
|
77
|
+
autoHighlight
|
|
78
|
+
onChange={(_, newValue) => onValueChange(newValue)}
|
|
79
|
+
sx={{ maxWidth: !isTabled ? 280 : 3000, minWidth: 160, flexGrow: 1 }}
|
|
80
|
+
filterOptions={(x) => x}
|
|
81
|
+
renderInput={(params) => (
|
|
82
|
+
<StandardTextField
|
|
83
|
+
{...params}
|
|
84
|
+
onChange={(e) => onInputChange(e.target.value)}
|
|
85
|
+
isTabled={isTabled}
|
|
86
|
+
label={displayPrompt}
|
|
87
|
+
size="small"
|
|
88
|
+
InputProps={{
|
|
89
|
+
...params.InputProps,
|
|
90
|
+
|
|
91
|
+
startAdornment: (
|
|
92
|
+
<>
|
|
93
|
+
{!valueCoding ? <SearchIcon fontSize="small" sx={{ ml: 0.5 }} /> : null}
|
|
94
|
+
{params.InputProps.startAdornment}
|
|
95
|
+
</>
|
|
96
|
+
),
|
|
97
|
+
endAdornment: (
|
|
98
|
+
<>
|
|
99
|
+
{loading ? (
|
|
100
|
+
<CircularProgress color="inherit" size={16} />
|
|
101
|
+
) : feedback ? (
|
|
102
|
+
<Fade in={!!feedback} timeout={300}>
|
|
103
|
+
<Tooltip title={feedback.message} arrow sx={{ ml: 1 }}>
|
|
104
|
+
{
|
|
105
|
+
{
|
|
106
|
+
info: <InfoIcon fontSize="small" color="info" />,
|
|
107
|
+
warning: <WarningAmberIcon fontSize="small" color="warning" />,
|
|
108
|
+
success: <DoneIcon fontSize="small" color="success" />,
|
|
109
|
+
error: <ErrorIcon fontSize="small" color="error" />
|
|
110
|
+
}[feedback.color]
|
|
111
|
+
}
|
|
112
|
+
</Tooltip>
|
|
113
|
+
</Fade>
|
|
114
|
+
) : null}
|
|
115
|
+
{params.InputProps.endAdornment}
|
|
116
|
+
{displayUnit}
|
|
117
|
+
</>
|
|
118
|
+
)
|
|
119
|
+
}}
|
|
120
|
+
/>
|
|
121
|
+
)}
|
|
122
|
+
/>
|
|
123
|
+
);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
export default ChoiceAutocompleteField;
|