@aehrc/smart-forms-renderer 1.0.0-alpha.99 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (930) hide show
  1. package/README.md +4 -1
  2. package/lib/api/callback.js +6 -15
  3. package/lib/api/callback.js.map +1 -1
  4. package/lib/api/smartClient.js +6 -21
  5. package/lib/api/smartClient.js.map +1 -1
  6. package/lib/components/Checkbox.styles.js +21 -19
  7. package/lib/components/Checkbox.styles.js.map +1 -1
  8. package/lib/components/ExpressionUpdateFadingGlow.styles.d.ts +2 -2
  9. package/lib/components/ExpressionUpdateFadingGlow.styles.js +12 -9
  10. package/lib/components/ExpressionUpdateFadingGlow.styles.js.map +1 -1
  11. package/lib/components/FormComponents/AttachmentItem/AttachmentField.d.ts +2 -2
  12. package/lib/components/FormComponents/AttachmentItem/AttachmentField.js +3 -3
  13. package/lib/components/FormComponents/AttachmentItem/AttachmentField.js.map +1 -1
  14. package/lib/components/FormComponents/AttachmentItem/AttachmentFieldWrapper.d.ts +2 -2
  15. package/lib/components/FormComponents/AttachmentItem/AttachmentFieldWrapper.js +1 -1
  16. package/lib/components/FormComponents/AttachmentItem/AttachmentFieldWrapper.js.map +1 -1
  17. package/lib/components/FormComponents/AttachmentItem/AttachmentFileCollector.d.ts +2 -2
  18. package/lib/components/FormComponents/AttachmentItem/AttachmentFileCollector.js +1 -2
  19. package/lib/components/FormComponents/AttachmentItem/AttachmentFileCollector.js.map +1 -1
  20. package/lib/components/FormComponents/AttachmentItem/AttachmentFileDropBox.d.ts +2 -2
  21. package/lib/components/FormComponents/AttachmentItem/AttachmentFileDropBox.js +4 -5
  22. package/lib/components/FormComponents/AttachmentItem/AttachmentFileDropBox.js.map +1 -1
  23. package/lib/components/FormComponents/AttachmentItem/AttachmentItem.js +27 -37
  24. package/lib/components/FormComponents/AttachmentItem/AttachmentItem.js.map +1 -1
  25. package/lib/components/FormComponents/AttachmentItem/AttachmentUrlField.d.ts +2 -2
  26. package/lib/components/FormComponents/AttachmentItem/AttachmentUrlField.js +3 -3
  27. package/lib/components/FormComponents/AttachmentItem/AttachmentUrlField.js.map +1 -1
  28. package/lib/components/FormComponents/BooleanItem/BooleanField.js +6 -7
  29. package/lib/components/FormComponents/BooleanItem/BooleanField.js.map +1 -1
  30. package/lib/components/FormComponents/BooleanItem/BooleanItem.js +33 -24
  31. package/lib/components/FormComponents/BooleanItem/BooleanItem.js.map +1 -1
  32. package/lib/components/FormComponents/ChoiceItems/CheckboxOptionList.js +1 -2
  33. package/lib/components/FormComponents/ChoiceItems/CheckboxOptionList.js.map +1 -1
  34. package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteField.d.ts +2 -2
  35. package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteField.js +12 -7
  36. package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteField.js.map +1 -1
  37. package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.d.ts +2 -7
  38. package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.js +17 -31
  39. package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.js.map +1 -1
  40. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionFields.js.map +1 -1
  41. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.d.ts +2 -7
  42. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.js +29 -17
  43. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.js.map +1 -1
  44. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetFields.js +17 -1
  45. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetFields.js.map +1 -1
  46. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.d.ts +2 -8
  47. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.js +12 -16
  48. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.js.map +1 -1
  49. package/lib/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.d.ts +2 -7
  50. package/lib/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.js +30 -15
  51. package/lib/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.js.map +1 -1
  52. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionFields.js.map +1 -1
  53. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.d.ts +2 -7
  54. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.js +32 -29
  55. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.js.map +1 -1
  56. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionView.d.ts +1 -1
  57. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionView.js +2 -2
  58. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionView.js.map +1 -1
  59. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetFields.js +17 -1
  60. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetFields.js.map +1 -1
  61. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.d.ts +2 -7
  62. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.js +15 -27
  63. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.js.map +1 -1
  64. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioSingle.js +9 -6
  65. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioSingle.js.map +1 -1
  66. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.d.ts +2 -2
  67. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.js +28 -8
  68. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.js.map +1 -1
  69. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.d.ts +2 -7
  70. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.js +14 -28
  71. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.js.map +1 -1
  72. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionView.d.ts +2 -2
  73. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionView.js +4 -20
  74. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionView.js.map +1 -1
  75. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.d.ts +2 -2
  76. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.js +19 -14
  77. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.js.map +1 -1
  78. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.d.ts +2 -7
  79. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.js +16 -32
  80. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.js.map +1 -1
  81. package/lib/components/FormComponents/DateTimeItems/CustomDateItem/CustomDateField.d.ts +2 -3
  82. package/lib/components/FormComponents/DateTimeItems/CustomDateItem/CustomDateField.js +9 -10
  83. package/lib/components/FormComponents/DateTimeItems/CustomDateItem/CustomDateField.js.map +1 -1
  84. package/lib/components/FormComponents/DateTimeItems/CustomDateItem/CustomDateItem.js +17 -38
  85. package/lib/components/FormComponents/DateTimeItems/CustomDateItem/CustomDateItem.js.map +1 -1
  86. package/lib/components/FormComponents/DateTimeItems/CustomDateItem/DatePicker.js +1 -1
  87. package/lib/components/FormComponents/DateTimeItems/CustomDateItem/DatePicker.js.map +1 -1
  88. package/lib/components/FormComponents/DateTimeItems/CustomDateItem/DatePickerButton.js +3 -3
  89. package/lib/components/FormComponents/DateTimeItems/CustomDateItem/DatePickerButton.js.map +1 -1
  90. package/lib/components/FormComponents/DateTimeItems/CustomDateTimeItem/CustomDateTimeItem.js +19 -56
  91. package/lib/components/FormComponents/DateTimeItems/CustomDateTimeItem/CustomDateTimeItem.js.map +1 -1
  92. package/lib/components/FormComponents/DateTimeItems/CustomDateTimeItem/CustomTimeField.d.ts +2 -3
  93. package/lib/components/FormComponents/DateTimeItems/CustomDateTimeItem/CustomTimeField.js +25 -9
  94. package/lib/components/FormComponents/DateTimeItems/CustomDateTimeItem/CustomTimeField.js.map +1 -1
  95. package/lib/components/FormComponents/DateTimeItems/CustomDateTimeItem/DateTimeField.d.ts +2 -5
  96. package/lib/components/FormComponents/DateTimeItems/CustomDateTimeItem/DateTimeField.js +19 -3
  97. package/lib/components/FormComponents/DateTimeItems/CustomDateTimeItem/DateTimeField.js.map +1 -1
  98. package/lib/components/FormComponents/DecimalItem/DecimalField.d.ts +2 -3
  99. package/lib/components/FormComponents/DecimalItem/DecimalField.js +6 -6
  100. package/lib/components/FormComponents/DecimalItem/DecimalField.js.map +1 -1
  101. package/lib/components/FormComponents/DecimalItem/DecimalItem.js +22 -45
  102. package/lib/components/FormComponents/DecimalItem/DecimalItem.js.map +1 -1
  103. package/lib/components/FormComponents/DisplayItem/DisplayItem.js +1 -1
  104. package/lib/components/FormComponents/DisplayItem/DisplayItem.js.map +1 -1
  105. package/lib/components/FormComponents/GridGroup/GridGroup.d.ts +2 -2
  106. package/lib/components/FormComponents/GridGroup/GridGroup.js +29 -20
  107. package/lib/components/FormComponents/GridGroup/GridGroup.js.map +1 -1
  108. package/lib/components/FormComponents/GridGroup/GridRow.d.ts +6 -2
  109. package/lib/components/FormComponents/GridGroup/GridRow.js +7 -9
  110. package/lib/components/FormComponents/GridGroup/GridRow.js.map +1 -1
  111. package/lib/components/FormComponents/GridGroup/GridTable.d.ts +6 -2
  112. package/lib/components/FormComponents/GridGroup/GridTable.js +7 -4
  113. package/lib/components/FormComponents/GridGroup/GridTable.js.map +1 -1
  114. package/lib/components/FormComponents/GroupItem/GroupHeading.js +4 -4
  115. package/lib/components/FormComponents/GroupItem/GroupHeading.js.map +1 -1
  116. package/lib/components/FormComponents/GroupItem/GroupItem.d.ts +2 -2
  117. package/lib/components/FormComponents/GroupItem/GroupItem.js +8 -8
  118. package/lib/components/FormComponents/GroupItem/GroupItem.js.map +1 -1
  119. package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.d.ts +2 -2
  120. package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.js +11 -11
  121. package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.js.map +1 -1
  122. package/lib/components/FormComponents/GroupItem/GroupItemView.d.ts +2 -2
  123. package/lib/components/FormComponents/GroupItem/GroupItemView.js +8 -10
  124. package/lib/components/FormComponents/GroupItem/GroupItemView.js.map +1 -1
  125. package/lib/components/FormComponents/GroupItem/PageButtonWrapper.js +2 -2
  126. package/lib/components/FormComponents/GroupItem/PageButtonWrapper.js.map +1 -1
  127. package/lib/components/FormComponents/GroupItem/TabButtonsWrapper.js +2 -2
  128. package/lib/components/FormComponents/GroupItem/TabButtonsWrapper.js.map +1 -1
  129. package/lib/components/FormComponents/IntegerItem/IntegerField.d.ts +2 -3
  130. package/lib/components/FormComponents/IntegerItem/IntegerField.js +6 -6
  131. package/lib/components/FormComponents/IntegerItem/IntegerField.js.map +1 -1
  132. package/lib/components/FormComponents/IntegerItem/IntegerItem.js +20 -40
  133. package/lib/components/FormComponents/IntegerItem/IntegerItem.js.map +1 -1
  134. package/lib/components/FormComponents/ItemParts/CheckboxFormGroup.d.ts +1 -1
  135. package/lib/components/FormComponents/ItemParts/CheckboxFormGroup.js +10 -11
  136. package/lib/components/FormComponents/ItemParts/CheckboxFormGroup.js.map +1 -1
  137. package/lib/components/FormComponents/ItemParts/CheckboxSingle.js +10 -7
  138. package/lib/components/FormComponents/ItemParts/CheckboxSingle.js.map +1 -1
  139. package/lib/components/FormComponents/ItemParts/CheckboxSingleWithOpenLabel.js +9 -7
  140. package/lib/components/FormComponents/ItemParts/CheckboxSingleWithOpenLabel.js.map +1 -1
  141. package/lib/components/FormComponents/ItemParts/ClearButtonAdornment.js +1 -2
  142. package/lib/components/FormComponents/ItemParts/ClearButtonAdornment.js.map +1 -1
  143. package/lib/components/FormComponents/ItemParts/ClearInputButton.d.ts +1 -1
  144. package/lib/components/FormComponents/ItemParts/ClearInputButton.js +9 -7
  145. package/lib/components/FormComponents/ItemParts/ClearInputButton.js.map +1 -1
  146. package/lib/components/FormComponents/ItemParts/DisplayUnitText.js +2 -2
  147. package/lib/components/FormComponents/ItemParts/DisplayUnitText.js.map +1 -1
  148. package/lib/components/FormComponents/ItemParts/ExpressionUpdateFadingIcon.js +6 -2
  149. package/lib/components/FormComponents/ItemParts/ExpressionUpdateFadingIcon.js.map +1 -1
  150. package/lib/components/FormComponents/ItemParts/ItemFieldGrid.js +3 -3
  151. package/lib/components/FormComponents/ItemParts/ItemFieldGrid.js.map +1 -1
  152. package/lib/components/FormComponents/ItemParts/ItemLabel.js +10 -9
  153. package/lib/components/FormComponents/ItemParts/ItemLabel.js.map +1 -1
  154. package/lib/components/FormComponents/ItemParts/ItemRepopulateButton.js +30 -48
  155. package/lib/components/FormComponents/ItemParts/ItemRepopulateButton.js.map +1 -1
  156. package/lib/components/FormComponents/ItemParts/ItemTextSwitcher.js +6 -5
  157. package/lib/components/FormComponents/ItemParts/ItemTextSwitcher.js.map +1 -1
  158. package/lib/components/FormComponents/ItemParts/OpenLabelField.js +4 -4
  159. package/lib/components/FormComponents/ItemParts/OpenLabelField.js.map +1 -1
  160. package/lib/components/FormComponents/ItemParts/RadioButtonWithOpenLabel.js +1 -1
  161. package/lib/components/FormComponents/ItemParts/RadioButtonWithOpenLabel.js.map +1 -1
  162. package/lib/components/FormComponents/ItemParts/RadioFormGroup.d.ts +1 -1
  163. package/lib/components/FormComponents/ItemParts/RadioFormGroup.js +12 -13
  164. package/lib/components/FormComponents/ItemParts/RadioFormGroup.js.map +1 -1
  165. package/lib/components/FormComponents/ItemParts/RadioOptionList.js +1 -2
  166. package/lib/components/FormComponents/ItemParts/RadioOptionList.js.map +1 -1
  167. package/lib/components/FormComponents/ItemParts/RequiredAsterisk.js +4 -15
  168. package/lib/components/FormComponents/ItemParts/RequiredAsterisk.js.map +1 -1
  169. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.d.ts +2 -2
  170. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.js +21 -16
  171. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.js.map +1 -1
  172. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.d.ts +2 -7
  173. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.js +41 -21
  174. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.js.map +1 -1
  175. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionFields.js +1 -1
  176. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionFields.js.map +1 -1
  177. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.d.ts +2 -7
  178. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.js +18 -21
  179. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.js.map +1 -1
  180. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerValueSetFields.js +18 -2
  181. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerValueSetFields.js.map +1 -1
  182. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerValueSetItem.d.ts +2 -7
  183. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerValueSetItem.js +18 -21
  184. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerValueSetItem.js.map +1 -1
  185. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.d.ts +2 -7
  186. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.js +28 -13
  187. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.js.map +1 -1
  188. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionFields.js.map +1 -1
  189. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.d.ts +2 -7
  190. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.js +26 -20
  191. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.js.map +1 -1
  192. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerValueSetFields.js +18 -2
  193. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerValueSetFields.js.map +1 -1
  194. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerValueSetItem.d.ts +2 -7
  195. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerValueSetItem.js +26 -17
  196. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerValueSetItem.js.map +1 -1
  197. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.d.ts +2 -2
  198. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.js +10 -6
  199. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.js.map +1 -1
  200. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.d.ts +2 -7
  201. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.js +25 -16
  202. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.js.map +1 -1
  203. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.d.ts +2 -2
  204. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.js +10 -6
  205. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.js.map +1 -1
  206. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.d.ts +2 -7
  207. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.js +21 -15
  208. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.js.map +1 -1
  209. package/lib/components/FormComponents/QuantityItem/QuantityComparatorField.d.ts +2 -2
  210. package/lib/components/FormComponents/QuantityItem/QuantityComparatorField.js +5 -5
  211. package/lib/components/FormComponents/QuantityItem/QuantityComparatorField.js.map +1 -1
  212. package/lib/components/FormComponents/QuantityItem/QuantityField.d.ts +2 -3
  213. package/lib/components/FormComponents/QuantityItem/QuantityField.js +6 -6
  214. package/lib/components/FormComponents/QuantityItem/QuantityField.js.map +1 -1
  215. package/lib/components/FormComponents/QuantityItem/QuantityItem.js +31 -89
  216. package/lib/components/FormComponents/QuantityItem/QuantityItem.js.map +1 -1
  217. package/lib/components/FormComponents/QuantityItem/QuantityUnitField.d.ts +2 -2
  218. package/lib/components/FormComponents/QuantityItem/QuantityUnitField.js +4 -4
  219. package/lib/components/FormComponents/QuantityItem/QuantityUnitField.js.map +1 -1
  220. package/lib/components/FormComponents/RepeatGroup/AddItemButton.js +1 -2
  221. package/lib/components/FormComponents/RepeatGroup/AddItemButton.js.map +1 -1
  222. package/lib/components/FormComponents/RepeatGroup/RepeatGroup.d.ts +2 -2
  223. package/lib/components/FormComponents/RepeatGroup/RepeatGroup.js +4 -6
  224. package/lib/components/FormComponents/RepeatGroup/RepeatGroup.js.map +1 -1
  225. package/lib/components/FormComponents/RepeatGroup/RepeatGroupItem.d.ts +2 -2
  226. package/lib/components/FormComponents/RepeatGroup/RepeatGroupItem.js +2 -2
  227. package/lib/components/FormComponents/RepeatGroup/RepeatGroupItem.js.map +1 -1
  228. package/lib/components/FormComponents/RepeatGroup/RepeatGroupView.d.ts +3 -4
  229. package/lib/components/FormComponents/RepeatGroup/RepeatGroupView.js +3 -4
  230. package/lib/components/FormComponents/RepeatGroup/RepeatGroupView.js.map +1 -1
  231. package/lib/components/FormComponents/RepeatItem/AddItemButton.js +1 -1
  232. package/lib/components/FormComponents/RepeatItem/AddItemButton.js.map +1 -1
  233. package/lib/components/FormComponents/RepeatItem/RepeatField.d.ts +2 -2
  234. package/lib/components/FormComponents/RepeatItem/RepeatField.js +2 -3
  235. package/lib/components/FormComponents/RepeatItem/RepeatField.js.map +1 -1
  236. package/lib/components/FormComponents/RepeatItem/RepeatItem.d.ts +2 -2
  237. package/lib/components/FormComponents/RepeatItem/RepeatItem.js +17 -13
  238. package/lib/components/FormComponents/RepeatItem/RepeatItem.js.map +1 -1
  239. package/lib/components/FormComponents/SingleItem/SingleItem.d.ts +2 -2
  240. package/lib/components/FormComponents/SingleItem/SingleItem.js +9 -9
  241. package/lib/components/FormComponents/SingleItem/SingleItem.js.map +1 -1
  242. package/lib/components/FormComponents/SingleItem/SingleItemSwitcher.d.ts +2 -2
  243. package/lib/components/FormComponents/SingleItem/SingleItemSwitcher.js +52 -31
  244. package/lib/components/FormComponents/SingleItem/SingleItemSwitcher.js.map +1 -1
  245. package/lib/components/FormComponents/SingleItem/SingleItemView.d.ts +3 -4
  246. package/lib/components/FormComponents/SingleItem/SingleItemView.js +4 -5
  247. package/lib/components/FormComponents/SingleItem/SingleItemView.js.map +1 -1
  248. package/lib/components/FormComponents/SingleItem/SingleNestedItems.d.ts +2 -2
  249. package/lib/components/FormComponents/SingleItem/SingleNestedItems.js +8 -9
  250. package/lib/components/FormComponents/SingleItem/SingleNestedItems.js.map +1 -1
  251. package/lib/components/FormComponents/SliderItem/Slider.styles.js +23 -21
  252. package/lib/components/FormComponents/SliderItem/Slider.styles.js.map +1 -1
  253. package/lib/components/FormComponents/SliderItem/SliderField.d.ts +2 -2
  254. package/lib/components/FormComponents/SliderItem/SliderField.js +4 -4
  255. package/lib/components/FormComponents/SliderItem/SliderField.js.map +1 -1
  256. package/lib/components/FormComponents/SliderItem/SliderItem.js +10 -8
  257. package/lib/components/FormComponents/SliderItem/SliderItem.js.map +1 -1
  258. package/lib/components/FormComponents/StringItem/StringField.d.ts +2 -3
  259. package/lib/components/FormComponents/StringItem/StringField.js +22 -6
  260. package/lib/components/FormComponents/StringItem/StringField.js.map +1 -1
  261. package/lib/components/FormComponents/StringItem/StringItem.d.ts +2 -7
  262. package/lib/components/FormComponents/StringItem/StringItem.js +19 -55
  263. package/lib/components/FormComponents/StringItem/StringItem.js.map +1 -1
  264. package/lib/components/FormComponents/Tables/GroupTable.d.ts +2 -2
  265. package/lib/components/FormComponents/Tables/GroupTable.js +33 -37
  266. package/lib/components/FormComponents/Tables/GroupTable.js.map +1 -1
  267. package/lib/components/FormComponents/Tables/GroupTableBody.d.ts +7 -4
  268. package/lib/components/FormComponents/Tables/GroupTableBody.js +4 -5
  269. package/lib/components/FormComponents/Tables/GroupTableBody.js.map +1 -1
  270. package/lib/components/FormComponents/Tables/GroupTableRow.d.ts +7 -4
  271. package/lib/components/FormComponents/Tables/GroupTableRow.js +3 -3
  272. package/lib/components/FormComponents/Tables/GroupTableRow.js.map +1 -1
  273. package/lib/components/FormComponents/Tables/GroupTableRowCells.d.ts +6 -2
  274. package/lib/components/FormComponents/Tables/GroupTableRowCells.js +5 -6
  275. package/lib/components/FormComponents/Tables/GroupTableRowCells.js.map +1 -1
  276. package/lib/components/FormComponents/Tables/GroupTableView.d.ts +7 -4
  277. package/lib/components/FormComponents/Tables/GroupTableView.js +8 -9
  278. package/lib/components/FormComponents/Tables/GroupTableView.js.map +1 -1
  279. package/lib/components/FormComponents/Tables/SelectRowButton.js +3 -4
  280. package/lib/components/FormComponents/Tables/SelectRowButton.js.map +1 -1
  281. package/lib/components/FormComponents/Tables/Table.styles.d.ts +2 -2
  282. package/lib/components/FormComponents/Tables/Table.styles.js +25 -20
  283. package/lib/components/FormComponents/Tables/Table.styles.js.map +1 -1
  284. package/lib/components/FormComponents/TextItem/TextField.d.ts +0 -1
  285. package/lib/components/FormComponents/TextItem/TextField.js +4 -4
  286. package/lib/components/FormComponents/TextItem/TextField.js.map +1 -1
  287. package/lib/components/FormComponents/TextItem/TextItem.js +14 -34
  288. package/lib/components/FormComponents/TextItem/TextItem.js.map +1 -1
  289. package/lib/components/FormComponents/Textfield.styles.js +1 -1
  290. package/lib/components/FormComponents/Textfield.styles.js.map +1 -1
  291. package/lib/components/FormComponents/TimeItem/TimeField.d.ts +2 -2
  292. package/lib/components/FormComponents/TimeItem/TimeField.js +3 -2
  293. package/lib/components/FormComponents/TimeItem/TimeField.js.map +1 -1
  294. package/lib/components/FormComponents/TimeItem/TimeItem.js +8 -6
  295. package/lib/components/FormComponents/TimeItem/TimeItem.js.map +1 -1
  296. package/lib/components/FormComponents/UrlItem/UrlField.d.ts +2 -3
  297. package/lib/components/FormComponents/UrlItem/UrlField.js +5 -5
  298. package/lib/components/FormComponents/UrlItem/UrlField.js.map +1 -1
  299. package/lib/components/FormComponents/UrlItem/UrlItem.js +8 -17
  300. package/lib/components/FormComponents/UrlItem/UrlItem.js.map +1 -1
  301. package/lib/components/Radio.styles.js +21 -19
  302. package/lib/components/Radio.styles.js.map +1 -1
  303. package/lib/components/Renderer/BaseRenderer.js +11 -15
  304. package/lib/components/Renderer/BaseRenderer.js.map +1 -1
  305. package/lib/components/Renderer/FormBodyCollapsible.d.ts +2 -2
  306. package/lib/components/Renderer/FormBodyCollapsible.js +5 -6
  307. package/lib/components/Renderer/FormBodyCollapsible.js.map +1 -1
  308. package/lib/components/Renderer/FormBodyPageContainer.d.ts +2 -2
  309. package/lib/components/Renderer/FormBodyPageContainer.js +7 -9
  310. package/lib/components/Renderer/FormBodyPageContainer.js.map +1 -1
  311. package/lib/components/Renderer/FormBodyPaginated.d.ts +2 -2
  312. package/lib/components/Renderer/FormBodyPaginated.js +11 -16
  313. package/lib/components/Renderer/FormBodyPaginated.js.map +1 -1
  314. package/lib/components/Renderer/FormBodySingleCollapsible.js +1 -2
  315. package/lib/components/Renderer/FormBodySingleCollapsible.js.map +1 -1
  316. package/lib/components/Renderer/FormBodySingleCollapsibleWrapper.d.ts +2 -2
  317. package/lib/components/Renderer/FormBodySingleCollapsibleWrapper.js +2 -2
  318. package/lib/components/Renderer/FormBodySingleCollapsibleWrapper.js.map +1 -1
  319. package/lib/components/Renderer/FormBodyTabbed.d.ts +2 -2
  320. package/lib/components/Renderer/FormBodyTabbed.js +13 -15
  321. package/lib/components/Renderer/FormBodyTabbed.js.map +1 -1
  322. package/lib/components/Renderer/FormTopLevelItem.d.ts +2 -2
  323. package/lib/components/Renderer/FormTopLevelItem.js +12 -12
  324. package/lib/components/Renderer/FormTopLevelItem.js.map +1 -1
  325. package/lib/components/Renderer/SmartFormsRenderer.d.ts +4 -2
  326. package/lib/components/Renderer/SmartFormsRenderer.js +4 -2
  327. package/lib/components/Renderer/SmartFormsRenderer.js.map +1 -1
  328. package/lib/components/Tabs/FormBodySingleTab.d.ts +1 -0
  329. package/lib/components/Tabs/FormBodySingleTab.js +5 -2
  330. package/lib/components/Tabs/FormBodySingleTab.js.map +1 -1
  331. package/lib/components/Tabs/FormBodyTabList.js +2 -3
  332. package/lib/components/Tabs/FormBodyTabList.js.map +1 -1
  333. package/lib/hooks/index.d.ts +0 -2
  334. package/lib/hooks/index.js +1 -3
  335. package/lib/hooks/index.js.map +1 -1
  336. package/lib/hooks/useAnswerOptionsToggleExpressions.js +6 -8
  337. package/lib/hooks/useAnswerOptionsToggleExpressions.js.map +1 -1
  338. package/lib/hooks/useAttachmentUrlValidation.js +1 -1
  339. package/lib/hooks/useAttachmentUrlValidation.js.map +1 -1
  340. package/lib/hooks/useBuildForm.d.ts +13 -15
  341. package/lib/hooks/useBuildForm.js +26 -22
  342. package/lib/hooks/useBuildForm.js.map +1 -1
  343. package/lib/hooks/useCalculatedExpressionUpdated.d.ts +7 -0
  344. package/lib/hooks/useCalculatedExpressionUpdated.js +31 -0
  345. package/lib/hooks/useCalculatedExpressionUpdated.js.map +1 -0
  346. package/lib/hooks/useCodingCalculatedExpression.d.ts +0 -13
  347. package/lib/hooks/useCodingCalculatedExpression.js +1 -74
  348. package/lib/hooks/useCodingCalculatedExpression.js.map +1 -1
  349. package/lib/hooks/useDateCalculatedExpression.d.ts +0 -12
  350. package/lib/hooks/useDateCalculatedExpression.js +1 -58
  351. package/lib/hooks/useDateCalculatedExpression.js.map +1 -1
  352. package/lib/hooks/useDateTimeCalculatedExpression.d.ts +0 -12
  353. package/lib/hooks/useDateTimeCalculatedExpression.js +1 -58
  354. package/lib/hooks/useDateTimeCalculatedExpression.js.map +1 -1
  355. package/lib/hooks/useDisplayCqfAndCalculatedExpression.d.ts +13 -1
  356. package/lib/hooks/useDisplayCqfAndCalculatedExpression.js +14 -4
  357. package/lib/hooks/useDisplayCqfAndCalculatedExpression.js.map +1 -1
  358. package/lib/hooks/useDynamicValueSetEffect.js +6 -16
  359. package/lib/hooks/useDynamicValueSetEffect.js.map +1 -1
  360. package/lib/hooks/useHidden.js +2 -2
  361. package/lib/hooks/useHidden.js.map +1 -1
  362. package/lib/hooks/useInitialiseForm.d.ts +3 -2
  363. package/lib/hooks/useInitialiseForm.js +10 -3
  364. package/lib/hooks/useInitialiseForm.js.map +1 -1
  365. package/lib/hooks/useInitialiseRepeatAnswers.js +5 -5
  366. package/lib/hooks/useInitialiseRepeatAnswers.js.map +1 -1
  367. package/lib/hooks/useParseXhtml.js +2 -2
  368. package/lib/hooks/useParseXhtml.js.map +1 -1
  369. package/lib/hooks/useReadOnly.js +2 -2
  370. package/lib/hooks/useReadOnly.js.map +1 -1
  371. package/lib/hooks/useRenderingExtensions.js +11 -14
  372. package/lib/hooks/useRenderingExtensions.js.map +1 -1
  373. package/lib/hooks/useResizeColumns.d.ts +8 -0
  374. package/lib/hooks/useResizeColumns.js +46 -0
  375. package/lib/hooks/useResizeColumns.js.map +1 -0
  376. package/lib/hooks/useSliderExtensions.js +5 -6
  377. package/lib/hooks/useSliderExtensions.js.map +1 -1
  378. package/lib/hooks/useTerminologyServerQuery.js +2 -3
  379. package/lib/hooks/useTerminologyServerQuery.js.map +1 -1
  380. package/lib/hooks/useValidationFeedback.js +2 -3
  381. package/lib/hooks/useValidationFeedback.js.map +1 -1
  382. package/lib/hooks/useValueSetCodings.js +6 -39
  383. package/lib/hooks/useValueSetCodings.js.map +1 -1
  384. package/lib/index.d.ts +5 -7
  385. package/lib/index.js +3 -4
  386. package/lib/index.js.map +1 -1
  387. package/lib/interfaces/calculatedExpression.interface.d.ts +1 -1
  388. package/lib/interfaces/overrideComponent.interface.d.ts +3 -4
  389. package/lib/interfaces/renderProps.interface.d.ts +6 -31
  390. package/lib/interfaces/valueSet.interface.d.ts +2 -2
  391. package/lib/stores/formUpdateQueueStore.d.ts +6 -13
  392. package/lib/stores/formUpdateQueueStore.js +9 -24
  393. package/lib/stores/formUpdateQueueStore.js.map +1 -1
  394. package/lib/stores/index.d.ts +3 -3
  395. package/lib/stores/index.js +2 -2
  396. package/lib/stores/index.js.map +1 -1
  397. package/lib/stores/questionnaireResponseStore.d.ts +6 -9
  398. package/lib/stores/questionnaireResponseStore.js +22 -28
  399. package/lib/stores/questionnaireResponseStore.js.map +1 -1
  400. package/lib/stores/questionnaireStore.d.ts +39 -35
  401. package/lib/stores/questionnaireStore.js +136 -146
  402. package/lib/stores/questionnaireStore.js.map +1 -1
  403. package/lib/stores/{rendererStylingStore.d.ts → rendererConfigStore.d.ts} +8 -8
  404. package/lib/stores/rendererConfigStore.js +65 -0
  405. package/lib/stores/rendererConfigStore.js.map +1 -0
  406. package/lib/stores/smartConfigStore.d.ts +3 -3
  407. package/lib/stores/smartConfigStore.js +3 -3
  408. package/lib/stores/terminologyServerStore.d.ts +2 -2
  409. package/lib/stores/terminologyServerStore.js +2 -2
  410. package/lib/stories/storybookWrappers/InitialiseFormWrapperForStorybook.d.ts +1 -1
  411. package/lib/stories/storybookWrappers/InitialiseFormWrapperForStorybook.js +2 -2
  412. package/lib/stories/storybookWrappers/InitialiseFormWrapperForStorybook.js.map +1 -1
  413. package/lib/stories/testUtils.d.ts +23 -0
  414. package/lib/stories/testUtils.js +249 -0
  415. package/lib/stories/testUtils.js.map +1 -0
  416. package/lib/theme/rendererThemeOptions.js +1 -1
  417. package/lib/theme/rendererThemeOptions.js.map +1 -1
  418. package/lib/utils/answerOptionsToggleExpressions.d.ts +1 -1
  419. package/lib/utils/answerOptionsToggleExpressions.js +94 -111
  420. package/lib/utils/answerOptionsToggleExpressions.js.map +1 -1
  421. package/lib/utils/calculatedExpression.d.ts +39 -3
  422. package/lib/utils/calculatedExpression.js +426 -191
  423. package/lib/utils/calculatedExpression.js.map +1 -1
  424. package/lib/utils/choice.js +14 -11
  425. package/lib/utils/choice.js.map +1 -1
  426. package/lib/utils/columnWidth.d.ts +28 -0
  427. package/lib/utils/columnWidth.js +103 -0
  428. package/lib/utils/columnWidth.js.map +1 -0
  429. package/lib/utils/computedUpdates.js +14 -12
  430. package/lib/utils/computedUpdates.js.map +1 -1
  431. package/lib/utils/enableWhen.js +6 -8
  432. package/lib/utils/enableWhen.js.map +1 -1
  433. package/lib/utils/enableWhenExpression.d.ts +1 -1
  434. package/lib/utils/enableWhenExpression.js +143 -163
  435. package/lib/utils/enableWhenExpression.js.map +1 -1
  436. package/lib/utils/extensions.d.ts +9 -0
  437. package/lib/utils/extensions.js +77 -74
  438. package/lib/utils/extensions.js.map +1 -1
  439. package/lib/utils/extractObservation.js +37 -28
  440. package/lib/utils/extractObservation.js.map +1 -1
  441. package/lib/utils/fhirpath.d.ts +27 -21
  442. package/lib/utils/fhirpath.js +191 -171
  443. package/lib/utils/fhirpath.js.map +1 -1
  444. package/lib/utils/fileUtils.js +21 -32
  445. package/lib/utils/fileUtils.js.map +1 -1
  446. package/lib/utils/genericRecursive.js +4 -6
  447. package/lib/utils/genericRecursive.js.map +1 -1
  448. package/lib/utils/getExpressionsFromItem.js +59 -66
  449. package/lib/utils/getExpressionsFromItem.js.map +1 -1
  450. package/lib/utils/index.d.ts +2 -1
  451. package/lib/utils/index.js +1 -1
  452. package/lib/utils/index.js.map +1 -1
  453. package/lib/utils/initialise.js +88 -101
  454. package/lib/utils/initialise.js.map +1 -1
  455. package/lib/utils/inputSanitization.js +6 -6
  456. package/lib/utils/inputSanitization.js.map +1 -1
  457. package/lib/utils/itemPath.d.ts +2 -2
  458. package/lib/utils/manageForm.d.ts +87 -9
  459. package/lib/utils/manageForm.js +79 -54
  460. package/lib/utils/manageForm.js.map +1 -1
  461. package/lib/utils/misc.js +9 -9
  462. package/lib/utils/misc.js.map +1 -1
  463. package/lib/utils/openChoice.js +25 -23
  464. package/lib/utils/openChoice.js.map +1 -1
  465. package/lib/utils/page.js +3 -4
  466. package/lib/utils/page.js.map +1 -1
  467. package/lib/utils/parameterisedValueSets.d.ts +1 -1
  468. package/lib/utils/parameterisedValueSets.js +110 -124
  469. package/lib/utils/parameterisedValueSets.js.map +1 -1
  470. package/lib/utils/populateContexts.js +4 -5
  471. package/lib/utils/populateContexts.js.map +1 -1
  472. package/lib/utils/qItem.js +9 -21
  473. package/lib/utils/qItem.js.map +1 -1
  474. package/lib/utils/qrItem.js +2 -3
  475. package/lib/utils/qrItem.js.map +1 -1
  476. package/lib/utils/quantity.js +8 -9
  477. package/lib/utils/quantity.js.map +1 -1
  478. package/lib/utils/questionnaireStoreUtils/addDisplayToCodings.js +93 -111
  479. package/lib/utils/questionnaireStoreUtils/addDisplayToCodings.js.map +1 -1
  480. package/lib/utils/questionnaireStoreUtils/createQuestionnaireModel.js +48 -64
  481. package/lib/utils/questionnaireStoreUtils/createQuestionnaireModel.js.map +1 -1
  482. package/lib/utils/questionnaireStoreUtils/extractContainedValueSets.js +3 -5
  483. package/lib/utils/questionnaireStoreUtils/extractContainedValueSets.js.map +1 -1
  484. package/lib/utils/questionnaireStoreUtils/extractLaunchContext.js +1 -2
  485. package/lib/utils/questionnaireStoreUtils/extractLaunchContext.js.map +1 -1
  486. package/lib/utils/questionnaireStoreUtils/extractOtherExtensions.js +200 -212
  487. package/lib/utils/questionnaireStoreUtils/extractOtherExtensions.js.map +1 -1
  488. package/lib/utils/questionnaireStoreUtils/extractTabs.js +1 -1
  489. package/lib/utils/questionnaireStoreUtils/extractTabs.js.map +1 -1
  490. package/lib/utils/questionnaireStoreUtils/extractTargetConstraint.js +8 -9
  491. package/lib/utils/questionnaireStoreUtils/extractTargetConstraint.js.map +1 -1
  492. package/lib/utils/questionnaireStoreUtils/extractVariables.js +4 -10
  493. package/lib/utils/questionnaireStoreUtils/extractVariables.js.map +1 -1
  494. package/lib/utils/questionnaireStoreUtils/resolveValueSets.js +28 -37
  495. package/lib/utils/questionnaireStoreUtils/resolveValueSets.js.map +1 -1
  496. package/lib/utils/readValues.js +7 -7
  497. package/lib/utils/readValues.js.map +1 -1
  498. package/lib/utils/removeEmptyAnswers.js +11 -9
  499. package/lib/utils/removeEmptyAnswers.js.map +1 -1
  500. package/lib/utils/removeRepeatId.js +17 -22
  501. package/lib/utils/removeRepeatId.js.map +1 -1
  502. package/lib/utils/repopulateIntoResponse.js +7 -5
  503. package/lib/utils/repopulateIntoResponse.js.map +1 -1
  504. package/lib/utils/repopulateItems.js +6 -11
  505. package/lib/utils/repopulateItems.js.map +1 -1
  506. package/lib/utils/slider.js +3 -6
  507. package/lib/utils/slider.js.map +1 -1
  508. package/lib/utils/tabs.js +3 -5
  509. package/lib/utils/tabs.js.map +1 -1
  510. package/lib/utils/targetConstraint.d.ts +1 -1
  511. package/lib/utils/targetConstraint.js +85 -102
  512. package/lib/utils/targetConstraint.js.map +1 -1
  513. package/lib/utils/ucumQuantityConversion.d.ts +44 -0
  514. package/lib/utils/ucumQuantityConversion.js +132 -0
  515. package/lib/utils/ucumQuantityConversion.js.map +1 -0
  516. package/lib/utils/validate.js +35 -35
  517. package/lib/utils/validate.js.map +1 -1
  518. package/lib/utils/valueSet.d.ts +10 -1
  519. package/lib/utils/valueSet.js +67 -55
  520. package/lib/utils/valueSet.js.map +1 -1
  521. package/package.json +21 -21
  522. package/src/components/ExpressionUpdateFadingGlow.styles.ts +3 -3
  523. package/src/components/FormComponents/AttachmentItem/AttachmentField.tsx +5 -5
  524. package/src/components/FormComponents/AttachmentItem/AttachmentFieldWrapper.tsx +3 -2
  525. package/src/components/FormComponents/AttachmentItem/AttachmentFileCollector.tsx +2 -2
  526. package/src/components/FormComponents/AttachmentItem/AttachmentFileDropBox.tsx +5 -5
  527. package/src/components/FormComponents/AttachmentItem/AttachmentUrlField.tsx +5 -5
  528. package/src/components/FormComponents/BooleanItem/BooleanField.tsx +4 -4
  529. package/src/components/FormComponents/BooleanItem/BooleanItem.tsx +7 -26
  530. package/src/components/FormComponents/ChoiceItems/ChoiceAutocompleteField.tsx +6 -6
  531. package/src/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.tsx +15 -35
  532. package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionFields.tsx +0 -1
  533. package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.tsx +12 -36
  534. package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetFields.tsx +3 -4
  535. package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.tsx +14 -38
  536. package/src/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.tsx +19 -43
  537. package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionFields.tsx +0 -1
  538. package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.tsx +14 -59
  539. package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionView.tsx +4 -4
  540. package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetFields.tsx +2 -3
  541. package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.tsx +14 -52
  542. package/src/components/FormComponents/ChoiceItems/ChoiceRadioSingle.tsx +2 -2
  543. package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.tsx +8 -8
  544. package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.tsx +12 -59
  545. package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionView.tsx +8 -7
  546. package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.tsx +12 -11
  547. package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.tsx +11 -55
  548. package/src/components/FormComponents/DateTimeItems/CustomDateItem/CustomDateField.tsx +6 -11
  549. package/src/components/FormComponents/DateTimeItems/CustomDateItem/CustomDateItem.tsx +11 -44
  550. package/src/components/FormComponents/DateTimeItems/CustomDateItem/DatePickerButton.tsx +2 -2
  551. package/src/components/FormComponents/DateTimeItems/CustomDateTimeItem/CustomDateTimeItem.tsx +19 -75
  552. package/src/components/FormComponents/DateTimeItems/CustomDateTimeItem/CustomTimeField.tsx +11 -15
  553. package/src/components/FormComponents/DateTimeItems/CustomDateTimeItem/DateTimeField.tsx +6 -14
  554. package/src/components/FormComponents/DecimalItem/DecimalField.tsx +7 -10
  555. package/src/components/FormComponents/DecimalItem/DecimalItem.tsx +20 -65
  556. package/src/components/FormComponents/DisplayItem/DisplayItem.tsx +1 -0
  557. package/src/components/FormComponents/GridGroup/GridGroup.tsx +45 -29
  558. package/src/components/FormComponents/GridGroup/GridRow.tsx +13 -15
  559. package/src/components/FormComponents/GridGroup/GridTable.tsx +6 -7
  560. package/src/components/FormComponents/GroupItem/GroupHeading.tsx +2 -2
  561. package/src/components/FormComponents/GroupItem/GroupItem.tsx +4 -9
  562. package/src/components/FormComponents/GroupItem/GroupItemSwitcher.tsx +1 -14
  563. package/src/components/FormComponents/GroupItem/GroupItemView.tsx +1 -7
  564. package/src/components/FormComponents/GroupItem/PageButtonWrapper.tsx +2 -2
  565. package/src/components/FormComponents/GroupItem/TabButtonsWrapper.tsx +2 -2
  566. package/src/components/FormComponents/IntegerItem/IntegerField.tsx +7 -10
  567. package/src/components/FormComponents/IntegerItem/IntegerItem.tsx +18 -57
  568. package/src/components/FormComponents/ItemParts/CheckboxFormGroup.tsx +8 -8
  569. package/src/components/FormComponents/ItemParts/CheckboxSingle.tsx +2 -2
  570. package/src/components/FormComponents/ItemParts/CheckboxSingleWithOpenLabel.tsx +2 -2
  571. package/src/components/FormComponents/ItemParts/ClearInputButton.tsx +17 -16
  572. package/src/components/FormComponents/ItemParts/DisplayUnitText.tsx +2 -2
  573. package/src/components/FormComponents/ItemParts/ItemFieldGrid.tsx +2 -2
  574. package/src/components/FormComponents/ItemParts/ItemLabel.tsx +3 -6
  575. package/src/components/FormComponents/ItemParts/ItemRepopulateButton.tsx +1 -8
  576. package/src/components/FormComponents/ItemParts/ItemTextSwitcher.tsx +9 -4
  577. package/src/components/FormComponents/ItemParts/OpenLabelField.tsx +3 -3
  578. package/src/components/FormComponents/ItemParts/RadioFormGroup.tsx +9 -9
  579. package/src/components/FormComponents/ItemParts/RequiredAsterisk.tsx +3 -3
  580. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.tsx +5 -5
  581. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.tsx +40 -44
  582. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionFields.tsx +1 -2
  583. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.tsx +19 -41
  584. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerValueSetFields.tsx +4 -5
  585. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerValueSetItem.tsx +24 -42
  586. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.tsx +22 -46
  587. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionFields.tsx +0 -1
  588. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.tsx +22 -37
  589. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerValueSetFields.tsx +3 -4
  590. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerValueSetItem.tsx +27 -36
  591. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.tsx +5 -5
  592. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.tsx +10 -37
  593. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.tsx +5 -5
  594. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.tsx +11 -34
  595. package/src/components/FormComponents/QuantityItem/QuantityComparatorField.tsx +6 -6
  596. package/src/components/FormComponents/QuantityItem/QuantityField.tsx +7 -10
  597. package/src/components/FormComponents/QuantityItem/QuantityItem.tsx +15 -105
  598. package/src/components/FormComponents/QuantityItem/QuantityUnitField.tsx +11 -6
  599. package/src/components/FormComponents/RepeatGroup/RepeatGroup.tsx +8 -21
  600. package/src/components/FormComponents/RepeatGroup/RepeatGroupItem.tsx +0 -4
  601. package/src/components/FormComponents/RepeatGroup/RepeatGroupView.tsx +5 -19
  602. package/src/components/FormComponents/RepeatItem/RepeatField.tsx +0 -4
  603. package/src/components/FormComponents/RepeatItem/RepeatItem.tsx +9 -27
  604. package/src/components/FormComponents/SingleItem/SingleItem.tsx +7 -12
  605. package/src/components/FormComponents/SingleItem/SingleItemSwitcher.tsx +57 -36
  606. package/src/components/FormComponents/SingleItem/SingleItemView.tsx +3 -15
  607. package/src/components/FormComponents/SingleItem/SingleNestedItems.tsx +5 -10
  608. package/src/components/FormComponents/SliderItem/SliderField.tsx +5 -5
  609. package/src/components/FormComponents/SliderItem/SliderItem.tsx +1 -0
  610. package/src/components/FormComponents/StringItem/StringField.tsx +7 -10
  611. package/src/components/FormComponents/StringItem/StringItem.tsx +19 -79
  612. package/src/components/FormComponents/Tables/GroupTable.tsx +69 -45
  613. package/src/components/FormComponents/Tables/GroupTableBody.tsx +7 -16
  614. package/src/components/FormComponents/Tables/GroupTableRow.tsx +7 -17
  615. package/src/components/FormComponents/Tables/GroupTableRowCells.tsx +5 -12
  616. package/src/components/FormComponents/Tables/GroupTableView.tsx +9 -13
  617. package/src/components/FormComponents/Tables/SelectRowButton.tsx +2 -2
  618. package/src/components/FormComponents/Tables/Table.styles.tsx +13 -8
  619. package/src/components/FormComponents/TextItem/TextField.tsx +3 -6
  620. package/src/components/FormComponents/TextItem/TextItem.tsx +11 -50
  621. package/src/components/FormComponents/Textfield.styles.ts +1 -1
  622. package/src/components/FormComponents/TimeItem/TimeField.tsx +5 -4
  623. package/src/components/FormComponents/TimeItem/TimeItem.tsx +6 -2
  624. package/src/components/FormComponents/UrlItem/UrlField.tsx +6 -9
  625. package/src/components/FormComponents/UrlItem/UrlItem.tsx +4 -19
  626. package/src/components/Renderer/BaseRenderer.tsx +18 -26
  627. package/src/components/Renderer/FormBodyCollapsible.tsx +3 -8
  628. package/src/components/Renderer/FormBodyPageContainer.tsx +3 -8
  629. package/src/components/Renderer/FormBodyPaginated.tsx +3 -12
  630. package/src/components/Renderer/FormBodySingleCollapsibleWrapper.tsx +2 -13
  631. package/src/components/Renderer/FormBodyTabbed.tsx +5 -10
  632. package/src/components/Renderer/FormTopLevelItem.tsx +3 -14
  633. package/src/components/Renderer/SmartFormsRenderer.tsx +4 -2
  634. package/src/components/Tabs/FormBodySingleTab.tsx +9 -2
  635. package/src/components/Tabs/FormBodyTabList.tsx +1 -0
  636. package/src/hooks/index.ts +1 -6
  637. package/src/hooks/useBuildForm.ts +31 -39
  638. package/src/hooks/useCalculatedExpressionUpdated.ts +39 -0
  639. package/src/hooks/useCodingCalculatedExpression.ts +0 -110
  640. package/src/hooks/useDateCalculatedExpression.ts +0 -90
  641. package/src/hooks/useDateTimeCalculatedExpression.ts +0 -90
  642. package/src/hooks/useDisplayCqfAndCalculatedExpression.ts +18 -2
  643. package/src/hooks/useHidden.ts +2 -2
  644. package/src/hooks/useInitialiseForm.ts +6 -5
  645. package/src/hooks/useReadOnly.ts +2 -2
  646. package/src/hooks/useResizeColumns.ts +53 -0
  647. package/src/hooks/useValueSetCodings.ts +5 -27
  648. package/src/index.ts +6 -12
  649. package/src/interfaces/calculatedExpression.interface.ts +1 -1
  650. package/src/interfaces/overrideComponent.interface.ts +3 -4
  651. package/src/interfaces/renderProps.interface.ts +8 -34
  652. package/src/interfaces/valueSet.interface.ts +2 -2
  653. package/src/stores/formUpdateQueueStore.ts +13 -29
  654. package/src/stores/index.ts +3 -3
  655. package/src/stores/questionnaireResponseStore.ts +28 -37
  656. package/src/stores/questionnaireStore.ts +230 -206
  657. package/src/stores/{rendererStylingStore.ts → rendererConfigStore.ts} +8 -8
  658. package/src/stores/smartConfigStore.ts +3 -3
  659. package/src/stores/terminologyServerStore.ts +2 -2
  660. package/src/theme/rendererThemeOptions.ts +1 -1
  661. package/src/utils/answerOptionsToggleExpressions.ts +12 -9
  662. package/src/utils/calculatedExpression.ts +466 -97
  663. package/src/utils/columnWidth.test.ts +75 -0
  664. package/src/utils/columnWidth.ts +110 -0
  665. package/src/utils/enableWhenExpression.ts +10 -6
  666. package/src/utils/extensions.ts +30 -0
  667. package/src/utils/extractObservation.ts +2 -1
  668. package/src/utils/fhirpath.ts +140 -115
  669. package/src/utils/getExpressionsFromItem.ts +33 -2
  670. package/src/utils/index.ts +2 -0
  671. package/src/utils/inputSanitization.ts +6 -6
  672. package/src/utils/manageForm.ts +148 -24
  673. package/src/utils/misc.ts +0 -2
  674. package/src/utils/parameterisedValueSets.ts +20 -9
  675. package/src/utils/questionnaireStoreUtils/createQuestionnaireModel.ts +0 -6
  676. package/src/utils/targetConstraint.ts +12 -9
  677. package/src/utils/ucumQuantityConversion.ts +195 -0
  678. package/src/utils/validate.ts +8 -3
  679. package/src/utils/valueSet.ts +44 -1
  680. package/src/vite-env.d.ts +2 -1
  681. package/tsconfig.json +2 -2
  682. package/vite.config.ts +5 -1
  683. package/lib/api/callbacks.d.ts +0 -8
  684. package/lib/api/callbacks.js +0 -52
  685. package/lib/api/callbacks.js.map +0 -1
  686. package/lib/api/xFhirQuerySync.d.ts +0 -1
  687. package/lib/api/xFhirQuerySync.js +0 -61
  688. package/lib/api/xFhirQuerySync.js.map +0 -1
  689. package/lib/components/ExpressionUpdateFadingGlow.d.ts +0 -0
  690. package/lib/components/ExpressionUpdateFadingGlow.js +0 -2
  691. package/lib/components/ExpressionUpdateFadingGlow.js.map +0 -1
  692. package/lib/components/FormComponents/ItemParts/ExpressionUpdateFadingGlow.d.ts +0 -0
  693. package/lib/components/FormComponents/ItemParts/ExpressionUpdateFadingGlow.js +0 -2
  694. package/lib/components/FormComponents/ItemParts/ExpressionUpdateFadingGlow.js.map +0 -1
  695. package/lib/components/FormComponents/ItemParts/FadingCheckIcon.d.ts +0 -7
  696. package/lib/components/FormComponents/ItemParts/FadingCheckIcon.js +0 -26
  697. package/lib/components/FormComponents/ItemParts/FadingCheckIcon.js.map +0 -1
  698. package/lib/components/FormComponents/ItemParts/FadingGlowExpressionUpdate.d.ts +0 -0
  699. package/lib/components/FormComponents/ItemParts/FadingGlowExpressionUpdate.js +0 -2
  700. package/lib/components/FormComponents/ItemParts/FadingGlowExpressionUpdate.js.map +0 -1
  701. package/lib/components/FormComponents/ItemParts/GranularRepopulateButton.d.ts +0 -8
  702. package/lib/components/FormComponents/ItemParts/GranularRepopulateButton.js +0 -130
  703. package/lib/components/FormComponents/ItemParts/GranularRepopulateButton.js.map +0 -1
  704. package/lib/components/FormComponents/ItemParts/GranularRepopulateSyncButton.d.ts +0 -8
  705. package/lib/components/FormComponents/ItemParts/GranularRepopulateSyncButton.js +0 -126
  706. package/lib/components/FormComponents/ItemParts/GranularRepopulateSyncButton.js.map +0 -1
  707. package/lib/components/FormComponents/ItemParts/GranularRepopulateSyncButtonStates.d.ts +0 -8
  708. package/lib/components/FormComponents/ItemParts/GranularRepopulateSyncButtonStates.js +0 -118
  709. package/lib/components/FormComponents/ItemParts/GranularRepopulateSyncButtonStates.js.map +0 -1
  710. package/lib/components/FormComponents/ItemParts/ItemLabelText.d.ts +0 -8
  711. package/lib/components/FormComponents/ItemParts/ItemLabelText.js +0 -63
  712. package/lib/components/FormComponents/ItemParts/ItemLabelText.js.map +0 -1
  713. package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.d.ts +0 -8
  714. package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.js +0 -53
  715. package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.js.map +0 -1
  716. package/lib/components/FormComponents/ItemParts/SrOnlyCheckboxLabel.d.ts +0 -0
  717. package/lib/components/FormComponents/ItemParts/SrOnlyCheckboxLabel.js +0 -2
  718. package/lib/components/FormComponents/ItemParts/SrOnlyCheckboxLabel.js.map +0 -1
  719. package/lib/components/FormComponents/ItemParts/TempCalculatedExpressionSyncButton.d.ts +0 -7
  720. package/lib/components/FormComponents/ItemParts/TempCalculatedExpressionSyncButton.js +0 -95
  721. package/lib/components/FormComponents/ItemParts/TempCalculatedExpressionSyncButton.js.map +0 -1
  722. package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.d.ts +0 -10
  723. package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.js +0 -30
  724. package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.js.map +0 -1
  725. package/lib/components/FormComponents/Tables/GroupTableRowCell.d.ts +0 -9
  726. package/lib/components/FormComponents/Tables/GroupTableRowCell.js +0 -15
  727. package/lib/components/FormComponents/Tables/GroupTableRowCell.js.map +0 -1
  728. package/lib/components/Iconify/Iconify.d.ts +0 -10
  729. package/lib/components/Iconify/Iconify.js +0 -26
  730. package/lib/components/Iconify/Iconify.js.map +0 -1
  731. package/lib/components/Renderer/FormBodyPage.d.ts +0 -9
  732. package/lib/components/Renderer/FormBodyPage.js +0 -43
  733. package/lib/components/Renderer/FormBodyPage.js.map +0 -1
  734. package/lib/components/Renderer/FormTitle.d.ts +0 -7
  735. package/lib/components/Renderer/FormTitle.js +0 -30
  736. package/lib/components/Renderer/FormTitle.js.map +0 -1
  737. package/lib/components/Renderer/FormTopLevelPage.d.ts +0 -9
  738. package/lib/components/Renderer/FormTopLevelPage.js +0 -29
  739. package/lib/components/Renderer/FormTopLevelPage.js.map +0 -1
  740. package/lib/hooks/useBooleanCalculatedExpression.d.ts +0 -12
  741. package/lib/hooks/useBooleanCalculatedExpression.js +0 -53
  742. package/lib/hooks/useBooleanCalculatedExpression.js.map +0 -1
  743. package/lib/hooks/useCalculatedExpressionAnimating.d.ts +0 -1
  744. package/lib/hooks/useCalculatedExpressionAnimating.js +0 -18
  745. package/lib/hooks/useCalculatedExpressionAnimating.js.map +0 -1
  746. package/lib/hooks/useCalculatedExpressionAnimation.d.ts +0 -1
  747. package/lib/hooks/useCalculatedExpressionAnimation.js +0 -18
  748. package/lib/hooks/useCalculatedExpressionAnimation.js.map +0 -1
  749. package/lib/hooks/useCqfAnswerValueSet.d.ts +0 -4
  750. package/lib/hooks/useCqfAnswerValueSet.js +0 -86
  751. package/lib/hooks/useCqfAnswerValueSet.js.map +0 -1
  752. package/lib/hooks/useCqfAnswerValueSetEffect.d.ts +0 -3
  753. package/lib/hooks/useCqfAnswerValueSetEffect.js +0 -111
  754. package/lib/hooks/useCqfAnswerValueSetEffect.js.map +0 -1
  755. package/lib/hooks/useDecimalCalculatedExpression.d.ts +0 -13
  756. package/lib/hooks/useDecimalCalculatedExpression.js +0 -64
  757. package/lib/hooks/useDecimalCalculatedExpression.js.map +0 -1
  758. package/lib/hooks/useIntegerCalculatedExpression.d.ts +0 -12
  759. package/lib/hooks/useIntegerCalculatedExpression.js +0 -61
  760. package/lib/hooks/useIntegerCalculatedExpression.js.map +0 -1
  761. package/lib/hooks/useQuantityCalculatedExpression.d.ts +0 -14
  762. package/lib/hooks/useQuantityCalculatedExpression.js +0 -115
  763. package/lib/hooks/useQuantityCalculatedExpression.js.map +0 -1
  764. package/lib/hooks/useShowDateTimeFeedback.d.ts +0 -13
  765. package/lib/hooks/useShowDateTimeFeedback.js +0 -40
  766. package/lib/hooks/useShowDateTimeFeedback.js.map +0 -1
  767. package/lib/hooks/useShowFeedback.d.ts +0 -11
  768. package/lib/hooks/useShowFeedback.js +0 -33
  769. package/lib/hooks/useShowFeedback.js.map +0 -1
  770. package/lib/hooks/useStringCalculatedExpression.d.ts +0 -12
  771. package/lib/hooks/useStringCalculatedExpression.js +0 -63
  772. package/lib/hooks/useStringCalculatedExpression.js.map +0 -1
  773. package/lib/hooks/useTempCalculatedExpressionsSyncButton.d.ts +0 -1
  774. package/lib/hooks/useTempCalculatedExpressionsSyncButton.js +0 -24
  775. package/lib/hooks/useTempCalculatedExpressionsSyncButton.js.map +0 -1
  776. package/lib/interfaces/fhirPathContext.interface.d.ts +0 -0
  777. package/lib/interfaces/fhirPathContext.interface.js +0 -2
  778. package/lib/interfaces/fhirPathContext.interface.js.map +0 -1
  779. package/lib/interfaces/itemDetails.interface.d.ts +0 -2
  780. package/lib/interfaces/itemDetails.interface.js +0 -2
  781. package/lib/interfaces/itemDetails.interface.js.map +0 -1
  782. package/lib/interfaces/itemMetadata.d.ts +0 -0
  783. package/lib/interfaces/itemMetadata.interface.d.ts +0 -6
  784. package/lib/interfaces/itemMetadata.interface.js +0 -2
  785. package/lib/interfaces/itemMetadata.interface.js.map +0 -1
  786. package/lib/interfaces/itemMetadata.js +0 -2
  787. package/lib/interfaces/itemMetadata.js.map +0 -1
  788. package/lib/interfaces/itemPath.d.ts +0 -31
  789. package/lib/interfaces/itemPath.js +0 -2
  790. package/lib/interfaces/itemPath.js.map +0 -1
  791. package/lib/stores/callbackStore.d.ts +0 -0
  792. package/lib/stores/callbackStore.js +0 -2
  793. package/lib/stores/callbackStore.js.map +0 -1
  794. package/lib/stores/extractOperationStore.d.ts +0 -26
  795. package/lib/stores/extractOperationStore.js +0 -20
  796. package/lib/stores/extractOperationStore.js.map +0 -1
  797. package/lib/stores/rendererStylingStore.js +0 -68
  798. package/lib/stores/rendererStylingStore.js.map +0 -1
  799. package/lib/stories/storybookWrappers/populateCallbackForStorybook.d.ts +0 -8
  800. package/lib/stories/storybookWrappers/populateCallbackForStorybook.js +0 -52
  801. package/lib/stories/storybookWrappers/populateCallbackForStorybook.js.map +0 -1
  802. package/lib/templates/bloodPressureTemplate.d.ts +0 -23
  803. package/lib/templates/bloodPressureTemplate.js +0 -80
  804. package/lib/templates/bloodPressureTemplate.js.map +0 -1
  805. package/lib/theme/RendererDynamicThemeProvider.d.ts +0 -24
  806. package/lib/theme/RendererDynamicThemeProvider.js +0 -65
  807. package/lib/theme/RendererDynamicThemeProvider.js.map +0 -1
  808. package/lib/theme/RendererThemeToggle.d.ts +0 -6
  809. package/lib/theme/RendererThemeToggle.js +0 -45
  810. package/lib/theme/RendererThemeToggle.js.map +0 -1
  811. package/lib/theme/Theme.d.ts +0 -44
  812. package/lib/theme/Theme.js +0 -43
  813. package/lib/theme/Theme.js.map +0 -1
  814. package/lib/theme/customGlobalStyles.d.ts +0 -1
  815. package/lib/theme/customGlobalStyles.js +0 -45
  816. package/lib/theme/customGlobalStyles.js.map +0 -1
  817. package/lib/theme/overrides/Accordion.d.ts +0 -14
  818. package/lib/theme/overrides/Accordion.js +0 -32
  819. package/lib/theme/overrides/Accordion.js.map +0 -1
  820. package/lib/theme/overrides/Autocomplete.d.ts +0 -10
  821. package/lib/theme/overrides/Autocomplete.js +0 -28
  822. package/lib/theme/overrides/Autocomplete.js.map +0 -1
  823. package/lib/theme/overrides/Button.d.ts +0 -33
  824. package/lib/theme/overrides/Button.js +0 -52
  825. package/lib/theme/overrides/Button.js.map +0 -1
  826. package/lib/theme/overrides/Card.d.ts +0 -35
  827. package/lib/theme/overrides/Card.js +0 -49
  828. package/lib/theme/overrides/Card.js.map +0 -1
  829. package/lib/theme/overrides/Input.d.ts +0 -64
  830. package/lib/theme/overrides/Input.js +0 -81
  831. package/lib/theme/overrides/Input.js.map +0 -1
  832. package/lib/theme/overrides/Overrides.d.ts +0 -3
  833. package/lib/theme/overrides/Overrides.js +0 -29
  834. package/lib/theme/overrides/Overrides.js.map +0 -1
  835. package/lib/theme/overrides/Paper.d.ts +0 -12
  836. package/lib/theme/overrides/Paper.js +0 -31
  837. package/lib/theme/overrides/Paper.js.map +0 -1
  838. package/lib/theme/overrides/SpeedDial.d.ts +0 -16
  839. package/lib/theme/overrides/SpeedDial.js +0 -34
  840. package/lib/theme/overrides/SpeedDial.js.map +0 -1
  841. package/lib/theme/overrides/Table.d.ts +0 -12
  842. package/lib/theme/overrides/Table.js +0 -30
  843. package/lib/theme/overrides/Table.js.map +0 -1
  844. package/lib/theme/overrides/rendererThemeComponentOverride.d.ts +0 -2
  845. package/lib/theme/overrides/rendererThemeComponentOverride.js +0 -28
  846. package/lib/theme/overrides/rendererThemeComponentOverride.js.map +0 -1
  847. package/lib/theme/overrides/rendererThemeComponentsOverride.d.ts +0 -2
  848. package/lib/theme/overrides/rendererThemeComponentsOverride.js +0 -28
  849. package/lib/theme/overrides/rendererThemeComponentsOverride.js.map +0 -1
  850. package/lib/theme/overrides/rendererThemeComponentsOverrides.d.ts +0 -2
  851. package/lib/theme/overrides/rendererThemeComponentsOverrides.js +0 -28
  852. package/lib/theme/overrides/rendererThemeComponentsOverrides.js.map +0 -1
  853. package/lib/theme/palette.d.ts +0 -27
  854. package/lib/theme/palette.js +0 -63
  855. package/lib/theme/palette.js.map +0 -1
  856. package/lib/theme/shadows.d.ts +0 -2
  857. package/lib/theme/shadows.js +0 -52
  858. package/lib/theme/shadows.js.map +0 -1
  859. package/lib/theme/themeOptions.d.ts +0 -2
  860. package/lib/theme/themeOptions.js +0 -85
  861. package/lib/theme/themeOptions.js.map +0 -1
  862. package/lib/theme/useRendererTheme.d.ts +0 -5
  863. package/lib/theme/useRendererTheme.js +0 -30
  864. package/lib/theme/useRendererTheme.js.map +0 -1
  865. package/lib/utils/FhirPathEvaluateParams.d.ts +0 -20
  866. package/lib/utils/FhirPathEvaluateParams.js +0 -35
  867. package/lib/utils/FhirPathEvaluateParams.js.map +0 -1
  868. package/lib/utils/dayjsExtend.d.ts +0 -1
  869. package/lib/utils/dayjsExtend.js +0 -22
  870. package/lib/utils/dayjsExtend.js.map +0 -1
  871. package/lib/utils/dayjsSetup.d.ts +0 -2
  872. package/lib/utils/dayjsSetup.js +0 -23
  873. package/lib/utils/dayjsSetup.js.map +0 -1
  874. package/lib/utils/extractTemplate.d.ts +0 -0
  875. package/lib/utils/extractTemplate.js +0 -1107
  876. package/lib/utils/extractTemplate.js.map +0 -1
  877. package/lib/utils/fhirathEvaluate.d.ts +0 -20
  878. package/lib/utils/fhirathEvaluate.js +0 -35
  879. package/lib/utils/fhirathEvaluate.js.map +0 -1
  880. package/lib/utils/fhirpathEvaluate.d.ts +0 -30
  881. package/lib/utils/fhirpathEvaluate.js +0 -68
  882. package/lib/utils/fhirpathEvaluate.js.map +0 -1
  883. package/lib/utils/find_item_no_text.d.ts +0 -1
  884. package/lib/utils/find_item_no_text.js +0 -65
  885. package/lib/utils/find_item_no_text.js.map +0 -1
  886. package/lib/utils/generateId.d.ts +0 -3
  887. package/lib/utils/generateId.js +0 -28
  888. package/lib/utils/generateId.js.map +0 -1
  889. package/lib/utils/granularRepopulateSync.d.ts +0 -1
  890. package/lib/utils/granularRepopulateSync.js +0 -70
  891. package/lib/utils/granularRepopulateSync.js.map +0 -1
  892. package/lib/utils/itemControl.d.ts +0 -103
  893. package/lib/utils/itemControl.js +0 -350
  894. package/lib/utils/itemControl.js.map +0 -1
  895. package/lib/utils/itemText.d.ts +0 -2
  896. package/lib/utils/itemText.js +0 -12
  897. package/lib/utils/itemText.js.map +0 -1
  898. package/lib/utils/questionnaireStoreUtils/addAdditionalVariables.d.ts +0 -2
  899. package/lib/utils/questionnaireStoreUtils/addAdditionalVariables.js +0 -43
  900. package/lib/utils/questionnaireStoreUtils/addAdditionalVariables.js.map +0 -1
  901. package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.d.ts +0 -3
  902. package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js +0 -114
  903. package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js.map +0 -1
  904. package/lib/utils/questionnaireStoreUtils/itemDetails.d.ts +0 -5
  905. package/lib/utils/questionnaireStoreUtils/itemDetails.js +0 -2
  906. package/lib/utils/questionnaireStoreUtils/itemDetails.js.map +0 -1
  907. package/lib/utils/readItem.d.ts +0 -28
  908. package/lib/utils/readItem.js +0 -67
  909. package/lib/utils/readItem.js.map +0 -1
  910. package/lib/utils/syncInitialExpression.d.ts +0 -23
  911. package/lib/utils/syncInitialExpression.js +0 -407
  912. package/lib/utils/syncInitialExpression.js.map +0 -1
  913. package/lib/utils/templateMatching.d.ts +0 -15
  914. package/lib/utils/templateMatching.js +0 -56
  915. package/lib/utils/templateMatching.js.map +0 -1
  916. package/lib/utils/updateCodingsDynamic.d.ts +0 -1
  917. package/lib/utils/updateCodingsDynamic.js +0 -54
  918. package/lib/utils/updateCodingsDynamic.js.map +0 -1
  919. package/lib/utils/validateQuestionnaire.d.ts +0 -66
  920. package/lib/utils/validateQuestionnaire.js +0 -559
  921. package/lib/utils/validateQuestionnaire.js.map +0 -1
  922. package/src/hooks/useBooleanCalculatedExpression.ts +0 -83
  923. package/src/hooks/useDecimalCalculatedExpression.ts +0 -103
  924. package/src/hooks/useIntegerCalculatedExpression.ts +0 -93
  925. package/src/hooks/useQuantityCalculatedExpression.ts +0 -196
  926. package/src/hooks/useShowFeedback.ts +0 -36
  927. package/src/hooks/useStringCalculatedExpression.ts +0 -95
  928. package/src/interfaces/itemPath.interface.ts +0 -33
  929. package/src/utils/itemPath.ts +0 -79
  930. package/src/utils/questionnaireStoreUtils/addAdditionalVariables.ts +0 -52
@@ -0,0 +1,75 @@
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 { calculateColumnWidths } from './columnWidth';
19
+
20
+ describe('calculateColumnWidths', () => {
21
+ it('all columns as percentages', () => {
22
+ const columnWidths = ['25%', '25%', '25%', '25%'];
23
+ const result = calculateColumnWidths(columnWidths, 1000);
24
+ expect(result.map((r) => r.width)).toEqual(['25%', '25%', '25%', '25%']);
25
+ });
26
+
27
+ it('one column as px, rest unset', () => {
28
+ const columnWidths = [undefined, '400px', undefined];
29
+ const result = calculateColumnWidths(columnWidths, 1000);
30
+ // 1000 - 400 = 600, split between 2 unset columns
31
+ expect(result[0].width).toBe('300px');
32
+ expect(result[1].width).toBe('400px');
33
+ expect(result[2].width).toBe('300px');
34
+ });
35
+
36
+ it('one column as %, rest unset', () => {
37
+ const columnWidths = [undefined, '70%', undefined];
38
+ const result = calculateColumnWidths(columnWidths, 1000);
39
+ // 70% = 700px, 300px left for 2 columns
40
+ expect(result[0].width).toBe('150px');
41
+ expect(result[1].width).toBe('70%');
42
+ expect(result[2].width).toBe('150px');
43
+ });
44
+
45
+ it('mixed px and % columns', () => {
46
+ const columnWidths = [undefined, '400px', '20%', undefined];
47
+ const result = calculateColumnWidths(columnWidths, 1200);
48
+ // 400px + 20% of 1200 = 400px + 240px = 640px, 560px left for 2 unset
49
+ expect(result[0].width).toBe('280px');
50
+ expect(result[1].width).toBe('400px');
51
+ expect(result[2].width).toBe('20%');
52
+ expect(result[3].width).toBe('280px');
53
+ });
54
+
55
+ it('all columns px, sum < table width', () => {
56
+ const columnWidths = ['200px', '300px'];
57
+ const result = calculateColumnWidths(columnWidths, 700);
58
+ expect(result[0].width).toBe('200px');
59
+ expect(result[1].width).toBe('300px');
60
+ });
61
+
62
+ it('all columns px, sum > table width (overflow)', () => {
63
+ const columnWidths = ['500px', '600px'];
64
+ const result = calculateColumnWidths(columnWidths, 1000);
65
+ expect(result[0].width).toBe('500px');
66
+ expect(result[1].width).toBe('600px');
67
+ });
68
+
69
+ it('handles empty columns', () => {
70
+ const columnWidths = [undefined, undefined];
71
+ const result = calculateColumnWidths(columnWidths, 1000);
72
+ expect(result[0].width).toBe('500px');
73
+ expect(result[1].width).toBe('500px');
74
+ });
75
+ });
@@ -0,0 +1,110 @@
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
+ /**
19
+ * Calculates the final widths for each column given the column widths and table width.
20
+ * @param columnWidthsSDC Array of column widths from http://hl7.org/fhir/uv/sdc/StructureDefinition-sdc-questionnaire-width.html (string or undefined)
21
+ * @param tableWidth Table width in px
22
+ * @returns Array of calculated column widths (in px or %)
23
+ *
24
+ * @example
25
+ * columnWidthsSDC: [undefined, "400px", undefined]
26
+ * tableWidth: 1200 (Comes from tableContainerRef.current.offsetWidth)
27
+ * output: [
28
+ * {
29
+ * "width": "325px",
30
+ * "isFixed": true
31
+ * },
32
+ * {
33
+ * "width": "550px",
34
+ * "isFixed": true
35
+ * },
36
+ * {
37
+ * "width": "325px",
38
+ * "isFixed": true
39
+ * }
40
+ * ]
41
+ */
42
+ export function calculateColumnWidths(
43
+ columnWidthsSDC: (string | undefined)[],
44
+ tableWidth: number
45
+ ): { width: string; isFixed: boolean }[] {
46
+ // Parse columns into px, %, and unset
47
+ const pxColumns: { idx: number; px: number }[] = [];
48
+ const percentColumns: { idx: number; percent: number }[] = [];
49
+ const unsetColumns: { idx: number }[] = [];
50
+
51
+ columnWidthsSDC.forEach((col, idx) => {
52
+ if (col?.endsWith('px')) {
53
+ const px = parseInt(col);
54
+ pxColumns.push({ idx, px });
55
+ } else if (col?.endsWith('%')) {
56
+ const percent = parseFloat(col);
57
+ percentColumns.push({ idx, percent });
58
+ } else {
59
+ unsetColumns.push({ idx });
60
+ }
61
+ });
62
+
63
+ // Calculate total px and %
64
+ const totalPx = pxColumns.reduce((sum, c) => sum + c.px, 0);
65
+
66
+ // Calculate px for % columns
67
+ const percentPx = percentColumns.map((c) => ({
68
+ ...c,
69
+ px: (c.percent / 100) * tableWidth
70
+ }));
71
+ const totalPercentPx = percentPx.reduce((sum, c) => sum + c.px, 0);
72
+
73
+ // Remaining px for unset columns
74
+ let remainingPx = tableWidth - totalPx - totalPercentPx;
75
+ if (remainingPx < 0) remainingPx = 0; // overflow, will be handled by scroll
76
+
77
+ // Distribute remaining px equally to unset columns
78
+ const unsetPx = unsetColumns.length > 0 ? remainingPx / unsetColumns.length : 0;
79
+
80
+ // Build result array
81
+ return columnWidthsSDC.map((col, idx) => {
82
+ // px columns
83
+ const pxCol = pxColumns.find((c) => c.idx === idx);
84
+ if (pxCol) {
85
+ return {
86
+ width: `${pxCol.px}px`,
87
+ isFixed: true
88
+ };
89
+ }
90
+ // % columns
91
+ const percentCol = percentColumns.find((c) => c.idx === idx);
92
+ if (percentCol) {
93
+ return {
94
+ width: `${percentCol.percent}%`,
95
+ isFixed: false
96
+ };
97
+ }
98
+ // unset columns
99
+ const unsetCol = unsetColumns.find((c) => c.idx === idx);
100
+ if (unsetCol) {
101
+ return {
102
+ width: `${unsetPx}px`,
103
+ isFixed: true
104
+ };
105
+ }
106
+
107
+ // fallback
108
+ return { width: 'auto', isFixed: false };
109
+ });
110
+ }
@@ -16,7 +16,12 @@
16
16
  */
17
17
 
18
18
  import type { QuestionnaireResponse, QuestionnaireResponseItem } from 'fhir/r4';
19
- import { createFhirPathContext, handleFhirPathResult } from './fhirpath';
19
+ import {
20
+ cacheTerminologyResult,
21
+ createFhirPathContext,
22
+ handleFhirPathResult,
23
+ isExpressionCached
24
+ } from './fhirpath';
20
25
  import fhirpath from 'fhirpath';
21
26
  import fhirpath_r4_model from 'fhirpath/fhir-context/r4';
22
27
  import type {
@@ -104,8 +109,7 @@ async function evaluateEnableWhenSingleExpressions(
104
109
  const initialValue = enableWhenSingleExpressions[linkId].isEnabled;
105
110
  const expression = enableWhenSingleExpressions[linkId].expression;
106
111
 
107
- const cacheKey = JSON.stringify(expression); // Use expression as cache key
108
- if (fhirPathTerminologyCache[cacheKey]) {
112
+ if (isExpressionCached(expression, fhirPathTerminologyCache)) {
109
113
  continue;
110
114
  }
111
115
 
@@ -124,7 +128,7 @@ async function evaluateEnableWhenSingleExpressions(
124
128
 
125
129
  // If fhirPathResult is an async terminology call, cache the result
126
130
  if (fhirPathResult instanceof Promise) {
127
- fhirPathTerminologyCache[cacheKey] = result;
131
+ cacheTerminologyResult(expression, result, fhirPathTerminologyCache);
128
132
  }
129
133
 
130
134
  // Update enableWhenExpressions if length of result array > 0
@@ -291,7 +295,7 @@ export async function evaluateEnableWhenExpressions(
291
295
  enableWhenExpressions: EnableWhenExpressions,
292
296
  terminologyServerUrl: string
293
297
  ): Promise<{
294
- enableWhenExpsIsUpdated: boolean;
298
+ isUpdated: boolean;
295
299
  updatedEnableWhenExpressions: EnableWhenExpressions;
296
300
  }> {
297
301
  const updatedEnableWhenExpressions: EnableWhenExpressions = {
@@ -315,7 +319,7 @@ export async function evaluateEnableWhenExpressions(
315
319
  updatedEnableWhenSingleExpressions.isUpdated || updatedEnableWhenRepeatExpressions.isUpdated;
316
320
 
317
321
  return {
318
- enableWhenExpsIsUpdated: isUpdated,
322
+ isUpdated: isUpdated,
319
323
  updatedEnableWhenExpressions: {
320
324
  singleExpressions: updatedEnableWhenSingleExpressions.updatedExpressions,
321
325
  repeatExpressions: updatedEnableWhenRepeatExpressions.updatedExpressions
@@ -598,6 +598,36 @@ export function isGroupAddItemButtonHidden(qItem: QuestionnaireItem): boolean {
598
598
  return !!extension?.valueBoolean;
599
599
  }
600
600
 
601
+ /**
602
+ * Check if the item has a sdc-questionnaire-width extension
603
+ *
604
+ * @param {QuestionnaireItem} qItem - The QuestionnaireItem to check.
605
+ * @returns {number | undefined} The numeric value of the columnWidth extension, if present.
606
+ *
607
+ * @author Janardhan Vignarajan
608
+ */
609
+ export function getColumnWidth(qItem: QuestionnaireItem): string | undefined {
610
+ const extension = qItem.extension?.find(
611
+ (extension: Extension) =>
612
+ extension.url === 'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-width'
613
+ );
614
+
615
+ // Check if valueQuantity exists and if value is a "number" type
616
+ if (extension?.valueQuantity) {
617
+ if (typeof extension.valueQuantity.value === 'number') {
618
+ // if the extension.valueQuantity.code exists then return value + code, else return value + 'px'
619
+ // See http://hl7.org/fhir/uv/sdc/rendering.html#width.
620
+ if (extension.valueQuantity.code) {
621
+ return `${extension.valueQuantity.value}${extension.valueQuantity.code}`;
622
+ } else {
623
+ return `${extension.valueQuantity.value}px`;
624
+ }
625
+ }
626
+ }
627
+
628
+ return undefined;
629
+ }
630
+
601
631
  /**
602
632
  * Check if the QuestionnaireItem has a 'showRepopulateButton' extension to show a sync button for granular repopulation.
603
633
  */
@@ -394,7 +394,8 @@ export function buildBundleFromObservationArray(observations: Observation[]): Bu
394
394
  meta: {
395
395
  tag: [
396
396
  {
397
- code: '@aehrc/smart-forms-renderer:generated'
397
+ code: '@aehrc/smart-forms-renderer:generated',
398
+ system: 'urn:aehrc:sdc-template-extract'
398
399
  }
399
400
  ]
400
401
  },
@@ -18,10 +18,8 @@
18
18
  import fhirpath from 'fhirpath';
19
19
  import fhirpath_r4_model from 'fhirpath/fhir-context/r4';
20
20
  import type { Expression, QuestionnaireResponse, QuestionnaireResponseItem } from 'fhir/r4';
21
- import type { CalculatedExpression } from '../interfaces/calculatedExpression.interface';
22
21
  import type { EnableWhenExpressions } from '../interfaces/enableWhen.interface';
23
22
  import { evaluateEnableWhenExpressions } from './enableWhenExpression';
24
- import { evaluateCalculatedExpressions } from './calculatedExpression';
25
23
  import { evaluateTargetConstraints } from './targetConstraint';
26
24
  import type { TargetConstraint } from '../interfaces/targetConstraint.interface';
27
25
  import type { Variables, VariableXFhirQuery } from '../interfaces';
@@ -30,164 +28,149 @@ import type { ComputedQRItemUpdates } from '../interfaces/computedUpdates.interf
30
28
  import type { AnswerOptionsToggleExpression } from '../interfaces/answerOptionsToggleExpression.interface';
31
29
  import { evaluateAnswerOptionsToggleExpressions } from './answerOptionsToggleExpressions';
32
30
 
33
- interface EvaluateUpdatedExpressionsParams {
34
- updatedResponse: QuestionnaireResponse;
35
- updatedResponseItemMap: Record<string, QuestionnaireResponseItem[]>;
36
- targetConstraints: Record<string, TargetConstraint>;
37
- answerOptionsToggleExpressions: Record<string, AnswerOptionsToggleExpression[]>;
38
- calculatedExpressions: Record<string, CalculatedExpression[]>;
39
- enableWhenExpressions: EnableWhenExpressions;
40
- variables: Variables;
41
- processedValueSets: Record<string, any>;
42
- existingFhirPathContext: Record<string, any>;
43
- fhirPathTerminologyCache: Record<string, any>;
44
- terminologyServerUrl: string;
31
+ interface ExpressionUpdate<T> {
32
+ isUpdated: boolean;
33
+ value: T;
45
34
  }
46
35
 
47
- export async function evaluateUpdatedExpressions(
48
- params: EvaluateUpdatedExpressionsParams
36
+ export async function evaluateOtherExpressions(
37
+ updatedResponse: QuestionnaireResponse,
38
+ updatedResponseItemMap: Record<string, QuestionnaireResponseItem[]>,
39
+ variables: Variables,
40
+ existingFhirPathContext: Record<string, any>,
41
+ existingFhirPathTerminologyCache: Record<string, any>,
42
+ targetConstraints: Record<string, TargetConstraint>,
43
+ enableWhenExpressions: EnableWhenExpressions,
44
+ answerOptionsToggleExpressions: Record<string, AnswerOptionsToggleExpression[]>,
45
+ processedValueSets: Record<string, any>,
46
+ terminologyServerUrl: string
49
47
  ): Promise<{
50
- isUpdated: boolean;
51
- updatedTargetConstraints: Record<string, TargetConstraint>;
52
- updatedAnswerOptionsToggleExpressions: Record<string, AnswerOptionsToggleExpression[]>;
53
- updatedEnableWhenExpressions: EnableWhenExpressions;
54
- updatedCalculatedExpressions: Record<string, CalculatedExpression[]>;
55
- updatedProcessedValueSets: Record<string, any>;
56
48
  updatedFhirPathContext: Record<string, any>;
57
- fhirPathTerminologyCache: Record<string, any>;
49
+ updatedFhirPathTerminologyCache: Record<string, any>;
50
+ targetConstraintsUpdate: ExpressionUpdate<Record<string, TargetConstraint>>;
51
+ enableWhenExpressionsUpdate: ExpressionUpdate<EnableWhenExpressions>;
52
+ answerOptionsToggleExpressionsUpdate: ExpressionUpdate<
53
+ Record<string, AnswerOptionsToggleExpression[]>
54
+ >;
55
+ processedValueSetsUpdate: ExpressionUpdate<Record<string, any>>;
58
56
  computedQRItemUpdates: ComputedQRItemUpdates;
59
57
  }> {
60
- const {
61
- updatedResponse,
62
- updatedResponseItemMap,
63
- targetConstraints,
64
- answerOptionsToggleExpressions,
65
- enableWhenExpressions,
66
- calculatedExpressions,
67
- processedValueSets,
68
- variables,
69
- existingFhirPathContext,
70
- terminologyServerUrl
71
- } = params;
72
- let { fhirPathTerminologyCache } = params;
73
-
58
+ // Performance check: Check if there are any expressions to be updated before proceeding with eval logic
74
59
  const noExpressionsToBeUpdated =
60
+ Object.keys(targetConstraints).length === 0 &&
75
61
  Object.keys(enableWhenExpressions).length === 0 &&
76
- Object.keys(calculatedExpressions).length === 0;
62
+ Object.keys(answerOptionsToggleExpressions).length === 0 &&
63
+ Object.keys(processedValueSets).length === 0;
64
+
77
65
  if (noExpressionsToBeUpdated) {
78
66
  return {
79
- isUpdated: false,
80
- updatedTargetConstraints: targetConstraints,
81
- updatedAnswerOptionsToggleExpressions: answerOptionsToggleExpressions,
82
- updatedEnableWhenExpressions: enableWhenExpressions,
83
- updatedCalculatedExpressions: calculatedExpressions,
84
- updatedProcessedValueSets: processedValueSets,
85
67
  updatedFhirPathContext: existingFhirPathContext,
86
- fhirPathTerminologyCache,
68
+ updatedFhirPathTerminologyCache: existingFhirPathTerminologyCache,
69
+ targetConstraintsUpdate: {
70
+ isUpdated: false,
71
+ value: targetConstraints
72
+ },
73
+ enableWhenExpressionsUpdate: {
74
+ isUpdated: false,
75
+ value: enableWhenExpressions
76
+ },
77
+ answerOptionsToggleExpressionsUpdate: {
78
+ isUpdated: false,
79
+ value: answerOptionsToggleExpressions
80
+ },
81
+ processedValueSetsUpdate: {
82
+ isUpdated: false,
83
+ value: processedValueSets
84
+ },
87
85
  computedQRItemUpdates: {}
88
86
  };
89
87
  }
90
88
 
89
+ // Create a new fhirPathContext based on the updated response and variables
91
90
  const computedQRItemUpdates: ComputedQRItemUpdates = {};
92
- const fhirPathEvalResult = await createFhirPathContext(
91
+ const {
92
+ fhirPathContext: updatedFhirPathContext,
93
+ fhirPathTerminologyCache: updatedFhirPathTerminologyCache
94
+ } = await createFhirPathContext(
93
95
  updatedResponse,
94
96
  updatedResponseItemMap,
95
97
  variables,
96
98
  existingFhirPathContext,
97
- fhirPathTerminologyCache,
99
+ existingFhirPathTerminologyCache,
98
100
  terminologyServerUrl
99
101
  );
100
102
 
101
- const updatedFhirPathContext = fhirPathEvalResult.fhirPathContext;
102
- fhirPathTerminologyCache = fhirPathEvalResult.fhirPathTerminologyCache;
103
-
104
103
  // Update targetConstraints
105
- const { targetConstraintsIsUpdated, updatedTargetConstraints } = await evaluateTargetConstraints(
106
- updatedFhirPathContext,
107
- fhirPathTerminologyCache,
108
- targetConstraints,
109
- terminologyServerUrl
110
- );
111
-
112
- // Update answerOptionsToggleExpressions
113
- const {
114
- answerOptionsToggleExpressionsIsUpdated,
115
- updatedAnswerOptionsToggleExpressions,
116
- computedNewAnswers: computedNewAnswersAnswerOptionsToggleExpressions
117
- } = await evaluateAnswerOptionsToggleExpressions(
118
- updatedFhirPathContext,
119
- fhirPathTerminologyCache,
120
- answerOptionsToggleExpressions,
121
- terminologyServerUrl
122
- );
104
+ const { isUpdated: targetConstraintsUpdated, updatedTargetConstraints } =
105
+ await evaluateTargetConstraints(
106
+ updatedFhirPathContext,
107
+ updatedFhirPathTerminologyCache,
108
+ targetConstraints,
109
+ terminologyServerUrl
110
+ );
123
111
 
124
112
  // Update enableWhenExpressions
125
- const { enableWhenExpsIsUpdated, updatedEnableWhenExpressions } =
113
+ const { isUpdated: enableWhenExpressionsUpdated, updatedEnableWhenExpressions } =
126
114
  await evaluateEnableWhenExpressions(
127
115
  updatedFhirPathContext,
128
- fhirPathTerminologyCache,
116
+ updatedFhirPathTerminologyCache,
129
117
  enableWhenExpressions,
130
118
  terminologyServerUrl
131
119
  );
132
120
 
133
- // Update calculatedExpressions
121
+ // Update answerOptionsToggleExpressions
122
+ // Add generated computed answers to computedQRItemUpdates - clear the item because the previous answers may no longer be valid
134
123
  const {
135
- calculatedExpsIsUpdated,
136
- updatedCalculatedExpressions,
137
- computedNewAnswers: computedNewAnswersCalculatedExpressions
138
- } = await evaluateCalculatedExpressions(
124
+ isUpdated: answerOptionsToggleExpressionsUpdated,
125
+ updatedAnswerOptionsToggleExpressions,
126
+ computedNewAnswers: computedNewAnswersAnswerOptionsToggleExpressions
127
+ } = await evaluateAnswerOptionsToggleExpressions(
139
128
  updatedFhirPathContext,
140
- fhirPathTerminologyCache,
141
- calculatedExpressions,
129
+ updatedFhirPathTerminologyCache,
130
+ answerOptionsToggleExpressions,
142
131
  terminologyServerUrl
143
132
  );
144
133
 
134
+ for (const linkId in computedNewAnswersAnswerOptionsToggleExpressions) {
135
+ computedQRItemUpdates[linkId] = null;
136
+ }
137
+
145
138
  // Update dynamic value sets
139
+ // Add generated computed answers to computedQRItemUpdates - clear the item because the previous answers may no longer be valid
146
140
  const {
147
- processedValueSetsIsUpdated,
141
+ isUpdated: processedValueSetsUpdated,
148
142
  updatedProcessedValueSets,
149
143
  computedNewAnswers: computedNewAnswersDynamicValueSets
150
144
  } = await evaluateDynamicValueSets(
151
145
  updatedFhirPathContext,
152
- fhirPathTerminologyCache,
146
+ updatedFhirPathTerminologyCache,
153
147
  processedValueSets,
154
148
  terminologyServerUrl
155
149
  );
156
150
 
157
- // Have a process here to find their QRItems and assign updates based on the computedNewAnswers
158
- // In the case of dynamic value sets, just clear the existing answers
159
- // Eventually we want to expand this to calculatedExpressions
160
- for (const linkId in computedNewAnswersCalculatedExpressions) {
161
- // FIXME - this implementation is designed to only work on null for now, if we want to actually apply new answer updates, need to have Questionnaire input param
162
- if (computedNewAnswersCalculatedExpressions[linkId] === null) {
163
- computedQRItemUpdates[linkId] = null;
164
- }
165
- }
166
-
167
151
  for (const linkId in computedNewAnswersDynamicValueSets) {
168
152
  computedQRItemUpdates[linkId] = null;
169
153
  }
170
154
 
171
- for (const linkId in computedNewAnswersAnswerOptionsToggleExpressions) {
172
- computedQRItemUpdates[linkId] = null;
173
- }
174
-
175
- const isUpdated =
176
- enableWhenExpsIsUpdated ||
177
- calculatedExpsIsUpdated ||
178
- targetConstraintsIsUpdated ||
179
- answerOptionsToggleExpressionsIsUpdated ||
180
- processedValueSetsIsUpdated;
181
-
182
155
  return {
183
- isUpdated,
184
- updatedTargetConstraints,
185
- updatedAnswerOptionsToggleExpressions,
186
- updatedEnableWhenExpressions,
187
- updatedCalculatedExpressions,
188
- updatedProcessedValueSets,
189
156
  updatedFhirPathContext,
190
- fhirPathTerminologyCache,
157
+ updatedFhirPathTerminologyCache,
158
+ targetConstraintsUpdate: {
159
+ isUpdated: targetConstraintsUpdated,
160
+ value: updatedTargetConstraints
161
+ },
162
+ enableWhenExpressionsUpdate: {
163
+ isUpdated: enableWhenExpressionsUpdated,
164
+ value: updatedEnableWhenExpressions
165
+ },
166
+ answerOptionsToggleExpressionsUpdate: {
167
+ isUpdated: answerOptionsToggleExpressionsUpdated,
168
+ value: updatedAnswerOptionsToggleExpressions
169
+ },
170
+ processedValueSetsUpdate: {
171
+ isUpdated: processedValueSetsUpdated,
172
+ value: updatedProcessedValueSets
173
+ },
191
174
  computedQRItemUpdates
192
175
  };
193
176
  }
@@ -284,8 +267,7 @@ export async function evaluateLinkIdVariables(
284
267
 
285
268
  for (const variable of linkIdVariables) {
286
269
  if (variable.expression && variable.name) {
287
- const cacheKey = JSON.stringify(variable.expression); // Use expression as cache key
288
- if (fhirPathTerminologyCache[cacheKey]) {
270
+ if (isExpressionCached(variable.expression, fhirPathTerminologyCache)) {
289
271
  continue;
290
272
  }
291
273
 
@@ -303,11 +285,12 @@ export async function evaluateLinkIdVariables(
303
285
  terminologyUrl: terminologyServerUrl
304
286
  }
305
287
  );
306
- fhirPathContext[`${variable.name}`] = await handleFhirPathResult(fhirPathResult);
288
+ const result = await handleFhirPathResult(fhirPathResult);
289
+ fhirPathContext[`${variable.name}`] = result;
307
290
 
308
291
  // If fhirPathResult is an async terminology call, cache the result
309
292
  if (fhirPathResult instanceof Promise) {
310
- fhirPathTerminologyCache[cacheKey] = fhirPathContext[`${variable.name}`];
293
+ cacheTerminologyResult(variable.expression, result, fhirPathTerminologyCache);
311
294
  }
312
295
  } catch (e) {
313
296
  console.warn(e.message, `LinkId: ${linkId}\nExpression: ${variable.expression}`);
@@ -335,8 +318,7 @@ export async function evaluateQuestionnaireLevelVariables(
335
318
 
336
319
  for (const variable of questionnaireLevelVariables) {
337
320
  if (variable.expression) {
338
- const cacheKey = JSON.stringify(variable.expression); // Use expression as cache key
339
- if (fhirPathTerminologyCache[cacheKey]) {
321
+ if (isExpressionCached(variable.expression, fhirPathTerminologyCache)) {
340
322
  continue;
341
323
  }
342
324
 
@@ -355,11 +337,12 @@ export async function evaluateQuestionnaireLevelVariables(
355
337
  }
356
338
  );
357
339
 
358
- fhirPathContext[`${variable.name}`] = await handleFhirPathResult(fhirPathResult);
340
+ const result = await handleFhirPathResult(fhirPathResult);
341
+ fhirPathContext[`${variable.name}`] = result;
359
342
 
360
343
  // If fhirPathResult is an async terminology call, cache the result
361
344
  if (fhirPathResult instanceof Promise) {
362
- fhirPathTerminologyCache[cacheKey] = fhirPathContext[`${variable.name}`];
345
+ cacheTerminologyResult(variable.expression, result, fhirPathTerminologyCache);
363
346
  }
364
347
  } catch (e) {
365
348
  console.warn(e.message, `Questionnaire-level\nExpression: ${variable.expression}`);
@@ -380,3 +363,45 @@ export async function handleFhirPathResult(result: any[] | Promise<any[]>) {
380
363
 
381
364
  return result;
382
365
  }
366
+
367
+ /**
368
+ * Determines whether a FHIRPath expression result is cached.
369
+ *
370
+ * Expressions containing variables (e.g. `%something`) are never considered cached, because we can never know what a variable resolves to at runtime.
371
+ *
372
+ * @param {string} expression - The FHIRPath expression to check.
373
+ * @param {Record<string, any>} fhirPathTerminologyCache - Object storing cached expression results.
374
+ * @returns {boolean} `true` if the expression is cached and contains no variables; otherwise `false`.
375
+ */
376
+ export function isExpressionCached(
377
+ expression: string,
378
+ fhirPathTerminologyCache: Record<string, any>
379
+ ): boolean {
380
+ // Expressions with variables are never cached
381
+ if (expression.includes('%')) {
382
+ return false;
383
+ }
384
+
385
+ // Check if expression exists in cache
386
+ return Object.prototype.hasOwnProperty.call(fhirPathTerminologyCache, expression);
387
+ }
388
+
389
+ /**
390
+ * Caches the result of a FHIRPath evaluation if it was an asynchronous terminology call and the expression contains no variables (e.g. `%something`).
391
+ *
392
+ * @param {string} expression - The FHIRPath expression that was evaluated.
393
+ * @param {any} result - The evaluated result of the expression with async resolved.
394
+ * @param {Record<string, any>} fhirPathTerminologyCache - The cache object to store results.
395
+ */
396
+ export function cacheTerminologyResult(
397
+ expression: string,
398
+ result: any,
399
+ fhirPathTerminologyCache: Record<string, any>
400
+ ) {
401
+ // Skip caching for expressions with variables
402
+ if (expression.includes('%')) {
403
+ return;
404
+ }
405
+
406
+ fhirPathTerminologyCache[expression] = result;
407
+ }