@aehrc/smart-forms-renderer 0.3.0 → 0.5.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 (710) hide show
  1. package/.storybook/main.ts +28 -0
  2. package/.storybook/preview.ts +34 -0
  3. package/__mocks__/zustand.ts +60 -0
  4. package/jest.config.ts +16 -0
  5. package/lib/api/populate.js +63 -0
  6. package/lib/api/populate.js.map +1 -0
  7. package/{dist → lib}/components/Alert.styles.d.ts +5 -5
  8. package/lib/components/Alert.styles.js +40 -0
  9. package/lib/components/Alert.styles.js.map +1 -0
  10. package/lib/components/BackToTopButton/BackToTopButton.js +32 -0
  11. package/lib/components/BackToTopButton/BackToTopButton.js.map +1 -0
  12. package/{dist → lib}/components/Box.styles.d.ts +15 -15
  13. package/lib/components/Box.styles.js +30 -0
  14. package/lib/components/Box.styles.js.map +1 -0
  15. package/lib/components/FormComponents/BooleanItem/BooleanField.js +24 -0
  16. package/lib/components/FormComponents/BooleanItem/BooleanField.js.map +1 -0
  17. package/lib/components/FormComponents/BooleanItem/BooleanItem.js +49 -0
  18. package/lib/components/FormComponents/BooleanItem/BooleanItem.js.map +1 -0
  19. package/lib/components/FormComponents/DateItem/DateField.js +31 -0
  20. package/lib/components/FormComponents/DateItem/DateField.js.map +1 -0
  21. package/lib/components/FormComponents/DateItem/DateItem.js +52 -0
  22. package/lib/components/FormComponents/DateItem/DateItem.js.map +1 -0
  23. package/lib/components/FormComponents/DateTimeItem/DateTimeField.js +33 -0
  24. package/lib/components/FormComponents/DateTimeItem/DateTimeField.js.map +1 -0
  25. package/lib/components/FormComponents/DateTimeItem/DateTimeItem.js +52 -0
  26. package/lib/components/FormComponents/DateTimeItem/DateTimeItem.js.map +1 -0
  27. package/lib/components/FormComponents/DecimalItem/DecimalField.js +30 -0
  28. package/lib/components/FormComponents/DecimalItem/DecimalField.js.map +1 -0
  29. package/lib/components/FormComponents/DecimalItem/DecimalItem.js +80 -0
  30. package/lib/components/FormComponents/DecimalItem/DecimalItem.js.map +1 -0
  31. package/lib/components/FormComponents/DisplayItem/DisplayInstructions.js +26 -0
  32. package/lib/components/FormComponents/DisplayItem/DisplayInstructions.js.map +1 -0
  33. package/{dist → lib}/components/FormComponents/DisplayItem/DisplayInstructions.styles.d.ts +5 -5
  34. package/lib/components/FormComponents/DisplayItem/DisplayInstructions.styles.js +23 -0
  35. package/lib/components/FormComponents/DisplayItem/DisplayInstructions.styles.js.map +1 -0
  36. package/lib/components/FormComponents/DisplayItem/DisplayItem.js +31 -0
  37. package/lib/components/FormComponents/DisplayItem/DisplayItem.js.map +1 -0
  38. package/{dist → lib}/components/FormComponents/GridGroup/GridGroup.d.ts +1 -1
  39. package/lib/components/FormComponents/GridGroup/GridGroup.js +58 -0
  40. package/lib/components/FormComponents/GridGroup/GridGroup.js.map +1 -0
  41. package/{dist → lib}/components/FormComponents/GridGroup/GridRow.d.ts +1 -1
  42. package/lib/components/FormComponents/GridGroup/GridRow.js +55 -0
  43. package/lib/components/FormComponents/GridGroup/GridRow.js.map +1 -0
  44. package/lib/components/FormComponents/GridGroup/GridTable.js +42 -0
  45. package/lib/components/FormComponents/GridGroup/GridTable.js.map +1 -0
  46. package/lib/components/FormComponents/GroupItem/GroupHeading.js +39 -0
  47. package/lib/components/FormComponents/GroupItem/GroupHeading.js.map +1 -0
  48. package/{dist → lib}/components/FormComponents/GroupItem/GroupItem.d.ts +1 -1
  49. package/lib/components/FormComponents/GroupItem/GroupItem.js +62 -0
  50. package/lib/components/FormComponents/GroupItem/GroupItem.js.map +1 -0
  51. package/{dist → lib}/components/FormComponents/GroupItem/GroupItem.styles.d.ts +5 -5
  52. package/lib/components/FormComponents/GroupItem/GroupItem.styles.js +27 -0
  53. package/lib/components/FormComponents/GroupItem/GroupItem.styles.js.map +1 -0
  54. package/{dist → lib}/components/FormComponents/GroupItem/GroupItemSwitcher.d.ts +1 -1
  55. package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.js +73 -0
  56. package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.js.map +1 -0
  57. package/lib/components/FormComponents/GroupItem/NextTabButton.js +25 -0
  58. package/lib/components/FormComponents/GroupItem/NextTabButton.js.map +1 -0
  59. package/lib/components/FormComponents/GroupItem/NextTabButtonWrapper.js +55 -0
  60. package/lib/components/FormComponents/GroupItem/NextTabButtonWrapper.js.map +1 -0
  61. package/lib/components/FormComponents/IntegerItem/IntegerField.js +30 -0
  62. package/lib/components/FormComponents/IntegerItem/IntegerField.js.map +1 -0
  63. package/lib/components/FormComponents/IntegerItem/IntegerItem.js +73 -0
  64. package/lib/components/FormComponents/IntegerItem/IntegerItem.js.map +1 -0
  65. package/lib/components/FormComponents/Item.styles.d.ts +6 -0
  66. package/lib/components/FormComponents/Item.styles.js +27 -0
  67. package/lib/components/FormComponents/Item.styles.js.map +1 -0
  68. package/lib/components/FormComponents/ItemParts/ContextDisplayItem.js +29 -0
  69. package/lib/components/FormComponents/ItemParts/ContextDisplayItem.js.map +1 -0
  70. package/lib/components/FormComponents/ItemParts/FadingCheckIcon.js +26 -0
  71. package/lib/components/FormComponents/ItemParts/FadingCheckIcon.js.map +1 -0
  72. package/lib/components/FormComponents/ItemParts/ItemFieldGrid.js +31 -0
  73. package/lib/components/FormComponents/ItemParts/ItemFieldGrid.js.map +1 -0
  74. package/lib/components/FormComponents/ItemParts/ItemLabelText.js +45 -0
  75. package/lib/components/FormComponents/ItemParts/ItemLabelText.js.map +1 -0
  76. package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.js +32 -0
  77. package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.js.map +1 -0
  78. package/lib/components/FormComponents/ItemParts/QItemCheckboxSingle.js +24 -0
  79. package/lib/components/FormComponents/ItemParts/QItemCheckboxSingle.js.map +1 -0
  80. package/lib/components/FormComponents/ItemParts/QItemCheckboxSingleWithOpenLabel.js +33 -0
  81. package/lib/components/FormComponents/ItemParts/QItemCheckboxSingleWithOpenLabel.js.map +1 -0
  82. package/lib/components/FormComponents/ItemParts/QItemRadioButtonWithOpenLabel.js +31 -0
  83. package/lib/components/FormComponents/ItemParts/QItemRadioButtonWithOpenLabel.js.map +1 -0
  84. package/{dist → lib}/components/FormComponents/Lists.styles.d.ts +5 -5
  85. package/lib/components/FormComponents/Lists.styles.js +38 -0
  86. package/lib/components/FormComponents/Lists.styles.js.map +1 -0
  87. package/{dist → lib}/components/FormComponents/QItemChoice/QItemChoice.d.ts +1 -1
  88. package/lib/components/FormComponents/QItemChoice/QItemChoice.js +61 -0
  89. package/lib/components/FormComponents/QItemChoice/QItemChoice.js.map +1 -0
  90. package/{dist → lib}/components/FormComponents/QItemChoice/QItemChoiceAutocomplete.d.ts +1 -1
  91. package/lib/components/FormComponents/QItemChoice/QItemChoiceAutocomplete.js +85 -0
  92. package/lib/components/FormComponents/QItemChoice/QItemChoiceAutocomplete.js.map +1 -0
  93. package/lib/components/FormComponents/QItemChoice/QItemChoiceCheckboxAnswerOption.js +70 -0
  94. package/lib/components/FormComponents/QItemChoice/QItemChoiceCheckboxAnswerOption.js.map +1 -0
  95. package/lib/components/FormComponents/QItemChoice/QItemChoiceCheckboxAnswerValueSet.js +66 -0
  96. package/lib/components/FormComponents/QItemChoice/QItemChoiceCheckboxAnswerValueSet.js.map +1 -0
  97. package/lib/components/FormComponents/QItemChoice/QItemChoiceRadioAnswerOption.js +70 -0
  98. package/lib/components/FormComponents/QItemChoice/QItemChoiceRadioAnswerOption.js.map +1 -0
  99. package/lib/components/FormComponents/QItemChoice/QItemChoiceRadioAnswerValueSet.js +70 -0
  100. package/lib/components/FormComponents/QItemChoice/QItemChoiceRadioAnswerValueSet.js.map +1 -0
  101. package/lib/components/FormComponents/QItemChoice/QItemChoiceRadioSingle.js +24 -0
  102. package/lib/components/FormComponents/QItemChoice/QItemChoiceRadioSingle.js.map +1 -0
  103. package/lib/components/FormComponents/QItemChoice/QItemChoiceSelectAnswerOption.js +70 -0
  104. package/lib/components/FormComponents/QItemChoice/QItemChoiceSelectAnswerOption.js.map +1 -0
  105. package/lib/components/FormComponents/QItemChoice/QItemChoiceSelectAnswerValueSet.js +80 -0
  106. package/lib/components/FormComponents/QItemChoice/QItemChoiceSelectAnswerValueSet.js.map +1 -0
  107. package/{dist → lib}/components/FormComponents/QItemOpenChoice/QItemOpenChoice.d.ts +1 -1
  108. package/lib/components/FormComponents/QItemOpenChoice/QItemOpenChoice.js +49 -0
  109. package/lib/components/FormComponents/QItemOpenChoice/QItemOpenChoice.js.map +1 -0
  110. package/{dist → lib}/components/FormComponents/QItemOpenChoice/QItemOpenChoiceAutocomplete.d.ts +1 -1
  111. package/lib/components/FormComponents/QItemOpenChoice/QItemOpenChoiceAutocomplete.js +104 -0
  112. package/lib/components/FormComponents/QItemOpenChoice/QItemOpenChoiceAutocomplete.js.map +1 -0
  113. package/lib/components/FormComponents/QItemOpenChoice/QItemOpenChoiceCheckboxAnswerOption.js +105 -0
  114. package/lib/components/FormComponents/QItemOpenChoice/QItemOpenChoiceCheckboxAnswerOption.js.map +1 -0
  115. package/lib/components/FormComponents/QItemOpenChoice/QItemOpenChoiceRadioAnswerOption.js +116 -0
  116. package/lib/components/FormComponents/QItemOpenChoice/QItemOpenChoiceRadioAnswerOption.js.map +1 -0
  117. package/{dist → lib}/components/FormComponents/QItemOpenChoice/QItemOpenChoiceSelectAnswerOption.d.ts +1 -1
  118. package/lib/components/FormComponents/QItemOpenChoice/QItemOpenChoiceSelectAnswerOption.js +74 -0
  119. package/lib/components/FormComponents/QItemOpenChoice/QItemOpenChoiceSelectAnswerOption.js.map +1 -0
  120. package/lib/components/FormComponents/QItemOpenChoice/QItemOpenChoiceSelectAnswerValueSet.js +66 -0
  121. package/lib/components/FormComponents/QItemOpenChoice/QItemOpenChoiceSelectAnswerValueSet.js.map +1 -0
  122. package/lib/components/FormComponents/RepeatGroup/AddItemButton.js +27 -0
  123. package/lib/components/FormComponents/RepeatGroup/AddItemButton.js.map +1 -0
  124. package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.js +30 -0
  125. package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.js.map +1 -0
  126. package/lib/components/FormComponents/RepeatGroup/RepeatGroup.js +81 -0
  127. package/lib/components/FormComponents/RepeatGroup/RepeatGroup.js.map +1 -0
  128. package/lib/components/FormComponents/RepeatGroup/RepeatGroupItem.js +30 -0
  129. package/lib/components/FormComponents/RepeatGroup/RepeatGroupItem.js.map +1 -0
  130. package/lib/components/FormComponents/RepeatItem/AddItemButton.js +27 -0
  131. package/lib/components/FormComponents/RepeatItem/AddItemButton.js.map +1 -0
  132. package/lib/components/FormComponents/RepeatItem/DeleteItemButton.js +30 -0
  133. package/lib/components/FormComponents/RepeatItem/DeleteItemButton.js.map +1 -0
  134. package/lib/components/FormComponents/RepeatItem/RepeatField.js +31 -0
  135. package/lib/components/FormComponents/RepeatItem/RepeatField.js.map +1 -0
  136. package/lib/components/FormComponents/RepeatItem/RepeatItem.js +69 -0
  137. package/lib/components/FormComponents/RepeatItem/RepeatItem.js.map +1 -0
  138. package/lib/components/FormComponents/RepeatItem/RepeatItem.styles.d.ts +22 -0
  139. package/lib/components/FormComponents/RepeatItem/RepeatItem.styles.js +29 -0
  140. package/lib/components/FormComponents/RepeatItem/RepeatItem.styles.js.map +1 -0
  141. package/lib/components/FormComponents/SingleItem/SingleItem.js +32 -0
  142. package/lib/components/FormComponents/SingleItem/SingleItem.js.map +1 -0
  143. package/lib/components/FormComponents/SingleItem/SingleItemSwitcher.js +63 -0
  144. package/lib/components/FormComponents/SingleItem/SingleItemSwitcher.js.map +1 -0
  145. package/lib/components/FormComponents/StringItem/StringField.js +30 -0
  146. package/lib/components/FormComponents/StringItem/StringField.js.map +1 -0
  147. package/lib/components/FormComponents/StringItem/StringItem.js +71 -0
  148. package/lib/components/FormComponents/StringItem/StringItem.js.map +1 -0
  149. package/lib/components/FormComponents/Tables/DeleteRowButton.js +31 -0
  150. package/lib/components/FormComponents/Tables/DeleteRowButton.js.map +1 -0
  151. package/{dist → lib}/components/FormComponents/Tables/QItemGroupTable.d.ts +1 -1
  152. package/lib/components/FormComponents/Tables/QItemGroupTable.js +99 -0
  153. package/lib/components/FormComponents/Tables/QItemGroupTable.js.map +1 -0
  154. package/{dist → lib}/components/FormComponents/Tables/QItemGroupTableRow.d.ts +1 -1
  155. package/lib/components/FormComponents/Tables/QItemGroupTableRow.js +46 -0
  156. package/lib/components/FormComponents/Tables/QItemGroupTableRow.js.map +1 -0
  157. package/lib/components/FormComponents/Tables/Table.styles.js +46 -0
  158. package/lib/components/FormComponents/Tables/Table.styles.js.map +1 -0
  159. package/lib/components/FormComponents/TextItem/TextField.js +29 -0
  160. package/lib/components/FormComponents/TextItem/TextField.js.map +1 -0
  161. package/lib/components/FormComponents/TextItem/TextItem.js +71 -0
  162. package/lib/components/FormComponents/TextItem/TextItem.js.map +1 -0
  163. package/{dist → lib}/components/FormComponents/Textfield.styles.d.ts +1 -1
  164. package/lib/components/FormComponents/Textfield.styles.js +27 -0
  165. package/lib/components/FormComponents/Textfield.styles.js.map +1 -0
  166. package/lib/components/FormComponents/TimeItem/TimeField.js +30 -0
  167. package/lib/components/FormComponents/TimeItem/TimeField.js.map +1 -0
  168. package/lib/components/FormComponents/TimeItem/TimeItem.js +52 -0
  169. package/lib/components/FormComponents/TimeItem/TimeItem.js.map +1 -0
  170. package/lib/components/FormComponents/Typography.styles.d.ts +6 -0
  171. package/lib/components/FormComponents/Typography.styles.js +23 -0
  172. package/lib/components/FormComponents/Typography.styles.js.map +1 -0
  173. package/lib/components/FormComponents/UrlItem/UrlField.js +25 -0
  174. package/lib/components/FormComponents/UrlItem/UrlField.js.map +1 -0
  175. package/lib/components/FormComponents/UrlItem/UrlItem.js +61 -0
  176. package/lib/components/FormComponents/UrlItem/UrlItem.js.map +1 -0
  177. package/lib/components/FormRenderer/BaseRenderer.js +54 -0
  178. package/lib/components/FormRenderer/BaseRenderer.js.map +1 -0
  179. package/lib/components/FormRenderer/FormBodyCollapsible.js +57 -0
  180. package/lib/components/FormRenderer/FormBodyCollapsible.js.map +1 -0
  181. package/lib/components/FormRenderer/FormBodySingleCollapsible.js +39 -0
  182. package/lib/components/FormRenderer/FormBodySingleCollapsible.js.map +1 -0
  183. package/{dist → lib}/components/FormRenderer/FormBodySingleCollapsibleWrapper.d.ts +1 -1
  184. package/lib/components/FormRenderer/FormBodySingleCollapsibleWrapper.js +31 -0
  185. package/lib/components/FormRenderer/FormBodySingleCollapsibleWrapper.js.map +1 -0
  186. package/lib/components/FormRenderer/FormBodyTabbed.js +60 -0
  187. package/lib/components/FormRenderer/FormBodyTabbed.js.map +1 -0
  188. package/lib/components/FormRenderer/FormRenderer.js +54 -0
  189. package/lib/components/FormRenderer/FormRenderer.js.map +1 -0
  190. package/lib/components/FormRenderer/FormTitle.js +30 -0
  191. package/lib/components/FormRenderer/FormTitle.js.map +1 -0
  192. package/lib/components/FormRenderer/FormTopLevelItem.js +45 -0
  193. package/lib/components/FormRenderer/FormTopLevelItem.js.map +1 -0
  194. package/lib/components/FormRenderer/SmartFormsRenderer.js +39 -0
  195. package/lib/components/FormRenderer/SmartFormsRenderer.js.map +1 -0
  196. package/lib/components/FormRenderer/index.js +19 -0
  197. package/lib/components/FormRenderer/index.js.map +1 -0
  198. package/lib/components/Iconify/Iconify.js +26 -0
  199. package/lib/components/Iconify/Iconify.js.map +1 -0
  200. package/{dist → lib}/components/Lists.styles.d.ts +6 -6
  201. package/lib/components/Lists.styles.js +38 -0
  202. package/lib/components/Lists.styles.js.map +1 -0
  203. package/lib/components/Tabs/CompleteTabButton.js +29 -0
  204. package/lib/components/Tabs/CompleteTabButton.js.map +1 -0
  205. package/lib/components/Tabs/FormBodySingleTab.js +39 -0
  206. package/lib/components/Tabs/FormBodySingleTab.js.map +1 -0
  207. package/lib/components/Tabs/FormBodyTabList.js +52 -0
  208. package/lib/components/Tabs/FormBodyTabList.js.map +1 -0
  209. package/lib/components/index.js +18 -0
  210. package/lib/components/index.js.map +1 -0
  211. package/lib/hooks/index.js +2 -0
  212. package/lib/hooks/index.js.map +1 -0
  213. package/lib/hooks/useBackToTop.js +26 -0
  214. package/lib/hooks/useBackToTop.js.map +1 -0
  215. package/lib/hooks/useDebounce.js +38 -0
  216. package/lib/hooks/useDebounce.js.map +1 -0
  217. package/lib/hooks/useDecimalCalculatedExpression.js +50 -0
  218. package/lib/hooks/useDecimalCalculatedExpression.js.map +1 -0
  219. package/lib/hooks/useHidden.js +35 -0
  220. package/lib/hooks/useHidden.js.map +1 -0
  221. package/lib/hooks/useInitialiseGroupTable.js +36 -0
  222. package/lib/hooks/useInitialiseGroupTable.js.map +1 -0
  223. package/lib/hooks/useInitialiseRenderer.js +49 -0
  224. package/lib/hooks/useInitialiseRenderer.js.map +1 -0
  225. package/lib/hooks/useInitialiseRepeatAnswers.js +36 -0
  226. package/lib/hooks/useInitialiseRepeatAnswers.js.map +1 -0
  227. package/lib/hooks/useInitialiseRepeatGroups.js +36 -0
  228. package/lib/hooks/useInitialiseRepeatGroups.js.map +1 -0
  229. package/lib/hooks/useIntegerCalculatedExpression.js +44 -0
  230. package/lib/hooks/useIntegerCalculatedExpression.js.map +1 -0
  231. package/lib/hooks/useQueryClient.js +29 -0
  232. package/lib/hooks/useQueryClient.js.map +1 -0
  233. package/lib/hooks/useRenderingExtensions.js +30 -0
  234. package/lib/hooks/useRenderingExtensions.js.map +1 -0
  235. package/lib/hooks/useResponsive.js +37 -0
  236. package/lib/hooks/useResponsive.js.map +1 -0
  237. package/lib/hooks/useStringCalculatedExpression.js +44 -0
  238. package/lib/hooks/useStringCalculatedExpression.js.map +1 -0
  239. package/lib/hooks/useTerminologyServerQuery.js +73 -0
  240. package/lib/hooks/useTerminologyServerQuery.js.map +1 -0
  241. package/lib/hooks/useValidationError.js +38 -0
  242. package/lib/hooks/useValidationError.js.map +1 -0
  243. package/{dist → lib}/hooks/useValueSetCodings.d.ts +1 -1
  244. package/lib/hooks/useValueSetCodings.js +125 -0
  245. package/lib/hooks/useValueSetCodings.js.map +1 -0
  246. package/lib/index.d.ts +89 -0
  247. package/lib/index.js +153 -0
  248. package/lib/index.js.map +1 -0
  249. package/lib/interfaces/answerExpression.interface.js +18 -0
  250. package/lib/interfaces/answerExpression.interface.js.map +1 -0
  251. package/lib/interfaces/calculatedExpression.interface.js +2 -0
  252. package/lib/interfaces/calculatedExpression.interface.js.map +1 -0
  253. package/lib/interfaces/choice.enum.js +41 -0
  254. package/lib/interfaces/choice.enum.js.map +1 -0
  255. package/lib/interfaces/enableWhen.interface.js +18 -0
  256. package/lib/interfaces/enableWhen.interface.js.map +1 -0
  257. package/lib/interfaces/groupTable.interface.js +18 -0
  258. package/lib/interfaces/groupTable.interface.js.map +1 -0
  259. package/lib/interfaces/populate.interface.js +18 -0
  260. package/lib/interfaces/populate.interface.js.map +1 -0
  261. package/lib/interfaces/questionnaireStore.interface.js +18 -0
  262. package/lib/interfaces/questionnaireStore.interface.js.map +1 -0
  263. package/lib/interfaces/regex.interface.js +18 -0
  264. package/lib/interfaces/regex.interface.js.map +1 -0
  265. package/{dist → lib}/interfaces/renderProps.interface.d.ts +1 -1
  266. package/lib/interfaces/renderProps.interface.js +18 -0
  267. package/lib/interfaces/renderProps.interface.js.map +1 -0
  268. package/lib/interfaces/repeatGroup.interface.js +18 -0
  269. package/lib/interfaces/repeatGroup.interface.js.map +1 -0
  270. package/lib/interfaces/repeatItem.interface.js +2 -0
  271. package/lib/interfaces/repeatItem.interface.js.map +1 -0
  272. package/lib/interfaces/tab.interface.js +2 -0
  273. package/lib/interfaces/tab.interface.js.map +1 -0
  274. package/lib/interfaces/valueSet.interface.js +18 -0
  275. package/lib/interfaces/valueSet.interface.js.map +1 -0
  276. package/lib/interfaces/variables.interface.js +18 -0
  277. package/lib/interfaces/variables.interface.js.map +1 -0
  278. package/lib/stores/useConfigStore.js +17 -0
  279. package/lib/stores/useConfigStore.js.map +1 -0
  280. package/lib/stores/useQuestionnaireResponseStore.js +39 -0
  281. package/lib/stores/useQuestionnaireResponseStore.js.map +1 -0
  282. package/lib/stores/useQuestionnaireStore.js +151 -0
  283. package/lib/stores/useQuestionnaireStore.js.map +1 -0
  284. package/lib/theme/Theme.d.ts +38 -0
  285. package/lib/theme/Theme.js +39 -0
  286. package/lib/theme/Theme.js.map +1 -0
  287. package/lib/theme/globalStyles.d.ts +2 -0
  288. package/lib/theme/globalStyles.js +64 -0
  289. package/lib/theme/globalStyles.js.map +1 -0
  290. package/lib/theme/overrides/Accordion.d.ts +14 -0
  291. package/lib/theme/overrides/Accordion.js +32 -0
  292. package/lib/theme/overrides/Accordion.js.map +1 -0
  293. package/lib/theme/overrides/Autocomplete.d.ts +10 -0
  294. package/lib/theme/overrides/Autocomplete.js +28 -0
  295. package/lib/theme/overrides/Autocomplete.js.map +1 -0
  296. package/lib/theme/overrides/Backdrop.d.ts +13 -0
  297. package/lib/theme/overrides/Backdrop.js +32 -0
  298. package/lib/theme/overrides/Backdrop.js.map +1 -0
  299. package/lib/theme/overrides/Button.d.ts +33 -0
  300. package/lib/theme/overrides/Button.js +52 -0
  301. package/lib/theme/overrides/Button.js.map +1 -0
  302. package/lib/theme/overrides/Card.d.ts +35 -0
  303. package/lib/theme/overrides/Card.js +49 -0
  304. package/lib/theme/overrides/Card.js.map +1 -0
  305. package/lib/theme/overrides/Input.d.ts +64 -0
  306. package/lib/theme/overrides/Input.js +81 -0
  307. package/lib/theme/overrides/Input.js.map +1 -0
  308. package/lib/theme/overrides/Overrides.d.ts +3 -0
  309. package/lib/theme/overrides/Overrides.js +31 -0
  310. package/lib/theme/overrides/Overrides.js.map +1 -0
  311. package/lib/theme/overrides/Paper.d.ts +12 -0
  312. package/lib/theme/overrides/Paper.js +31 -0
  313. package/lib/theme/overrides/Paper.js.map +1 -0
  314. package/lib/theme/overrides/SpeedDial.d.ts +16 -0
  315. package/lib/theme/overrides/SpeedDial.js +34 -0
  316. package/lib/theme/overrides/SpeedDial.js.map +1 -0
  317. package/lib/theme/overrides/Table.d.ts +11 -0
  318. package/lib/theme/overrides/Table.js +29 -0
  319. package/lib/theme/overrides/Table.js.map +1 -0
  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/palette.d.ts +28 -0
  324. package/lib/theme/palette.js +67 -0
  325. package/lib/theme/palette.js.map +1 -0
  326. package/lib/theme/shadows.d.ts +2 -0
  327. package/lib/theme/shadows.js +52 -0
  328. package/lib/theme/shadows.js.map +1 -0
  329. package/lib/theme/typography.d.ts +139 -0
  330. package/lib/theme/typography.js +80 -0
  331. package/lib/theme/typography.js.map +1 -0
  332. package/lib/utils/calculatedExpression.js +180 -0
  333. package/lib/utils/calculatedExpression.js.map +1 -0
  334. package/lib/utils/choice.js +160 -0
  335. package/lib/utils/choice.js.map +1 -0
  336. package/lib/utils/debounce.js +19 -0
  337. package/lib/utils/debounce.js.map +1 -0
  338. package/lib/utils/emptyResource.js +25 -0
  339. package/lib/utils/emptyResource.js.map +1 -0
  340. package/lib/utils/enableWhen.js +228 -0
  341. package/lib/utils/enableWhen.js.map +1 -0
  342. package/lib/utils/enableWhenExpression.js +76 -0
  343. package/lib/utils/enableWhenExpression.js.map +1 -0
  344. package/lib/utils/fhirpath.js +98 -0
  345. package/lib/utils/fhirpath.js.map +1 -0
  346. package/lib/utils/initialiseForm.js +45 -0
  347. package/lib/utils/initialiseForm.js.map +1 -0
  348. package/lib/utils/itemControl.js +299 -0
  349. package/lib/utils/itemControl.js.map +1 -0
  350. package/lib/utils/mapItem.js +80 -0
  351. package/lib/utils/mapItem.js.map +1 -0
  352. package/lib/utils/openChoice.js +150 -0
  353. package/lib/utils/openChoice.js.map +1 -0
  354. package/lib/utils/parseInputs.js +49 -0
  355. package/lib/utils/parseInputs.js.map +1 -0
  356. package/lib/utils/populate.js +78 -0
  357. package/lib/utils/populate.js.map +1 -0
  358. package/lib/utils/populateCallback.js +40 -0
  359. package/lib/utils/populateCallback.js.map +1 -0
  360. package/lib/utils/populateContexts.js +76 -0
  361. package/lib/utils/populateContexts.js.map +1 -0
  362. package/lib/utils/populateInputParams.js +193 -0
  363. package/lib/utils/populateInputParams.js.map +1 -0
  364. package/lib/utils/qItem.js +73 -0
  365. package/lib/utils/qItem.js.map +1 -0
  366. package/lib/utils/qrItem.js +221 -0
  367. package/lib/utils/qrItem.js.map +1 -0
  368. package/lib/utils/questionnaireStoreUtils/addAdditionalVariables.js +43 -0
  369. package/lib/utils/questionnaireStoreUtils/addAdditionalVariables.js.map +1 -0
  370. package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js +79 -0
  371. package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js.map +1 -0
  372. package/lib/utils/questionnaireStoreUtils/extractContainedValueSets.js +59 -0
  373. package/lib/utils/questionnaireStoreUtils/extractContainedValueSets.js.map +1 -0
  374. package/lib/utils/questionnaireStoreUtils/extractLaunchContext.js +18 -0
  375. package/lib/utils/questionnaireStoreUtils/extractLaunchContext.js.map +1 -0
  376. package/lib/utils/questionnaireStoreUtils/extractOtherExtensions.js +174 -0
  377. package/lib/utils/questionnaireStoreUtils/extractOtherExtensions.js.map +1 -0
  378. package/lib/utils/questionnaireStoreUtils/extractTabs.js +31 -0
  379. package/lib/utils/questionnaireStoreUtils/extractTabs.js.map +1 -0
  380. package/lib/utils/questionnaireStoreUtils/extractVariables.js +63 -0
  381. package/lib/utils/questionnaireStoreUtils/extractVariables.js.map +1 -0
  382. package/lib/utils/questionnaireStoreUtils/resolveValueSets.js +58 -0
  383. package/lib/utils/questionnaireStoreUtils/resolveValueSets.js.map +1 -0
  384. package/lib/utils/removeHidden.js +104 -0
  385. package/lib/utils/removeHidden.js.map +1 -0
  386. package/lib/utils/tabs.js +190 -0
  387. package/lib/utils/tabs.js.map +1 -0
  388. package/lib/utils/valueSet.js +126 -0
  389. package/lib/utils/valueSet.js.map +1 -0
  390. package/package.json +19 -27
  391. package/src/api/populate.ts +70 -0
  392. package/src/components/Alert.styles.ts +45 -0
  393. package/src/components/BackToTopButton/BackToTopButton.tsx +47 -0
  394. package/src/components/Box.styles.ts +33 -0
  395. package/src/components/FormComponents/BooleanItem/BooleanField.tsx +44 -0
  396. package/src/components/FormComponents/BooleanItem/BooleanItem.tsx +82 -0
  397. package/src/components/FormComponents/DateItem/DateField.tsx +56 -0
  398. package/src/components/FormComponents/DateItem/DateItem.tsx +95 -0
  399. package/src/components/FormComponents/DateTimeItem/DateTimeField.tsx +58 -0
  400. package/src/components/FormComponents/DateTimeItem/DateTimeItem.tsx +94 -0
  401. package/src/components/FormComponents/DecimalItem/DecimalField.tsx +76 -0
  402. package/src/components/FormComponents/DecimalItem/DecimalItem.tsx +152 -0
  403. package/src/components/FormComponents/DisplayItem/DisplayInstructions.styles.ts +24 -0
  404. package/src/components/FormComponents/DisplayItem/DisplayInstructions.tsx +38 -0
  405. package/src/components/FormComponents/DisplayItem/DisplayItem.tsx +43 -0
  406. package/src/components/FormComponents/GridGroup/GridGroup.tsx +92 -0
  407. package/src/components/FormComponents/GridGroup/GridRow.tsx +88 -0
  408. package/src/components/FormComponents/GridGroup/GridTable.tsx +77 -0
  409. package/src/components/FormComponents/GroupItem/GroupHeading.tsx +59 -0
  410. package/src/components/FormComponents/GroupItem/GroupItem.styles.ts +28 -0
  411. package/src/components/FormComponents/GroupItem/GroupItem.tsx +124 -0
  412. package/src/components/FormComponents/GroupItem/GroupItemSwitcher.tsx +150 -0
  413. package/src/components/FormComponents/GroupItem/NextTabButton.tsx +43 -0
  414. package/src/components/FormComponents/GroupItem/NextTabButtonWrapper.tsx +76 -0
  415. package/src/components/FormComponents/IntegerItem/IntegerField.tsx +76 -0
  416. package/src/components/FormComponents/IntegerItem/IntegerItem.tsx +140 -0
  417. package/src/components/FormComponents/Item.styles.ts +30 -0
  418. package/src/components/FormComponents/ItemParts/ContextDisplayItem.tsx +38 -0
  419. package/src/components/FormComponents/ItemParts/FadingCheckIcon.tsx +36 -0
  420. package/src/components/FormComponents/ItemParts/ItemFieldGrid.tsx +47 -0
  421. package/src/components/FormComponents/ItemParts/ItemLabelText.tsx +58 -0
  422. package/src/components/FormComponents/ItemParts/ItemLabelWrapper.tsx +47 -0
  423. package/src/components/FormComponents/ItemParts/QItemCheckboxSingle.tsx +44 -0
  424. package/src/components/FormComponents/ItemParts/QItemCheckboxSingleWithOpenLabel.tsx +62 -0
  425. package/src/components/FormComponents/ItemParts/QItemRadioButtonWithOpenLabel.tsx +54 -0
  426. package/src/components/FormComponents/Lists.styles.ts +39 -0
  427. package/src/components/FormComponents/QItemChoice/QItemChoice.tsx +130 -0
  428. package/src/components/FormComponents/QItemChoice/QItemChoiceAutocomplete.tsx +178 -0
  429. package/src/components/FormComponents/QItemChoice/QItemChoiceCheckboxAnswerOption.tsx +131 -0
  430. package/src/components/FormComponents/QItemChoice/QItemChoiceCheckboxAnswerValueSet.tsx +126 -0
  431. package/src/components/FormComponents/QItemChoice/QItemChoiceRadioAnswerOption.tsx +125 -0
  432. package/src/components/FormComponents/QItemChoice/QItemChoiceRadioAnswerValueSet.tsx +129 -0
  433. package/src/components/FormComponents/QItemChoice/QItemChoiceRadioSingle.tsx +41 -0
  434. package/src/components/FormComponents/QItemChoice/QItemChoiceSelectAnswerOption.tsx +130 -0
  435. package/src/components/FormComponents/QItemChoice/QItemChoiceSelectAnswerValueSet.tsx +162 -0
  436. package/src/components/FormComponents/QItemOpenChoice/QItemOpenChoice.tsx +104 -0
  437. package/src/components/FormComponents/QItemOpenChoice/QItemOpenChoiceAutocomplete.tsx +207 -0
  438. package/src/components/FormComponents/QItemOpenChoice/QItemOpenChoiceCheckboxAnswerOption.tsx +194 -0
  439. package/src/components/FormComponents/QItemOpenChoice/QItemOpenChoiceRadioAnswerOption.tsx +190 -0
  440. package/src/components/FormComponents/QItemOpenChoice/QItemOpenChoiceSelectAnswerOption.tsx +149 -0
  441. package/src/components/FormComponents/QItemOpenChoice/QItemOpenChoiceSelectAnswerValueSet.tsx +138 -0
  442. package/src/components/FormComponents/RepeatGroup/AddItemButton.tsx +47 -0
  443. package/src/components/FormComponents/RepeatGroup/DeleteItemButton.tsx +46 -0
  444. package/src/components/FormComponents/RepeatGroup/RepeatGroup.tsx +125 -0
  445. package/src/components/FormComponents/RepeatGroup/RepeatGroupItem.tsx +66 -0
  446. package/src/components/FormComponents/RepeatItem/AddItemButton.tsx +47 -0
  447. package/src/components/FormComponents/RepeatItem/DeleteItemButton.tsx +46 -0
  448. package/src/components/FormComponents/RepeatItem/RepeatField.tsx +61 -0
  449. package/src/components/FormComponents/RepeatItem/RepeatItem.styles.tsx +32 -0
  450. package/src/components/FormComponents/RepeatItem/RepeatItem.tsx +116 -0
  451. package/src/components/FormComponents/SingleItem/SingleItem.tsx +62 -0
  452. package/src/components/FormComponents/SingleItem/SingleItemSwitcher.tsx +171 -0
  453. package/src/components/FormComponents/StringItem/StringField.tsx +76 -0
  454. package/src/components/FormComponents/StringItem/StringItem.tsx +131 -0
  455. package/src/components/FormComponents/Tables/DeleteRowButton.tsx +47 -0
  456. package/src/components/FormComponents/Tables/QItemGroupTable.tsx +171 -0
  457. package/src/components/FormComponents/Tables/QItemGroupTableRow.tsx +77 -0
  458. package/src/components/FormComponents/Tables/Table.styles.tsx +51 -0
  459. package/src/components/FormComponents/TextItem/TextField.tsx +74 -0
  460. package/src/components/FormComponents/TextItem/TextItem.tsx +128 -0
  461. package/src/components/FormComponents/Textfield.styles.ts +28 -0
  462. package/src/components/FormComponents/TimeItem/TimeField.tsx +54 -0
  463. package/src/components/FormComponents/TimeItem/TimeItem.tsx +94 -0
  464. package/src/components/FormComponents/Typography.styles.ts +24 -0
  465. package/src/components/FormComponents/UrlItem/UrlField.tsx +66 -0
  466. package/src/components/FormComponents/UrlItem/UrlItem.tsx +118 -0
  467. package/src/components/FormRenderer/BaseRenderer.tsx +82 -0
  468. package/src/components/FormRenderer/FormBodyCollapsible.tsx +96 -0
  469. package/src/components/FormRenderer/FormBodySingleCollapsible.tsx +76 -0
  470. package/src/components/FormRenderer/FormBodySingleCollapsibleWrapper.tsx +60 -0
  471. package/src/components/FormRenderer/FormBodyTabbed.tsx +106 -0
  472. package/src/components/FormRenderer/FormTitle.tsx +44 -0
  473. package/src/components/FormRenderer/FormTopLevelItem.tsx +93 -0
  474. package/src/components/FormRenderer/SmartFormsRenderer.tsx +62 -0
  475. package/src/components/FormRenderer/index.ts +19 -0
  476. package/src/components/Iconify/Iconify.tsx +38 -0
  477. package/src/components/Lists.styles.ts +39 -0
  478. package/src/components/Tabs/CompleteTabButton.tsx +42 -0
  479. package/src/components/Tabs/FormBodySingleTab.tsx +67 -0
  480. package/src/components/Tabs/FormBodyTabList.tsx +83 -0
  481. package/src/components/index.ts +18 -0
  482. package/src/hooks/index.ts +1 -0
  483. package/src/hooks/useBackToTop.ts +29 -0
  484. package/src/hooks/useDebounce.ts +45 -0
  485. package/src/hooks/useDecimalCalculatedExpression.ts +80 -0
  486. package/src/hooks/useHidden.ts +40 -0
  487. package/src/hooks/useInitialiseGroupTable.ts +42 -0
  488. package/src/hooks/useInitialiseRenderer.ts +62 -0
  489. package/src/hooks/useInitialiseRepeatAnswers.ts +42 -0
  490. package/src/hooks/useInitialiseRepeatGroups.ts +42 -0
  491. package/src/hooks/useIntegerCalculatedExpression.ts +72 -0
  492. package/src/hooks/useQueryClient.ts +31 -0
  493. package/src/hooks/useRenderingExtensions.ts +52 -0
  494. package/src/hooks/useResponsive.ts +51 -0
  495. package/src/hooks/useStringCalculatedExpression.ts +71 -0
  496. package/src/hooks/useTerminologyServerQuery.ts +98 -0
  497. package/src/hooks/useValidationError.ts +48 -0
  498. package/src/hooks/useValueSetCodings.ts +150 -0
  499. package/src/index.ts +163 -0
  500. package/src/interfaces/answerExpression.interface.ts +23 -0
  501. package/src/interfaces/calculatedExpression.interface.ts +4 -0
  502. package/src/interfaces/choice.enum.ts +40 -0
  503. package/src/interfaces/enableWhen.interface.ts +40 -0
  504. package/src/interfaces/groupTable.interface.ts +23 -0
  505. package/src/interfaces/populate.interface.ts +218 -0
  506. package/src/interfaces/questionnaireStore.interface.ts +36 -0
  507. package/src/interfaces/regex.interface.ts +21 -0
  508. package/src/interfaces/renderProps.interface.ts +34 -0
  509. package/src/interfaces/repeatGroup.interface.ts +28 -0
  510. package/src/interfaces/repeatItem.interface.ts +6 -0
  511. package/src/interfaces/tab.interface.ts +18 -0
  512. package/src/interfaces/valueSet.interface.ts +23 -0
  513. package/src/interfaces/variables.interface.ts +28 -0
  514. package/src/stores/useConfigStore.ts +36 -0
  515. package/src/stores/useQuestionnaireResponseStore.ts +58 -0
  516. package/src/stores/useQuestionnaireStore.ts +232 -0
  517. package/src/stories/SmartFormsRenderer.stories.ts +104 -0
  518. package/src/stories/assets/Q715.json +15086 -0
  519. package/src/stories/assets/QTestGrid.json +166 -0
  520. package/src/stories/assets/R715.json +311 -0
  521. package/src/stories/assets/RTestGrid.json +34 -0
  522. package/src/theme/Theme.tsx +107 -0
  523. package/src/theme/globalStyles.tsx +68 -0
  524. package/src/theme/overrides/Accordion.ts +34 -0
  525. package/src/theme/overrides/Autocomplete.ts +30 -0
  526. package/src/theme/overrides/Backdrop.ts +34 -0
  527. package/src/theme/overrides/Button.ts +54 -0
  528. package/src/theme/overrides/Card.ts +51 -0
  529. package/src/theme/overrides/Input.ts +83 -0
  530. package/src/theme/overrides/Overrides.ts +45 -0
  531. package/src/theme/overrides/Paper.ts +31 -0
  532. package/src/theme/overrides/SpeedDial.ts +36 -0
  533. package/src/theme/overrides/Table.ts +31 -0
  534. package/src/theme/overrides/Typography.ts +33 -0
  535. package/src/theme/palette.ts +100 -0
  536. package/src/theme/shadows.ts +54 -0
  537. package/src/theme/typography.ts +114 -0
  538. package/src/utils/calculatedExpression.ts +299 -0
  539. package/src/utils/choice.ts +194 -0
  540. package/src/utils/debounce.ts +20 -0
  541. package/src/utils/emptyResource.ts +28 -0
  542. package/src/utils/enableWhen.ts +303 -0
  543. package/src/utils/enableWhenExpression.ts +123 -0
  544. package/src/utils/fhirpath.ts +164 -0
  545. package/src/utils/initialiseForm.ts +81 -0
  546. package/src/utils/itemControl.ts +367 -0
  547. package/src/utils/mapItem.ts +97 -0
  548. package/src/utils/openChoice.ts +179 -0
  549. package/src/utils/parseInputs.ts +58 -0
  550. package/src/utils/populate.ts +117 -0
  551. package/src/utils/populateCallback.ts +53 -0
  552. package/src/utils/populateContexts.ts +112 -0
  553. package/src/utils/populateInputParams.ts +242 -0
  554. package/src/utils/qItem.ts +103 -0
  555. package/src/utils/qrItem.ts +250 -0
  556. package/src/utils/questionnaireStoreUtils/addAdditionalVariables.ts +52 -0
  557. package/src/utils/questionnaireStoreUtils/createQuestionaireModel.ts +96 -0
  558. package/src/utils/questionnaireStoreUtils/extractContainedValueSets.ts +74 -0
  559. package/src/utils/questionnaireStoreUtils/extractLaunchContext.ts +21 -0
  560. package/src/utils/questionnaireStoreUtils/extractOtherExtensions.ts +239 -0
  561. package/src/utils/questionnaireStoreUtils/extractTabs.ts +37 -0
  562. package/src/utils/questionnaireStoreUtils/extractVariables.ts +77 -0
  563. package/src/utils/questionnaireStoreUtils/resolveValueSets.ts +68 -0
  564. package/src/utils/removeHidden.ts +162 -0
  565. package/src/utils/tabs.ts +255 -0
  566. package/src/utils/valueSet.ts +159 -0
  567. package/tsconfig.json +21 -0
  568. package/dist/components/FormComponents/Item.styles.d.ts +0 -6
  569. package/dist/components/FormComponents/RepeatItem/RepeatItem.styles.d.ts +0 -22
  570. package/dist/components/FormComponents/Typography.styles.d.ts +0 -6
  571. package/dist/components/FormRenderer/BaseFormRenderer.d.ts +0 -3
  572. package/dist/components/FormRenderer/Form.d.ts +0 -3
  573. package/dist/index.d.ts +0 -16
  574. package/dist/index.esm.js +0 -10650
  575. package/dist/index.esm.js.map +0 -1
  576. package/dist/index.js +0 -10710
  577. package/dist/index.js.map +0 -1
  578. package/dist/stories/SmartFormsRenderer.stories.d.ts +0 -14
  579. /package/{dist → lib}/api/populate.d.ts +0 -0
  580. /package/{dist → lib}/components/BackToTopButton/BackToTopButton.d.ts +0 -0
  581. /package/{dist → lib}/components/FormComponents/BooleanItem/BooleanField.d.ts +0 -0
  582. /package/{dist → lib}/components/FormComponents/BooleanItem/BooleanItem.d.ts +0 -0
  583. /package/{dist → lib}/components/FormComponents/DateItem/DateField.d.ts +0 -0
  584. /package/{dist → lib}/components/FormComponents/DateItem/DateItem.d.ts +0 -0
  585. /package/{dist → lib}/components/FormComponents/DateTimeItem/DateTimeField.d.ts +0 -0
  586. /package/{dist → lib}/components/FormComponents/DateTimeItem/DateTimeItem.d.ts +0 -0
  587. /package/{dist → lib}/components/FormComponents/DecimalItem/DecimalField.d.ts +0 -0
  588. /package/{dist → lib}/components/FormComponents/DecimalItem/DecimalItem.d.ts +0 -0
  589. /package/{dist → lib}/components/FormComponents/DisplayItem/DisplayInstructions.d.ts +0 -0
  590. /package/{dist → lib}/components/FormComponents/DisplayItem/DisplayItem.d.ts +0 -0
  591. /package/{dist → lib}/components/FormComponents/GridGroup/GridTable.d.ts +0 -0
  592. /package/{dist → lib}/components/FormComponents/GroupItem/GroupHeading.d.ts +0 -0
  593. /package/{dist → lib}/components/FormComponents/GroupItem/NextTabButton.d.ts +0 -0
  594. /package/{dist → lib}/components/FormComponents/GroupItem/NextTabButtonWrapper.d.ts +0 -0
  595. /package/{dist → lib}/components/FormComponents/IntegerItem/IntegerField.d.ts +0 -0
  596. /package/{dist → lib}/components/FormComponents/IntegerItem/IntegerItem.d.ts +0 -0
  597. /package/{dist → lib}/components/FormComponents/ItemParts/ContextDisplayItem.d.ts +0 -0
  598. /package/{dist → lib}/components/FormComponents/ItemParts/FadingCheckIcon.d.ts +0 -0
  599. /package/{dist → lib}/components/FormComponents/ItemParts/ItemFieldGrid.d.ts +0 -0
  600. /package/{dist → lib}/components/FormComponents/ItemParts/ItemLabelText.d.ts +0 -0
  601. /package/{dist → lib}/components/FormComponents/ItemParts/ItemLabelWrapper.d.ts +0 -0
  602. /package/{dist → lib}/components/FormComponents/ItemParts/QItemCheckboxSingle.d.ts +0 -0
  603. /package/{dist → lib}/components/FormComponents/ItemParts/QItemCheckboxSingleWithOpenLabel.d.ts +0 -0
  604. /package/{dist → lib}/components/FormComponents/ItemParts/QItemRadioButtonWithOpenLabel.d.ts +0 -0
  605. /package/{dist → lib}/components/FormComponents/QItemChoice/QItemChoiceCheckboxAnswerOption.d.ts +0 -0
  606. /package/{dist → lib}/components/FormComponents/QItemChoice/QItemChoiceCheckboxAnswerValueSet.d.ts +0 -0
  607. /package/{dist → lib}/components/FormComponents/QItemChoice/QItemChoiceRadioAnswerOption.d.ts +0 -0
  608. /package/{dist → lib}/components/FormComponents/QItemChoice/QItemChoiceRadioAnswerValueSet.d.ts +0 -0
  609. /package/{dist → lib}/components/FormComponents/QItemChoice/QItemChoiceRadioSingle.d.ts +0 -0
  610. /package/{dist → lib}/components/FormComponents/QItemChoice/QItemChoiceSelectAnswerOption.d.ts +0 -0
  611. /package/{dist → lib}/components/FormComponents/QItemChoice/QItemChoiceSelectAnswerValueSet.d.ts +0 -0
  612. /package/{dist → lib}/components/FormComponents/QItemOpenChoice/QItemOpenChoiceCheckboxAnswerOption.d.ts +0 -0
  613. /package/{dist → lib}/components/FormComponents/QItemOpenChoice/QItemOpenChoiceRadioAnswerOption.d.ts +0 -0
  614. /package/{dist → lib}/components/FormComponents/QItemOpenChoice/QItemOpenChoiceSelectAnswerValueSet.d.ts +0 -0
  615. /package/{dist → lib}/components/FormComponents/RepeatGroup/AddItemButton.d.ts +0 -0
  616. /package/{dist → lib}/components/FormComponents/RepeatGroup/DeleteItemButton.d.ts +0 -0
  617. /package/{dist → lib}/components/FormComponents/RepeatGroup/RepeatGroup.d.ts +0 -0
  618. /package/{dist → lib}/components/FormComponents/RepeatGroup/RepeatGroupItem.d.ts +0 -0
  619. /package/{dist → lib}/components/FormComponents/RepeatItem/AddItemButton.d.ts +0 -0
  620. /package/{dist → lib}/components/FormComponents/RepeatItem/DeleteItemButton.d.ts +0 -0
  621. /package/{dist → lib}/components/FormComponents/RepeatItem/RepeatField.d.ts +0 -0
  622. /package/{dist → lib}/components/FormComponents/RepeatItem/RepeatItem.d.ts +0 -0
  623. /package/{dist → lib}/components/FormComponents/SingleItem/SingleItem.d.ts +0 -0
  624. /package/{dist → lib}/components/FormComponents/SingleItem/SingleItemSwitcher.d.ts +0 -0
  625. /package/{dist → lib}/components/FormComponents/StringItem/StringField.d.ts +0 -0
  626. /package/{dist → lib}/components/FormComponents/StringItem/StringItem.d.ts +0 -0
  627. /package/{dist → lib}/components/FormComponents/Tables/DeleteRowButton.d.ts +0 -0
  628. /package/{dist → lib}/components/FormComponents/Tables/Table.styles.d.ts +0 -0
  629. /package/{dist → lib}/components/FormComponents/TextItem/TextField.d.ts +0 -0
  630. /package/{dist → lib}/components/FormComponents/TextItem/TextItem.d.ts +0 -0
  631. /package/{dist → lib}/components/FormComponents/TimeItem/TimeField.d.ts +0 -0
  632. /package/{dist → lib}/components/FormComponents/TimeItem/TimeItem.d.ts +0 -0
  633. /package/{dist → lib}/components/FormComponents/UrlItem/UrlField.d.ts +0 -0
  634. /package/{dist → lib}/components/FormComponents/UrlItem/UrlItem.d.ts +0 -0
  635. /package/{dist → lib}/components/FormRenderer/BaseRenderer.d.ts +0 -0
  636. /package/{dist → lib}/components/FormRenderer/FormBodyCollapsible.d.ts +0 -0
  637. /package/{dist → lib}/components/FormRenderer/FormBodySingleCollapsible.d.ts +0 -0
  638. /package/{dist → lib}/components/FormRenderer/FormBodyTabbed.d.ts +0 -0
  639. /package/{dist → lib}/components/FormRenderer/FormRenderer.d.ts +0 -0
  640. /package/{dist → lib}/components/FormRenderer/FormTitle.d.ts +0 -0
  641. /package/{dist → lib}/components/FormRenderer/FormTopLevelItem.d.ts +0 -0
  642. /package/{dist → lib}/components/FormRenderer/SmartFormsRenderer.d.ts +0 -0
  643. /package/{dist → lib}/components/FormRenderer/index.d.ts +0 -0
  644. /package/{dist → lib}/components/Iconify/Iconify.d.ts +0 -0
  645. /package/{dist → lib}/components/Tabs/CompleteTabButton.d.ts +0 -0
  646. /package/{dist → lib}/components/Tabs/FormBodySingleTab.d.ts +0 -0
  647. /package/{dist → lib}/components/Tabs/FormBodyTabList.d.ts +0 -0
  648. /package/{dist → lib}/components/index.d.ts +0 -0
  649. /package/{dist → lib}/hooks/index.d.ts +0 -0
  650. /package/{dist → lib}/hooks/useBackToTop.d.ts +0 -0
  651. /package/{dist → lib}/hooks/useDebounce.d.ts +0 -0
  652. /package/{dist → lib}/hooks/useDecimalCalculatedExpression.d.ts +0 -0
  653. /package/{dist → lib}/hooks/useHidden.d.ts +0 -0
  654. /package/{dist → lib}/hooks/useInitialiseGroupTable.d.ts +0 -0
  655. /package/{dist → lib}/hooks/useInitialiseRenderer.d.ts +0 -0
  656. /package/{dist → lib}/hooks/useInitialiseRepeatAnswers.d.ts +0 -0
  657. /package/{dist → lib}/hooks/useInitialiseRepeatGroups.d.ts +0 -0
  658. /package/{dist → lib}/hooks/useIntegerCalculatedExpression.d.ts +0 -0
  659. /package/{dist → lib}/hooks/useQueryClient.d.ts +0 -0
  660. /package/{dist → lib}/hooks/useRenderingExtensions.d.ts +0 -0
  661. /package/{dist → lib}/hooks/useResponsive.d.ts +0 -0
  662. /package/{dist → lib}/hooks/useStringCalculatedExpression.d.ts +0 -0
  663. /package/{dist → lib}/hooks/useTerminologyServerQuery.d.ts +0 -0
  664. /package/{dist → lib}/hooks/useValidationError.d.ts +0 -0
  665. /package/{dist → lib}/interfaces/answerExpression.interface.d.ts +0 -0
  666. /package/{dist → lib}/interfaces/calculatedExpression.interface.d.ts +0 -0
  667. /package/{dist → lib}/interfaces/choice.enum.d.ts +0 -0
  668. /package/{dist → lib}/interfaces/enableWhen.interface.d.ts +0 -0
  669. /package/{dist → lib}/interfaces/groupTable.interface.d.ts +0 -0
  670. /package/{dist → lib}/interfaces/populate.interface.d.ts +0 -0
  671. /package/{dist → lib}/interfaces/questionnaireStore.interface.d.ts +0 -0
  672. /package/{dist → lib}/interfaces/regex.interface.d.ts +0 -0
  673. /package/{dist → lib}/interfaces/repeatGroup.interface.d.ts +0 -0
  674. /package/{dist → lib}/interfaces/repeatItem.interface.d.ts +0 -0
  675. /package/{dist → lib}/interfaces/tab.interface.d.ts +0 -0
  676. /package/{dist → lib}/interfaces/valueSet.interface.d.ts +0 -0
  677. /package/{dist → lib}/interfaces/variables.interface.d.ts +0 -0
  678. /package/{dist → lib}/stores/useConfigStore.d.ts +0 -0
  679. /package/{dist → lib}/stores/useQuestionnaireResponseStore.d.ts +0 -0
  680. /package/{dist → lib}/stores/useQuestionnaireStore.d.ts +0 -0
  681. /package/{dist → lib}/utils/calculatedExpression.d.ts +0 -0
  682. /package/{dist → lib}/utils/choice.d.ts +0 -0
  683. /package/{dist → lib}/utils/debounce.d.ts +0 -0
  684. /package/{dist → lib}/utils/emptyResource.d.ts +0 -0
  685. /package/{dist → lib}/utils/enableWhen.d.ts +0 -0
  686. /package/{dist → lib}/utils/enableWhenExpression.d.ts +0 -0
  687. /package/{dist → lib}/utils/fhirpath.d.ts +0 -0
  688. /package/{dist → lib}/utils/initialiseForm.d.ts +0 -0
  689. /package/{dist → lib}/utils/itemControl.d.ts +0 -0
  690. /package/{dist → lib}/utils/mapItem.d.ts +0 -0
  691. /package/{dist → lib}/utils/openChoice.d.ts +0 -0
  692. /package/{dist → lib}/utils/parseInputs.d.ts +0 -0
  693. /package/{dist → lib}/utils/populate.d.ts +0 -0
  694. /package/{dist → lib}/utils/populateCallback.d.ts +0 -0
  695. /package/{dist → lib}/utils/populateContexts.d.ts +0 -0
  696. /package/{dist → lib}/utils/populateInputParams.d.ts +0 -0
  697. /package/{dist → lib}/utils/qItem.d.ts +0 -0
  698. /package/{dist → lib}/utils/qrItem.d.ts +0 -0
  699. /package/{dist → lib}/utils/questionnaireStoreUtils/addAdditionalVariables.d.ts +0 -0
  700. /package/{dist → lib}/utils/questionnaireStoreUtils/createQuestionaireModel.d.ts +0 -0
  701. /package/{dist → lib}/utils/questionnaireStoreUtils/extractContainedValueSets.d.ts +0 -0
  702. /package/{dist → lib}/utils/questionnaireStoreUtils/extractLaunchContext.d.ts +0 -0
  703. /package/{dist → lib}/utils/questionnaireStoreUtils/extractOtherExtensions.d.ts +0 -0
  704. /package/{dist → lib}/utils/questionnaireStoreUtils/extractTabs.d.ts +0 -0
  705. /package/{dist → lib}/utils/questionnaireStoreUtils/extractVariables.d.ts +0 -0
  706. /package/{dist → lib}/utils/questionnaireStoreUtils/resolveValueSets.d.ts +0 -0
  707. /package/{dist → lib}/utils/removeHidden.d.ts +0 -0
  708. /package/{dist → lib}/utils/tabs.d.ts +0 -0
  709. /package/{dist → lib}/utils/valueSet.d.ts +0 -0
  710. /package/{dist/setup-jest.d.ts → src/setup-jest.ts} +0 -0
@@ -0,0 +1,160 @@
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
+ import { QItemChoiceControl, QItemChoiceOrientation } from '../interfaces/choice.enum';
18
+ import { isSpecificItemControl } from './itemControl';
19
+ /**
20
+ * Get choice control type based on certain criteria in choice items
21
+ *
22
+ * @author Sean Fong
23
+ */
24
+ export function getChoiceControlType(qItem) {
25
+ const dropdownOptionsCount = 5;
26
+ if (isSpecificItemControl(qItem, 'autocomplete')) {
27
+ return QItemChoiceControl.Autocomplete;
28
+ }
29
+ if (isSpecificItemControl(qItem, 'check-box')) {
30
+ return QItemChoiceControl.Checkbox;
31
+ }
32
+ if (isSpecificItemControl(qItem, 'radio-button')) {
33
+ return QItemChoiceControl.Radio;
34
+ }
35
+ if (isSpecificItemControl(qItem, 'drop-down')) {
36
+ return QItemChoiceControl.Select;
37
+ }
38
+ if (qItem.answerOption) {
39
+ return qItem.answerOption.length > 0 && qItem.answerOption.length < dropdownOptionsCount
40
+ ? QItemChoiceControl.Radio
41
+ : QItemChoiceControl.Select;
42
+ }
43
+ else {
44
+ return QItemChoiceControl.Select;
45
+ }
46
+ }
47
+ /**
48
+ * Find and return corresponding answerOption based on selected answer in form
49
+ *
50
+ * @author Sean Fong
51
+ */
52
+ export function findInAnswerOptions(answerOptions, selected) {
53
+ for (const option of answerOptions) {
54
+ if (option['valueCoding']) {
55
+ if (selected === option.valueCoding.code) {
56
+ return option;
57
+ }
58
+ }
59
+ else if (option['valueString']) {
60
+ if (selected === option.valueString) {
61
+ return option;
62
+ }
63
+ }
64
+ else if (option['valueInteger']) {
65
+ if (selected === option.valueInteger.toString()) {
66
+ return option;
67
+ }
68
+ }
69
+ }
70
+ }
71
+ /**
72
+ * Find and return corresponding coding from AnswerValyeSet based on selected answer in form
73
+ *
74
+ * @author Sean Fong
75
+ */
76
+ export function findInAnswerValueSetCodings(codings, selected) {
77
+ for (const coding of codings) {
78
+ if (selected === coding.code) {
79
+ return coding;
80
+ }
81
+ }
82
+ }
83
+ /**
84
+ * Find and return string value from selected answer
85
+ *
86
+ * @author Sean Fong
87
+ */
88
+ export function getQrChoiceValue(qrChoice, returnNull) {
89
+ if (qrChoice['answer']) {
90
+ const answer = qrChoice['answer'][0];
91
+ if (answer['valueCoding']) {
92
+ return answer.valueCoding.code ? answer.valueCoding.code : '';
93
+ }
94
+ else if (answer['valueString'] !== undefined) {
95
+ return answer.valueString;
96
+ }
97
+ else if (answer['valueInteger']) {
98
+ return answer.valueInteger.toString();
99
+ }
100
+ }
101
+ return returnNull ? null : '';
102
+ }
103
+ /**
104
+ * Update choice checkbox group answers based on checkbox changes
105
+ *
106
+ * @author Sean Fong
107
+ */
108
+ export function updateQrCheckboxAnswers(changedValue, answers, answerOptions, qrChoiceCheckbox, isMultiSelection) {
109
+ // search for answer item of changedValue from list of answer options
110
+ const newAnswer = findInAnswerOptions(answerOptions, changedValue);
111
+ if (!newAnswer)
112
+ return null;
113
+ if (isMultiSelection && answers.length > 0) {
114
+ // check and filter if new answer exists in existing qrAnswers
115
+ const updatedAnswers = answers.filter((answer) => JSON.stringify(answer) !== JSON.stringify(newAnswer));
116
+ // new answer is not present in existing answers, so we add it to the array
117
+ if (updatedAnswers.length === answers.length) {
118
+ updatedAnswers.push(newAnswer);
119
+ }
120
+ return Object.assign(Object.assign({}, qrChoiceCheckbox), { answer: updatedAnswers });
121
+ }
122
+ else {
123
+ return answers.some((answer) => JSON.stringify(answer) === JSON.stringify(newAnswer))
124
+ ? Object.assign(Object.assign({}, qrChoiceCheckbox), { answer: [] }) : Object.assign(Object.assign({}, qrChoiceCheckbox), { answer: [newAnswer] });
125
+ }
126
+ }
127
+ /**
128
+ * Get choice orientation from its itemControl
129
+ *
130
+ * @author Sean Fong
131
+ */
132
+ export function getChoiceOrientation(qItem) {
133
+ var _a;
134
+ const itemControl = (_a = qItem.extension) === null || _a === void 0 ? void 0 : _a.find((extension) => extension.url === 'http://hl7.org/fhir/StructureDefinition/questionnaire-choiceOrientation');
135
+ if (itemControl) {
136
+ const code = itemControl.valueCode;
137
+ if (code) {
138
+ if (code === 'horizontal') {
139
+ return QItemChoiceOrientation.Horizontal;
140
+ }
141
+ else if (code === 'vertical') {
142
+ return QItemChoiceOrientation.Vertical;
143
+ }
144
+ }
145
+ }
146
+ return QItemChoiceOrientation.Vertical;
147
+ }
148
+ /**
149
+ * Converts an array of codings to an array of valueCodings which can use the QuestionnaireItemAnswerOption type
150
+ *
151
+ * @author Sean Fong
152
+ */
153
+ export function mapCodingsToOptions(codings) {
154
+ return codings.map((coding) => {
155
+ return {
156
+ valueCoding: coding
157
+ };
158
+ });
159
+ }
160
+ //# sourceMappingURL=choice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"choice.js","sourceRoot":"","sources":["../../src/utils/choice.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
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
+ export const DEBOUNCE_DURATION = 200;
18
+ export const AUTOCOMPLETE_DEBOUNCE_DURATION = 300;
19
+ //# sourceMappingURL=debounce.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debounce.js","sourceRoot":"","sources":["../../src/utils/debounce.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAErC,MAAM,CAAC,MAAM,8BAA8B,GAAG,GAAG,CAAC"}
@@ -0,0 +1,25 @@
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
+ export const emptyQuestionnaire = {
18
+ resourceType: 'Questionnaire',
19
+ status: 'draft'
20
+ };
21
+ export const emptyResponse = {
22
+ resourceType: 'QuestionnaireResponse',
23
+ status: 'in-progress'
24
+ };
25
+ //# sourceMappingURL=emptyResource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emptyResource.js","sourceRoot":"","sources":["../../src/utils/emptyResource.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,MAAM,CAAC,MAAM,kBAAkB,GAAkB;IAC/C,YAAY,EAAE,eAAe;IAC7B,MAAM,EAAE,OAAO;CAChB,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAA0B;IAClD,YAAY,EAAE,uBAAuB;IACrC,MAAM,EAAE,aAAa;CACtB,CAAC"}
@@ -0,0 +1,228 @@
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
+ import cloneDeep from 'lodash.clonedeep';
18
+ /**
19
+ * Create a linkedQuestionsMap that contains linked items of enableWhen items
20
+ * mapped to an array containing all its respective enableWhen items' linkIds
21
+ * returns a key-value pair of <linkedItemId, [enableWhenItem1LinkId, enableWhenItem2LinkId, enableWhenItem3LinkId]>
22
+ *
23
+ * @author Sean Fong
24
+ */
25
+ export function createEnableWhenLinkedQuestions(enableWhenItems) {
26
+ const linkedQuestionsMap = {};
27
+ for (const linkId in enableWhenItems) {
28
+ enableWhenItems[linkId].linked.forEach((linkedItem) => {
29
+ const linkQId = linkedItem.enableWhen.question;
30
+ if (!linkedQuestionsMap[linkQId]) {
31
+ linkedQuestionsMap[linkQId] = [];
32
+ }
33
+ if (!linkedQuestionsMap[linkQId].includes(linkId)) {
34
+ linkedQuestionsMap[linkQId].push(linkId);
35
+ }
36
+ });
37
+ }
38
+ return linkedQuestionsMap;
39
+ }
40
+ /**
41
+ * Performs switching for non-group enableWhenItems based on their item types.
42
+ *
43
+ * @author Sean Fong
44
+ */
45
+ export function isEnabledAnswerTypeSwitcher(enableWhen, answer) {
46
+ var _a, _b;
47
+ if (enableWhen['answerBoolean'] !== undefined && enableWhen.operator === 'exists') {
48
+ return answerOperatorSwitcher(enableWhen.answerBoolean, answer, enableWhen.operator);
49
+ }
50
+ else if (enableWhen['answerBoolean'] !== undefined && answer.valueBoolean !== undefined) {
51
+ return answerOperatorSwitcher(enableWhen.answerBoolean, answer.valueBoolean, enableWhen.operator);
52
+ }
53
+ else if (enableWhen['answerDecimal'] && answer.valueDecimal) {
54
+ return answerOperatorSwitcher(enableWhen.answerDecimal, answer.valueDecimal, enableWhen.operator);
55
+ }
56
+ else if (enableWhen['answerInteger'] !== undefined && answer.valueInteger !== undefined) {
57
+ return answerOperatorSwitcher(enableWhen.answerInteger, answer.valueInteger, enableWhen.operator);
58
+ }
59
+ else if (enableWhen['answerDate'] && answer.valueDate) {
60
+ return answerOperatorSwitcher(enableWhen.answerDate, answer.valueDate, enableWhen.operator);
61
+ }
62
+ else if (enableWhen['answerDateTime'] && answer.valueDateTime) {
63
+ return answerOperatorSwitcher(enableWhen.answerDateTime, answer.valueDateTime, enableWhen.operator);
64
+ }
65
+ else if (enableWhen['answerTime'] && answer.valueTime) {
66
+ return answerOperatorSwitcher(enableWhen.answerTime, answer.valueTime, enableWhen.operator);
67
+ }
68
+ else if (enableWhen['answerString'] && answer.valueString) {
69
+ return answerOperatorSwitcher(enableWhen.answerString, answer.valueString, enableWhen.operator);
70
+ }
71
+ else if (((_a = enableWhen['answerCoding']) === null || _a === void 0 ? void 0 : _a.code) && ((_b = answer.valueCoding) === null || _b === void 0 ? void 0 : _b.code)) {
72
+ return answerOperatorSwitcher(enableWhen.answerCoding.code, answer.valueCoding.code, enableWhen.operator);
73
+ }
74
+ else if (enableWhen['answerQuantity'] && answer.valueQuantity) {
75
+ return answerOperatorSwitcher(enableWhen.answerQuantity, answer.valueQuantity, enableWhen.operator);
76
+ }
77
+ return false;
78
+ }
79
+ /**
80
+ * Performs switching for value and expected comparisons based on given operator
81
+ *
82
+ * @author Sean Fong
83
+ */
84
+ function answerOperatorSwitcher(expected, value, operator) {
85
+ // FIXME runs even when the linked textbox is not changed
86
+ switch (operator) {
87
+ case 'exists':
88
+ // check if value is an object and contains any answerValues
89
+ return typeof value === 'object' && Object.keys(value).length !== 0;
90
+ case '=':
91
+ return value === expected;
92
+ case '!=':
93
+ return value !== expected;
94
+ case '<':
95
+ return value < expected;
96
+ case '<=':
97
+ return value <= expected;
98
+ case '>':
99
+ return value > expected;
100
+ case '>=':
101
+ return value >= expected;
102
+ default:
103
+ return false;
104
+ }
105
+ }
106
+ /**
107
+ * Read initial answer values in questionnaireResponse
108
+ * return a map of initial values with key-value pair <linkedItemId, initial value>
109
+ *
110
+ * @author Sean Fong
111
+ */
112
+ export function readInitialAnswers(questionnaireResponse, linkedQuestionsMap) {
113
+ if (!questionnaireResponse.item)
114
+ return {};
115
+ const initialValuesMap = {};
116
+ questionnaireResponse.item.forEach((item) => {
117
+ readQuestionnaireResponseItemRecursive(item, initialValuesMap, linkedQuestionsMap);
118
+ });
119
+ return initialValuesMap;
120
+ }
121
+ /**
122
+ * Read initial answer values of each qrItem recursively
123
+ *
124
+ * @author Sean Fong
125
+ */
126
+ function readQuestionnaireResponseItemRecursive(item, initialValues, linkedQuestionsMap) {
127
+ const items = item.item;
128
+ if (items && items.length > 0) {
129
+ // iterate through items of item recursively
130
+ items.forEach((item) => {
131
+ readQuestionnaireResponseItemRecursive(item, initialValues, linkedQuestionsMap);
132
+ });
133
+ return;
134
+ }
135
+ // Read initial answer value of single qrItem
136
+ if (linkedQuestionsMap[item.linkId] && item.answer) {
137
+ initialValues[item.linkId] = item.answer;
138
+ }
139
+ return;
140
+ }
141
+ /**
142
+ * Set initial answer values into enableWhenItems' answer attributes
143
+ * Update enabled status of each enableWhenItem simultaneously
144
+ *
145
+ * @author Sean Fong
146
+ */
147
+ export function setInitialAnswers(initialAnswers, items, linkedQuestionsMap) {
148
+ let updatedItems = cloneDeep(items);
149
+ if (initialAnswers) {
150
+ for (const linkId in initialAnswers) {
151
+ const linkedQuestions = linkedQuestionsMap[linkId];
152
+ const newAnswer = initialAnswers[linkId];
153
+ updatedItems = updateItemAnswer(updatedItems, linkedQuestions, linkId, newAnswer);
154
+ }
155
+ }
156
+ return updatedItems;
157
+ }
158
+ /**
159
+ * Update answer of the target linkId in every related enableWhenItem's linked items
160
+ * Then update the enabled status of every related enableWhenItem
161
+ *
162
+ * @author Sean Fong
163
+ */
164
+ export function updateItemAnswer(items, linkedQuestions, linkId, newAnswer) {
165
+ linkedQuestions.forEach((question) => {
166
+ // Update modified linked answer
167
+ items[question].linked.forEach((linkedItem) => {
168
+ if (linkedItem.enableWhen.question === linkId) {
169
+ linkedItem.answer = newAnswer !== null && newAnswer !== void 0 ? newAnswer : undefined;
170
+ }
171
+ });
172
+ // Update enabled status of modified enableWhenItem
173
+ items[question].isEnabled = checkItemIsEnabled(items[question]);
174
+ });
175
+ return items;
176
+ }
177
+ /**
178
+ * Check if an enableWhenItem is enabled based on the answer of its linked items
179
+ *
180
+ * @author Sean Fong
181
+ */
182
+ export function checkItemIsEnabled(enableWhenItemProperties) {
183
+ const checkedIsEnabledItems = [];
184
+ enableWhenItemProperties.linked.forEach((linkedItem) => {
185
+ if (linkedItem.answer && linkedItem.answer.length > 0) {
186
+ linkedItem.answer.forEach((answer) => {
187
+ checkedIsEnabledItems.push(isEnabledAnswerTypeSwitcher(linkedItem.enableWhen, answer));
188
+ });
189
+ }
190
+ });
191
+ if (checkedIsEnabledItems.length === 0)
192
+ return false;
193
+ return enableWhenItemProperties.enableBehavior === 'any'
194
+ ? checkedIsEnabledItems.some((isEnabled) => isEnabled)
195
+ : checkedIsEnabledItems.every((isEnabled) => isEnabled);
196
+ }
197
+ export function assignPopulatedAnswersToEnableWhen(items, questionnaireResponse) {
198
+ const linkedQuestions = createEnableWhenLinkedQuestions(items);
199
+ const initialAnswers = readInitialAnswers(questionnaireResponse, linkedQuestions);
200
+ items = initialiseBooleanFalses(items);
201
+ const initialisedItems = Object.keys(initialAnswers).length > 0
202
+ ? setInitialAnswers(initialAnswers, items, linkedQuestions)
203
+ : items;
204
+ return { initialisedItems, linkedQuestions };
205
+ }
206
+ function initialiseBooleanFalses(items) {
207
+ for (const linkId in items) {
208
+ const checkedIsEnabledItems = [];
209
+ const enableWhenItemProperties = items[linkId];
210
+ for (const linkedItem of enableWhenItemProperties.linked) {
211
+ if (linkedItem.enableWhen.answerBoolean === true && linkedItem.enableWhen.operator === '!=') {
212
+ checkedIsEnabledItems.push(true);
213
+ continue;
214
+ }
215
+ if (linkedItem.enableWhen.answerBoolean === false && linkedItem.enableWhen.operator === '=') {
216
+ checkedIsEnabledItems.push(true);
217
+ continue;
218
+ }
219
+ checkedIsEnabledItems.push(false);
220
+ }
221
+ enableWhenItemProperties.isEnabled =
222
+ enableWhenItemProperties.enableBehavior === 'any'
223
+ ? checkedIsEnabledItems.some((isEnabled) => isEnabled)
224
+ : checkedIsEnabledItems.every((isEnabled) => isEnabled);
225
+ }
226
+ return items;
227
+ }
228
+ //# sourceMappingURL=enableWhen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enableWhen.js","sourceRoot":"","sources":["../../src/utils/enableWhen.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
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
+ import { createFhirPathContext } from './fhirpath';
18
+ import fhirpath from 'fhirpath';
19
+ import fhirpath_r4_model from 'fhirpath/fhir-context/r4';
20
+ import _isEqual from 'lodash/isEqual';
21
+ import { emptyResponse } from './emptyResource';
22
+ import cloneDeep from 'lodash.clonedeep';
23
+ export function evaluateInitialEnableWhenExpressions(params) {
24
+ const { initialResponse, enableWhenExpressions, variablesFhirPath } = params;
25
+ // Return early if initialResponse is empty
26
+ if (_isEqual(initialResponse, cloneDeep(emptyResponse))) {
27
+ return enableWhenExpressions;
28
+ }
29
+ const initialExpressions = Object.assign({}, enableWhenExpressions);
30
+ if (Object.keys(initialExpressions).length > 0) {
31
+ const fhirPathContext = createFhirPathContext(initialResponse, variablesFhirPath);
32
+ for (const linkId in initialExpressions) {
33
+ try {
34
+ const result = fhirpath.evaluate(initialResponse, enableWhenExpressions[linkId].expression, fhirPathContext, fhirpath_r4_model);
35
+ if (result.length > 0) {
36
+ initialExpressions[linkId].isEnabled = result[0];
37
+ }
38
+ // handle intersect edge case - evualate() returns empty array if result is false
39
+ if (enableWhenExpressions[linkId].expression.includes('intersect') && result.length === 0) {
40
+ initialExpressions[linkId].isEnabled = false;
41
+ }
42
+ }
43
+ catch (e) {
44
+ console.warn(e.message, `LinkId: ${linkId}\nExpression: ${enableWhenExpressions[linkId].expression}`);
45
+ }
46
+ }
47
+ }
48
+ return initialExpressions;
49
+ }
50
+ export function evaluateEnableWhenExpressions(fhirPathContext, enableWhenExpressions) {
51
+ const updatedEnableWhenExpressions = Object.assign({}, enableWhenExpressions);
52
+ let isUpdated = false;
53
+ for (const linkId in updatedEnableWhenExpressions) {
54
+ try {
55
+ const result = fhirpath.evaluate('', enableWhenExpressions[linkId].expression, fhirPathContext, fhirpath_r4_model);
56
+ if (result.length > 0) {
57
+ if (enableWhenExpressions[linkId].isEnabled !== result[0]) {
58
+ isUpdated = true;
59
+ updatedEnableWhenExpressions[linkId].isEnabled = result[0];
60
+ }
61
+ }
62
+ // handle intersect edge case - evualate() returns empty array if result is false
63
+ if (enableWhenExpressions[linkId].expression.includes('intersect') && result.length === 0) {
64
+ updatedEnableWhenExpressions[linkId].isEnabled = false;
65
+ }
66
+ }
67
+ catch (e) {
68
+ console.warn(e.message, `LinkId: ${linkId}\nExpression: ${enableWhenExpressions[linkId].expression}`);
69
+ }
70
+ }
71
+ return {
72
+ enableWhenExpsIsUpdated: isUpdated,
73
+ updatedEnableWhenExpressions: updatedEnableWhenExpressions
74
+ };
75
+ }
76
+ //# sourceMappingURL=enableWhenExpression.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enableWhenExpression.js","sourceRoot":"","sources":["../../src/utils/enableWhenExpression.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,98 @@
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
+ import fhirpath from 'fhirpath';
18
+ import fhirpath_r4_model from 'fhirpath/fhir-context/r4';
19
+ import { evaluateEnableWhenExpressions } from './enableWhenExpression';
20
+ import { evaluateCalculatedExpressions } from './calculatedExpression';
21
+ export function evaluateUpdatedExpressions(params) {
22
+ const { updatedResponse, enableWhenExpressions, calculatedExpressions, variablesFhirPath } = params;
23
+ const hasExpressionToBeUpdated = Object.keys(enableWhenExpressions).length > 0 || Object.keys(calculatedExpressions).length > 0;
24
+ if (hasExpressionToBeUpdated && updatedResponse.item) {
25
+ const fhirPathContext = createFhirPathContext(updatedResponse, variablesFhirPath);
26
+ // Update enableWhenExpressions
27
+ const { enableWhenExpsIsUpdated, updatedEnableWhenExpressions } = evaluateEnableWhenExpressions(fhirPathContext, enableWhenExpressions);
28
+ // Update calculatedExpressions
29
+ const { calculatedExpsIsUpdated, updatedCalculatedExpressions } = evaluateCalculatedExpressions(fhirPathContext, calculatedExpressions);
30
+ const isUpdated = enableWhenExpsIsUpdated || calculatedExpsIsUpdated;
31
+ return { isUpdated, updatedEnableWhenExpressions, updatedCalculatedExpressions };
32
+ }
33
+ return {
34
+ isUpdated: false,
35
+ updatedEnableWhenExpressions: enableWhenExpressions,
36
+ updatedCalculatedExpressions: calculatedExpressions
37
+ };
38
+ }
39
+ export function createFhirPathContext(questionnaireResponse, variablesFhirPath) {
40
+ const fhirPathContext = { resource: questionnaireResponse };
41
+ if (!questionnaireResponse.item || questionnaireResponse.item.length === 0) {
42
+ return fhirPathContext;
43
+ }
44
+ evaluateResourceLevelFhirPath(questionnaireResponse, variablesFhirPath, fhirPathContext);
45
+ for (const topLevelItem of questionnaireResponse.item) {
46
+ evaluateFhirPathRecursive(topLevelItem, variablesFhirPath, fhirPathContext);
47
+ }
48
+ return fhirPathContext;
49
+ }
50
+ export function evaluateFhirPathRecursive(item, variablesFhirPath, fhirPathContext) {
51
+ const items = item.item;
52
+ if (items && items.length > 0) {
53
+ // iterate through items of item recursively
54
+ for (const childItem of items) {
55
+ evaluateFhirPathRecursive(childItem, variablesFhirPath, fhirPathContext);
56
+ }
57
+ }
58
+ evaluateItemFhirPath(item, variablesFhirPath, fhirPathContext);
59
+ }
60
+ export function evaluateItemFhirPath(item, variablesFhirPath, fhirPathContext) {
61
+ const variablesOfItem = variablesFhirPath[item.linkId];
62
+ if (!variablesOfItem || variablesOfItem.length === 0) {
63
+ return;
64
+ }
65
+ variablesOfItem.forEach((variable) => {
66
+ if (variable.expression) {
67
+ try {
68
+ fhirPathContext[`${variable.name}`] = fhirpath.evaluate(item, {
69
+ base: 'QuestionnaireResponse.item',
70
+ expression: variable.expression
71
+ }, fhirPathContext, fhirpath_r4_model);
72
+ }
73
+ catch (e) {
74
+ console.warn(e.message, `LinkId: ${item.linkId}\nExpression: ${variable.expression}`);
75
+ }
76
+ }
77
+ });
78
+ }
79
+ export function evaluateResourceLevelFhirPath(resource, variablesFhirPath, fhirPathContext) {
80
+ const questionnaireLevelVariables = variablesFhirPath['QuestionnaireLevel'];
81
+ if (!questionnaireLevelVariables || questionnaireLevelVariables.length === 0) {
82
+ return;
83
+ }
84
+ questionnaireLevelVariables.forEach((variable) => {
85
+ if (variable.expression) {
86
+ try {
87
+ fhirPathContext[`${variable.name}`] = fhirpath.evaluate(resource, {
88
+ base: 'QuestionnaireResponse',
89
+ expression: variable.expression
90
+ }, fhirPathContext, fhirpath_r4_model);
91
+ }
92
+ catch (e) {
93
+ console.warn(e.message, `Questionnaire-level\nExpression: ${variable.expression}`);
94
+ }
95
+ }
96
+ });
97
+ }
98
+ //# sourceMappingURL=fhirpath.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fhirpath.js","sourceRoot":"","sources":["../../src/utils/fhirpath.ts"],"names":[],"mappings":"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"}