@aehrc/smart-forms-renderer 0.16.2 → 0.17.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/AttachmentItem/AttachmentFieldWrapper.js +3 -1
- package/lib/components/FormComponents/AttachmentItem/AttachmentFieldWrapper.js.map +1 -1
- package/lib/components/FormComponents/BooleanItem/BooleanItem.js +3 -1
- package/lib/components/FormComponents/BooleanItem/BooleanItem.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.js +3 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.js +3 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.js +3 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.js +3 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.js +3 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.js +3 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.js +3 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.js.map +1 -1
- package/lib/components/FormComponents/CustomDateItem/CustomDateItem.js +3 -1
- package/lib/components/FormComponents/CustomDateItem/CustomDateItem.js.map +1 -1
- package/lib/components/FormComponents/DateTimeItem/DateTimeItem.js +3 -1
- package/lib/components/FormComponents/DateTimeItem/DateTimeItem.js.map +1 -1
- package/lib/components/FormComponents/DecimalItem/DecimalItem.js +3 -1
- package/lib/components/FormComponents/DecimalItem/DecimalItem.js.map +1 -1
- package/lib/components/FormComponents/DisplayItem/DisplayItem.js +3 -1
- package/lib/components/FormComponents/DisplayItem/DisplayItem.js.map +1 -1
- package/lib/components/FormComponents/GridGroup/GridGroup.js +3 -1
- package/lib/components/FormComponents/GridGroup/GridGroup.js.map +1 -1
- package/lib/components/FormComponents/IntegerItem/IntegerItem.js +3 -1
- package/lib/components/FormComponents/IntegerItem/IntegerItem.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.js +3 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.js +3 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.js +3 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.js +3 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.js +3 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.js.map +1 -1
- package/lib/components/FormComponents/RepeatItem/RepeatItem.js +3 -1
- package/lib/components/FormComponents/RepeatItem/RepeatItem.js.map +1 -1
- package/lib/components/FormComponents/SliderItem/SliderItem.js +3 -1
- package/lib/components/FormComponents/SliderItem/SliderItem.js.map +1 -1
- package/lib/components/FormComponents/StringItem/StringItem.js +3 -1
- package/lib/components/FormComponents/StringItem/StringItem.js.map +1 -1
- package/lib/components/FormComponents/Tables/GroupTableView.js +3 -1
- package/lib/components/FormComponents/Tables/GroupTableView.js.map +1 -1
- package/lib/components/FormComponents/TextItem/TextItem.js +3 -1
- package/lib/components/FormComponents/TextItem/TextItem.js.map +1 -1
- package/lib/components/FormComponents/TimeItem/TimeItem.js +3 -1
- package/lib/components/FormComponents/TimeItem/TimeItem.js.map +1 -1
- package/lib/components/FormComponents/UrlItem/UrlItem.js +3 -1
- package/lib/components/FormComponents/UrlItem/UrlItem.js.map +1 -1
- package/lib/stores/questionnaireStore.d.ts +4 -0
- package/lib/stores/questionnaireStore.js +5 -1
- package/lib/stores/questionnaireStore.js.map +1 -1
- package/lib/utils/fhirpath.js +3 -1
- package/lib/utils/fhirpath.js.map +1 -1
- package/package.json +2 -2
- package/src/components/FormComponents/AttachmentItem/AttachmentFieldWrapper.tsx +7 -1
- package/src/components/FormComponents/BooleanItem/BooleanItem.tsx +7 -1
- package/src/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.tsx +5 -1
- package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.tsx +5 -1
- package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.tsx +5 -1
- package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.tsx +5 -1
- package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.tsx +5 -1
- package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.tsx +5 -1
- package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.tsx +5 -1
- package/src/components/FormComponents/CustomDateItem/CustomDateItem.tsx +7 -1
- package/src/components/FormComponents/DateTimeItem/DateTimeItem.tsx +7 -1
- package/src/components/FormComponents/DecimalItem/DecimalItem.tsx +7 -1
- package/src/components/FormComponents/DisplayItem/DisplayItem.tsx +7 -1
- package/src/components/FormComponents/GridGroup/GridGroup.tsx +5 -1
- package/src/components/FormComponents/IntegerItem/IntegerItem.tsx +7 -1
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.tsx +5 -1
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.tsx +5 -1
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.tsx +5 -1
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.tsx +5 -1
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.tsx +5 -1
- package/src/components/FormComponents/RepeatItem/RepeatItem.tsx +7 -1
- package/src/components/FormComponents/SliderItem/SliderItem.tsx +7 -1
- package/src/components/FormComponents/StringItem/StringItem.tsx +7 -1
- package/src/components/FormComponents/Tables/GroupTableView.tsx +5 -1
- package/src/components/FormComponents/TextItem/TextItem.tsx +7 -1
- package/src/components/FormComponents/TimeItem/TimeItem.tsx +7 -1
- package/src/components/FormComponents/UrlItem/UrlItem.tsx +7 -1
- package/src/stores/questionnaireStore.ts +8 -1
- package/src/utils/fhirpath.ts +4 -1
|
@@ -33,6 +33,7 @@ import useStringCalculatedExpression from '../../../hooks/useStringCalculatedExp
|
|
|
33
33
|
import ItemFieldGrid from '../ItemParts/ItemFieldGrid';
|
|
34
34
|
import useStringInput from '../../../hooks/useStringInput';
|
|
35
35
|
import useReadOnly from '../../../hooks/useReadOnly';
|
|
36
|
+
import { useQuestionnaireStore } from '../../../stores';
|
|
36
37
|
|
|
37
38
|
interface TextItemProps
|
|
38
39
|
extends PropsWithQrItemChangeHandler,
|
|
@@ -45,6 +46,8 @@ interface TextItemProps
|
|
|
45
46
|
function TextItem(props: TextItemProps) {
|
|
46
47
|
const { qItem, qrItem, isRepeated, parentIsReadOnly, onQrItemChange } = props;
|
|
47
48
|
|
|
49
|
+
const onFocusLinkId = useQuestionnaireStore.use.onFocusLinkId();
|
|
50
|
+
|
|
48
51
|
const readOnly = useReadOnly(qItem, parentIsReadOnly);
|
|
49
52
|
const { displayUnit, displayPrompt, entryFormat, regexValidation, minLength, maxLength } =
|
|
50
53
|
useRenderingExtensions(qItem);
|
|
@@ -104,7 +107,10 @@ function TextItem(props: TextItemProps) {
|
|
|
104
107
|
);
|
|
105
108
|
}
|
|
106
109
|
return (
|
|
107
|
-
<FullWidthFormComponentBox
|
|
110
|
+
<FullWidthFormComponentBox
|
|
111
|
+
data-test="q-item-text-box"
|
|
112
|
+
data-linkid={qItem.linkId}
|
|
113
|
+
onClick={() => onFocusLinkId(qItem.linkId)}>
|
|
108
114
|
<ItemFieldGrid qItem={qItem} readOnly={readOnly}>
|
|
109
115
|
<TextField
|
|
110
116
|
linkId={qItem.linkId}
|
|
@@ -31,6 +31,7 @@ import type { Dayjs } from 'dayjs';
|
|
|
31
31
|
import dayjs from 'dayjs';
|
|
32
32
|
import ItemFieldGrid from '../ItemParts/ItemFieldGrid';
|
|
33
33
|
import useReadOnly from '../../../hooks/useReadOnly';
|
|
34
|
+
import { useQuestionnaireStore } from '../../../stores';
|
|
34
35
|
|
|
35
36
|
interface TimeItemProps
|
|
36
37
|
extends PropsWithQrItemChangeHandler,
|
|
@@ -44,6 +45,8 @@ interface TimeItemProps
|
|
|
44
45
|
function TimeItem(props: TimeItemProps) {
|
|
45
46
|
const { qItem, qrItem, isRepeated, isTabled, parentIsReadOnly, onQrItemChange } = props;
|
|
46
47
|
|
|
48
|
+
const onFocusLinkId = useQuestionnaireStore.use.onFocusLinkId();
|
|
49
|
+
|
|
47
50
|
const readOnly = useReadOnly(qItem, parentIsReadOnly);
|
|
48
51
|
const { displayPrompt, entryFormat } = useRenderingExtensions(qItem);
|
|
49
52
|
|
|
@@ -78,7 +81,10 @@ function TimeItem(props: TimeItemProps) {
|
|
|
78
81
|
}
|
|
79
82
|
|
|
80
83
|
return (
|
|
81
|
-
<FullWidthFormComponentBox
|
|
84
|
+
<FullWidthFormComponentBox
|
|
85
|
+
data-test="q-item-time-box"
|
|
86
|
+
data-linkid={qItem.linkId}
|
|
87
|
+
onClick={() => onFocusLinkId(qItem.linkId)}>
|
|
82
88
|
<ItemFieldGrid qItem={qItem} readOnly={readOnly}>
|
|
83
89
|
<TimeField
|
|
84
90
|
value={timeDayJs}
|
|
@@ -32,6 +32,7 @@ import { FullWidthFormComponentBox } from '../../Box.styles';
|
|
|
32
32
|
import UrlField from './UrlField';
|
|
33
33
|
import ItemFieldGrid from '../ItemParts/ItemFieldGrid';
|
|
34
34
|
import useReadOnly from '../../../hooks/useReadOnly';
|
|
35
|
+
import { useQuestionnaireStore } from '../../../stores';
|
|
35
36
|
|
|
36
37
|
interface UrlItemProps
|
|
37
38
|
extends PropsWithQrItemChangeHandler,
|
|
@@ -44,6 +45,8 @@ interface UrlItemProps
|
|
|
44
45
|
function UrlItem(props: UrlItemProps) {
|
|
45
46
|
const { qItem, qrItem, isRepeated, isTabled, parentIsReadOnly, onQrItemChange } = props;
|
|
46
47
|
|
|
48
|
+
const onFocusLinkId = useQuestionnaireStore.use.onFocusLinkId();
|
|
49
|
+
|
|
47
50
|
const readOnly = useReadOnly(qItem, parentIsReadOnly);
|
|
48
51
|
const { displayUnit, displayPrompt, entryFormat, regexValidation, minLength, maxLength } =
|
|
49
52
|
useRenderingExtensions(qItem);
|
|
@@ -93,7 +96,10 @@ function UrlItem(props: UrlItemProps) {
|
|
|
93
96
|
);
|
|
94
97
|
}
|
|
95
98
|
return (
|
|
96
|
-
<FullWidthFormComponentBox
|
|
99
|
+
<FullWidthFormComponentBox
|
|
100
|
+
data-test="q-item-string-box"
|
|
101
|
+
data-linkid={qItem.linkId}
|
|
102
|
+
onClick={() => onFocusLinkId(qItem.linkId)}>
|
|
97
103
|
<ItemFieldGrid qItem={qItem} readOnly={readOnly}>
|
|
98
104
|
<UrlField
|
|
99
105
|
linkId={qItem.linkId}
|
|
@@ -58,6 +58,7 @@ interface QuestionnaireStoreType {
|
|
|
58
58
|
processedValueSetUrls: Record<string, string>;
|
|
59
59
|
cachedValueSetCodings: Record<string, Coding[]>;
|
|
60
60
|
fhirPathContext: Record<string, any>;
|
|
61
|
+
focusedLinkId: string;
|
|
61
62
|
readOnly: boolean;
|
|
62
63
|
buildSourceQuestionnaire: (
|
|
63
64
|
questionnaire: Questionnaire,
|
|
@@ -77,6 +78,7 @@ interface QuestionnaireStoreType {
|
|
|
77
78
|
populatedResponse: QuestionnaireResponse,
|
|
78
79
|
persistTabIndex?: boolean
|
|
79
80
|
) => QuestionnaireResponse;
|
|
81
|
+
onFocusLinkId: (linkId: string) => void;
|
|
80
82
|
}
|
|
81
83
|
|
|
82
84
|
export const questionnaireStore = createStore<QuestionnaireStoreType>()((set, get) => ({
|
|
@@ -96,6 +98,7 @@ export const questionnaireStore = createStore<QuestionnaireStoreType>()((set, ge
|
|
|
96
98
|
processedValueSetUrls: {},
|
|
97
99
|
cachedValueSetCodings: {},
|
|
98
100
|
fhirPathContext: {},
|
|
101
|
+
focusedLinkId: '',
|
|
99
102
|
readOnly: false,
|
|
100
103
|
buildSourceQuestionnaire: async (
|
|
101
104
|
questionnaire,
|
|
@@ -269,7 +272,11 @@ export const questionnaireStore = createStore<QuestionnaireStoreType>()((set, ge
|
|
|
269
272
|
}));
|
|
270
273
|
|
|
271
274
|
return updatedResponse;
|
|
272
|
-
}
|
|
275
|
+
},
|
|
276
|
+
onFocusLinkId: (linkId: string) =>
|
|
277
|
+
set(() => ({
|
|
278
|
+
focusedLinkId: linkId
|
|
279
|
+
}))
|
|
273
280
|
}));
|
|
274
281
|
|
|
275
282
|
export const useQuestionnaireStore = createSelectors(questionnaireStore);
|
package/src/utils/fhirpath.ts
CHANGED
|
@@ -90,11 +90,14 @@ export function createFhirPathContext(
|
|
|
90
90
|
variablesFhirPath: Record<string, Expression[]>,
|
|
91
91
|
existingFhirPathContext: Record<string, any>
|
|
92
92
|
): Record<string, any> {
|
|
93
|
-
let fhirPathContext
|
|
93
|
+
let fhirPathContext = {};
|
|
94
94
|
if (Object.keys(existingFhirPathContext).length > 0) {
|
|
95
95
|
fhirPathContext = { ...fhirPathContext, ...existingFhirPathContext };
|
|
96
96
|
}
|
|
97
97
|
|
|
98
|
+
// Add latest resource to fhirPathContext
|
|
99
|
+
fhirPathContext = { ...fhirPathContext, resource: questionnaireResponse };
|
|
100
|
+
|
|
98
101
|
if (!questionnaireResponse.item || questionnaireResponse.item.length === 0) {
|
|
99
102
|
return fhirPathContext;
|
|
100
103
|
}
|