@aehrc/smart-forms-renderer 0.8.0 → 0.9.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 (477) hide show
  1. package/lib/components/Alert.styles.d.ts +2 -7
  2. package/lib/components/Box.styles.d.ts +6 -21
  3. package/lib/components/FormComponents/BooleanItem/BooleanItem.d.ts +3 -3
  4. package/lib/components/FormComponents/BooleanItem/BooleanItem.js +5 -4
  5. package/lib/components/FormComponents/BooleanItem/BooleanItem.js.map +1 -1
  6. package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.d.ts +3 -3
  7. package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.js +6 -5
  8. package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.js.map +1 -1
  9. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.d.ts +3 -3
  10. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.js +15 -14
  11. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.js.map +1 -1
  12. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.d.ts +3 -3
  13. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.js +15 -14
  14. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.js.map +1 -1
  15. package/lib/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.d.ts +3 -3
  16. package/lib/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.js +8 -8
  17. package/lib/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.js.map +1 -1
  18. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.d.ts +3 -3
  19. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.js +6 -6
  20. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.js.map +1 -1
  21. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.d.ts +3 -3
  22. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.js +6 -5
  23. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.js.map +1 -1
  24. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.d.ts +1 -0
  25. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.js +2 -2
  26. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.js.map +1 -1
  27. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.d.ts +3 -3
  28. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.js +8 -7
  29. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.js.map +1 -1
  30. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.d.ts +1 -0
  31. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.js +2 -2
  32. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.js.map +1 -1
  33. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.d.ts +3 -3
  34. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.js +8 -7
  35. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.js.map +1 -1
  36. package/lib/components/FormComponents/CustomDateItem/CustomDateField2.d.ts +18 -0
  37. package/lib/components/FormComponents/CustomDateItem/CustomDateField2.js +31 -0
  38. package/lib/components/FormComponents/CustomDateItem/CustomDateField2.js.map +1 -0
  39. package/lib/components/FormComponents/CustomDateItem/CustomDateItem.d.ts +9 -0
  40. package/lib/components/FormComponents/CustomDateItem/CustomDateItem.js +68 -0
  41. package/lib/components/FormComponents/CustomDateItem/CustomDateItem.js.map +1 -0
  42. package/lib/components/FormComponents/CustomDateItem/CustomDateTimeField.d.ts +9 -0
  43. package/lib/components/FormComponents/CustomDateItem/CustomDateTimeField.js +75 -0
  44. package/lib/components/FormComponents/CustomDateItem/CustomDateTimeField.js.map +1 -0
  45. package/lib/components/FormComponents/CustomDateItem/CustomDateTimePickerText2.d.ts +9 -0
  46. package/lib/components/FormComponents/CustomDateItem/CustomDateTimePickerText2.js +75 -0
  47. package/lib/components/FormComponents/CustomDateItem/CustomDateTimePickerText2.js.map +1 -0
  48. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/CustomDateField.d.ts +18 -0
  49. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/CustomDateField.js +33 -0
  50. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/CustomDateField.js.map +1 -0
  51. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/DatePicker.d.ts +11 -0
  52. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/DatePicker.js +55 -0
  53. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/DatePicker.js.map +1 -0
  54. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/DatePickerButton.d.ts +9 -0
  55. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/DatePickerButton.js +13 -0
  56. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/DatePickerButton.js.map +1 -0
  57. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/MuiDatePicker.d.ts +5 -0
  58. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/MuiDatePicker.js +20 -0
  59. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/MuiDatePicker.js.map +1 -0
  60. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/hooks/useParseDates.d.ts +5 -0
  61. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/hooks/useParseDates.js +27 -0
  62. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/hooks/useParseDates.js.map +1 -0
  63. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/index.d.ts +1 -0
  64. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/index.js +18 -0
  65. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/index.js.map +1 -0
  66. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/utils/index.d.ts +1 -0
  67. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/utils/index.js +18 -0
  68. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/utils/index.js.map +1 -0
  69. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/utils/parseDates.d.ts +9 -0
  70. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/utils/parseDates.js +121 -0
  71. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/utils/parseDates.js.map +1 -0
  72. package/lib/components/FormComponents/CustomDateItem/customDateTimePickerText.d.ts +9 -0
  73. package/lib/components/FormComponents/CustomDateItem/customDateTimePickerText.js +71 -0
  74. package/lib/components/FormComponents/CustomDateItem/customDateTimePickerText.js.map +1 -0
  75. package/lib/components/FormComponents/CustomDateItem/index.d.ts +1 -0
  76. package/lib/components/FormComponents/CustomDateItem/index.js +18 -0
  77. package/lib/components/FormComponents/CustomDateItem/index.js.map +1 -0
  78. package/lib/components/FormComponents/DateItem/DateItem.d.ts +3 -3
  79. package/lib/components/FormComponents/DateItem/DateItem.js +5 -4
  80. package/lib/components/FormComponents/DateItem/DateItem.js.map +1 -1
  81. package/lib/components/FormComponents/DateItem/DatePicker.d.ts +2 -0
  82. package/lib/components/FormComponents/DateItem/DatePicker.js +42 -0
  83. package/lib/components/FormComponents/DateItem/DatePicker.js.map +1 -0
  84. package/lib/components/FormComponents/DateItem/DatePickerField.d.ts +8 -0
  85. package/lib/components/FormComponents/DateItem/DatePickerField.js +24 -0
  86. package/lib/components/FormComponents/DateItem/DatePickerField.js.map +1 -0
  87. package/lib/components/FormComponents/DateTimeItem/DateTimeItem.d.ts +3 -3
  88. package/lib/components/FormComponents/DateTimeItem/DateTimeItem.js +5 -4
  89. package/lib/components/FormComponents/DateTimeItem/DateTimeItem.js.map +1 -1
  90. package/lib/components/FormComponents/DecimalItem/DecimalItem.d.ts +3 -3
  91. package/lib/components/FormComponents/DecimalItem/DecimalItem.js +7 -7
  92. package/lib/components/FormComponents/DecimalItem/DecimalItem.js.map +1 -1
  93. package/lib/components/FormComponents/DisplayItem/DisplayBox.d.ts +0 -0
  94. package/lib/components/FormComponents/DisplayItem/DisplayBox.js +2 -0
  95. package/lib/components/FormComponents/DisplayItem/DisplayBox.js.map +1 -0
  96. package/lib/components/FormComponents/DisplayItem/DisplayBox.styles.d.ts +4 -0
  97. package/lib/components/FormComponents/DisplayItem/DisplayBox.styles.js +35 -0
  98. package/lib/components/FormComponents/DisplayItem/DisplayBox.styles.js.map +1 -0
  99. package/lib/components/FormComponents/DisplayItem/DisplayInstructions.d.ts +3 -1
  100. package/lib/components/FormComponents/DisplayItem/DisplayInstructions.js +2 -2
  101. package/lib/components/FormComponents/DisplayItem/DisplayInstructions.js.map +1 -1
  102. package/lib/components/FormComponents/DisplayItem/DisplayInstructions.styles.d.ts +2 -7
  103. package/lib/components/FormComponents/DisplayItem/DisplayInstructions.styles.js +0 -1
  104. package/lib/components/FormComponents/DisplayItem/DisplayInstructions.styles.js.map +1 -1
  105. package/lib/components/FormComponents/DisplayItem/DisplayItem.js +2 -2
  106. package/lib/components/FormComponents/DisplayItem/DisplayItem.js.map +1 -1
  107. package/lib/components/FormComponents/GridGroup/GridGroup.d.ts +3 -3
  108. package/lib/components/FormComponents/GridGroup/GridGroup.js +16 -9
  109. package/lib/components/FormComponents/GridGroup/GridGroup.js.map +1 -1
  110. package/lib/components/FormComponents/GridGroup/GridRow.d.ts +3 -3
  111. package/lib/components/FormComponents/GridGroup/GridRow.js +4 -4
  112. package/lib/components/FormComponents/GridGroup/GridRow.js.map +1 -1
  113. package/lib/components/FormComponents/GridGroup/GridTable.d.ts +3 -2
  114. package/lib/components/FormComponents/GridGroup/GridTable.js +9 -4
  115. package/lib/components/FormComponents/GridGroup/GridTable.js.map +1 -1
  116. package/lib/components/FormComponents/GridGroup/index.d.ts +1 -0
  117. package/lib/components/FormComponents/GridGroup/index.js +18 -0
  118. package/lib/components/FormComponents/GridGroup/index.js.map +1 -0
  119. package/lib/components/FormComponents/GroupItem/GroupHeading.d.ts +1 -0
  120. package/lib/components/FormComponents/GroupItem/GroupHeading.js +6 -5
  121. package/lib/components/FormComponents/GroupItem/GroupHeading.js.map +1 -1
  122. package/lib/components/FormComponents/GroupItem/GroupItem.d.ts +3 -4
  123. package/lib/components/FormComponents/GroupItem/GroupItem.js +7 -5
  124. package/lib/components/FormComponents/GroupItem/GroupItem.js.map +1 -1
  125. package/lib/components/FormComponents/GroupItem/GroupItem.styles.d.ts +2 -6
  126. package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.d.ts +3 -3
  127. package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.js +11 -12
  128. package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.js.map +1 -1
  129. package/lib/components/FormComponents/IntegerItem/IntegerItem.d.ts +3 -3
  130. package/lib/components/FormComponents/IntegerItem/IntegerItem.js +7 -7
  131. package/lib/components/FormComponents/IntegerItem/IntegerItem.js.map +1 -1
  132. package/lib/components/FormComponents/IntegerItem/SliderItem.d.ts +9 -0
  133. package/lib/components/FormComponents/IntegerItem/SliderItem.js +75 -0
  134. package/lib/components/FormComponents/IntegerItem/SliderItem.js.map +1 -0
  135. package/lib/components/FormComponents/Item.styles.d.ts +0 -4
  136. package/lib/components/FormComponents/Item.styles.js +0 -4
  137. package/lib/components/FormComponents/Item.styles.js.map +1 -1
  138. package/lib/components/FormComponents/ItemParts/FadingCheckIcon.js +2 -2
  139. package/lib/components/FormComponents/ItemParts/FadingCheckIcon.js.map +1 -1
  140. package/lib/components/FormComponents/ItemParts/ItemFieldGrid.d.ts +3 -2
  141. package/lib/components/FormComponents/ItemParts/ItemFieldGrid.js +3 -3
  142. package/lib/components/FormComponents/ItemParts/ItemFieldGrid.js.map +1 -1
  143. package/lib/components/FormComponents/ItemParts/ItemLabelText.d.ts +1 -0
  144. package/lib/components/FormComponents/ItemParts/ItemLabelText.js +4 -6
  145. package/lib/components/FormComponents/ItemParts/ItemLabelText.js.map +1 -1
  146. package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.d.ts +1 -0
  147. package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.js +2 -2
  148. package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.js.map +1 -1
  149. package/lib/components/FormComponents/Lists.styles.d.ts +2 -9
  150. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.d.ts +3 -2
  151. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.js +2 -3
  152. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.js.map +1 -1
  153. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.d.ts +3 -3
  154. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.js +8 -7
  155. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.js.map +1 -1
  156. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.d.ts +3 -3
  157. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.js +16 -15
  158. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.js.map +1 -1
  159. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.d.ts +3 -3
  160. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.js +6 -6
  161. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.js.map +1 -1
  162. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.d.ts +3 -3
  163. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.js +7 -6
  164. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.js.map +1 -1
  165. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.d.ts +3 -2
  166. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.js +2 -2
  167. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.js.map +1 -1
  168. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.d.ts +3 -3
  169. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.js +7 -6
  170. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.js.map +1 -1
  171. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.d.ts +3 -2
  172. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.js +2 -2
  173. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.js.map +1 -1
  174. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.d.ts +3 -3
  175. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.js +8 -7
  176. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.js.map +1 -1
  177. package/lib/components/FormComponents/RepeatGroup/AddItemButton.d.ts +1 -0
  178. package/lib/components/FormComponents/RepeatGroup/AddItemButton.js +2 -2
  179. package/lib/components/FormComponents/RepeatGroup/AddItemButton.js.map +1 -1
  180. package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.d.ts +1 -0
  181. package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.js +2 -2
  182. package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.js.map +1 -1
  183. package/lib/components/FormComponents/RepeatGroup/RepeatGroup.d.ts +2 -2
  184. package/lib/components/FormComponents/RepeatGroup/RepeatGroup.js +20 -7
  185. package/lib/components/FormComponents/RepeatGroup/RepeatGroup.js.map +1 -1
  186. package/lib/components/FormComponents/RepeatGroup/RepeatGroupItem.d.ts +2 -2
  187. package/lib/components/FormComponents/RepeatGroup/RepeatGroupItem.js +5 -3
  188. package/lib/components/FormComponents/RepeatGroup/RepeatGroupItem.js.map +1 -1
  189. package/lib/components/FormComponents/RepeatItem/AddItemButton.d.ts +1 -0
  190. package/lib/components/FormComponents/RepeatItem/AddItemButton.js +2 -2
  191. package/lib/components/FormComponents/RepeatItem/AddItemButton.js.map +1 -1
  192. package/lib/components/FormComponents/RepeatItem/DeleteItemButton.d.ts +1 -0
  193. package/lib/components/FormComponents/RepeatItem/DeleteItemButton.js +2 -2
  194. package/lib/components/FormComponents/RepeatItem/DeleteItemButton.js.map +1 -1
  195. package/lib/components/FormComponents/RepeatItem/RepeatField.d.ts +3 -3
  196. package/lib/components/FormComponents/RepeatItem/RepeatField.js +5 -3
  197. package/lib/components/FormComponents/RepeatItem/RepeatField.js.map +1 -1
  198. package/lib/components/FormComponents/RepeatItem/RepeatItem.d.ts +4 -3
  199. package/lib/components/FormComponents/RepeatItem/RepeatItem.js +15 -5
  200. package/lib/components/FormComponents/RepeatItem/RepeatItem.js.map +1 -1
  201. package/lib/components/FormComponents/RepeatItem/RepeatItem.styles.d.ts +4 -18
  202. package/lib/components/FormComponents/RepeatItem/index.d.ts +1 -0
  203. package/lib/components/FormComponents/RepeatItem/index.js +18 -0
  204. package/lib/components/FormComponents/RepeatItem/index.js.map +1 -0
  205. package/lib/components/FormComponents/SingleItem/SingleItem.d.ts +3 -3
  206. package/lib/components/FormComponents/SingleItem/SingleItem.js +4 -2
  207. package/lib/components/FormComponents/SingleItem/SingleItem.js.map +1 -1
  208. package/lib/components/FormComponents/SingleItem/SingleItemSwitcher.d.ts +3 -3
  209. package/lib/components/FormComponents/SingleItem/SingleItemSwitcher.js +20 -15
  210. package/lib/components/FormComponents/SingleItem/SingleItemSwitcher.js.map +1 -1
  211. package/lib/components/FormComponents/SliderItem/DisplayBox.styles.d.ts +4 -0
  212. package/lib/components/FormComponents/SliderItem/DisplayBox.styles.js +35 -0
  213. package/lib/components/FormComponents/SliderItem/DisplayBox.styles.js.map +1 -0
  214. package/lib/components/FormComponents/SliderItem/Slider.styles.d.ts +6 -0
  215. package/lib/components/FormComponents/SliderItem/Slider.styles.js +33 -0
  216. package/lib/components/FormComponents/SliderItem/Slider.styles.js.map +1 -0
  217. package/lib/components/FormComponents/SliderItem/SliderDisplayValue.d.ts +8 -0
  218. package/lib/components/FormComponents/SliderItem/SliderDisplayValue.js +28 -0
  219. package/lib/components/FormComponents/SliderItem/SliderDisplayValue.js.map +1 -0
  220. package/lib/components/FormComponents/SliderItem/SliderField.d.ts +16 -0
  221. package/lib/components/FormComponents/SliderItem/SliderField.js +41 -0
  222. package/lib/components/FormComponents/SliderItem/SliderField.js.map +1 -0
  223. package/lib/components/FormComponents/SliderItem/SliderItem.d.ts +9 -0
  224. package/lib/components/FormComponents/SliderItem/SliderItem.js +56 -0
  225. package/lib/components/FormComponents/SliderItem/SliderItem.js.map +1 -0
  226. package/lib/components/FormComponents/SliderItem/SliderLabels.d.ts +7 -0
  227. package/lib/components/FormComponents/SliderItem/SliderLabels.js +32 -0
  228. package/lib/components/FormComponents/SliderItem/SliderLabels.js.map +1 -0
  229. package/lib/components/FormComponents/StringItem/StringItem.d.ts +3 -3
  230. package/lib/components/FormComponents/StringItem/StringItem.js +5 -4
  231. package/lib/components/FormComponents/StringItem/StringItem.js.map +1 -1
  232. package/lib/components/FormComponents/Tables/AddRowButton.d.ts +1 -0
  233. package/lib/components/FormComponents/Tables/AddRowButton.js +2 -2
  234. package/lib/components/FormComponents/Tables/AddRowButton.js.map +1 -1
  235. package/lib/components/FormComponents/Tables/DeleteRowButton.d.ts +1 -0
  236. package/lib/components/FormComponents/Tables/DeleteRowButton.js +2 -2
  237. package/lib/components/FormComponents/Tables/DeleteRowButton.js.map +1 -1
  238. package/lib/components/FormComponents/Tables/GroupTable.d.ts +4 -3
  239. package/lib/components/FormComponents/Tables/GroupTable.js +25 -6
  240. package/lib/components/FormComponents/Tables/GroupTable.js.map +1 -1
  241. package/lib/components/FormComponents/Tables/GroupTableRow.d.ts +3 -3
  242. package/lib/components/FormComponents/Tables/GroupTableRow.js +4 -4
  243. package/lib/components/FormComponents/Tables/GroupTableRow.js.map +1 -1
  244. package/lib/components/FormComponents/Tables/QItemGroupTable.js +5 -7
  245. package/lib/components/FormComponents/Tables/QItemGroupTable.js.map +1 -1
  246. package/lib/components/FormComponents/Tables/QItemGroupTableRow.js +2 -2
  247. package/lib/components/FormComponents/Tables/QItemGroupTableRow.js.map +1 -1
  248. package/lib/components/FormComponents/TextItem/TextItem.d.ts +3 -3
  249. package/lib/components/FormComponents/TextItem/TextItem.js +5 -4
  250. package/lib/components/FormComponents/TextItem/TextItem.js.map +1 -1
  251. package/lib/components/FormComponents/TimeItem/TimeItem.d.ts +3 -3
  252. package/lib/components/FormComponents/TimeItem/TimeItem.js +5 -4
  253. package/lib/components/FormComponents/TimeItem/TimeItem.js.map +1 -1
  254. package/lib/components/FormComponents/UrlItem/UrlItem.d.ts +3 -3
  255. package/lib/components/FormComponents/UrlItem/UrlItem.js +5 -4
  256. package/lib/components/FormComponents/UrlItem/UrlItem.js.map +1 -1
  257. package/lib/components/FormComponents/index.d.ts +3 -0
  258. package/lib/components/FormComponents/index.js +3 -0
  259. package/lib/components/FormComponents/index.js.map +1 -1
  260. package/lib/components/Lists.styles.d.ts +2 -9
  261. package/lib/components/Renderer/BaseRenderer.js +3 -5
  262. package/lib/components/Renderer/BaseRenderer.js.map +1 -1
  263. package/lib/components/Renderer/FormBodyCollapsible.d.ts +2 -2
  264. package/lib/components/Renderer/FormBodyCollapsible.js +6 -5
  265. package/lib/components/Renderer/FormBodyCollapsible.js.map +1 -1
  266. package/lib/components/Renderer/FormBodySingleCollapsibleWrapper.d.ts +2 -2
  267. package/lib/components/Renderer/FormBodySingleCollapsibleWrapper.js.map +1 -1
  268. package/lib/components/Renderer/FormBodyTabbed.d.ts +2 -2
  269. package/lib/components/Renderer/FormBodyTabbed.js +6 -5
  270. package/lib/components/Renderer/FormBodyTabbed.js.map +1 -1
  271. package/lib/components/Renderer/FormTopLevelItem.d.ts +2 -2
  272. package/lib/components/Renderer/FormTopLevelItem.js +9 -5
  273. package/lib/components/Renderer/FormTopLevelItem.js.map +1 -1
  274. package/lib/components/Tabs/FormBodySingleTab.js +1 -1
  275. package/lib/components/Tabs/FormBodySingleTab.js.map +1 -1
  276. package/lib/components/Tabs/ShowCompletedTabsSection.js +1 -1
  277. package/lib/components/Tabs/ShowCompletedTabsSection.js.map +1 -1
  278. package/lib/hooks/useDateSeparatorValidation.d.ts +2 -0
  279. package/lib/hooks/useDateSeparatorValidation.js +25 -0
  280. package/lib/hooks/useDateSeparatorValidation.js.map +1 -0
  281. package/lib/hooks/useDateValidation.d.ts +2 -0
  282. package/lib/hooks/useDateValidation.js +61 -0
  283. package/lib/hooks/useDateValidation.js.map +1 -0
  284. package/lib/hooks/useDecimalCalculatedExpression.d.ts +0 -1
  285. package/lib/hooks/useDecimalCalculatedExpression.js +3 -3
  286. package/lib/hooks/useDecimalCalculatedExpression.js.map +1 -1
  287. package/lib/hooks/useInitialiseRepeatAnswers.d.ts +1 -1
  288. package/lib/hooks/useInitialiseRepeatAnswers.js.map +1 -1
  289. package/lib/hooks/useIntegerCalculatedExpression.d.ts +0 -1
  290. package/lib/hooks/useIntegerCalculatedExpression.js +3 -3
  291. package/lib/hooks/useIntegerCalculatedExpression.js.map +1 -1
  292. package/lib/hooks/useMinimalStringCalculatedExpression.d.ts +11 -0
  293. package/lib/hooks/useMinimalStringCalculatedExpression.js +37 -0
  294. package/lib/hooks/useMinimalStringCalculatedExpression.js.map +1 -0
  295. package/lib/hooks/useReadOnly.d.ts +3 -0
  296. package/lib/hooks/useReadOnly.js +26 -0
  297. package/lib/hooks/useReadOnly.js.map +1 -0
  298. package/lib/hooks/useSliderExtensions.d.ts +10 -0
  299. package/lib/hooks/useSliderExtensions.js +37 -0
  300. package/lib/hooks/useSliderExtensions.js.map +1 -0
  301. package/lib/hooks/useTerminologyServerQuery.js +0 -1
  302. package/lib/hooks/useTerminologyServerQuery.js.map +1 -1
  303. package/lib/index.d.ts +3 -3
  304. package/lib/index.js +15 -6
  305. package/lib/index.js.map +1 -1
  306. package/lib/interfaces/calculatedExpression.interface.d.ts +1 -1
  307. package/lib/interfaces/index.d.ts +2 -0
  308. package/lib/interfaces/index.js +18 -0
  309. package/lib/interfaces/index.js.map +1 -0
  310. package/lib/interfaces/questionnaireStore.interface.d.ts +1 -0
  311. package/lib/interfaces/renderProps.interface.d.ts +7 -3
  312. package/lib/stores/useQuestionnaireStore.d.ts +1 -0
  313. package/lib/stores/useQuestionnaireStore.js +28 -12
  314. package/lib/stores/useQuestionnaireStore.js.map +1 -1
  315. package/lib/test.d.ts +4 -0
  316. package/lib/test.js +18 -0
  317. package/lib/test.js.map +1 -0
  318. package/lib/theme/customGlobalStyles.js +0 -4
  319. package/lib/theme/customGlobalStyles.js.map +1 -1
  320. package/lib/theme/overrides/Typography.d.ts +13 -0
  321. package/lib/theme/overrides/Typography.js +31 -0
  322. package/lib/theme/overrides/Typography.js.map +1 -0
  323. package/lib/theme/typography.d.ts +0 -2
  324. package/lib/theme/typography.js +3 -5
  325. package/lib/theme/typography.js.map +1 -1
  326. package/lib/utils/calculatedExpression.d.ts +17 -1
  327. package/lib/utils/calculatedExpression.js +71 -20
  328. package/lib/utils/calculatedExpression.js.map +1 -1
  329. package/lib/utils/dayjsExtend.d.ts +1 -0
  330. package/lib/utils/dayjsExtend.js +22 -0
  331. package/lib/utils/dayjsExtend.js.map +1 -0
  332. package/lib/utils/enableWhenExpression.d.ts +5 -1
  333. package/lib/utils/enableWhenExpression.js +26 -21
  334. package/lib/utils/enableWhenExpression.js.map +1 -1
  335. package/lib/utils/fhirpath.d.ts +3 -1
  336. package/lib/utils/fhirpath.js +25 -15
  337. package/lib/utils/fhirpath.js.map +1 -1
  338. package/lib/utils/index.d.ts +1 -0
  339. package/lib/utils/index.js +1 -0
  340. package/lib/utils/index.js.map +1 -1
  341. package/lib/utils/initialiseForm.d.ts +2 -0
  342. package/lib/utils/initialiseForm.js +13 -5
  343. package/lib/utils/initialiseForm.js.map +1 -1
  344. package/lib/utils/itemControl.d.ts +12 -0
  345. package/lib/utils/itemControl.js +30 -0
  346. package/lib/utils/itemControl.js.map +1 -1
  347. package/lib/utils/launchContext.d.ts +0 -0
  348. package/lib/utils/launchContext.js +2 -0
  349. package/lib/utils/launchContext.js.map +1 -0
  350. package/lib/utils/mapItem.d.ts +1 -1
  351. package/lib/utils/qrItem.d.ts +1 -7
  352. package/lib/utils/qrItem.js +1 -12
  353. package/lib/utils/qrItem.js.map +1 -1
  354. package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js +4 -2
  355. package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js.map +1 -1
  356. package/lib/utils/removeHidden.js +2 -1
  357. package/lib/utils/removeHidden.js.map +1 -1
  358. package/lib/utils/repopulateIntoResponse.js +90 -29
  359. package/lib/utils/repopulateIntoResponse.js.map +1 -1
  360. package/lib/utils/repopulateItems.d.ts +14 -1
  361. package/lib/utils/repopulateItems.js +251 -70
  362. package/lib/utils/repopulateItems.js.map +1 -1
  363. package/lib/utils/repopulateRepeatGroup.js +9 -1
  364. package/lib/utils/repopulateRepeatGroup.js.map +1 -1
  365. package/lib/utils/slider.d.ts +28 -0
  366. package/lib/utils/slider.js +89 -0
  367. package/lib/utils/slider.js.map +1 -0
  368. package/package.json +20 -18
  369. package/src/components/FormComponents/BooleanItem/BooleanItem.tsx +10 -7
  370. package/src/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.tsx +11 -8
  371. package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.tsx +46 -35
  372. package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.tsx +48 -37
  373. package/src/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.tsx +21 -11
  374. package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.tsx +11 -10
  375. package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.tsx +12 -9
  376. package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.tsx +3 -2
  377. package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.tsx +16 -11
  378. package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.tsx +3 -2
  379. package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.tsx +14 -9
  380. package/src/components/FormComponents/CustomDateItem/CustomDateItem.tsx +140 -0
  381. package/src/components/FormComponents/CustomDateItem/customDateTimePicker/CustomDateField.tsx +96 -0
  382. package/src/components/FormComponents/CustomDateItem/customDateTimePicker/DatePicker.tsx +81 -0
  383. package/src/components/FormComponents/CustomDateItem/customDateTimePicker/DatePickerButton.tsx +33 -0
  384. package/src/components/FormComponents/{Typography.styles.ts → CustomDateItem/customDateTimePicker/MuiDatePicker.ts} +4 -7
  385. package/src/components/FormComponents/CustomDateItem/customDateTimePicker/index.ts +18 -0
  386. package/src/components/FormComponents/CustomDateItem/customDateTimePicker/utils/index.ts +18 -0
  387. package/src/components/FormComponents/CustomDateItem/customDateTimePicker/utils/parseDates.ts +154 -0
  388. package/src/components/FormComponents/CustomDateItem/index.ts +18 -0
  389. package/src/components/FormComponents/DateItem/DateItem.tsx +10 -8
  390. package/src/components/FormComponents/DateTimeItem/DateTimeItem.tsx +10 -8
  391. package/src/components/FormComponents/DecimalItem/DecimalItem.tsx +11 -10
  392. package/src/components/FormComponents/DisplayItem/DisplayInstructions.styles.ts +0 -1
  393. package/src/components/FormComponents/DisplayItem/DisplayInstructions.tsx +8 -3
  394. package/src/components/FormComponents/DisplayItem/DisplayItem.tsx +2 -2
  395. package/src/components/FormComponents/GridGroup/GridGroup.tsx +49 -15
  396. package/src/components/FormComponents/GridGroup/GridRow.tsx +12 -7
  397. package/src/components/FormComponents/GridGroup/GridTable.tsx +32 -8
  398. package/src/components/FormComponents/GridGroup/index.ts +18 -0
  399. package/src/components/FormComponents/GroupItem/GroupHeading.tsx +12 -6
  400. package/src/components/FormComponents/GroupItem/GroupItem.tsx +13 -8
  401. package/src/components/FormComponents/GroupItem/GroupItemSwitcher.tsx +33 -11
  402. package/src/components/FormComponents/IntegerItem/IntegerItem.tsx +11 -10
  403. package/src/components/FormComponents/Item.styles.ts +0 -5
  404. package/src/components/FormComponents/ItemParts/FadingCheckIcon.tsx +2 -2
  405. package/src/components/FormComponents/ItemParts/ItemFieldGrid.tsx +6 -5
  406. package/src/components/FormComponents/ItemParts/ItemLabelText.tsx +10 -5
  407. package/src/components/FormComponents/ItemParts/ItemLabelWrapper.tsx +3 -2
  408. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.tsx +10 -4
  409. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.tsx +15 -9
  410. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.tsx +58 -47
  411. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.tsx +15 -6
  412. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.tsx +13 -10
  413. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.tsx +10 -4
  414. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.tsx +12 -7
  415. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.tsx +10 -4
  416. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.tsx +14 -9
  417. package/src/components/FormComponents/RepeatGroup/AddItemButton.tsx +3 -2
  418. package/src/components/FormComponents/RepeatGroup/DeleteItemButton.tsx +3 -2
  419. package/src/components/FormComponents/RepeatGroup/RepeatGroup.tsx +61 -10
  420. package/src/components/FormComponents/RepeatGroup/RepeatGroupItem.tsx +23 -7
  421. package/src/components/FormComponents/RepeatItem/AddItemButton.tsx +3 -2
  422. package/src/components/FormComponents/RepeatItem/DeleteItemButton.tsx +3 -2
  423. package/src/components/FormComponents/RepeatItem/RepeatField.tsx +33 -9
  424. package/src/components/FormComponents/RepeatItem/RepeatItem.tsx +44 -7
  425. package/src/components/FormComponents/RepeatItem/index.ts +18 -0
  426. package/src/components/FormComponents/SingleItem/SingleItem.tsx +12 -6
  427. package/src/components/FormComponents/SingleItem/SingleItemSwitcher.tsx +41 -11
  428. package/src/components/FormComponents/SliderItem/Slider.styles.ts +34 -0
  429. package/src/components/FormComponents/SliderItem/SliderDisplayValue.tsx +43 -0
  430. package/src/components/FormComponents/SliderItem/SliderField.tsx +88 -0
  431. package/src/components/FormComponents/SliderItem/SliderItem.tsx +115 -0
  432. package/src/components/FormComponents/SliderItem/SliderLabels.tsx +53 -0
  433. package/src/components/FormComponents/StringItem/StringItem.tsx +9 -7
  434. package/src/components/FormComponents/Tables/AddRowButton.tsx +3 -2
  435. package/src/components/FormComponents/Tables/DeleteRowButton.tsx +3 -2
  436. package/src/components/FormComponents/Tables/GroupTable.tsx +70 -7
  437. package/src/components/FormComponents/Tables/GroupTableRow.tsx +12 -7
  438. package/src/components/FormComponents/TextItem/TextItem.tsx +9 -7
  439. package/src/components/FormComponents/TimeItem/TimeItem.tsx +10 -8
  440. package/src/components/FormComponents/UrlItem/UrlItem.tsx +9 -7
  441. package/src/components/FormComponents/index.ts +3 -0
  442. package/src/components/Renderer/BaseRenderer.tsx +5 -12
  443. package/src/components/Renderer/FormBodyCollapsible.tsx +9 -7
  444. package/src/components/Renderer/FormBodySingleCollapsibleWrapper.tsx +2 -3
  445. package/src/components/Renderer/FormBodyTabbed.tsx +9 -7
  446. package/src/components/Renderer/FormTopLevelItem.tsx +21 -13
  447. package/src/components/Tabs/FormBodySingleTab.tsx +1 -1
  448. package/src/components/Tabs/ShowCompletedTabsSection.tsx +1 -1
  449. package/src/hooks/useDateValidation.tsx +79 -0
  450. package/src/hooks/useDecimalCalculatedExpression.ts +3 -4
  451. package/src/hooks/useInitialiseRepeatAnswers.ts +1 -1
  452. package/src/hooks/useIntegerCalculatedExpression.ts +3 -4
  453. package/src/hooks/useReadOnly.ts +30 -0
  454. package/src/hooks/useSliderExtensions.ts +50 -0
  455. package/src/hooks/useTerminologyServerQuery.ts +0 -2
  456. package/src/index.ts +12 -9
  457. package/src/interfaces/calculatedExpression.interface.ts +1 -1
  458. package/src/interfaces/questionnaireStore.interface.ts +1 -0
  459. package/src/interfaces/renderProps.interface.ts +8 -3
  460. package/src/stores/useQuestionnaireStore.ts +39 -16
  461. package/src/theme/customGlobalStyles.tsx +0 -4
  462. package/src/theme/typography.ts +3 -5
  463. package/src/utils/calculatedExpression.ts +104 -35
  464. package/src/utils/dayjsExtend.ts +23 -0
  465. package/src/utils/enableWhenExpression.ts +49 -34
  466. package/src/utils/fhirpath.ts +50 -31
  467. package/src/utils/index.ts +1 -0
  468. package/src/utils/initialiseForm.ts +15 -5
  469. package/src/utils/itemControl.ts +32 -0
  470. package/src/utils/mapItem.ts +1 -1
  471. package/src/utils/qrItem.ts +1 -16
  472. package/src/utils/questionnaireStoreUtils/createQuestionaireModel.ts +4 -2
  473. package/src/utils/removeHidden.ts +2 -1
  474. package/src/utils/repopulateIntoResponse.ts +134 -43
  475. package/src/utils/repopulateItems.ts +379 -101
  476. package/src/utils/slider.ts +112 -0
  477. package/src/utils/repopulateRepeatGroup.ts +0 -68
@@ -22,6 +22,7 @@ import type {
22
22
  Expression,
23
23
  Questionnaire,
24
24
  QuestionnaireItem,
25
+ QuestionnaireItemAnswerOption,
25
26
  QuestionnaireResponse,
26
27
  QuestionnaireResponseItem,
27
28
  QuestionnaireResponseItemAnswer
@@ -32,52 +33,69 @@ import { createFhirPathContext } from './fhirpath';
32
33
  import { getQrItemsIndex, mapQItemsIndex } from './mapItem';
33
34
  import { updateQrItemsInGroup } from './qrItem';
34
35
  import cloneDeep from 'lodash.clonedeep';
36
+ import dayjs from 'dayjs';
37
+ import moment from 'moment';
35
38
 
36
39
  interface EvaluateInitialCalculatedExpressionsParams {
37
40
  initialResponse: QuestionnaireResponse;
38
41
  calculatedExpressions: Record<string, CalculatedExpression>;
39
42
  variablesFhirPath: Record<string, Expression[]>;
43
+ existingFhirPathContext: Record<string, any>;
40
44
  }
41
45
 
42
46
  export function evaluateInitialCalculatedExpressions(
43
47
  params: EvaluateInitialCalculatedExpressionsParams
44
- ): Record<string, CalculatedExpression> {
45
- const { initialResponse, calculatedExpressions, variablesFhirPath } = params;
48
+ ): {
49
+ initialCalculatedExpressions: Record<string, CalculatedExpression>;
50
+ updatedFhirPathContext: Record<string, any>;
51
+ } {
52
+ const { initialResponse, calculatedExpressions, variablesFhirPath, existingFhirPathContext } =
53
+ params;
46
54
 
47
- // Return early if initialResponse is empty
48
- if (_isEqual(initialResponse, cloneDeep(emptyResponse))) {
49
- return calculatedExpressions;
55
+ // Return early if initialResponse is empty or there are no calculated expressions to evaluate
56
+ if (
57
+ _isEqual(initialResponse, cloneDeep(emptyResponse)) ||
58
+ Object.keys(calculatedExpressions).length === 0
59
+ ) {
60
+ return {
61
+ initialCalculatedExpressions: calculatedExpressions,
62
+ updatedFhirPathContext: existingFhirPathContext
63
+ };
50
64
  }
51
65
 
52
- const initialExpressions: Record<string, CalculatedExpression> = { ...calculatedExpressions };
53
-
54
- if (Object.keys(initialExpressions).length > 0) {
55
- const fhirPathContext: Record<string, any> = createFhirPathContext(
56
- initialResponse,
57
- variablesFhirPath
58
- );
66
+ const initialCalculatedExpressions: Record<string, CalculatedExpression> = {
67
+ ...calculatedExpressions
68
+ };
69
+ const updatedFhirPathContext = createFhirPathContext(
70
+ initialResponse,
71
+ variablesFhirPath,
72
+ existingFhirPathContext
73
+ );
59
74
 
60
- for (const linkId in initialExpressions) {
61
- try {
62
- const result = fhirpath.evaluate(
63
- initialResponse,
64
- calculatedExpressions[linkId].expression,
65
- fhirPathContext,
66
- fhirpath_r4_model
67
- );
75
+ for (const linkId in initialCalculatedExpressions) {
76
+ try {
77
+ const result = fhirpath.evaluate(
78
+ initialResponse,
79
+ calculatedExpressions[linkId].expression,
80
+ updatedFhirPathContext,
81
+ fhirpath_r4_model
82
+ );
68
83
 
69
- if (calculatedExpressions[linkId].value !== result[0]) {
70
- initialExpressions[linkId].value = result[0];
71
- }
72
- } catch (e) {
73
- console.warn(
74
- e.message,
75
- `LinkId: ${linkId}\nExpression: ${calculatedExpressions[linkId].expression}`
76
- );
84
+ if (!_isEqual(calculatedExpressions[linkId].value, result[0])) {
85
+ initialCalculatedExpressions[linkId].value = result[0];
77
86
  }
87
+ } catch (e) {
88
+ console.warn(
89
+ e.message,
90
+ `LinkId: ${linkId}\nExpression: ${calculatedExpressions[linkId].expression}`
91
+ );
78
92
  }
79
93
  }
80
- return initialExpressions;
94
+
95
+ return {
96
+ initialCalculatedExpressions,
97
+ updatedFhirPathContext
98
+ };
81
99
  }
82
100
 
83
101
  export function evaluateCalculatedExpressions(
@@ -102,7 +120,7 @@ export function evaluateCalculatedExpressions(
102
120
  );
103
121
 
104
122
  if (result.length > 0) {
105
- if (calculatedExpressions[linkId].value !== result[0]) {
123
+ if (!_isEqual(calculatedExpressions[linkId].value, result[0])) {
106
124
  isUpdated = true;
107
125
  updatedCalculatedExpressions[linkId].value = result[0];
108
126
  }
@@ -283,17 +301,68 @@ function constructSingleItem(
283
301
  };
284
302
  }
285
303
 
286
- function parseValueToAnswer(
287
- qItem: QuestionnaireItem,
288
- value: string | number
289
- ): QuestionnaireResponseItemAnswer {
304
+ // duplicate functions in sdc-populate
305
+ function parseValueToAnswer(qItem: QuestionnaireItem, value: any): QuestionnaireResponseItemAnswer {
306
+ if (qItem.answerOption) {
307
+ const answerOption = qItem.answerOption.find(
308
+ (option: QuestionnaireItemAnswerOption) => option.valueCoding?.code === value?.code
309
+ );
310
+
311
+ if (answerOption) {
312
+ return answerOption;
313
+ }
314
+ }
315
+
316
+ if (typeof value === 'boolean' && qItem.type === 'boolean') {
317
+ return { valueBoolean: value };
318
+ }
319
+
290
320
  if (typeof value === 'number') {
321
+ if (qItem.type === 'decimal') {
322
+ return { valueDecimal: value };
323
+ }
291
324
  if (qItem.type === 'integer') {
292
325
  return { valueInteger: value };
293
326
  }
327
+ }
328
+
329
+ if (typeof value === 'object') {
330
+ return { valueCoding: value };
331
+ }
294
332
 
295
- return { valueDecimal: value };
333
+ // Value is string at this point
334
+ if (qItem.type === 'date' && checkIsDateTime(value)) {
335
+ return { valueDate: value };
336
+ }
337
+
338
+ if (qItem.type === 'dateTime' && checkIsDateTime(value)) {
339
+ return { valueDateTime: value };
340
+ }
341
+
342
+ if (qItem.type === 'time' && checkIsTime(value)) {
343
+ return { valueTime: value };
296
344
  }
297
345
 
298
346
  return { valueString: value };
299
347
  }
348
+
349
+ /**
350
+ * Check if an answer is a datetime in the format YYYY, YYYY-MM, YYYY-MM-DD, YYYY-MM-DDThh:mm:ss+zz:zz
351
+ *
352
+ * @author Sean Fong
353
+ */
354
+ export function checkIsDateTime(value: string): boolean {
355
+ const acceptedFormats = ['YYYY', 'YYYY-MM', 'YYYY-MM-DD', 'YYYY-MM-DDTHH:mm:ssZ'];
356
+ const formattedDate = dayjs(value).format();
357
+ return moment(formattedDate, acceptedFormats, true).isValid();
358
+ }
359
+
360
+ /**
361
+ * Check if an answer is in a time format - Regex: ([01][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)(\.[0-9]+)?
362
+ *
363
+ * @author Sean Fong
364
+ */
365
+ export function checkIsTime(value: string): boolean {
366
+ const timeRegex = /^([01][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)(\.[0-9]+)?$/;
367
+ return timeRegex.test(value);
368
+ }
@@ -0,0 +1,23 @@
1
+ /*
2
+ * Copyright 2023 Commonwealth Scientific and Industrial Research
3
+ * Organisation (CSIRO) ABN 41 687 119 230.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ import dayjs from 'dayjs';
19
+ import localizedFormat from 'dayjs/plugin/localizedFormat';
20
+ import customParseFormat from 'dayjs/plugin/customParseFormat';
21
+
22
+ dayjs.extend(localizedFormat);
23
+ dayjs.extend(customParseFormat);
@@ -28,52 +28,67 @@ interface EvaluateInitialEnableWhenExpressionsParams {
28
28
  initialResponse: QuestionnaireResponse;
29
29
  enableWhenExpressions: Record<string, EnableWhenExpression>;
30
30
  variablesFhirPath: Record<string, Expression[]>;
31
+ existingFhirPathContext: Record<string, any>;
31
32
  }
32
33
 
33
34
  export function evaluateInitialEnableWhenExpressions(
34
35
  params: EvaluateInitialEnableWhenExpressionsParams
35
- ): Record<string, EnableWhenExpression> {
36
- const { initialResponse, enableWhenExpressions, variablesFhirPath } = params;
36
+ ): {
37
+ initialEnableWhenExpressions: Record<string, EnableWhenExpression>;
38
+ updatedFhirPathContext: Record<string, any>;
39
+ } {
40
+ const { initialResponse, enableWhenExpressions, variablesFhirPath, existingFhirPathContext } =
41
+ params;
37
42
 
38
- // Return early if initialResponse is empty
39
- if (_isEqual(initialResponse, cloneDeep(emptyResponse))) {
40
- return enableWhenExpressions;
43
+ // Return early if initialResponse is empty or there are no enableWhen expressions to evaluate
44
+ if (
45
+ _isEqual(initialResponse, cloneDeep(emptyResponse)) ||
46
+ Object.keys(enableWhenExpressions).length === 0
47
+ ) {
48
+ return {
49
+ initialEnableWhenExpressions: enableWhenExpressions,
50
+ updatedFhirPathContext: existingFhirPathContext
51
+ };
41
52
  }
42
53
 
43
- const initialExpressions: Record<string, EnableWhenExpression> = { ...enableWhenExpressions };
44
-
45
- if (Object.keys(initialExpressions).length > 0) {
46
- const fhirPathContext: Record<string, any> = createFhirPathContext(
47
- initialResponse,
48
- variablesFhirPath
49
- );
54
+ const initialEnableWhenExpressions: Record<string, EnableWhenExpression> = {
55
+ ...enableWhenExpressions
56
+ };
57
+ const updatedFhirPathContext = createFhirPathContext(
58
+ initialResponse,
59
+ variablesFhirPath,
60
+ existingFhirPathContext
61
+ );
50
62
 
51
- for (const linkId in initialExpressions) {
52
- try {
53
- const result = fhirpath.evaluate(
54
- initialResponse,
55
- enableWhenExpressions[linkId].expression,
56
- fhirPathContext,
57
- fhirpath_r4_model
58
- );
63
+ for (const linkId in initialEnableWhenExpressions) {
64
+ try {
65
+ const result = fhirpath.evaluate(
66
+ initialResponse,
67
+ enableWhenExpressions[linkId].expression,
68
+ updatedFhirPathContext,
69
+ fhirpath_r4_model
70
+ );
59
71
 
60
- if (result.length > 0) {
61
- initialExpressions[linkId].isEnabled = result[0];
62
- }
72
+ if (result.length > 0) {
73
+ initialEnableWhenExpressions[linkId].isEnabled = result[0];
74
+ }
63
75
 
64
- // handle intersect edge case - evualate() returns empty array if result is false
65
- if (enableWhenExpressions[linkId].expression.includes('intersect') && result.length === 0) {
66
- initialExpressions[linkId].isEnabled = false;
67
- }
68
- } catch (e) {
69
- console.warn(
70
- e.message,
71
- `LinkId: ${linkId}\nExpression: ${enableWhenExpressions[linkId].expression}`
72
- );
76
+ // handle intersect edge case - evaluate() returns empty array if result is false
77
+ if (enableWhenExpressions[linkId].expression.includes('intersect') && result.length === 0) {
78
+ initialEnableWhenExpressions[linkId].isEnabled = false;
73
79
  }
80
+ } catch (e) {
81
+ console.warn(
82
+ e.message,
83
+ `LinkId: ${linkId}\nExpression: ${enableWhenExpressions[linkId].expression}`
84
+ );
74
85
  }
75
86
  }
76
- return initialExpressions;
87
+
88
+ return {
89
+ initialEnableWhenExpressions,
90
+ updatedFhirPathContext
91
+ };
77
92
  }
78
93
 
79
94
  export function evaluateEnableWhenExpressions(
@@ -104,7 +119,7 @@ export function evaluateEnableWhenExpressions(
104
119
  }
105
120
  }
106
121
 
107
- // handle intersect edge case - evualate() returns empty array if result is false
122
+ // handle intersect edge case - evaluate() returns empty array if result is false
108
123
  if (enableWhenExpressions[linkId].expression.includes('intersect') && result.length === 0) {
109
124
  updatedEnableWhenExpressions[linkId].isEnabled = false;
110
125
  }
@@ -28,53 +28,72 @@ interface EvaluateUpdatedExpressionsParams {
28
28
  calculatedExpressions: Record<string, CalculatedExpression>;
29
29
  enableWhenExpressions: Record<string, EnableWhenExpression>;
30
30
  variablesFhirPath: Record<string, Expression[]>;
31
+ existingFhirPathContext: Record<string, any>;
31
32
  }
32
33
 
33
34
  export function evaluateUpdatedExpressions(params: EvaluateUpdatedExpressionsParams): {
34
35
  isUpdated: boolean;
35
36
  updatedEnableWhenExpressions: Record<string, EnableWhenExpression>;
36
37
  updatedCalculatedExpressions: Record<string, CalculatedExpression>;
38
+ updatedFhirPathContext: Record<string, any>;
37
39
  } {
38
- const { updatedResponse, enableWhenExpressions, calculatedExpressions, variablesFhirPath } =
39
- params;
40
-
41
- const hasExpressionToBeUpdated =
42
- Object.keys(enableWhenExpressions).length > 0 || Object.keys(calculatedExpressions).length > 0;
43
- if (hasExpressionToBeUpdated && updatedResponse.item) {
44
- const fhirPathContext: Record<string, any> = createFhirPathContext(
45
- updatedResponse,
46
- variablesFhirPath
47
- );
48
-
49
- // Update enableWhenExpressions
50
- const { enableWhenExpsIsUpdated, updatedEnableWhenExpressions } = evaluateEnableWhenExpressions(
51
- fhirPathContext,
52
- enableWhenExpressions
53
- );
54
-
55
- // Update calculatedExpressions
56
- const { calculatedExpsIsUpdated, updatedCalculatedExpressions } = evaluateCalculatedExpressions(
57
- fhirPathContext,
58
- calculatedExpressions
59
- );
60
-
61
- const isUpdated = enableWhenExpsIsUpdated || calculatedExpsIsUpdated;
62
-
63
- return { isUpdated, updatedEnableWhenExpressions, updatedCalculatedExpressions };
40
+ const {
41
+ updatedResponse,
42
+ enableWhenExpressions,
43
+ calculatedExpressions,
44
+ variablesFhirPath,
45
+ existingFhirPathContext
46
+ } = params;
47
+
48
+ const noExpressionsToBeUpdated =
49
+ Object.keys(enableWhenExpressions).length === 0 &&
50
+ Object.keys(calculatedExpressions).length === 0;
51
+ if (noExpressionsToBeUpdated || !updatedResponse.item) {
52
+ return {
53
+ isUpdated: false,
54
+ updatedEnableWhenExpressions: enableWhenExpressions,
55
+ updatedCalculatedExpressions: calculatedExpressions,
56
+ updatedFhirPathContext: existingFhirPathContext
57
+ };
64
58
  }
65
59
 
60
+ const updatedFhirPathContext = createFhirPathContext(
61
+ updatedResponse,
62
+ variablesFhirPath,
63
+ existingFhirPathContext
64
+ );
65
+
66
+ // Update enableWhenExpressions
67
+ const { enableWhenExpsIsUpdated, updatedEnableWhenExpressions } = evaluateEnableWhenExpressions(
68
+ updatedFhirPathContext,
69
+ enableWhenExpressions
70
+ );
71
+
72
+ // Update calculatedExpressions
73
+ const { calculatedExpsIsUpdated, updatedCalculatedExpressions } = evaluateCalculatedExpressions(
74
+ updatedFhirPathContext,
75
+ calculatedExpressions
76
+ );
77
+
78
+ const isUpdated = enableWhenExpsIsUpdated || calculatedExpsIsUpdated;
79
+
66
80
  return {
67
- isUpdated: false,
68
- updatedEnableWhenExpressions: enableWhenExpressions,
69
- updatedCalculatedExpressions: calculatedExpressions
81
+ isUpdated,
82
+ updatedEnableWhenExpressions,
83
+ updatedCalculatedExpressions,
84
+ updatedFhirPathContext
70
85
  };
71
86
  }
72
87
 
73
88
  export function createFhirPathContext(
74
89
  questionnaireResponse: QuestionnaireResponse,
75
- variablesFhirPath: Record<string, Expression[]>
90
+ variablesFhirPath: Record<string, Expression[]>,
91
+ existingFhirPathContext: Record<string, any>
76
92
  ): Record<string, any> {
77
- const fhirPathContext: Record<string, any> = { resource: questionnaireResponse };
93
+ let fhirPathContext: Record<string, any> = { resource: questionnaireResponse };
94
+ if (Object.keys(existingFhirPathContext).length > 0) {
95
+ fhirPathContext = { ...fhirPathContext, ...existingFhirPathContext };
96
+ }
78
97
 
79
98
  if (!questionnaireResponse.item || questionnaireResponse.item.length === 0) {
80
99
  return fhirPathContext;
@@ -16,3 +16,4 @@
16
16
  */
17
17
 
18
18
  export { isSpecificItemControl } from './itemControl';
19
+ export { isRepeatItemAndNotCheckbox, isHidden } from './qItem';
@@ -31,6 +31,7 @@ interface initialFormFromResponseParams {
31
31
  calculatedExpressions: Record<string, CalculatedExpression>;
32
32
  variablesFhirPath: Record<string, Expression[]>;
33
33
  tabs: Tabs;
34
+ fhirPathContext: Record<string, any>;
34
35
  }
35
36
 
36
37
  export function initialiseFormFromResponse(params: initialFormFromResponseParams): {
@@ -39,6 +40,7 @@ export function initialiseFormFromResponse(params: initialFormFromResponseParams
39
40
  initialEnableWhenExpressions: Record<string, EnableWhenExpression>;
40
41
  initialCalculatedExpressions: Record<string, CalculatedExpression>;
41
42
  firstVisibleTab: number;
43
+ updatedFhirPathContext: Record<string, any>;
42
44
  } {
43
45
  const {
44
46
  questionnaireResponse,
@@ -48,23 +50,30 @@ export function initialiseFormFromResponse(params: initialFormFromResponseParams
48
50
  variablesFhirPath,
49
51
  tabs
50
52
  } = params;
53
+ let updatedFhirPathContext = params.fhirPathContext;
51
54
 
52
55
  const { initialisedItems, linkedQuestions } = assignPopulatedAnswersToEnableWhen(
53
56
  enableWhenItems,
54
57
  questionnaireResponse
55
58
  );
56
59
 
57
- const initialEnableWhenExpressions = evaluateInitialEnableWhenExpressions({
60
+ const evaluateInitialEnableWhenExpressionsResult = evaluateInitialEnableWhenExpressions({
58
61
  initialResponse: questionnaireResponse,
59
62
  enableWhenExpressions: enableWhenExpressions,
60
- variablesFhirPath: variablesFhirPath
63
+ variablesFhirPath: variablesFhirPath,
64
+ existingFhirPathContext: updatedFhirPathContext
61
65
  });
66
+ const { initialEnableWhenExpressions } = evaluateInitialEnableWhenExpressionsResult;
67
+ updatedFhirPathContext = evaluateInitialEnableWhenExpressionsResult.updatedFhirPathContext;
62
68
 
63
- const initialCalculatedExpressions = evaluateInitialCalculatedExpressions({
69
+ const evaluateInitialCalculatedExpressionsResult = evaluateInitialCalculatedExpressions({
64
70
  initialResponse: questionnaireResponse,
65
71
  calculatedExpressions: calculatedExpressions,
66
- variablesFhirPath: variablesFhirPath
72
+ variablesFhirPath: variablesFhirPath,
73
+ existingFhirPathContext: updatedFhirPathContext
67
74
  });
75
+ const { initialCalculatedExpressions } = evaluateInitialCalculatedExpressionsResult;
76
+ updatedFhirPathContext = evaluateInitialEnableWhenExpressionsResult.updatedFhirPathContext;
68
77
 
69
78
  const firstVisibleTab =
70
79
  Object.keys(tabs).length > 0
@@ -76,6 +85,7 @@ export function initialiseFormFromResponse(params: initialFormFromResponseParams
76
85
  initialEnableWhenLinkedQuestions: linkedQuestions,
77
86
  initialEnableWhenExpressions,
78
87
  initialCalculatedExpressions,
79
- firstVisibleTab
88
+ firstVisibleTab,
89
+ updatedFhirPathContext
80
90
  };
81
91
  }
@@ -284,6 +284,38 @@ export function getTextDisplayUnit(qItem: QuestionnaireItem): string {
284
284
  return '';
285
285
  }
286
286
 
287
+ /**
288
+ * Get text display lower bound for items with itemControlCode "lower" and has a "lower" childItem
289
+ *
290
+ * @author Sean Fong
291
+ */
292
+ export function getTextDisplayLower(qItem: QuestionnaireItem): string {
293
+ if (qItem.item) {
294
+ for (const childItem of qItem.item) {
295
+ if (childItem.type === 'display' && isSpecificItemControl(childItem, 'lower')) {
296
+ return `${childItem.text}`;
297
+ }
298
+ }
299
+ }
300
+ return '';
301
+ }
302
+
303
+ /**
304
+ * Get text display upper bound for items with itemControlCode "upper" and has a "upper" childItem
305
+ *
306
+ * @author Sean Fong
307
+ */
308
+ export function getTextDisplayUpper(qItem: QuestionnaireItem): string {
309
+ if (qItem.item) {
310
+ for (const childItem of qItem.item) {
311
+ if (childItem.type === 'display' && isSpecificItemControl(childItem, 'upper')) {
312
+ return `${childItem.text}`;
313
+ }
314
+ }
315
+ }
316
+ return '';
317
+ }
318
+
287
319
  /**
288
320
  * Get text display instructions for items with itemControlCode instructions and has an instructions childItem
289
321
  *
@@ -30,7 +30,7 @@ export function getQrItemsIndex(
30
30
  qItems: QuestionnaireItem[],
31
31
  qrItems: QuestionnaireResponseItem[],
32
32
  qItemsIndexMap: Record<string, number>
33
- ): (QuestionnaireResponseItem | QuestionnaireResponseItem[])[] {
33
+ ): (QuestionnaireResponseItem | QuestionnaireResponseItem[] | undefined)[] {
34
34
  // Generate a <linkId, QrItem OR QrItems> dictionary
35
35
  const qrItemsCollected: Record<string, QuestionnaireResponseItem | QuestionnaireResponseItem[]> =
36
36
  {};
@@ -94,7 +94,7 @@ export function removeNoAnswerQrItem(
94
94
  *
95
95
  * @author Sean Fong
96
96
  */
97
- export function createQrGroup(qItem: QuestionnaireItem): QuestionnaireResponseItem {
97
+ export function createEmptyQrGroup(qItem: QuestionnaireItem): QuestionnaireResponseItem {
98
98
  return {
99
99
  linkId: qItem.linkId,
100
100
  text: qItem.text,
@@ -114,21 +114,6 @@ export function createEmptyQrItem(qItem: QuestionnaireItem): QuestionnaireRespon
114
114
  };
115
115
  }
116
116
 
117
- /**
118
- * Create an empty qrItem from a given qItem with its display unit
119
- *
120
- * @author Sean Fong
121
- */
122
- export function createEmptyQrItemWithUnit(
123
- qItem: QuestionnaireItem,
124
- unit: string
125
- ): QuestionnaireResponseItem {
126
- return {
127
- linkId: qItem.linkId,
128
- text: unit !== '' ? `${qItem.text} (${unit})` : qItem.text
129
- };
130
- }
131
-
132
117
  /**
133
118
  * Updates the QuestionnaireResponseItem group by adding/removing a new/modified child QuestionnaireResponseItem into/from a qrGroup
134
119
  * Takes either a single newQrItem or an array of newQrItems
@@ -86,7 +86,8 @@ export async function createQuestionnaireModel(
86
86
  calculatedExpressions,
87
87
  answerExpressions,
88
88
  processedValueSetCodings,
89
- processedValueSetUrls
89
+ processedValueSetUrls,
90
+ fhirPathContext: {}
90
91
  };
91
92
  }
92
93
 
@@ -101,6 +102,7 @@ function createEmptyModel(): QuestionnaireModel {
101
102
  answerExpressions: {},
102
103
  enableWhenItems: {},
103
104
  processedValueSetCodings: {},
104
- processedValueSetUrls: {}
105
+ processedValueSetUrls: {},
106
+ fhirPathContext: {}
105
107
  };
106
108
  }
@@ -100,8 +100,9 @@ function readQuestionnaireResponseItemRecursive(
100
100
  enableWhenItems,
101
101
  enableWhenExpressions
102
102
  })
103
- )
103
+ ) {
104
104
  return null;
105
+ }
105
106
 
106
107
  if (qrItems && qrItems.length > 0) {
107
108
  const newQrItems: QuestionnaireResponseItem[] = [];