@aehrc/smart-forms-renderer 1.2.14 → 1.3.1
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.js +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteField.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.js +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.js +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.js.map +1 -1
- package/lib/components/FormComponents/GridGroup/GridRow.js +1 -1
- package/lib/components/FormComponents/GridGroup/GridRow.js.map +1 -1
- package/lib/components/FormComponents/GroupItem/GroupAccordion.d.ts +10 -0
- package/lib/components/FormComponents/GroupItem/GroupAccordion.js +71 -0
- package/lib/components/FormComponents/GroupItem/GroupAccordion.js.map +1 -0
- package/lib/components/FormComponents/GroupItem/GroupAccordion.styles.d.ts +1 -1
- package/lib/components/FormComponents/GroupItem/GroupAccordion.styles.js +1 -1
- package/lib/components/FormComponents/GroupItem/GroupAccordion.styles.js.map +1 -1
- package/lib/components/FormComponents/GroupItem/GroupItemView.js +1 -1
- package/lib/components/FormComponents/GroupItem/GroupItemView.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.js +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.js.map +1 -1
- package/lib/components/FormComponents/RepeatGroup/RepeatGroupView.js +1 -1
- package/lib/components/FormComponents/RepeatGroup/RepeatGroupView.js.map +1 -1
- package/lib/components/FormComponents/Tables/GroupTableView.js +1 -1
- package/lib/components/FormComponents/Tables/GroupTableView.js.map +1 -1
- package/lib/components/Renderer/FormBodySingleCollapsible.js +1 -1
- package/lib/components/Renderer/FormBodySingleCollapsible.js.map +1 -1
- package/lib/components/Renderer/FormBodyTabbed.js +57 -4
- package/lib/components/Renderer/FormBodyTabbed.js.map +1 -1
- package/lib/components/Tabs/FormBodyTabListWrapper.d.ts +1 -0
- package/lib/components/Tabs/FormBodyTabListWrapper.js +2 -2
- package/lib/components/Tabs/FormBodyTabListWrapper.js.map +1 -1
- package/lib/hooks/index.d.ts +1 -0
- package/lib/hooks/index.js +2 -0
- package/lib/hooks/index.js.map +1 -1
- package/lib/hooks/useValueSetCodings.js +2 -1
- package/lib/hooks/useValueSetCodings.js.map +1 -1
- package/lib/stores/rendererConfigStore.d.ts +7 -0
- package/lib/stores/rendererConfigStore.js +2 -0
- package/lib/stores/rendererConfigStore.js.map +1 -1
- package/lib/stores/smartConfigStore.d.ts +7 -1
- package/lib/stores/smartConfigStore.js +3 -1
- package/lib/stores/smartConfigStore.js.map +1 -1
- package/lib/utils/populateContexts.js +2 -14
- package/lib/utils/populateContexts.js.map +1 -1
- package/lib/utils/valueSet.d.ts +1 -1
- package/lib/utils/valueSet.js +2 -2
- package/lib/utils/valueSet.js.map +1 -1
- package/package.json +3 -3
- package/src/components/FormComponents/ChoiceItems/ChoiceAutocompleteField.tsx +1 -1
- package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.tsx +1 -1
- package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.tsx +1 -1
- package/src/components/FormComponents/GridGroup/GridRow.tsx +6 -1
- package/src/components/FormComponents/GroupItem/GroupAccordion.styles.ts +1 -1
- package/src/components/FormComponents/GroupItem/GroupAccordion.tsx +93 -0
- package/src/components/FormComponents/GroupItem/GroupItemView.tsx +1 -1
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.tsx +1 -1
- package/src/components/FormComponents/RepeatGroup/RepeatGroupView.tsx +1 -1
- package/src/components/FormComponents/Tables/GroupTableView.tsx +1 -1
- package/src/components/Renderer/FormBodySingleCollapsible.tsx +2 -1
- package/src/components/Renderer/FormBodyTabbed.tsx +67 -5
- package/src/components/Tabs/FormBodyTabListWrapper.tsx +3 -2
- package/src/hooks/index.ts +3 -0
- package/src/hooks/useValueSetCodings.ts +8 -1
- package/src/stores/rendererConfigStore.ts +8 -0
- package/src/stores/smartConfigStore.ts +11 -2
- package/src/utils/populateContexts.ts +2 -16
- package/src/utils/valueSet.ts +3 -2
- package/lib/components/FormComponents/ItemParts/FadingCheckIcon.d.ts +0 -7
- package/lib/components/FormComponents/ItemParts/FadingCheckIcon.js +0 -26
- package/lib/components/FormComponents/ItemParts/FadingCheckIcon.js.map +0 -1
- package/lib/components/FormComponents/ItemParts/ItemLabelText.d.ts +0 -8
- package/lib/components/FormComponents/ItemParts/ItemLabelText.js +0 -63
- package/lib/components/FormComponents/ItemParts/ItemLabelText.js.map +0 -1
- package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.d.ts +0 -8
- package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.js +0 -53
- package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.js.map +0 -1
- package/lib/components/FormComponents/ItemParts/ItemTextSwitcher copy.d.ts +0 -7
- package/lib/components/FormComponents/ItemParts/ItemTextSwitcher copy.js +0 -39
- package/lib/components/FormComponents/ItemParts/ItemTextSwitcher copy.js.map +0 -1
- package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.d.ts +0 -10
- package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.js +0 -30
- package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.js.map +0 -1
- package/lib/components/Iconify/Iconify.d.ts +0 -10
- package/lib/components/Iconify/Iconify.js +0 -26
- package/lib/components/Iconify/Iconify.js.map +0 -1
- package/lib/components/Renderer/FormBodyPage.d.ts +0 -9
- package/lib/components/Renderer/FormBodyPage.js +0 -43
- package/lib/components/Renderer/FormBodyPage.js.map +0 -1
- package/lib/components/Renderer/FormTitle.d.ts +0 -7
- package/lib/components/Renderer/FormTitle.js +0 -30
- package/lib/components/Renderer/FormTitle.js.map +0 -1
- package/lib/components/Renderer/FormTopLevelPage.d.ts +0 -9
- package/lib/components/Renderer/FormTopLevelPage.js +0 -29
- package/lib/components/Renderer/FormTopLevelPage.js.map +0 -1
- package/lib/hooks/useBooleanCalculatedExpression.d.ts +0 -12
- package/lib/hooks/useBooleanCalculatedExpression.js +0 -52
- package/lib/hooks/useBooleanCalculatedExpression.js.map +0 -1
- package/lib/hooks/useCalculatedExpressionAnimating.d.ts +0 -1
- package/lib/hooks/useCalculatedExpressionAnimating.js +0 -18
- package/lib/hooks/useCalculatedExpressionAnimating.js.map +0 -1
- package/lib/hooks/useDecimalCalculatedExpression.d.ts +0 -13
- package/lib/hooks/useDecimalCalculatedExpression.js +0 -58
- package/lib/hooks/useDecimalCalculatedExpression.js.map +0 -1
- package/lib/hooks/useInitialiseGroupTable.d.ts +0 -4
- package/lib/hooks/useInitialiseGroupTable.js +0 -36
- package/lib/hooks/useInitialiseGroupTable.js.map +0 -1
- package/lib/hooks/useIntegerCalculatedExpression.d.ts +0 -12
- package/lib/hooks/useIntegerCalculatedExpression.js +0 -55
- package/lib/hooks/useIntegerCalculatedExpression.js.map +0 -1
- package/lib/hooks/useNumberInput.d.ts +0 -3
- package/lib/hooks/useNumberInput.js +0 -31
- package/lib/hooks/useNumberInput.js.map +0 -1
- package/lib/hooks/useRepeatAnswers.d.ts +0 -4
- package/lib/hooks/useRepeatAnswers.js +0 -34
- package/lib/hooks/useRepeatAnswers.js.map +0 -1
- package/lib/hooks/useRepeatGroups.d.ts +0 -4
- package/lib/hooks/useRepeatGroups.js +0 -34
- package/lib/hooks/useRepeatGroups.js.map +0 -1
- package/lib/hooks/useShowFeedback.d.ts +0 -11
- package/lib/hooks/useShowFeedback.js +0 -33
- package/lib/hooks/useShowFeedback.js.map +0 -1
- package/lib/hooks/useStringCalculatedExpression.d.ts +0 -14
- package/lib/hooks/useStringCalculatedExpression.js +0 -69
- package/lib/hooks/useStringCalculatedExpression.js.map +0 -1
- package/lib/hooks/useStringInput.d.ts +0 -3
- package/lib/hooks/useStringInput.js +0 -31
- package/lib/hooks/useStringInput.js.map +0 -1
- 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/interfaces/repeatItem.interface.d.ts +0 -5
- package/lib/interfaces/repeatItem.interface.js +0 -2
- package/lib/interfaces/repeatItem.interface.js.map +0 -1
- package/lib/stores/rendererStylingStore.d.ts +0 -144
- package/lib/stores/rendererStylingStore.js +0 -68
- package/lib/stores/rendererStylingStore.js.map +0 -1
- package/lib/stories/storybookWrappers/InitialiseFormWrapperForStorybook.d.ts +0 -30
- package/lib/stories/storybookWrappers/InitialiseFormWrapperForStorybook.js +0 -46
- package/lib/stories/storybookWrappers/InitialiseFormWrapperForStorybook.js.map +0 -1
- package/lib/stories/storybookWrappers/index.d.ts +0 -2
- package/lib/stories/storybookWrappers/index.js +0 -18
- package/lib/stories/storybookWrappers/index.js.map +0 -1
- package/lib/stories/testUtils.d.ts +0 -23
- package/lib/stories/testUtils.js +0 -249
- package/lib/stories/testUtils.js.map +0 -1
- package/lib/theme/Theme.d.ts +0 -44
- package/lib/theme/Theme.js +0 -45
- package/lib/theme/Theme.js.map +0 -1
- package/lib/theme/customGlobalStyles.d.ts +0 -2
- package/lib/theme/customGlobalStyles.js +0 -61
- package/lib/theme/customGlobalStyles.js.map +0 -1
- package/lib/theme/overrides/Accordion.d.ts +0 -14
- package/lib/theme/overrides/Accordion.js +0 -32
- package/lib/theme/overrides/Accordion.js.map +0 -1
- package/lib/theme/overrides/Autocomplete.d.ts +0 -10
- package/lib/theme/overrides/Autocomplete.js +0 -28
- package/lib/theme/overrides/Autocomplete.js.map +0 -1
- package/lib/theme/overrides/Button.d.ts +0 -33
- package/lib/theme/overrides/Button.js +0 -52
- package/lib/theme/overrides/Button.js.map +0 -1
- package/lib/theme/overrides/Card.d.ts +0 -35
- package/lib/theme/overrides/Card.js +0 -49
- package/lib/theme/overrides/Card.js.map +0 -1
- package/lib/theme/overrides/Input.d.ts +0 -64
- package/lib/theme/overrides/Input.js +0 -81
- package/lib/theme/overrides/Input.js.map +0 -1
- package/lib/theme/overrides/Overrides.d.ts +0 -3
- package/lib/theme/overrides/Overrides.js +0 -29
- package/lib/theme/overrides/Overrides.js.map +0 -1
- package/lib/theme/overrides/Paper.d.ts +0 -12
- package/lib/theme/overrides/Paper.js +0 -31
- package/lib/theme/overrides/Paper.js.map +0 -1
- package/lib/theme/overrides/SpeedDial.d.ts +0 -16
- package/lib/theme/overrides/SpeedDial.js +0 -34
- package/lib/theme/overrides/SpeedDial.js.map +0 -1
- package/lib/theme/overrides/Table.d.ts +0 -12
- package/lib/theme/overrides/Table.js +0 -30
- package/lib/theme/overrides/Table.js.map +0 -1
- package/lib/theme/palette.d.ts +0 -27
- package/lib/theme/palette.js +0 -67
- package/lib/theme/palette.js.map +0 -1
- package/lib/theme/shadows.d.ts +0 -2
- package/lib/theme/shadows.js +0 -52
- package/lib/theme/shadows.js.map +0 -1
- package/lib/utils/answerExpression.d.ts +0 -18
- package/lib/utils/answerExpression.js +0 -133
- package/lib/utils/answerExpression.js.map +0 -1
- package/lib/utils/dayjsExtend.d.ts +0 -1
- package/lib/utils/dayjsExtend.js +0 -22
- package/lib/utils/dayjsExtend.js.map +0 -1
- package/lib/utils/dynamicValueSet.d.ts +0 -5
- package/lib/utils/dynamicValueSet.js +0 -96
- package/lib/utils/dynamicValueSet.js.map +0 -1
- package/lib/utils/fhirpathAsyncUtils/fhirpath-async.d.ts +0 -14
- package/lib/utils/fhirpathAsyncUtils/fhirpath-async.js +0 -639
- package/lib/utils/fhirpathAsyncUtils/fhirpath-async.js.map +0 -1
- package/lib/utils/fhirpathAsyncUtils/outcome-utils.d.ts +0 -3
- package/lib/utils/fhirpathAsyncUtils/outcome-utils.js +0 -41
- package/lib/utils/fhirpathAsyncUtils/outcome-utils.js.map +0 -1
- package/lib/utils/itemControl.d.ts +0 -97
- package/lib/utils/itemControl.js +0 -336
- package/lib/utils/itemControl.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
- package/lib/utils/questionnaireStoreUtils/addAdditionalVariables.d.ts +0 -2
- package/lib/utils/questionnaireStoreUtils/addAdditionalVariables.js +0 -43
- package/lib/utils/questionnaireStoreUtils/addAdditionalVariables.js.map +0 -1
- package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.d.ts +0 -3
- package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js +0 -101
- package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js.map +0 -1
- package/lib/utils/validateQuestionnaire.d.ts +0 -66
- package/lib/utils/validateQuestionnaire.js +0 -559
- package/lib/utils/validateQuestionnaire.js.map +0 -1
|
@@ -30,12 +30,13 @@ interface FormBodyTabListWrapperProps {
|
|
|
30
30
|
topLevelItems: QuestionnaireItem[];
|
|
31
31
|
currentTabIndex: number;
|
|
32
32
|
tabs: Tabs;
|
|
33
|
+
maxHeight?: string | number;
|
|
33
34
|
}
|
|
34
35
|
|
|
35
36
|
const FormBodyTabListWrapper = memo(function FormBodyTabListWrapper(
|
|
36
37
|
props: FormBodyTabListWrapperProps
|
|
37
38
|
) {
|
|
38
|
-
const { topLevelItems, currentTabIndex, tabs } = props;
|
|
39
|
+
const { topLevelItems, currentTabIndex, tabs, maxHeight } = props;
|
|
39
40
|
|
|
40
41
|
const [completedTabsExpanded, setCompletedTabsExpanded] = useState(true);
|
|
41
42
|
|
|
@@ -43,7 +44,7 @@ const FormBodyTabListWrapper = memo(function FormBodyTabListWrapper(
|
|
|
43
44
|
useContextDisplayItems(topLevelItems);
|
|
44
45
|
|
|
45
46
|
return (
|
|
46
|
-
<Card sx={{ p: 0.75, mb: 2 }}>
|
|
47
|
+
<Card sx={{ p: 0.75, mb: 2, ...(maxHeight ? { maxHeight, overflowY: 'auto' } : {}) }}>
|
|
47
48
|
<Box sx={{ flexGrow: 1 }}>
|
|
48
49
|
<aside aria-label="Form sections">
|
|
49
50
|
<PrimarySelectableList
|
package/src/hooks/index.ts
CHANGED
|
@@ -12,3 +12,6 @@ export { default as useDisplayCqfAndCalculatedExpression } from './useDisplayCqf
|
|
|
12
12
|
// Responsiveness-related hooks
|
|
13
13
|
export { default as useResponsive } from './useResponsive';
|
|
14
14
|
export type { UseResponsiveProps } from './useResponsive';
|
|
15
|
+
|
|
16
|
+
// Focus management hooks
|
|
17
|
+
export { useFocusTabHeading } from './useFocusTabHeading';
|
|
@@ -44,6 +44,7 @@ function useValueSetCodings(qItem: QuestionnaireItem): {
|
|
|
44
44
|
const patient = useSmartConfigStore.use.patient();
|
|
45
45
|
const user = useSmartConfigStore.use.user();
|
|
46
46
|
const encounter = useSmartConfigStore.use.encounter();
|
|
47
|
+
const resolvedFhirContextReferences = useSmartConfigStore.use.resolvedFhirContextReferences();
|
|
47
48
|
|
|
48
49
|
const launchContexts = useQuestionnaireStore.use.launchContexts();
|
|
49
50
|
const processedValueSets = useQuestionnaireStore.use.processedValueSets();
|
|
@@ -75,7 +76,13 @@ function useValueSetCodings(qItem: QuestionnaireItem): {
|
|
|
75
76
|
// get answer expression resource from launch contexts
|
|
76
77
|
if (launchContexts[variable]) {
|
|
77
78
|
const resourceType = launchContexts[variable].extension[1].valueCode;
|
|
78
|
-
const resource = getResourceFromLaunchContext(
|
|
79
|
+
const resource = getResourceFromLaunchContext(
|
|
80
|
+
resourceType,
|
|
81
|
+
patient,
|
|
82
|
+
user,
|
|
83
|
+
encounter,
|
|
84
|
+
resolvedFhirContextReferences
|
|
85
|
+
);
|
|
79
86
|
if (resource) {
|
|
80
87
|
contextMap[variable] = resource;
|
|
81
88
|
}
|
|
@@ -45,6 +45,10 @@ import type { Breakpoints } from '@mui/material';
|
|
|
45
45
|
* @property tabListWidthOrResponsive - Configures the width of the tab list, either as a fixed number or responsive breakpoints.
|
|
46
46
|
* - Default: `{ tabListBreakpoints: { xs: 12, sm: 3, md: 3, lg: 2.75 }, tabContentBreakpoints: { xs: 12, sm: 9, md: 9, lg: 9.25 } }`
|
|
47
47
|
*
|
|
48
|
+
* @property tabListStickyTop - The pixel offset from the top of the viewport at which the tab list becomes sticky.
|
|
49
|
+
* Set this to the height of any sticky header in the consuming app so the tab list sticks immediately below it.
|
|
50
|
+
* - Default: `0`
|
|
51
|
+
*
|
|
48
52
|
* @property textFieldWidth - Defines the default width for text input fields (in pixels).
|
|
49
53
|
* - Default: `320`
|
|
50
54
|
*
|
|
@@ -96,6 +100,7 @@ export interface RendererConfig {
|
|
|
96
100
|
tabListBreakpoints: Partial<Breakpoints['values']>;
|
|
97
101
|
tabContentBreakpoints: Partial<Breakpoints['values']>;
|
|
98
102
|
};
|
|
103
|
+
tabListStickyTop?: number;
|
|
99
104
|
textFieldWidth?: number;
|
|
100
105
|
inputsFlexGrow?: boolean;
|
|
101
106
|
reverseBooleanYesNo?: boolean;
|
|
@@ -128,6 +133,7 @@ export interface RendererConfigStoreType {
|
|
|
128
133
|
tabListBreakpoints: Partial<Breakpoints['values']>;
|
|
129
134
|
tabContentBreakpoints: Partial<Breakpoints['values']>;
|
|
130
135
|
};
|
|
136
|
+
tabListStickyTop: number;
|
|
131
137
|
showTabbedFormAt: UseResponsiveProps;
|
|
132
138
|
textFieldWidth: number;
|
|
133
139
|
inputsFlexGrow: boolean; // radio, checkbox and boolean inputs should have flexGrow: 1
|
|
@@ -158,6 +164,7 @@ export const rendererConfigStore = createStore<RendererConfigStoreType>()((set)
|
|
|
158
164
|
tabListBreakpoints: { xs: 12, sm: 3, md: 3, lg: 2.75 },
|
|
159
165
|
tabContentBreakpoints: { xs: 12, sm: 9, md: 9, lg: 9.25 }
|
|
160
166
|
},
|
|
167
|
+
tabListStickyTop: 0,
|
|
161
168
|
showTabbedFormAt: { query: 'up', start: 'md' },
|
|
162
169
|
textFieldWidth: 320,
|
|
163
170
|
inputsFlexGrow: false,
|
|
@@ -176,6 +183,7 @@ export const rendererConfigStore = createStore<RendererConfigStoreType>()((set)
|
|
|
176
183
|
params.requiredIndicatorPosition ?? state.requiredIndicatorPosition,
|
|
177
184
|
itemResponsive: params.itemResponsive ?? state.itemResponsive,
|
|
178
185
|
tabListWidthOrResponsive: params.tabListWidthOrResponsive ?? state.tabListWidthOrResponsive,
|
|
186
|
+
tabListStickyTop: params.tabListStickyTop ?? state.tabListStickyTop,
|
|
179
187
|
showTabbedFormAt: params.showTabbedFormAt ?? state.showTabbedFormAt,
|
|
180
188
|
textFieldWidth: params.textFieldWidth ?? state.textFieldWidth,
|
|
181
189
|
inputsFlexGrow: params.inputsFlexGrow ?? state.inputsFlexGrow,
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
18
|
import { createStore } from 'zustand/vanilla';
|
|
19
|
-
import type { Encounter, Patient, Practitioner } from 'fhir/r4';
|
|
19
|
+
import type { Encounter, FhirResource, Patient, Practitioner } from 'fhir/r4';
|
|
20
20
|
import type Client from 'fhirclient/lib/Client';
|
|
21
21
|
import { createSelectors } from './selector';
|
|
22
22
|
import type { FhirContext } from '@aehrc/sdc-populate';
|
|
@@ -31,11 +31,13 @@ import type { FhirContext } from '@aehrc/sdc-populate';
|
|
|
31
31
|
* @property user - The user resource in context
|
|
32
32
|
* @property encounter - The encounter resource in context
|
|
33
33
|
* @property fhirContext - fhirContext array from SMART App Launch
|
|
34
|
+
* @property resolvedFhirContextReferences - resolved references from fhirContext, keyed by resource type e.g. `{ "PractitionerRole": <PractitionerRole> }`
|
|
34
35
|
* @property setClient - Set the FHIRClient object when launching via SMART App Launch
|
|
35
36
|
* @property setPatient - Set the patient resource in context
|
|
36
37
|
* @property setUser - Set the user resource in context
|
|
37
38
|
* @property setEncounter - Set the encounter resource in context
|
|
38
39
|
* @property setFhirContext - Set the fhirContext array from SMART App Launch
|
|
40
|
+
* @property setResolvedFhirContextReferences - Set the resolvedFhirContextReferences object
|
|
39
41
|
*
|
|
40
42
|
* @author Sean Fong
|
|
41
43
|
*/
|
|
@@ -45,11 +47,15 @@ export interface SmartConfigStoreType {
|
|
|
45
47
|
user: Practitioner | null;
|
|
46
48
|
encounter: Encounter | null;
|
|
47
49
|
fhirContext: FhirContext[] | null;
|
|
50
|
+
resolvedFhirContextReferences: Record<string, FhirResource> | null;
|
|
48
51
|
setClient: (client: Client) => void;
|
|
49
52
|
setPatient: (patient: Patient) => void;
|
|
50
53
|
setUser: (user: Practitioner) => void;
|
|
51
54
|
setEncounter: (encounter: Encounter) => void;
|
|
52
55
|
setFhirContext: (fhirContext: FhirContext[]) => void;
|
|
56
|
+
setResolvedFhirContextReferences: (
|
|
57
|
+
resolvedFhirContextReferences: Record<string, FhirResource>
|
|
58
|
+
) => void;
|
|
53
59
|
}
|
|
54
60
|
|
|
55
61
|
/**
|
|
@@ -68,11 +74,14 @@ export const smartConfigStore = createStore<SmartConfigStoreType>()((set) => ({
|
|
|
68
74
|
user: null,
|
|
69
75
|
encounter: null,
|
|
70
76
|
fhirContext: null,
|
|
77
|
+
resolvedFhirContextReferences: null,
|
|
71
78
|
setClient: (client: Client) => set(() => ({ client: client })),
|
|
72
79
|
setPatient: (patient: Patient) => set(() => ({ patient: patient })),
|
|
73
80
|
setUser: (user: Practitioner) => set(() => ({ user: user })),
|
|
74
81
|
setEncounter: (encounter: Encounter) => set(() => ({ encounter: encounter })),
|
|
75
|
-
setFhirContext: (fhirContext: FhirContext[]) => set(() => ({ fhirContext: fhirContext }))
|
|
82
|
+
setFhirContext: (fhirContext: FhirContext[]) => set(() => ({ fhirContext: fhirContext })),
|
|
83
|
+
setResolvedFhirContextReferences: (resolvedFhirContextReferences: Record<string, FhirResource>) =>
|
|
84
|
+
set(() => ({ resolvedFhirContextReferences }))
|
|
76
85
|
}));
|
|
77
86
|
|
|
78
87
|
/**
|
|
@@ -23,25 +23,11 @@ export function isLaunchContext(extension: Extension): extension is LaunchContex
|
|
|
23
23
|
extension.url ===
|
|
24
24
|
'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-launchContext' &&
|
|
25
25
|
!!extension.extension?.find(
|
|
26
|
-
(ext) =>
|
|
27
|
-
ext.url === 'name' &&
|
|
28
|
-
(ext.valueId ||
|
|
29
|
-
(ext.valueCoding &&
|
|
30
|
-
(ext.valueCoding.code === 'patient' ||
|
|
31
|
-
ext.valueCoding.code === 'encounter' ||
|
|
32
|
-
ext.valueCoding.code === 'location' ||
|
|
33
|
-
ext.valueCoding.code === 'user' ||
|
|
34
|
-
ext.valueCoding.code === 'study' ||
|
|
35
|
-
ext.valueCoding.code === 'sourceQueries')))
|
|
26
|
+
(ext) => ext.url === 'name' && (ext.valueId || (ext.valueCoding && ext.valueCoding.code))
|
|
36
27
|
);
|
|
37
28
|
|
|
38
29
|
const hasLaunchContextType = !!extension.extension?.find(
|
|
39
|
-
(ext) =>
|
|
40
|
-
ext.url === 'type' &&
|
|
41
|
-
ext.valueCode &&
|
|
42
|
-
(ext.valueCode === 'Patient' ||
|
|
43
|
-
ext.valueCode === 'Practitioner' ||
|
|
44
|
-
ext.valueCode === 'Encounter')
|
|
30
|
+
(ext) => ext.url === 'type' && ext.valueCode
|
|
45
31
|
);
|
|
46
32
|
|
|
47
33
|
return (
|
package/src/utils/valueSet.ts
CHANGED
|
@@ -198,7 +198,8 @@ export function getResourceFromLaunchContext(
|
|
|
198
198
|
resourceType: FhirResourceString,
|
|
199
199
|
patient: Patient | null,
|
|
200
200
|
user: Practitioner | null,
|
|
201
|
-
encounter: Encounter | null
|
|
201
|
+
encounter: Encounter | null,
|
|
202
|
+
resolvedFhirContextReferences: Record<string, FhirResource> | null
|
|
202
203
|
): FhirResource | null {
|
|
203
204
|
switch (resourceType) {
|
|
204
205
|
case 'Patient':
|
|
@@ -208,7 +209,7 @@ export function getResourceFromLaunchContext(
|
|
|
208
209
|
case 'Encounter':
|
|
209
210
|
return encounter;
|
|
210
211
|
}
|
|
211
|
-
return null;
|
|
212
|
+
return resolvedFhirContextReferences?.[resourceType] ?? null;
|
|
212
213
|
}
|
|
213
214
|
|
|
214
215
|
/**
|
|
@@ -1,26 +0,0 @@
|
|
|
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 React from 'react';
|
|
18
|
-
import Fade from '@mui/material/Fade';
|
|
19
|
-
import SyncIcon from '@mui/icons-material/Sync';
|
|
20
|
-
function FadingCheckIcon(props) {
|
|
21
|
-
const { fadeIn, disabled } = props;
|
|
22
|
-
return (React.createElement(Fade, { in: fadeIn, timeout: { enter: 100, exit: 300 } },
|
|
23
|
-
React.createElement(SyncIcon, { color: "success", fontSize: "small", sx: Object.assign({}, (disabled ? { color: 'text.disabled' } : null)) })));
|
|
24
|
-
}
|
|
25
|
-
export default FadingCheckIcon;
|
|
26
|
-
//# sourceMappingURL=FadingCheckIcon.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FadingCheckIcon.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/ItemParts/FadingCheckIcon.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,oBAAoB,CAAC;AACtC,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAOhD,SAAS,eAAe,CAAC,KAA2B;IAClD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAEnC,OAAO,CACL,oBAAC,IAAI,IAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE;QAClD,oBAAC,QAAQ,IACP,KAAK,EAAC,SAAS,EACf,QAAQ,EAAC,OAAO,EAChB,EAAE,oBAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IACvD,CACG,CACR,CAAC;AACJ,CAAC;AAED,eAAe,eAAe,CAAC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import type { QuestionnaireItem } from 'fhir/r4';
|
|
3
|
-
interface ItemLabelTextProps {
|
|
4
|
-
qItem: QuestionnaireItem;
|
|
5
|
-
readOnly?: boolean;
|
|
6
|
-
}
|
|
7
|
-
declare const ItemLabelText: React.NamedExoticComponent<ItemLabelTextProps>;
|
|
8
|
-
export default ItemLabelText;
|
|
@@ -1,63 +0,0 @@
|
|
|
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 React, { memo } from 'react';
|
|
18
|
-
import { getMarkdownString, getXHtmlString } from '../../../utils/itemControl';
|
|
19
|
-
import { default as htmlParse } from 'html-react-parser';
|
|
20
|
-
import Box from '@mui/material/Box';
|
|
21
|
-
import ReactMarkdown from 'react-markdown';
|
|
22
|
-
import Typography from '@mui/material/Typography';
|
|
23
|
-
import useDisplayCqfAndCalculatedExpression from '../../../hooks/useDisplayCqfAndCalculatedExpression';
|
|
24
|
-
import { structuredDataCapture } from 'fhir-sdc-helpers';
|
|
25
|
-
import { default as styleParse } from 'style-to-js';
|
|
26
|
-
const ItemLabelText = memo(function ItemLabelText(props) {
|
|
27
|
-
var _a, _b;
|
|
28
|
-
const { qItem, readOnly } = props;
|
|
29
|
-
let labelText = (_a = qItem.text) !== null && _a !== void 0 ? _a : '';
|
|
30
|
-
// Use calculatedExpressionString if available
|
|
31
|
-
const calculatedExpressionString = (_b = useDisplayCqfAndCalculatedExpression(qItem)) !== null && _b !== void 0 ? _b : '';
|
|
32
|
-
if (calculatedExpressionString) {
|
|
33
|
-
labelText = calculatedExpressionString;
|
|
34
|
-
}
|
|
35
|
-
// parse xHTML if found
|
|
36
|
-
const xHtmlString = getXHtmlString(qItem);
|
|
37
|
-
if (xHtmlString) {
|
|
38
|
-
return React.createElement(Box, null, htmlParse(xHtmlString));
|
|
39
|
-
}
|
|
40
|
-
// parse markdown if found
|
|
41
|
-
const markdownString = getMarkdownString(qItem);
|
|
42
|
-
if (markdownString) {
|
|
43
|
-
return (React.createElement(Box, null,
|
|
44
|
-
React.createElement(ReactMarkdown, null, markdownString)));
|
|
45
|
-
}
|
|
46
|
-
// labelText is empty, return null
|
|
47
|
-
if (!labelText) {
|
|
48
|
-
return null;
|
|
49
|
-
}
|
|
50
|
-
// parse styles if found
|
|
51
|
-
const stylesString = structuredDataCapture.getStyle(qItem._text);
|
|
52
|
-
if (stylesString) {
|
|
53
|
-
const styles = styleParse(stylesString);
|
|
54
|
-
return React.createElement("div", { style: styles }, labelText);
|
|
55
|
-
}
|
|
56
|
-
if (qItem.type === 'group') {
|
|
57
|
-
return React.createElement(React.Fragment, null, labelText);
|
|
58
|
-
}
|
|
59
|
-
// parse regular text
|
|
60
|
-
return (React.createElement(Typography, { color: readOnly ? 'text.disabled' : 'text.primary', sx: { mt: 0.25 } }, labelText));
|
|
61
|
-
});
|
|
62
|
-
export default ItemLabelText;
|
|
63
|
-
//# sourceMappingURL=ItemLabelText.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ItemLabelText.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/ItemParts/ItemLabelText.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAEpC,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,GAAG,MAAM,mBAAmB,CAAC;AACpC,OAAO,aAAa,MAAM,gBAAgB,CAAC;AAC3C,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAClD,OAAO,oCAAoC,MAAM,qDAAqD,CAAC;AACvG,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,aAAa,CAAC;AAOpD,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,aAAa,CAAC,KAAyB;;IACzE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAElC,IAAI,SAAS,GAAG,MAAA,KAAK,CAAC,IAAI,mCAAI,EAAE,CAAC;IAEjC,8CAA8C;IAC9C,MAAM,0BAA0B,GAAG,MAAA,oCAAoC,CAAC,KAAK,CAAC,mCAAI,EAAE,CAAC;IACrF,IAAI,0BAA0B,EAAE;QAC9B,SAAS,GAAG,0BAA0B,CAAC;KACxC;IAED,uBAAuB;IACvB,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAC1C,IAAI,WAAW,EAAE;QACf,OAAO,oBAAC,GAAG,QAAE,SAAS,CAAC,WAAW,CAAC,CAAO,CAAC;KAC5C;IAED,0BAA0B;IAC1B,MAAM,cAAc,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,cAAc,EAAE;QAClB,OAAO,CACL,oBAAC,GAAG;YACF,oBAAC,aAAa,QAAE,cAAc,CAAiB,CAC3C,CACP,CAAC;KACH;IAED,kCAAkC;IAClC,IAAI,CAAC,SAAS,EAAE;QACd,OAAO,IAAI,CAAC;KACb;IAED,wBAAwB;IACxB,MAAM,YAAY,GAAG,qBAAqB,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjE,IAAI,YAAY,EAAE;QAChB,MAAM,MAAM,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;QACxC,OAAO,6BAAK,KAAK,EAAE,MAAM,IAAG,SAAS,CAAO,CAAC;KAC9C;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;QAC1B,OAAO,0CAAG,SAAS,CAAI,CAAC;KACzB;IAED,qBAAqB;IACrB,OAAO,CACL,oBAAC,UAAU,IAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAC7E,SAAS,CACC,CACd,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,eAAe,aAAa,CAAC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import type { QuestionnaireItem } from 'fhir/r4';
|
|
3
|
-
interface LabelWrapperProps {
|
|
4
|
-
qItem: QuestionnaireItem;
|
|
5
|
-
readOnly: boolean;
|
|
6
|
-
}
|
|
7
|
-
declare function ItemLabelWrapper(props: LabelWrapperProps): React.JSX.Element;
|
|
8
|
-
export default ItemLabelWrapper;
|
|
@@ -1,53 +0,0 @@
|
|
|
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 React from 'react';
|
|
18
|
-
import Box from '@mui/material/Box';
|
|
19
|
-
import ContextDisplayItem from './ContextDisplayItem';
|
|
20
|
-
import { getContextDisplays } from '../../../utils/tabs';
|
|
21
|
-
import ItemLabelText from './ItemLabelText';
|
|
22
|
-
import Tooltip from '@mui/material/Tooltip';
|
|
23
|
-
import Typography from '@mui/material/Typography';
|
|
24
|
-
import useRenderingExtensions from '../../../hooks/useRenderingExtensions';
|
|
25
|
-
import Iconify from '../../Iconify/Iconify';
|
|
26
|
-
function ItemLabelWrapper(props) {
|
|
27
|
-
const { qItem, readOnly } = props;
|
|
28
|
-
const { required, displayFlyover } = useRenderingExtensions(qItem);
|
|
29
|
-
const contextDisplayItems = getContextDisplays(qItem);
|
|
30
|
-
return (React.createElement(Box, { display: "flex", alignItems: "center", justifyContent: "space-between" },
|
|
31
|
-
React.createElement(Tooltip, { title: displayFlyover, placement: "top", slotProps: {
|
|
32
|
-
popper: {
|
|
33
|
-
modifiers: [
|
|
34
|
-
{
|
|
35
|
-
name: 'offset',
|
|
36
|
-
options: {
|
|
37
|
-
offset: [0, -8]
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
]
|
|
41
|
-
}
|
|
42
|
-
} },
|
|
43
|
-
React.createElement("span", null,
|
|
44
|
-
React.createElement(Box, { display: "flex", columnGap: 0.4, justifyContent: "space-between", alignItems: "center" },
|
|
45
|
-
required ? (React.createElement(Typography, { color: "red", sx: { ml: -1.15 } }, "*")) : null,
|
|
46
|
-
React.createElement(ItemLabelText, { qItem: qItem, readOnly: readOnly }),
|
|
47
|
-
displayFlyover !== '' ? (React.createElement(Iconify, { icon: "mdi:information-outline", sx: { height: 16, width: 16, mt: 0.25, ml: 0.25, color: 'text.secondary' } })) : null))),
|
|
48
|
-
React.createElement(Box, { display: "flex", columnGap: 0.5 }, contextDisplayItems.map((item) => {
|
|
49
|
-
return React.createElement(ContextDisplayItem, { key: item.linkId, displayItem: item });
|
|
50
|
-
}))));
|
|
51
|
-
}
|
|
52
|
-
export default ItemLabelWrapper;
|
|
53
|
-
//# sourceMappingURL=ItemLabelWrapper.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ItemLabelWrapper.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/ItemParts/ItemLabelWrapper.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,mBAAmB,CAAC;AACpC,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,OAAO,MAAM,uBAAuB,CAAC;AAC5C,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAClD,OAAO,sBAAsB,MAAM,uCAAuC,CAAC;AAC3E,OAAO,OAAO,MAAM,uBAAuB,CAAC;AAO5C,SAAS,gBAAgB,CAAC,KAAwB;IAChD,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAElC,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;IACnE,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAEtD,OAAO,CACL,oBAAC,GAAG,IAAC,OAAO,EAAC,MAAM,EAAC,UAAU,EAAC,QAAQ,EAAC,cAAc,EAAC,eAAe;QACpE,oBAAC,OAAO,IACN,KAAK,EAAE,cAAc,EACrB,SAAS,EAAC,KAAK,EACf,SAAS,EAAE;gBACT,MAAM,EAAE;oBACN,SAAS,EAAE;wBACT;4BACE,IAAI,EAAE,QAAQ;4BACd,OAAO,EAAE;gCACP,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;6BAChB;yBACF;qBACF;iBACF;aACF;YACD;gBACE,oBAAC,GAAG,IAAC,OAAO,EAAC,MAAM,EAAC,SAAS,EAAE,GAAG,EAAE,cAAc,EAAC,eAAe,EAAC,UAAU,EAAC,QAAQ;oBACnF,QAAQ,CAAC,CAAC,CAAC,CACV,oBAAC,UAAU,IAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,QAE5B,CACd,CAAC,CAAC,CAAC,IAAI;oBACR,oBAAC,aAAa,IAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAI;oBAClD,cAAc,KAAK,EAAE,CAAC,CAAC,CAAC,CACvB,oBAAC,OAAO,IACN,IAAI,EAAC,yBAAyB,EAC9B,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,gBAAgB,EAAE,GAC1E,CACH,CAAC,CAAC,CAAC,IAAI,CACJ,CACD,CACC;QAEV,oBAAC,GAAG,IAAC,OAAO,EAAC,MAAM,EAAC,SAAS,EAAE,GAAG,IAC/B,mBAAmB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAChC,OAAO,oBAAC,kBAAkB,IAAC,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,GAAI,CAAC;QACrE,CAAC,CAAC,CACE,CACF,CACP,CAAC;AACJ,CAAC;AAED,eAAe,gBAAgB,CAAC"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { memo } from 'react';
|
|
3
|
-
import ReactMarkdown from 'react-markdown';
|
|
4
|
-
import { getMarkdownString } from '../../../utils/extensions';
|
|
5
|
-
import { useParseXhtml } from '../../../hooks/useParseXhtml';
|
|
6
|
-
import useDisplayCqfAndCalculatedExpression from '../../../hooks/useDisplayCqfAndCalculatedExpression';
|
|
7
|
-
import { getItemTextToDisplay } from '../../../utils/itemTextToDisplay';
|
|
8
|
-
import { structuredDataCapture } from 'fhir-sdc-helpers';
|
|
9
|
-
import { default as parseStyleToJs } from 'style-to-js';
|
|
10
|
-
const ItemTextSwitcher = memo(function ItemTextSwitcher({ qItem }) {
|
|
11
|
-
let itemTextToDisplay = getItemTextToDisplay(qItem);
|
|
12
|
-
// Use calculatedExpressionString if available
|
|
13
|
-
const calculatedExpressionString = useDisplayCqfAndCalculatedExpression(qItem, 'item._text') ?? '';
|
|
14
|
-
if (calculatedExpressionString) {
|
|
15
|
-
itemTextToDisplay = calculatedExpressionString;
|
|
16
|
-
}
|
|
17
|
-
// Get aria-label text if available
|
|
18
|
-
const itemTextAriaLabel = useDisplayCqfAndCalculatedExpression(qItem, 'item._text.aria-label') ?? undefined;
|
|
19
|
-
// parse XHTML if found
|
|
20
|
-
const parsedXhtml = useParseXhtml(qItem);
|
|
21
|
-
if (parsedXhtml) {
|
|
22
|
-
return _jsx("span", { "aria-label": itemTextAriaLabel, children: parsedXhtml.content });
|
|
23
|
-
}
|
|
24
|
-
// parse markdown if found
|
|
25
|
-
const markdownString = getMarkdownString(qItem);
|
|
26
|
-
if (markdownString) {
|
|
27
|
-
return (_jsx("span", { "aria-label": itemTextAriaLabel, children: _jsx(ReactMarkdown, { children: markdownString }) }));
|
|
28
|
-
}
|
|
29
|
-
// labelText is empty, return null
|
|
30
|
-
if (!itemTextToDisplay) {
|
|
31
|
-
return null;
|
|
32
|
-
}
|
|
33
|
-
const stylesString = structuredDataCapture.getStyle(qItem._text);
|
|
34
|
-
const itemStyles = stylesString ? parseStyleToJs(stylesString) : {};
|
|
35
|
-
// parse regular text
|
|
36
|
-
return (_jsx("span", { "aria-label": itemTextAriaLabel, style: itemStyles, children: itemTextToDisplay }));
|
|
37
|
-
});
|
|
38
|
-
export default ItemTextSwitcher;
|
|
39
|
-
//# sourceMappingURL=ItemTextSwitcher%20copy.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ItemTextSwitcher copy.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/ItemParts/ItemTextSwitcher copy.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,aAAa,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,oCAAoC,MAAM,qDAAqD,CAAC;AAEvG,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,aAAa,CAAC;AAMxD,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,gBAAgB,CAAC,EAAE,KAAK,EAAyB;IACtF,IAAI,iBAAiB,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAEpD,8CAA8C;IAC9C,MAAM,0BAA0B,GAC9B,oCAAoC,CAAC,KAAK,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC;IAClE,IAAI,0BAA0B,EAAE,CAAC;QAC/B,iBAAiB,GAAG,0BAA0B,CAAC;IACjD,CAAC;IAED,mCAAmC;IACnC,MAAM,iBAAiB,GACrB,oCAAoC,CAAC,KAAK,EAAE,uBAAuB,CAAC,IAAI,SAAS,CAAC;IAEpF,uBAAuB;IACvB,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,6BAAkB,iBAAiB,YAAG,WAAW,CAAC,OAAO,GAAQ,CAAC;IAC3E,CAAC;IAED,0BAA0B;IAC1B,MAAM,cAAc,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,CACL,6BAAkB,iBAAiB,YACjC,KAAC,aAAa,cAAE,cAAc,GAAiB,GAC1C,CACR,CAAC;IACJ,CAAC;IAED,kCAAkC;IAClC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,YAAY,GAAG,qBAAqB,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjE,MAAM,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEpE,qBAAqB;IACrB,OAAO,CACL,6BAAkB,iBAAiB,EAAE,KAAK,EAAE,UAAU,YACnD,iBAAiB,GACb,CACR,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,eAAe,gBAAgB,CAAC"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import type { QuestionnaireResponseItem } from 'fhir/r4';
|
|
3
|
-
interface DeleteItemButtonProps {
|
|
4
|
-
nullableQrItem: QuestionnaireResponseItem | null;
|
|
5
|
-
numOfRepeatGroups: number;
|
|
6
|
-
readOnly: boolean;
|
|
7
|
-
onDeleteItem: () => void;
|
|
8
|
-
}
|
|
9
|
-
declare function DeleteItemButton(props: DeleteItemButtonProps): React.JSX.Element;
|
|
10
|
-
export default DeleteItemButton;
|
|
@@ -1,30 +0,0 @@
|
|
|
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 React from 'react';
|
|
18
|
-
import { RepeatDeleteTooltip } from '../RepeatItem/RepeatItem.styles';
|
|
19
|
-
import IconButton from '@mui/material/IconButton';
|
|
20
|
-
import RemoveCircleOutlineIcon from '@mui/icons-material/RemoveCircleOutline';
|
|
21
|
-
function DeleteItemButton(props) {
|
|
22
|
-
const { nullableQrItem, numOfRepeatGroups, readOnly, onDeleteItem } = props;
|
|
23
|
-
const isDisabled = nullableQrItem === null || numOfRepeatGroups === 1 || readOnly;
|
|
24
|
-
return (React.createElement(RepeatDeleteTooltip, { className: "repeat-group-delete", title: "Remove item" },
|
|
25
|
-
React.createElement("span", null,
|
|
26
|
-
React.createElement(IconButton, { size: "small", color: "error", disabled: isDisabled, onClick: onDeleteItem },
|
|
27
|
-
React.createElement(RemoveCircleOutlineIcon, null)))));
|
|
28
|
-
}
|
|
29
|
-
export default DeleteItemButton;
|
|
30
|
-
//# sourceMappingURL=DeleteItemButton.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DeleteItemButton.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/RepeatGroup/DeleteItemButton.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAClD,OAAO,uBAAuB,MAAM,yCAAyC,CAAC;AAU9E,SAAS,gBAAgB,CAAC,KAA4B;IACpD,MAAM,EAAE,cAAc,EAAE,iBAAiB,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IAE5E,MAAM,UAAU,GAAG,cAAc,KAAK,IAAI,IAAI,iBAAiB,KAAK,CAAC,IAAI,QAAQ,CAAC;IAElF,OAAO,CACL,oBAAC,mBAAmB,IAAC,SAAS,EAAC,qBAAqB,EAAC,KAAK,EAAC,aAAa;QACtE;YACE,oBAAC,UAAU,IAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,OAAO,EAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY;gBAChF,oBAAC,uBAAuB,OAAG,CAChB,CACR,CACa,CACvB,CAAC;AACJ,CAAC;AAED,eAAe,gBAAgB,CAAC"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import type { SxProps, Theme } from '@mui/material/styles';
|
|
3
|
-
interface IconifyProps {
|
|
4
|
-
icon: string;
|
|
5
|
-
width?: number;
|
|
6
|
-
height?: number;
|
|
7
|
-
sx?: SxProps<Theme>;
|
|
8
|
-
}
|
|
9
|
-
declare const Iconify: React.MemoExoticComponent<React.ForwardRefExoticComponent<IconifyProps & React.RefAttributes<unknown>>>;
|
|
10
|
-
export default Iconify;
|
|
@@ -1,26 +0,0 @@
|
|
|
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 React, { forwardRef, memo } from 'react';
|
|
18
|
-
import { Icon } from '@iconify/react';
|
|
19
|
-
import Box from '@mui/material/Box';
|
|
20
|
-
const Iconify = memo(forwardRef(function Iconify(props, ref) {
|
|
21
|
-
// eslint-disable-next-line react/prop-types
|
|
22
|
-
const { icon, width = 20, height = 20, sx } = props;
|
|
23
|
-
return React.createElement(Box, { ref: ref, component: Icon, icon: icon, sx: Object.assign({ width, height }, sx) });
|
|
24
|
-
}));
|
|
25
|
-
export default Iconify;
|
|
26
|
-
//# sourceMappingURL=Iconify.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Iconify.js","sourceRoot":"","sources":["../../../src/components/Iconify/Iconify.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAEtC,OAAO,GAAG,MAAM,mBAAmB,CAAC;AASpC,MAAM,OAAO,GAAG,IAAI,CAClB,UAAU,CAAC,SAAS,OAAO,CAAC,KAAmB,EAAE,GAAG;IAClD,4CAA4C;IAC5C,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC;IACpD,OAAO,oBAAC,GAAG,IAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,kBAAI,KAAK,EAAE,MAAM,IAAK,EAAE,IAAM,CAAC;AACtF,CAAC,CAAC,CACH,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
|
|
3
|
-
import type { PropsWithParentIsReadOnlyAttribute, PropsWithQrItemChangeHandler } from '../../interfaces/renderProps.interface';
|
|
4
|
-
interface FormBodyPageProps extends PropsWithQrItemChangeHandler, PropsWithParentIsReadOnlyAttribute {
|
|
5
|
-
topLevelQItem: QuestionnaireItem;
|
|
6
|
-
topLevelQRItem: QuestionnaireResponseItem | null;
|
|
7
|
-
}
|
|
8
|
-
declare function FormBodyPage(props: FormBodyPageProps): React.JSX.Element;
|
|
9
|
-
export default FormBodyPage;
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import React, { useMemo } from 'react';
|
|
2
|
-
import Grid from '@mui/material/Grid';
|
|
3
|
-
import TabContext from '@mui/lab/TabContext';
|
|
4
|
-
import TabPanel from '@mui/lab/TabPanel';
|
|
5
|
-
import GroupItem from '../FormComponents/GroupItem/GroupItem';
|
|
6
|
-
import { useQuestionnaireStore } from '../../stores';
|
|
7
|
-
import { getQrItemsIndex, mapQItemsIndex } from '../../utils/mapItem';
|
|
8
|
-
import { createEmptyQrGroup, updateQrItemsInGroup } from '../../utils/qrItem';
|
|
9
|
-
function FormBodyPage(props) {
|
|
10
|
-
const { topLevelQItem, topLevelQRItem, parentIsReadOnly, onQrItemChange } = props;
|
|
11
|
-
const pages = useQuestionnaireStore.use.pages();
|
|
12
|
-
const currentPage = useQuestionnaireStore.use.currentPageIndex();
|
|
13
|
-
const indexMap = useMemo(() => mapQItemsIndex(topLevelQItem), [topLevelQItem]);
|
|
14
|
-
const nonNullTopLevelQRItem = topLevelQRItem !== null && topLevelQRItem !== void 0 ? topLevelQRItem : createEmptyQrGroup(topLevelQItem);
|
|
15
|
-
const qItems = topLevelQItem.item;
|
|
16
|
-
const qrItems = nonNullTopLevelQRItem.item;
|
|
17
|
-
function handleQrGroupChange(qrItem) {
|
|
18
|
-
updateQrItemsInGroup(qrItem, null, nonNullTopLevelQRItem, indexMap);
|
|
19
|
-
onQrItemChange(nonNullTopLevelQRItem);
|
|
20
|
-
}
|
|
21
|
-
if (!qItems || !qrItems) {
|
|
22
|
-
return React.createElement(React.Fragment, null, "Unable to load form");
|
|
23
|
-
}
|
|
24
|
-
const qrItemsByIndex = getQrItemsIndex(qItems, qrItems, indexMap);
|
|
25
|
-
return (React.createElement(Grid, { container: true, spacing: 1.5 },
|
|
26
|
-
React.createElement(TabContext, { value: currentPage.toString() },
|
|
27
|
-
React.createElement(Grid, { item: true, xs: 12, md: 12, lg: 12 }, qItems.map((qItem, i) => {
|
|
28
|
-
var _a, _b;
|
|
29
|
-
const qrItem = qrItemsByIndex[i];
|
|
30
|
-
const isNotRepeatGroup = !Array.isArray(qrItem);
|
|
31
|
-
const isPage = !!pages[qItem.linkId];
|
|
32
|
-
if (!isPage || !isNotRepeatGroup) {
|
|
33
|
-
// Something has gone horribly wrong
|
|
34
|
-
return null;
|
|
35
|
-
}
|
|
36
|
-
const isRepeated = (_a = qItem.repeats) !== null && _a !== void 0 ? _a : false;
|
|
37
|
-
const pageIsMarkedAsComplete = (_b = pages[qItem.linkId].isComplete) !== null && _b !== void 0 ? _b : false;
|
|
38
|
-
return (React.createElement(TabPanel, { key: qItem.linkId, sx: { p: 0 }, value: i.toString(), "data-test": "renderer-page-panel" },
|
|
39
|
-
React.createElement(GroupItem, { qItem: qItem, qrItem: qrItem !== null && qrItem !== void 0 ? qrItem : null, isRepeated: isRepeated, groupCardElevation: 1, pageIsMarkedAsComplete: pageIsMarkedAsComplete, pages: pages, currentPageIndex: currentPage, parentIsReadOnly: parentIsReadOnly, onQrItemChange: handleQrGroupChange })));
|
|
40
|
-
})))));
|
|
41
|
-
}
|
|
42
|
-
export default FormBodyPage;
|
|
43
|
-
//# sourceMappingURL=FormBodyPage.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FormBodyPage.js","sourceRoot":"","sources":["../../../src/components/Renderer/FormBodyPage.tsx"],"names":[],"mappings":"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"}
|