@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.
Files changed (212) hide show
  1. package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteField.js +1 -1
  2. package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteField.js.map +1 -1
  3. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.js +1 -1
  4. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.js.map +1 -1
  5. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.js +1 -1
  6. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.js.map +1 -1
  7. package/lib/components/FormComponents/GridGroup/GridRow.js +1 -1
  8. package/lib/components/FormComponents/GridGroup/GridRow.js.map +1 -1
  9. package/lib/components/FormComponents/GroupItem/GroupAccordion.d.ts +10 -0
  10. package/lib/components/FormComponents/GroupItem/GroupAccordion.js +71 -0
  11. package/lib/components/FormComponents/GroupItem/GroupAccordion.js.map +1 -0
  12. package/lib/components/FormComponents/GroupItem/GroupAccordion.styles.d.ts +1 -1
  13. package/lib/components/FormComponents/GroupItem/GroupAccordion.styles.js +1 -1
  14. package/lib/components/FormComponents/GroupItem/GroupAccordion.styles.js.map +1 -1
  15. package/lib/components/FormComponents/GroupItem/GroupItemView.js +1 -1
  16. package/lib/components/FormComponents/GroupItem/GroupItemView.js.map +1 -1
  17. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.js +1 -1
  18. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.js.map +1 -1
  19. package/lib/components/FormComponents/RepeatGroup/RepeatGroupView.js +1 -1
  20. package/lib/components/FormComponents/RepeatGroup/RepeatGroupView.js.map +1 -1
  21. package/lib/components/FormComponents/Tables/GroupTableView.js +1 -1
  22. package/lib/components/FormComponents/Tables/GroupTableView.js.map +1 -1
  23. package/lib/components/Renderer/FormBodySingleCollapsible.js +1 -1
  24. package/lib/components/Renderer/FormBodySingleCollapsible.js.map +1 -1
  25. package/lib/components/Renderer/FormBodyTabbed.js +57 -4
  26. package/lib/components/Renderer/FormBodyTabbed.js.map +1 -1
  27. package/lib/components/Tabs/FormBodyTabListWrapper.d.ts +1 -0
  28. package/lib/components/Tabs/FormBodyTabListWrapper.js +2 -2
  29. package/lib/components/Tabs/FormBodyTabListWrapper.js.map +1 -1
  30. package/lib/hooks/index.d.ts +1 -0
  31. package/lib/hooks/index.js +2 -0
  32. package/lib/hooks/index.js.map +1 -1
  33. package/lib/hooks/useValueSetCodings.js +2 -1
  34. package/lib/hooks/useValueSetCodings.js.map +1 -1
  35. package/lib/stores/rendererConfigStore.d.ts +7 -0
  36. package/lib/stores/rendererConfigStore.js +2 -0
  37. package/lib/stores/rendererConfigStore.js.map +1 -1
  38. package/lib/stores/smartConfigStore.d.ts +7 -1
  39. package/lib/stores/smartConfigStore.js +3 -1
  40. package/lib/stores/smartConfigStore.js.map +1 -1
  41. package/lib/utils/populateContexts.js +2 -14
  42. package/lib/utils/populateContexts.js.map +1 -1
  43. package/lib/utils/valueSet.d.ts +1 -1
  44. package/lib/utils/valueSet.js +2 -2
  45. package/lib/utils/valueSet.js.map +1 -1
  46. package/package.json +3 -3
  47. package/src/components/FormComponents/ChoiceItems/ChoiceAutocompleteField.tsx +1 -1
  48. package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.tsx +1 -1
  49. package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.tsx +1 -1
  50. package/src/components/FormComponents/GridGroup/GridRow.tsx +6 -1
  51. package/src/components/FormComponents/GroupItem/GroupAccordion.styles.ts +1 -1
  52. package/src/components/FormComponents/GroupItem/GroupAccordion.tsx +93 -0
  53. package/src/components/FormComponents/GroupItem/GroupItemView.tsx +1 -1
  54. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.tsx +1 -1
  55. package/src/components/FormComponents/RepeatGroup/RepeatGroupView.tsx +1 -1
  56. package/src/components/FormComponents/Tables/GroupTableView.tsx +1 -1
  57. package/src/components/Renderer/FormBodySingleCollapsible.tsx +2 -1
  58. package/src/components/Renderer/FormBodyTabbed.tsx +67 -5
  59. package/src/components/Tabs/FormBodyTabListWrapper.tsx +3 -2
  60. package/src/hooks/index.ts +3 -0
  61. package/src/hooks/useValueSetCodings.ts +8 -1
  62. package/src/stores/rendererConfigStore.ts +8 -0
  63. package/src/stores/smartConfigStore.ts +11 -2
  64. package/src/utils/populateContexts.ts +2 -16
  65. package/src/utils/valueSet.ts +3 -2
  66. package/lib/components/FormComponents/ItemParts/FadingCheckIcon.d.ts +0 -7
  67. package/lib/components/FormComponents/ItemParts/FadingCheckIcon.js +0 -26
  68. package/lib/components/FormComponents/ItemParts/FadingCheckIcon.js.map +0 -1
  69. package/lib/components/FormComponents/ItemParts/ItemLabelText.d.ts +0 -8
  70. package/lib/components/FormComponents/ItemParts/ItemLabelText.js +0 -63
  71. package/lib/components/FormComponents/ItemParts/ItemLabelText.js.map +0 -1
  72. package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.d.ts +0 -8
  73. package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.js +0 -53
  74. package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.js.map +0 -1
  75. package/lib/components/FormComponents/ItemParts/ItemTextSwitcher copy.d.ts +0 -7
  76. package/lib/components/FormComponents/ItemParts/ItemTextSwitcher copy.js +0 -39
  77. package/lib/components/FormComponents/ItemParts/ItemTextSwitcher copy.js.map +0 -1
  78. package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.d.ts +0 -10
  79. package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.js +0 -30
  80. package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.js.map +0 -1
  81. package/lib/components/Iconify/Iconify.d.ts +0 -10
  82. package/lib/components/Iconify/Iconify.js +0 -26
  83. package/lib/components/Iconify/Iconify.js.map +0 -1
  84. package/lib/components/Renderer/FormBodyPage.d.ts +0 -9
  85. package/lib/components/Renderer/FormBodyPage.js +0 -43
  86. package/lib/components/Renderer/FormBodyPage.js.map +0 -1
  87. package/lib/components/Renderer/FormTitle.d.ts +0 -7
  88. package/lib/components/Renderer/FormTitle.js +0 -30
  89. package/lib/components/Renderer/FormTitle.js.map +0 -1
  90. package/lib/components/Renderer/FormTopLevelPage.d.ts +0 -9
  91. package/lib/components/Renderer/FormTopLevelPage.js +0 -29
  92. package/lib/components/Renderer/FormTopLevelPage.js.map +0 -1
  93. package/lib/hooks/useBooleanCalculatedExpression.d.ts +0 -12
  94. package/lib/hooks/useBooleanCalculatedExpression.js +0 -52
  95. package/lib/hooks/useBooleanCalculatedExpression.js.map +0 -1
  96. package/lib/hooks/useCalculatedExpressionAnimating.d.ts +0 -1
  97. package/lib/hooks/useCalculatedExpressionAnimating.js +0 -18
  98. package/lib/hooks/useCalculatedExpressionAnimating.js.map +0 -1
  99. package/lib/hooks/useDecimalCalculatedExpression.d.ts +0 -13
  100. package/lib/hooks/useDecimalCalculatedExpression.js +0 -58
  101. package/lib/hooks/useDecimalCalculatedExpression.js.map +0 -1
  102. package/lib/hooks/useInitialiseGroupTable.d.ts +0 -4
  103. package/lib/hooks/useInitialiseGroupTable.js +0 -36
  104. package/lib/hooks/useInitialiseGroupTable.js.map +0 -1
  105. package/lib/hooks/useIntegerCalculatedExpression.d.ts +0 -12
  106. package/lib/hooks/useIntegerCalculatedExpression.js +0 -55
  107. package/lib/hooks/useIntegerCalculatedExpression.js.map +0 -1
  108. package/lib/hooks/useNumberInput.d.ts +0 -3
  109. package/lib/hooks/useNumberInput.js +0 -31
  110. package/lib/hooks/useNumberInput.js.map +0 -1
  111. package/lib/hooks/useRepeatAnswers.d.ts +0 -4
  112. package/lib/hooks/useRepeatAnswers.js +0 -34
  113. package/lib/hooks/useRepeatAnswers.js.map +0 -1
  114. package/lib/hooks/useRepeatGroups.d.ts +0 -4
  115. package/lib/hooks/useRepeatGroups.js +0 -34
  116. package/lib/hooks/useRepeatGroups.js.map +0 -1
  117. package/lib/hooks/useShowFeedback.d.ts +0 -11
  118. package/lib/hooks/useShowFeedback.js +0 -33
  119. package/lib/hooks/useShowFeedback.js.map +0 -1
  120. package/lib/hooks/useStringCalculatedExpression.d.ts +0 -14
  121. package/lib/hooks/useStringCalculatedExpression.js +0 -69
  122. package/lib/hooks/useStringCalculatedExpression.js.map +0 -1
  123. package/lib/hooks/useStringInput.d.ts +0 -3
  124. package/lib/hooks/useStringInput.js +0 -31
  125. package/lib/hooks/useStringInput.js.map +0 -1
  126. package/lib/interfaces/itemPath.interface.d.ts +0 -31
  127. package/lib/interfaces/itemPath.interface.js +0 -2
  128. package/lib/interfaces/itemPath.interface.js.map +0 -1
  129. package/lib/interfaces/repeatItem.interface.d.ts +0 -5
  130. package/lib/interfaces/repeatItem.interface.js +0 -2
  131. package/lib/interfaces/repeatItem.interface.js.map +0 -1
  132. package/lib/stores/rendererStylingStore.d.ts +0 -144
  133. package/lib/stores/rendererStylingStore.js +0 -68
  134. package/lib/stores/rendererStylingStore.js.map +0 -1
  135. package/lib/stories/storybookWrappers/InitialiseFormWrapperForStorybook.d.ts +0 -30
  136. package/lib/stories/storybookWrappers/InitialiseFormWrapperForStorybook.js +0 -46
  137. package/lib/stories/storybookWrappers/InitialiseFormWrapperForStorybook.js.map +0 -1
  138. package/lib/stories/storybookWrappers/index.d.ts +0 -2
  139. package/lib/stories/storybookWrappers/index.js +0 -18
  140. package/lib/stories/storybookWrappers/index.js.map +0 -1
  141. package/lib/stories/testUtils.d.ts +0 -23
  142. package/lib/stories/testUtils.js +0 -249
  143. package/lib/stories/testUtils.js.map +0 -1
  144. package/lib/theme/Theme.d.ts +0 -44
  145. package/lib/theme/Theme.js +0 -45
  146. package/lib/theme/Theme.js.map +0 -1
  147. package/lib/theme/customGlobalStyles.d.ts +0 -2
  148. package/lib/theme/customGlobalStyles.js +0 -61
  149. package/lib/theme/customGlobalStyles.js.map +0 -1
  150. package/lib/theme/overrides/Accordion.d.ts +0 -14
  151. package/lib/theme/overrides/Accordion.js +0 -32
  152. package/lib/theme/overrides/Accordion.js.map +0 -1
  153. package/lib/theme/overrides/Autocomplete.d.ts +0 -10
  154. package/lib/theme/overrides/Autocomplete.js +0 -28
  155. package/lib/theme/overrides/Autocomplete.js.map +0 -1
  156. package/lib/theme/overrides/Button.d.ts +0 -33
  157. package/lib/theme/overrides/Button.js +0 -52
  158. package/lib/theme/overrides/Button.js.map +0 -1
  159. package/lib/theme/overrides/Card.d.ts +0 -35
  160. package/lib/theme/overrides/Card.js +0 -49
  161. package/lib/theme/overrides/Card.js.map +0 -1
  162. package/lib/theme/overrides/Input.d.ts +0 -64
  163. package/lib/theme/overrides/Input.js +0 -81
  164. package/lib/theme/overrides/Input.js.map +0 -1
  165. package/lib/theme/overrides/Overrides.d.ts +0 -3
  166. package/lib/theme/overrides/Overrides.js +0 -29
  167. package/lib/theme/overrides/Overrides.js.map +0 -1
  168. package/lib/theme/overrides/Paper.d.ts +0 -12
  169. package/lib/theme/overrides/Paper.js +0 -31
  170. package/lib/theme/overrides/Paper.js.map +0 -1
  171. package/lib/theme/overrides/SpeedDial.d.ts +0 -16
  172. package/lib/theme/overrides/SpeedDial.js +0 -34
  173. package/lib/theme/overrides/SpeedDial.js.map +0 -1
  174. package/lib/theme/overrides/Table.d.ts +0 -12
  175. package/lib/theme/overrides/Table.js +0 -30
  176. package/lib/theme/overrides/Table.js.map +0 -1
  177. package/lib/theme/palette.d.ts +0 -27
  178. package/lib/theme/palette.js +0 -67
  179. package/lib/theme/palette.js.map +0 -1
  180. package/lib/theme/shadows.d.ts +0 -2
  181. package/lib/theme/shadows.js +0 -52
  182. package/lib/theme/shadows.js.map +0 -1
  183. package/lib/utils/answerExpression.d.ts +0 -18
  184. package/lib/utils/answerExpression.js +0 -133
  185. package/lib/utils/answerExpression.js.map +0 -1
  186. package/lib/utils/dayjsExtend.d.ts +0 -1
  187. package/lib/utils/dayjsExtend.js +0 -22
  188. package/lib/utils/dayjsExtend.js.map +0 -1
  189. package/lib/utils/dynamicValueSet.d.ts +0 -5
  190. package/lib/utils/dynamicValueSet.js +0 -96
  191. package/lib/utils/dynamicValueSet.js.map +0 -1
  192. package/lib/utils/fhirpathAsyncUtils/fhirpath-async.d.ts +0 -14
  193. package/lib/utils/fhirpathAsyncUtils/fhirpath-async.js +0 -639
  194. package/lib/utils/fhirpathAsyncUtils/fhirpath-async.js.map +0 -1
  195. package/lib/utils/fhirpathAsyncUtils/outcome-utils.d.ts +0 -3
  196. package/lib/utils/fhirpathAsyncUtils/outcome-utils.js +0 -41
  197. package/lib/utils/fhirpathAsyncUtils/outcome-utils.js.map +0 -1
  198. package/lib/utils/itemControl.d.ts +0 -97
  199. package/lib/utils/itemControl.js +0 -336
  200. package/lib/utils/itemControl.js.map +0 -1
  201. package/lib/utils/itemPath.d.ts +0 -57
  202. package/lib/utils/itemPath.js +0 -75
  203. package/lib/utils/itemPath.js.map +0 -1
  204. package/lib/utils/questionnaireStoreUtils/addAdditionalVariables.d.ts +0 -2
  205. package/lib/utils/questionnaireStoreUtils/addAdditionalVariables.js +0 -43
  206. package/lib/utils/questionnaireStoreUtils/addAdditionalVariables.js.map +0 -1
  207. package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.d.ts +0 -3
  208. package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js +0 -101
  209. package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js.map +0 -1
  210. package/lib/utils/validateQuestionnaire.d.ts +0 -66
  211. package/lib/utils/validateQuestionnaire.js +0 -559
  212. package/lib/utils/validateQuestionnaire.js.map +0 -1
@@ -27,6 +27,7 @@ function useValueSetCodings(qItem) {
27
27
  const patient = useSmartConfigStore.use.patient();
28
28
  const user = useSmartConfigStore.use.user();
29
29
  const encounter = useSmartConfigStore.use.encounter();
30
+ const resolvedFhirContextReferences = useSmartConfigStore.use.resolvedFhirContextReferences();
30
31
  const launchContexts = useQuestionnaireStore.use.launchContexts();
31
32
  const processedValueSets = useQuestionnaireStore.use.processedValueSets();
32
33
  const cachedValueSetCodings = useQuestionnaireStore.use.cachedValueSetCodings();
@@ -46,7 +47,7 @@ function useValueSetCodings(qItem) {
46
47
  // get answer expression resource from launch contexts
47
48
  if (launchContexts[variable]) {
48
49
  const resourceType = launchContexts[variable].extension[1].valueCode;
49
- const resource = getResourceFromLaunchContext(resourceType, patient, user, encounter);
50
+ const resource = getResourceFromLaunchContext(resourceType, patient, user, encounter, resolvedFhirContextReferences);
50
51
  if (resource) {
51
52
  contextMap[variable] = resource;
52
53
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useValueSetCodings.js","sourceRoot":"","sources":["../../src/hooks/useValueSetCodings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useValueSetCodings.js","sourceRoot":"","sources":["../../src/hooks/useValueSetCodings.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,10 @@ import type { Breakpoints } from '@mui/material';
25
25
  * @property tabListWidthOrResponsive - Configures the width of the tab list, either as a fixed number or responsive breakpoints.
26
26
  * - Default: `{ tabListBreakpoints: { xs: 12, sm: 3, md: 3, lg: 2.75 }, tabContentBreakpoints: { xs: 12, sm: 9, md: 9, lg: 9.25 } }`
27
27
  *
28
+ * @property tabListStickyTop - The pixel offset from the top of the viewport at which the tab list becomes sticky.
29
+ * Set this to the height of any sticky header in the consuming app so the tab list sticks immediately below it.
30
+ * - Default: `0`
31
+ *
28
32
  * @property textFieldWidth - Defines the default width for text input fields (in pixels).
29
33
  * - Default: `320`
30
34
  *
@@ -74,6 +78,7 @@ export interface RendererConfig {
74
78
  tabListBreakpoints: Partial<Breakpoints['values']>;
75
79
  tabContentBreakpoints: Partial<Breakpoints['values']>;
76
80
  };
81
+ tabListStickyTop?: number;
77
82
  textFieldWidth?: number;
78
83
  inputsFlexGrow?: boolean;
79
84
  reverseBooleanYesNo?: boolean;
@@ -103,6 +108,7 @@ export interface RendererConfigStoreType {
103
108
  tabListBreakpoints: Partial<Breakpoints['values']>;
104
109
  tabContentBreakpoints: Partial<Breakpoints['values']>;
105
110
  };
111
+ tabListStickyTop: number;
106
112
  showTabbedFormAt: UseResponsiveProps;
107
113
  textFieldWidth: number;
108
114
  inputsFlexGrow: boolean;
@@ -134,6 +140,7 @@ export declare const useRendererConfigStore: import("zustand/vanilla").StoreApi<
134
140
  tabListBreakpoints: Partial<Breakpoints["values"]>;
135
141
  tabContentBreakpoints: Partial<Breakpoints["values"]>;
136
142
  };
143
+ tabListStickyTop: () => number;
137
144
  showTabbedFormAt: () => UseResponsiveProps;
138
145
  textFieldWidth: () => number;
139
146
  inputsFlexGrow: () => boolean;
@@ -32,6 +32,7 @@ export const rendererConfigStore = createStore()((set) => ({
32
32
  tabListBreakpoints: { xs: 12, sm: 3, md: 3, lg: 2.75 },
33
33
  tabContentBreakpoints: { xs: 12, sm: 9, md: 9, lg: 9.25 }
34
34
  },
35
+ tabListStickyTop: 0,
35
36
  showTabbedFormAt: { query: 'up', start: 'md' },
36
37
  textFieldWidth: 320,
37
38
  inputsFlexGrow: false,
@@ -49,6 +50,7 @@ export const rendererConfigStore = createStore()((set) => ({
49
50
  requiredIndicatorPosition: params.requiredIndicatorPosition ?? state.requiredIndicatorPosition,
50
51
  itemResponsive: params.itemResponsive ?? state.itemResponsive,
51
52
  tabListWidthOrResponsive: params.tabListWidthOrResponsive ?? state.tabListWidthOrResponsive,
53
+ tabListStickyTop: params.tabListStickyTop ?? state.tabListStickyTop,
52
54
  showTabbedFormAt: params.showTabbedFormAt ?? state.showTabbedFormAt,
53
55
  textFieldWidth: params.textFieldWidth ?? state.textFieldWidth,
54
56
  inputsFlexGrow: params.inputsFlexGrow ?? state.inputsFlexGrow,
@@ -1 +1 @@
1
- {"version":3,"file":"rendererConfigStore.js","sourceRoot":"","sources":["../../src/stores/rendererConfigStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AA8H7C;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,EAA2B,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAClF,mBAAmB,EAAE,UAAU;IAC/B,yBAAyB,EAAE,OAAO;IAClC,cAAc,EAAE;QACd,gBAAgB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE;QACnC,gBAAgB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE;QACnC,eAAe,EAAE,EAAE;QACnB,YAAY,EAAE,CAAC;KAChB;IACD,wBAAwB,EAAE;QACxB,kBAAkB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE;QACtD,qBAAqB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE;KAC1D;IACD,gBAAgB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;IAC9C,cAAc,EAAE,GAAG;IACnB,cAAc,EAAE,KAAK;IACrB,mBAAmB,EAAE,KAAK;IAC1B,eAAe,EAAE,KAAK;IACtB,2BAA2B,EAAE,KAAK;IAClC,oBAAoB,EAAE,KAAK;IAC3B,mBAAmB,EAAE,KAAK;IAC1B,kBAAkB,EAAE,KAAK;IACzB,iBAAiB,EAAE,KAAK;IACxB,8BAA8B,EAAE,KAAK;IACrC,iBAAiB,EAAE,CAAC,MAAsB,EAAE,EAAE;QAC5C,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACd,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,IAAI,KAAK,CAAC,mBAAmB;YAC5E,yBAAyB,EACvB,MAAM,CAAC,yBAAyB,IAAI,KAAK,CAAC,yBAAyB;YACrE,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc;YAC7D,wBAAwB,EAAE,MAAM,CAAC,wBAAwB,IAAI,KAAK,CAAC,wBAAwB;YAC3F,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,IAAI,KAAK,CAAC,gBAAgB;YACnE,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc;YAC7D,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc;YAC7D,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,IAAI,KAAK,CAAC,mBAAmB;YAC5E,eAAe,EAAE,MAAM,CAAC,eAAe,IAAI,KAAK,CAAC,eAAe;YAChE,2BAA2B,EACzB,MAAM,CAAC,2BAA2B,IAAI,KAAK,CAAC,2BAA2B;YACzE,oBAAoB,EAAE,MAAM,CAAC,oBAAoB,IAAI,KAAK,CAAC,oBAAoB;YAC/E,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,IAAI,KAAK,CAAC,mBAAmB;YAC5E,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,IAAI,KAAK,CAAC,kBAAkB;YACzE,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,IAAI,KAAK,CAAC,iBAAiB;YACtE,8BAA8B,EAC5B,MAAM,CAAC,8BAA8B,IAAI,KAAK,CAAC,8BAA8B;SAChF,CAAC,CAAC,CAAC;IACN,CAAC;CACF,CAAC,CAAC,CAAC;AAEJ,MAAM,CAAC,MAAM,sBAAsB,GAAG,eAAe,CAAC,mBAAmB,CAAC,CAAC"}
1
+ {"version":3,"file":"rendererConfigStore.js","sourceRoot":"","sources":["../../src/stores/rendererConfigStore.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { Encounter, Patient, Practitioner } from 'fhir/r4';
1
+ import type { Encounter, FhirResource, Patient, Practitioner } from 'fhir/r4';
2
2
  import type Client from 'fhirclient/lib/Client';
3
3
  import type { FhirContext } from '@aehrc/sdc-populate';
4
4
  /**
@@ -11,11 +11,13 @@ import type { FhirContext } from '@aehrc/sdc-populate';
11
11
  * @property user - The user resource in context
12
12
  * @property encounter - The encounter resource in context
13
13
  * @property fhirContext - fhirContext array from SMART App Launch
14
+ * @property resolvedFhirContextReferences - resolved references from fhirContext, keyed by resource type e.g. `{ "PractitionerRole": <PractitionerRole> }`
14
15
  * @property setClient - Set the FHIRClient object when launching via SMART App Launch
15
16
  * @property setPatient - Set the patient resource in context
16
17
  * @property setUser - Set the user resource in context
17
18
  * @property setEncounter - Set the encounter resource in context
18
19
  * @property setFhirContext - Set the fhirContext array from SMART App Launch
20
+ * @property setResolvedFhirContextReferences - Set the resolvedFhirContextReferences object
19
21
  *
20
22
  * @author Sean Fong
21
23
  */
@@ -25,11 +27,13 @@ export interface SmartConfigStoreType {
25
27
  user: Practitioner | null;
26
28
  encounter: Encounter | null;
27
29
  fhirContext: FhirContext[] | null;
30
+ resolvedFhirContextReferences: Record<string, FhirResource> | null;
28
31
  setClient: (client: Client) => void;
29
32
  setPatient: (patient: Patient) => void;
30
33
  setUser: (user: Practitioner) => void;
31
34
  setEncounter: (encounter: Encounter) => void;
32
35
  setFhirContext: (fhirContext: FhirContext[]) => void;
36
+ setResolvedFhirContextReferences: (resolvedFhirContextReferences: Record<string, FhirResource>) => void;
33
37
  }
34
38
  /**
35
39
  * Smart Config state management store. This is only used for answerExpressions.
@@ -60,10 +64,12 @@ export declare const useSmartConfigStore: import("zustand/vanilla").StoreApi<Sma
60
64
  user: () => Practitioner | null;
61
65
  encounter: () => Encounter | null;
62
66
  fhirContext: () => FhirContext[] | null;
67
+ resolvedFhirContextReferences: () => Record<string, FhirResource> | null;
63
68
  setClient: () => (client: Client) => void;
64
69
  setPatient: () => (patient: Patient) => void;
65
70
  setUser: () => (user: Practitioner) => void;
66
71
  setEncounter: () => (encounter: Encounter) => void;
67
72
  setFhirContext: () => (fhirContext: FhirContext[]) => void;
73
+ setResolvedFhirContextReferences: () => (resolvedFhirContextReferences: Record<string, FhirResource>) => void;
68
74
  };
69
75
  };
@@ -32,11 +32,13 @@ export const smartConfigStore = createStore()((set) => ({
32
32
  user: null,
33
33
  encounter: null,
34
34
  fhirContext: null,
35
+ resolvedFhirContextReferences: null,
35
36
  setClient: (client) => set(() => ({ client: client })),
36
37
  setPatient: (patient) => set(() => ({ patient: patient })),
37
38
  setUser: (user) => set(() => ({ user: user })),
38
39
  setEncounter: (encounter) => set(() => ({ encounter: encounter })),
39
- setFhirContext: (fhirContext) => set(() => ({ fhirContext: fhirContext }))
40
+ setFhirContext: (fhirContext) => set(() => ({ fhirContext: fhirContext })),
41
+ setResolvedFhirContextReferences: (resolvedFhirContextReferences) => set(() => ({ resolvedFhirContextReferences }))
40
42
  }));
41
43
  /**
42
44
  * Smart Config state management store. This is only used for answerExpressions.
@@ -1 +1 @@
1
- {"version":3,"file":"smartConfigStore.js","sourceRoot":"","sources":["../../src/stores/smartConfigStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAkC7C;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,EAAwB,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC5E,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,IAAI;IACb,IAAI,EAAE,IAAI;IACV,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,IAAI;IACjB,SAAS,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9D,UAAU,EAAE,CAAC,OAAgB,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IACnE,OAAO,EAAE,CAAC,IAAkB,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,YAAY,EAAE,CAAC,SAAoB,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;IAC7E,cAAc,EAAE,CAAC,WAA0B,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;CAC1F,CAAC,CAAC,CAAC;AAEJ;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAAC"}
1
+ {"version":3,"file":"smartConfigStore.js","sourceRoot":"","sources":["../../src/stores/smartConfigStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAwC7C;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,EAAwB,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC5E,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,IAAI;IACb,IAAI,EAAE,IAAI;IACV,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,IAAI;IACjB,6BAA6B,EAAE,IAAI;IACnC,SAAS,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9D,UAAU,EAAE,CAAC,OAAgB,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IACnE,OAAO,EAAE,CAAC,IAAkB,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,YAAY,EAAE,CAAC,SAAoB,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;IAC7E,cAAc,EAAE,CAAC,WAA0B,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;IACzF,gCAAgC,EAAE,CAAC,6BAA2D,EAAE,EAAE,CAChG,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,6BAA6B,EAAE,CAAC,CAAC;CACjD,CAAC,CAAC,CAAC;AAEJ;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAAC"}
@@ -17,20 +17,8 @@
17
17
  export function isLaunchContext(extension) {
18
18
  const hasLaunchContextName = extension.url ===
19
19
  'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-launchContext' &&
20
- !!extension.extension?.find((ext) => ext.url === 'name' &&
21
- (ext.valueId ||
22
- (ext.valueCoding &&
23
- (ext.valueCoding.code === 'patient' ||
24
- ext.valueCoding.code === 'encounter' ||
25
- ext.valueCoding.code === 'location' ||
26
- ext.valueCoding.code === 'user' ||
27
- ext.valueCoding.code === 'study' ||
28
- ext.valueCoding.code === 'sourceQueries'))));
29
- const hasLaunchContextType = !!extension.extension?.find((ext) => ext.url === 'type' &&
30
- ext.valueCode &&
31
- (ext.valueCode === 'Patient' ||
32
- ext.valueCode === 'Practitioner' ||
33
- ext.valueCode === 'Encounter'));
20
+ !!extension.extension?.find((ext) => ext.url === 'name' && (ext.valueId || (ext.valueCoding && ext.valueCoding.code)));
21
+ const hasLaunchContextType = !!extension.extension?.find((ext) => ext.url === 'type' && ext.valueCode);
34
22
  return (extension.url ===
35
23
  'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-launchContext' &&
36
24
  hasLaunchContextName &&
@@ -1 +1 @@
1
- {"version":3,"file":"populateContexts.js","sourceRoot":"","sources":["../../src/utils/populateContexts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,MAAM,UAAU,eAAe,CAAC,SAAoB;IAClD,MAAM,oBAAoB,GACxB,SAAS,CAAC,GAAG;QACX,gFAAgF;QAClF,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CACzB,CAAC,GAAG,EAAE,EAAE,CACN,GAAG,CAAC,GAAG,KAAK,MAAM;YAClB,CAAC,GAAG,CAAC,OAAO;gBACV,CAAC,GAAG,CAAC,WAAW;oBACd,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,KAAK,SAAS;wBACjC,GAAG,CAAC,WAAW,CAAC,IAAI,KAAK,WAAW;wBACpC,GAAG,CAAC,WAAW,CAAC,IAAI,KAAK,UAAU;wBACnC,GAAG,CAAC,WAAW,CAAC,IAAI,KAAK,MAAM;wBAC/B,GAAG,CAAC,WAAW,CAAC,IAAI,KAAK,OAAO;wBAChC,GAAG,CAAC,WAAW,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC,CAAC,CACpD,CAAC;IAEJ,MAAM,oBAAoB,GAAG,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CACtD,CAAC,GAAG,EAAE,EAAE,CACN,GAAG,CAAC,GAAG,KAAK,MAAM;QAClB,GAAG,CAAC,SAAS;QACb,CAAC,GAAG,CAAC,SAAS,KAAK,SAAS;YAC1B,GAAG,CAAC,SAAS,KAAK,cAAc;YAChC,GAAG,CAAC,SAAS,KAAK,WAAW,CAAC,CACnC,CAAC;IAEF,OAAO,CACL,SAAS,CAAC,GAAG;QACX,gFAAgF;QAClF,oBAAoB;QACpB,oBAAoB,CACrB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"populateContexts.js","sourceRoot":"","sources":["../../src/utils/populateContexts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,MAAM,UAAU,eAAe,CAAC,SAAoB;IAClD,MAAM,oBAAoB,GACxB,SAAS,CAAC,GAAG;QACX,gFAAgF;QAClF,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CACzB,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAC1F,CAAC;IAEJ,MAAM,oBAAoB,GAAG,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CACtD,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,MAAM,IAAI,GAAG,CAAC,SAAS,CAC7C,CAAC;IAEF,OAAO,CACL,SAAS,CAAC,GAAG;QACX,gFAAgF;QAClF,oBAAoB;QACpB,oBAAoB,CACrB,CAAC;AACJ,CAAC"}
@@ -19,7 +19,7 @@ export declare function getValueSetCodings(valueSet: ValueSet): Coding[];
19
19
  */
20
20
  export declare function evaluateAnswerExpressionValueSet(answerExpression: Expression, itemLevelVariables: Expression[], preprocessedCodings: Record<string, Coding[]>): Coding[];
21
21
  export declare function createValueSetToXFhirQueryVariableNameMap(variables: Record<string, VariableXFhirQuery>): Record<string, string>;
22
- export declare function getResourceFromLaunchContext(resourceType: FhirResourceString, patient: Patient | null, user: Practitioner | null, encounter: Encounter | null): FhirResource | null;
22
+ export declare function getResourceFromLaunchContext(resourceType: FhirResourceString, patient: Patient | null, user: Practitioner | null, encounter: Encounter | null, resolvedFhirContextReferences: Record<string, FhirResource> | null): FhirResource | null;
23
23
  /**
24
24
  * Retrieves the codings for a given answer value set URL.
25
25
  *
@@ -131,7 +131,7 @@ export function createValueSetToXFhirQueryVariableNameMap(variables) {
131
131
  }
132
132
  return valueSetToNameMap;
133
133
  }
134
- export function getResourceFromLaunchContext(resourceType, patient, user, encounter) {
134
+ export function getResourceFromLaunchContext(resourceType, patient, user, encounter, resolvedFhirContextReferences) {
135
135
  switch (resourceType) {
136
136
  case 'Patient':
137
137
  return patient;
@@ -140,7 +140,7 @@ export function getResourceFromLaunchContext(resourceType, patient, user, encoun
140
140
  case 'Encounter':
141
141
  return encounter;
142
142
  }
143
- return null;
143
+ return resolvedFhirContextReferences?.[resourceType] ?? null;
144
144
  }
145
145
  /**
146
146
  * Retrieves the codings for a given answer value set URL.
@@ -1 +1 @@
1
- {"version":3,"file":"valueSet.js","sourceRoot":"","sources":["../../src/utils/valueSet.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"valueSet.js","sourceRoot":"","sources":["../../src/utils/valueSet.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAaH,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAQpC,OAAO,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AAEvD,MAAM,yBAAyB,GAC7B,mGAAmG,CAAC;AAEtG,MAAM,6BAA6B,GAAG,UAAU,CAAC;AAEjD,4EAA4E;AAC5E,MAAM,UAAU,uBAAuB,CAAC,KAAwB;IAC9D,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,EAAE,IAAI,CACvC,CAAC,SAAoB,EAAE,EAAE,CACvB,SAAS,CAAC,GAAG,KAAK,4DAA4D,CACjF,CAAC;IACF,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,WAAW,CAAC,QAAQ,CAAC;IAC9B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAW,EAAE,oBAA4B;IAC1E,IAAI,WAAW,GAAG,GAAG,CAAC;IAEtB,IAAI,GAAG,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC1C,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QACpD,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/B,oBAAoB,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YACnC,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAEpD,OAAO,MAAM,CAAC,EAAE,SAAS,EAAE,oBAAoB,EAAE,CAAC,CAAC,OAAO,CAAC;QACzD,GAAG,EAAE,uBAAuB,GAAG,WAAW;KAC3C,CAAC,CAAC;AACL,CAAC;AAED,SAAS,2BAA2B,CAAC,QAAa;IAChD,OAAO,CACL,QAAQ;QACR,QAAQ,CAAC,YAAY,KAAK,YAAY;QACtC,QAAQ,CAAC,SAAS;QAClB,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;QACtD,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,SAAS;QAChE,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;QACxD,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,QAAQ;QACjE,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC;QACzD,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,WAAW,CACtE,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,GAAW,EACX,MAAc,EACd,IAAY,EACZ,oBAA4B;IAE5B,MAAM,oBAAoB,GAAG,MAAM,MAAM,CAAC,EAAE,SAAS,EAAE,oBAAoB,EAAE,CAAC,CAAC,OAAO,CAAC;QACrF,GAAG,EAAE,+BAA+B,GAAG,WAAW,MAAM,SAAS,IAAI,EAAE;KACxE,CAAC,CAAC;IAEH,IAAI,oBAAoB,IAAI,2BAA2B,CAAC,oBAAoB,CAAC,EAAE,CAAC;QAC9E,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,OAAqB,EAAE,SAAiB;IACzE,MAAM,cAAc,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;QAC/C,UAAU,CAAC,GAAG,EAAE;YACd,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,SAAS,eAAe,CAAC,CAAC,CAAC;QACzE,CAAC,EAAE,SAAS,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,kFAAkF;IAClF,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,gBAAiD;IAEjD,MAAM,mBAAmB,GAAoC,EAAE,CAAC;IAEhE,MAAM,mBAAmB,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC1D,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAE9D,MAAM,SAAS,GAAG,IAAI,CAAC;IACvB,MAAM,QAAQ,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC,eAAe,EAAE,EAAE,CAC7D,mBAAmB,CAAC,eAAe,CAAC,OAAO,EAAE,SAAS,CAAC,CACxD,CAAC;IAEF,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAE3D,KAAK,MAAM,CAAC,CAAC,EAAE,cAAc,CAAC,IAAI,eAAe,CAAC,OAAO,EAAE,EAAE,CAAC;QAC5D,iDAAiD;QACjD,IAAI,cAAc,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAC1C,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC;YACtC,MAAM,GAAG,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;YACnC,MAAM,eAAe,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAEjD,IAAI,GAAG,IAAI,eAAe,EAAE,CAAC;gBAC3B,eAAe,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBACpC,mBAAmB,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC;YAC7C,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAkB;IACnD,OAAO,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;AAClG,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gCAAgC,CAC9C,gBAA4B,EAC5B,kBAAgC,EAChC,mBAA6C;IAE7C,MAAM,UAAU,GAAG,gBAAgB,CAAC,UAAU,CAAC;IAC/C,IAAI,CAAC,UAAU;QAAE,OAAO,EAAE,CAAC;IAE3B,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,CAAC,YAAY;QAAE,OAAO,EAAE,CAAC;IAE7B,MAAM,eAAe,GAAG,kBAAkB,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;IAC/F,IAAI,CAAC,eAAe;QAAE,OAAO,EAAE,CAAC;IAEhC,MAAM,kBAAkB,GAAG,eAAe,CAAC,UAAU,CAAC;IACtD,IAAI,CAAC,kBAAkB;QAAE,OAAO,EAAE,CAAC;IAEnC,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,kBAAkB,CAAC;QAAE,OAAO,EAAE,CAAC;IAEnE,OAAO,mBAAmB,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,yCAAyC,CACvD,SAA6C;IAE7C,MAAM,iBAAiB,GAA2B,EAAE,CAAC;IACrD,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACzD,MAAM,aAAa,GAAG,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAC;QAC1D,IAAI,aAAa,IAAI,yBAAyB,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;YACnE,iBAAiB,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;QAC1C,CAAC;IACH,CAAC;IACD,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,YAAgC,EAChC,OAAuB,EACvB,IAAyB,EACzB,SAA2B,EAC3B,6BAAkE;IAElE,QAAQ,YAAY,EAAE,CAAC;QACrB,KAAK,SAAS;YACZ,OAAO,OAAO,CAAC;QACjB,KAAK,cAAc;YACjB,OAAO,IAAI,CAAC;QACd,KAAK,WAAW;YACd,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,OAAO,6BAA6B,EAAE,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC;AAC/D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,2BAA2B,CACzC,iBAAqC,EACrC,qBAA+C,EAC/C,kBAAqD;IAErD,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,+DAA+D;IAC/D,IAAI,iBAAiB,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACtC,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACrD,IAAI,qBAAqB,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC7C,OAAO,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED,sDAAsD;IACtD,IAAI,kBAAkB,CAAC,iBAAiB,CAAC,EAAE,oBAAoB,EAAE,CAAC;QAChE,iBAAiB,GAAG,kBAAkB,CAAC,iBAAiB,CAAC,CAAC,oBAAoB,CAAC;IACjF,CAAC;IAED,wDAAwD;IACxD,IAAI,qBAAqB,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC7C,OAAO,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;IAClD,CAAC;IAED,+BAA+B;IAC/B,OAAO,EAAE,CAAC;AACZ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aehrc/smart-forms-renderer",
3
- "version": "1.2.14",
3
+ "version": "1.3.1",
4
4
  "description": "FHIR Structured Data Captured (SDC) rendering engine for Smart Forms",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -28,7 +28,7 @@
28
28
  },
29
29
  "homepage": "https://github.com/aehrc/smart-forms#readme",
30
30
  "dependencies": {
31
- "@aehrc/sdc-populate": "^4.6.2",
31
+ "@aehrc/sdc-populate": "^4.7.0",
32
32
  "@aehrc/sdc-template-extract": "^1.0.15",
33
33
  "@emotion/react": "^11.14.0",
34
34
  "@emotion/styled": "^11.14.1",
@@ -45,7 +45,7 @@
45
45
  "fast-equals": "^5.2.2",
46
46
  "fhir-sdc-helpers": "^0.1.0",
47
47
  "fhirclient": "^2.6.3",
48
- "fhirpath": "3.18.0",
48
+ "fhirpath": "^4.5.0",
49
49
  "html-react-parser": "4.2.10",
50
50
  "js-base64": "^3.7.8",
51
51
  "lodash.debounce": "^4.0.8",
@@ -98,7 +98,7 @@ function ChoiceAutocompleteField(props: ChoiceAutocompleteFieldsProps) {
98
98
  textFieldWidth={textFieldWidth}
99
99
  isTabled={isTabled}
100
100
  size="small"
101
- placeholder={entryFormat || displayPrompt}
101
+ placeholder={valueCoding ? undefined : entryFormat || displayPrompt}
102
102
  slotProps={{
103
103
  input: {
104
104
  ...params.InputProps,
@@ -124,7 +124,7 @@ function ChoiceSelectAnswerOptionFields(props: ChoiceSelectAnswerOptionFieldsPro
124
124
  <StandardTextField
125
125
  textFieldWidth={textFieldWidth}
126
126
  isTabled={isTabled}
127
- placeholder={entryFormat || displayPrompt}
127
+ placeholder={valueSelect ? undefined : entryFormat || displayPrompt}
128
128
  {...params}
129
129
  slotProps={{
130
130
  input: {
@@ -88,7 +88,7 @@ function ChoiceSelectAnswerValueSetFields(props: ChoiceSelectAnswerValueSetField
88
88
  multiline
89
89
  textFieldWidth={textFieldWidth}
90
90
  isTabled={isTabled}
91
- placeholder={entryFormat || displayPrompt}
91
+ placeholder={valueCoding ? undefined : entryFormat || displayPrompt}
92
92
  {...params}
93
93
  slotProps={{
94
94
  input: {
@@ -113,7 +113,12 @@ function GridRow(props: GridRowProps) {
113
113
  <GridAnswerTableCell
114
114
  key={colIndex}
115
115
  calculatedWidth={calculatedColumnWidths[colIndex]?.width}>
116
- <Box display="flex" alignItems="center" justifyContent="center">
116
+ <Box
117
+ display="flex"
118
+ alignItems="center"
119
+ justifyContent="center"
120
+ data-linkid={cellQItem.linkId}
121
+ data-label={cellQItem.text}>
117
122
  <SingleItem
118
123
  qItem={cellQItem}
119
124
  qrItem={cellQrItem ?? null}
@@ -1,7 +1,7 @@
1
1
  import { styled } from '@mui/material/styles';
2
2
  import Accordion from '@mui/material/Accordion';
3
3
 
4
- export const GroupAccordion = styled(Accordion, {
4
+ export const StyledGroupAccordion = styled(Accordion, {
5
5
  shouldForwardProp: (prop) => prop !== 'elevation'
6
6
  })<{ elevation: number }>(({ elevation }) => ({
7
7
  paddingTop: '8px',
@@ -0,0 +1,93 @@
1
+ /*
2
+ * Copyright 2025 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, { useCallback, useState, useRef } from 'react';
19
+ import type { AccordionProps } from '@mui/material/Accordion';
20
+ import { StyledGroupAccordion } from './GroupAccordion.styles';
21
+
22
+ // Matches the MUI Accordion transition timeout used in GroupItemView/RepeatGroupView
23
+ const TRANSITION_DURATION_MS = 300;
24
+
25
+ /**
26
+ * Walk up the DOM to find the nearest element that actually scrolls.
27
+ * The page may not scroll on window — e.g. the smart-forms-app uses a styled
28
+ * `Main` div with `overflow: auto` as the scroll container.
29
+ */
30
+ function findScrollContainer(el: HTMLElement): HTMLElement | null {
31
+ let node: HTMLElement | null = el.parentElement;
32
+ while (node) {
33
+ const { overflow, overflowY } = window.getComputedStyle(node);
34
+ if (
35
+ overflow === 'auto' ||
36
+ overflow === 'scroll' ||
37
+ overflowY === 'auto' ||
38
+ overflowY === 'scroll'
39
+ ) {
40
+ return node;
41
+ }
42
+ node = node.parentElement;
43
+ }
44
+ return null;
45
+ }
46
+
47
+ interface GroupAccordionProps extends Omit<AccordionProps, 'elevation'> {
48
+ elevation: number;
49
+ defaultExpanded?: boolean;
50
+ }
51
+
52
+ /**
53
+ * GroupAccordion component.
54
+ */
55
+ export function GroupAccordion(props: GroupAccordionProps) {
56
+ const { defaultExpanded = false, onChange, children, ...rest } = props;
57
+
58
+ const [expanded, setExpanded] = useState(defaultExpanded);
59
+ const accordionRef = useRef<HTMLDivElement>(null);
60
+
61
+ const handleChange = useCallback(
62
+ (event: React.SyntheticEvent, isExpanded: boolean) => {
63
+ // When the accordion expands, its content is mounted into the DOM (unmountOnExit).
64
+ // The browser's CSS scroll anchoring then adjusts the nearest scrollable ancestor's
65
+ // scrollTop every animation frame to keep anchor elements below the accordion in
66
+ // place — visually making the accordion header appear to jump upward.
67
+ //
68
+ // Fix: temporarily opt the scroll container out of scroll anchoring for the
69
+ // duration of the transition, then restore it.
70
+ const scrollContainer = accordionRef.current
71
+ ? findScrollContainer(accordionRef.current)
72
+ : null;
73
+ if (scrollContainer) {
74
+ scrollContainer.style.overflowAnchor = 'none';
75
+ setTimeout(() => {
76
+ scrollContainer.style.overflowAnchor = '';
77
+ }, TRANSITION_DURATION_MS);
78
+ }
79
+
80
+ setExpanded(isExpanded);
81
+ onChange?.(event, isExpanded);
82
+ },
83
+ [onChange]
84
+ );
85
+
86
+ return (
87
+ <StyledGroupAccordion ref={accordionRef} expanded={expanded} onChange={handleChange} {...rest}>
88
+ {children}
89
+ </StyledGroupAccordion>
90
+ );
91
+ }
92
+
93
+ export default GroupAccordion;
@@ -38,10 +38,10 @@ import AccordionDetails from '@mui/material/AccordionDetails';
38
38
  import Divider from '@mui/material/Divider';
39
39
  import { getGroupCollapsible } from '../../../utils/qItem';
40
40
  import useReadOnly from '../../../hooks/useReadOnly';
41
- import { GroupAccordion } from './GroupAccordion.styles';
42
41
  import PageButtonsWrapper from './PageButtonWrapper';
43
42
  import { useParseXhtml } from '../../../hooks/useParseXhtml';
44
43
  import { getItemTextToDisplay } from '../../../utils/itemTextToDisplay';
44
+ import GroupAccordion from './GroupAccordion';
45
45
 
46
46
  interface GroupItemViewProps
47
47
  extends PropsWithQrItemChangeHandler,
@@ -120,7 +120,7 @@ function OpenChoiceSelectAnswerOptionField(props: OpenChoiceSelectAnswerOptionFi
120
120
  multiline
121
121
  textFieldWidth={textFieldWidth}
122
122
  isTabled={isTabled}
123
- placeholder={entryFormat || displayPrompt}
123
+ placeholder={valueSelect ? undefined : entryFormat || displayPrompt}
124
124
  {...params}
125
125
  slotProps={{
126
126
  input: {
@@ -33,13 +33,13 @@ import AddItemButton from './AddItemButton';
33
33
  import type { RepeatGroupSingleModel } from '../../../interfaces/repeatGroup.interface';
34
34
  import useReadOnly from '../../../hooks/useReadOnly';
35
35
  import { getGroupCollapsible } from '../../../utils/qItem';
36
- import { GroupAccordion } from '../GroupItem/GroupAccordion.styles';
37
36
  import AccordionSummary from '@mui/material/AccordionSummary';
38
37
  import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
39
38
  import AccordionDetails from '@mui/material/AccordionDetails';
40
39
  import GroupHeading from '../GroupItem/GroupHeading';
41
40
  import { getItemTextToDisplay } from '../../../utils/itemTextToDisplay';
42
41
  import { isGroupAddItemButtonHidden } from '../../../utils/extensions';
42
+ import GroupAccordion from '../GroupItem/GroupAccordion';
43
43
 
44
44
  interface RepeatGroupViewProps
45
45
  extends PropsWithParentIsReadOnlyAttribute,
@@ -36,7 +36,6 @@ import type { GroupTableRowModel } from '../../../interfaces/groupTable.interfac
36
36
  import GroupTableBody from './GroupTableBody';
37
37
  import { useQuestionnaireStore, useRendererConfigStore } from '../../../stores';
38
38
  import { getGroupCollapsible } from '../../../utils/qItem';
39
- import { GroupAccordion } from '../GroupItem/GroupAccordion.styles';
40
39
  import AccordionSummary from '@mui/material/AccordionSummary';
41
40
  import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
42
41
  import AccordionDetails from '@mui/material/AccordionDetails';
@@ -45,6 +44,7 @@ import { StandardCheckbox } from '../../Checkbox.styles';
45
44
  import { Box } from '@mui/material';
46
45
  import { getItemTextToDisplay } from '../../../utils/itemTextToDisplay';
47
46
  import { isGroupAddItemButtonHidden } from '../../../utils/extensions';
47
+ import GroupAccordion from '../GroupItem/GroupAccordion';
48
48
 
49
49
  interface GroupTableViewProps
50
50
  extends PropsWithIsRepeatedAttribute,
@@ -56,10 +56,11 @@ const FormBodySingleCollapsible = memo(function FormBodySingleCollapsible(
56
56
  }}
57
57
  data-linkid={qItem.linkId}
58
58
  data-label={qItem.text}
59
+ data-test="renderer-accordion"
59
60
  onChange={() => onToggleExpand(index)}>
60
61
  <AccordionSummary expandIcon={<ExpandMoreIcon />}>
61
62
  <Box display="flex" alignItems="center" justifyContent="space-between" width="100%" mr={3}>
62
- <Typography>{collapsibleLabel}</Typography>
63
+ <Typography component="h2">{collapsibleLabel}</Typography>
63
64
  <Box display="flex" columnGap={0.5}>
64
65
  {contextDisplayItems.map((item) => {
65
66
  return <ContextDisplayItem key={item.linkId} displayItem={item} />;
@@ -15,7 +15,7 @@
15
15
  * limitations under the License.
16
16
  */
17
17
 
18
- import React, { useMemo } from 'react';
18
+ import React, { useEffect, useMemo, useRef, useState } from 'react';
19
19
  import { Grid } from '@mui/material';
20
20
  import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
21
21
  import TabContext from '@mui/lab/TabContext';
@@ -45,6 +45,45 @@ function FormBodyTabbed(props: FormBodyTabbedProps) {
45
45
  const currentTab = useQuestionnaireStore.use.currentTabIndex();
46
46
 
47
47
  const tabListWidthOrResponsive = useRendererConfigStore.use.tabListWidthOrResponsive();
48
+ const tabListStickyTop = useRendererConfigStore.use.tabListStickyTop() ?? 0;
49
+
50
+ const tabListGridRef = useRef<HTMLDivElement>(null);
51
+ const [tabListMaxHeight, setTabListMaxHeight] = useState<string | undefined>();
52
+
53
+ useEffect(() => {
54
+ const el = tabListGridRef.current;
55
+ if (!el) return;
56
+
57
+ // Walk up the DOM to find the nearest scrollable ancestor (the element that
58
+ // position:sticky sticks relative to). Measure available height directly from
59
+ // the DOM rather than using hardcoded offsets, so it works regardless of what
60
+ // containers the renderer is embedded in.
61
+ const getScrollContainer = (element: HTMLElement): HTMLElement | null => {
62
+ let parent = element.parentElement;
63
+ while (parent && parent !== document.documentElement) {
64
+ const { overflow, overflowY } = getComputedStyle(parent);
65
+ if (/auto|scroll/.test(overflow) || /auto|scroll/.test(overflowY)) return parent;
66
+ parent = parent.parentElement;
67
+ }
68
+ return null;
69
+ };
70
+
71
+ const scrollContainer = getScrollContainer(el);
72
+
73
+ const update = () => {
74
+ const containerBottom = scrollContainer
75
+ ? scrollContainer.getBoundingClientRect().bottom
76
+ : window.innerHeight;
77
+ const elTop = el.getBoundingClientRect().top;
78
+ setTabListMaxHeight(`${Math.max(containerBottom - elTop, 0) - 16}px`);
79
+ };
80
+
81
+ update();
82
+ window.addEventListener('resize', update, { passive: true });
83
+ return () => {
84
+ window.removeEventListener('resize', update);
85
+ };
86
+ }, []);
48
87
 
49
88
  const indexMap: Record<string, number> = useMemo(
50
89
  () => mapQItemsIndex(topLevelQItem),
@@ -69,10 +108,28 @@ function FormBodyTabbed(props: FormBodyTabbedProps) {
69
108
 
70
109
  // If tabListWidthOrBreakpoints is a number, it is a fixed width of the tab list - set a fixed width and prevent shrinking
71
110
  // If tabListWidthOrBreakpoints is an object, it is a MUI Breakpoints object
111
+ // position: sticky + alignSelf: flex-start keeps the tab list visible as the user scrolls the form body.
112
+ // tabListStickyTop should match the height of any sticky header in the consuming app so the tab list
113
+ // sticks immediately below it rather than sliding behind it.
72
114
  const tabListWrapperProps: GridProps =
73
115
  typeof tabListWidthOrResponsive === 'number'
74
- ? { sx: { width: tabListWidthOrResponsive, flexShrink: 0 } }
75
- : { size: { ...tabListWidthOrResponsive.tabListBreakpoints } };
116
+ ? {
117
+ sx: {
118
+ width: tabListWidthOrResponsive,
119
+ flexShrink: 0,
120
+ position: 'sticky',
121
+ top: tabListStickyTop,
122
+ alignSelf: 'flex-start'
123
+ }
124
+ }
125
+ : {
126
+ size: { ...tabListWidthOrResponsive.tabListBreakpoints },
127
+ sx: {
128
+ position: 'sticky',
129
+ top: tabListStickyTop,
130
+ alignSelf: 'flex-start'
131
+ }
132
+ };
76
133
 
77
134
  const qItemTabPanelProps: GridProps =
78
135
  typeof tabListWidthOrResponsive === 'number'
@@ -82,8 +139,13 @@ function FormBodyTabbed(props: FormBodyTabbedProps) {
82
139
  return (
83
140
  <Grid container spacing={1.5} sx={{ flexWrap: 'nowrap' }}>
84
141
  <TabContext value={currentTab.toString()}>
85
- <Grid {...tabListWrapperProps}>
86
- <FormBodyTabListWrapper topLevelItems={qItems} currentTabIndex={currentTab} tabs={tabs} />
142
+ <Grid ref={tabListGridRef} {...tabListWrapperProps}>
143
+ <FormBodyTabListWrapper
144
+ topLevelItems={qItems}
145
+ currentTabIndex={currentTab}
146
+ tabs={tabs}
147
+ maxHeight={tabListMaxHeight}
148
+ />
87
149
  </Grid>
88
150
 
89
151
  <Grid {...qItemTabPanelProps}>