@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,31 @@
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 { constructTabsWithProperties, isTabContainer } from '../tabs';
18
+ export function extractTabs(questionnaire) {
19
+ if (!questionnaire.item || questionnaire.item.length === 0) {
20
+ return {};
21
+ }
22
+ let totalTabs = {};
23
+ for (const topLevelItem of questionnaire.item) {
24
+ const items = topLevelItem.item;
25
+ const topLevelItemIsTabContainer = isTabContainer(topLevelItem);
26
+ const tabs = constructTabsWithProperties(items, topLevelItemIsTabContainer);
27
+ totalTabs = Object.assign(Object.assign({}, totalTabs), tabs);
28
+ }
29
+ return totalTabs;
30
+ }
31
+ //# sourceMappingURL=extractTabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractTabs.js","sourceRoot":"","sources":["../../../src/utils/questionnaireStoreUtils/extractTabs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,2BAA2B,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAItE,MAAM,UAAU,WAAW,CAAC,aAA4B;IACtD,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QAC1D,OAAO,EAAE,CAAC;KACX;IAED,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,KAAK,MAAM,YAAY,IAAI,aAAa,CAAC,IAAI,EAAE;QAC7C,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC;QAChC,MAAM,0BAA0B,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC;QAEhE,MAAM,IAAI,GAAG,2BAA2B,CAAC,KAAK,EAAE,0BAA0B,CAAC,CAAC;QAC5E,SAAS,mCAAQ,SAAS,GAAK,IAAI,CAAE,CAAC;KACvC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,63 @@
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 function extractQuestionnaireLevelVariables(questionnaire) {
18
+ const variables = { fhirPathVariables: {}, xFhirQueryVariables: {} };
19
+ variables.fhirPathVariables['QuestionnaireLevel'] = [];
20
+ if (!questionnaire.extension || questionnaire.extension.length === 0) {
21
+ return variables;
22
+ }
23
+ variables.fhirPathVariables['QuestionnaireLevel'] = getFhirPathVariables(questionnaire.extension);
24
+ for (const exp of getXFhirQueryVariables(questionnaire.extension)) {
25
+ if (exp.name) {
26
+ variables.xFhirQueryVariables[exp.name] = {
27
+ valueExpression: exp
28
+ };
29
+ }
30
+ }
31
+ return variables;
32
+ }
33
+ /**
34
+ * Get fhirpath variables from an array of extensions
35
+ *
36
+ * @author Sean Fong
37
+ */
38
+ export function getFhirPathVariables(extensions) {
39
+ return (extensions
40
+ .filter((extension) => {
41
+ var _a;
42
+ return extension.url === 'http://hl7.org/fhir/StructureDefinition/variable' &&
43
+ ((_a = extension.valueExpression) === null || _a === void 0 ? void 0 : _a.language) === 'text/fhirpath';
44
+ })
45
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
46
+ .map((extension) => extension.valueExpression));
47
+ }
48
+ /**
49
+ * Get x-fhir-query variables from an array of extensions
50
+ *
51
+ * @author Sean Fong
52
+ */
53
+ export function getXFhirQueryVariables(extensions) {
54
+ return (extensions
55
+ .filter((extension) => {
56
+ var _a;
57
+ return extension.url === 'http://hl7.org/fhir/StructureDefinition/variable' &&
58
+ ((_a = extension.valueExpression) === null || _a === void 0 ? void 0 : _a.language) === 'application/x-fhir-query';
59
+ })
60
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
61
+ .map((extension) => extension.valueExpression));
62
+ }
63
+ //# sourceMappingURL=extractVariables.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractVariables.js","sourceRoot":"","sources":["../../../src/utils/questionnaireStoreUtils/extractVariables.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,MAAM,UAAU,kCAAkC,CAAC,aAA4B;IAC7E,MAAM,SAAS,GAAc,EAAE,iBAAiB,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE,CAAC;IAEhF,SAAS,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,GAAG,EAAE,CAAC;IAEvD,IAAI,CAAC,aAAa,CAAC,SAAS,IAAI,aAAa,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;QACpE,OAAO,SAAS,CAAC;KAClB;IAED,SAAS,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,GAAG,oBAAoB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAElG,KAAK,MAAM,GAAG,IAAI,sBAAsB,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE;QACjE,IAAI,GAAG,CAAC,IAAI,EAAE;YACZ,SAAS,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG;gBACxC,eAAe,EAAE,GAAG;aACrB,CAAC;SACH;KACF;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAuB;IAC1D,OAAO,CACL,UAAU;SACP,MAAM,CACL,CAAC,SAAS,EAAE,EAAE;;QACZ,OAAA,SAAS,CAAC,GAAG,KAAK,kDAAkD;YACpE,CAAA,MAAA,SAAS,CAAC,eAAe,0CAAE,QAAQ,MAAK,eAAe,CAAA;KAAA,CAC1D;QACD,oEAAoE;SACnE,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,eAAgB,CAAC,CAClD,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,UAAuB;IAC5D,OAAO,CACL,UAAU;SACP,MAAM,CACL,CAAC,SAAS,EAAE,EAAE;;QACZ,OAAA,SAAS,CAAC,GAAG,KAAK,kDAAkD;YACpE,CAAA,MAAA,SAAS,CAAC,eAAe,0CAAE,QAAQ,MAAK,0BAA0B,CAAA;KAAA,CACrE;QACD,oEAAoE;SACnE,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,eAAgB,CAAC,CAClD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,58 @@
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
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
+ return new (P || (P = Promise))(function (resolve, reject) {
20
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
22
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
23
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
24
+ });
25
+ };
26
+ import { createValueSetToXFhirQueryVariableNameMap, getValueSetCodings, getValueSetPromise, resolvePromises } from '../valueSet';
27
+ export function resolveValueSets(variables, valueSetPromises, processedValueSetCodings) {
28
+ return __awaiter(this, void 0, void 0, function* () {
29
+ // Create a <valueSetUrl, XFhirQueryVariableName> map
30
+ const valueSetToXFhirQueryVariableNameMap = createValueSetToXFhirQueryVariableNameMap(variables.xFhirQueryVariables);
31
+ if (Object.keys(valueSetToXFhirQueryVariableNameMap).length > 0) {
32
+ for (const valueSetUrl in valueSetToXFhirQueryVariableNameMap) {
33
+ valueSetPromises[valueSetUrl] = {
34
+ promise: getValueSetPromise(valueSetUrl)
35
+ };
36
+ }
37
+ }
38
+ // Resolve promises and store valueSet codings in preprocessedValueSetCodings AND XFhirQueryVariables
39
+ const resolvedPromises = yield resolvePromises(valueSetPromises);
40
+ for (const valueSetUrl in resolvedPromises) {
41
+ const valueSet = resolvedPromises[valueSetUrl].valueSet;
42
+ if (valueSet) {
43
+ if (valueSetToXFhirQueryVariableNameMap[valueSetUrl]) {
44
+ // valueSetUrl is in x-fhir-query variables, save to variable
45
+ const variableName = valueSetToXFhirQueryVariableNameMap[valueSetUrl];
46
+ const variable = variables.xFhirQueryVariables[variableName];
47
+ variables.xFhirQueryVariables[variableName] = Object.assign(Object.assign({}, variable), { result: resolvedPromises[valueSetUrl].valueSet });
48
+ }
49
+ else {
50
+ // valueSetUrl is in x-fhir-query variables, save to preprocessedValueSetCodings
51
+ processedValueSetCodings[valueSetUrl] = getValueSetCodings(valueSet);
52
+ }
53
+ }
54
+ }
55
+ return { variables, processedValueSetCodings };
56
+ });
57
+ }
58
+ //# sourceMappingURL=resolveValueSets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveValueSets.js","sourceRoot":"","sources":["../../../src/utils/questionnaireStoreUtils/resolveValueSets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;;;;;;;;;;AAGH,OAAO,EACL,yCAAyC,EACzC,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EAChB,MAAM,aAAa,CAAC;AAIrB,MAAM,UAAgB,gBAAgB,CACpC,SAAoB,EACpB,gBAAiD,EACjD,wBAAkD;;QAElD,qDAAqD;QACrD,MAAM,mCAAmC,GACvC,yCAAyC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;QAE3E,IAAI,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/D,KAAK,MAAM,WAAW,IAAI,mCAAmC,EAAE;gBAC7D,gBAAgB,CAAC,WAAW,CAAC,GAAG;oBAC9B,OAAO,EAAE,kBAAkB,CAAC,WAAW,CAAC;iBACzC,CAAC;aACH;SACF;QAED,qGAAqG;QACrG,MAAM,gBAAgB,GAAG,MAAM,eAAe,CAAC,gBAAgB,CAAC,CAAC;QAEjE,KAAK,MAAM,WAAW,IAAI,gBAAgB,EAAE;YAC1C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC;YAExD,IAAI,QAAQ,EAAE;gBACZ,IAAI,mCAAmC,CAAC,WAAW,CAAC,EAAE;oBACpD,6DAA6D;oBAC7D,MAAM,YAAY,GAAG,mCAAmC,CAAC,WAAW,CAAC,CAAC;oBACtE,MAAM,QAAQ,GAAG,SAAS,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;oBAC7D,SAAS,CAAC,mBAAmB,CAAC,YAAY,CAAC,mCACtC,QAAQ,KACX,MAAM,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC,QAAQ,GAC/C,CAAC;iBACH;qBAAM;oBACL,gFAAgF;oBAChF,wBAAwB,CAAC,WAAW,CAAC,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;iBACtE;aACF;SACF;QAED,OAAO,EAAE,SAAS,EAAE,wBAAwB,EAAE,CAAC;IACjD,CAAC;CAAA"}
@@ -0,0 +1,104 @@
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 { isHidden } from './qItem';
18
+ /**
19
+ * Recursively go through the questionnaireResponse and remove qrItems whose qItems are hidden in the form
20
+ *
21
+ * @author Sean Fong
22
+ */
23
+ export function removeHiddenAnswers(params) {
24
+ const { questionnaire, questionnaireResponse, enableWhenIsActivated, enableWhenItems, enableWhenExpressions } = params;
25
+ const topLevelQItems = questionnaire.item;
26
+ const topLevelQRItems = questionnaireResponse.item;
27
+ if (!topLevelQItems ||
28
+ topLevelQItems.length === 0 ||
29
+ !topLevelQRItems ||
30
+ topLevelQRItems.length === 0) {
31
+ return questionnaireResponse;
32
+ }
33
+ topLevelQRItems.forEach((qrItem, i) => {
34
+ const qItem = topLevelQItems[i];
35
+ const newTopLevelQRItem = readQuestionnaireResponseItemRecursive({
36
+ qItem,
37
+ qrItem,
38
+ enableWhenIsActivated,
39
+ enableWhenItems,
40
+ enableWhenExpressions
41
+ });
42
+ if (newTopLevelQRItem && questionnaireResponse.item) {
43
+ questionnaireResponse.item[i] = Object.assign({}, newTopLevelQRItem);
44
+ }
45
+ });
46
+ return questionnaireResponse;
47
+ }
48
+ function readQuestionnaireResponseItemRecursive(params) {
49
+ const { qItem, qrItem, enableWhenIsActivated, enableWhenItems, enableWhenExpressions } = params;
50
+ const qItems = qItem.item;
51
+ const qrItems = qrItem.item;
52
+ // Process group items
53
+ if (qItems && qItems.length > 0) {
54
+ // Return nothing if corresponding qItem is hidden
55
+ if (isHidden({
56
+ questionnaireItem: qItem,
57
+ enableWhenIsActivated,
58
+ enableWhenItems,
59
+ enableWhenExpressions
60
+ }))
61
+ return null;
62
+ if (qrItems && qrItems.length > 0) {
63
+ const newQrItems = [];
64
+ // Loop over qItems - but end loop if we either reach the end of qItems or qrItems
65
+ // Under normal circumstances we will reach the end of both arrays together
66
+ for (let qItemIndex = 0, qrItemIndex = 0; qItemIndex < qItems.length || qrItemIndex < qrItems.length; qItemIndex++) {
67
+ // Save qrItem if linkIds of current qItem and qrItem are the same
68
+ if (qrItems[qrItemIndex] && qItems[qItemIndex].linkId === qrItems[qrItemIndex].linkId) {
69
+ const newQrItem = readQuestionnaireResponseItemRecursive({
70
+ qItem: qItems[qItemIndex],
71
+ qrItem: qrItems[qrItemIndex],
72
+ enableWhenIsActivated,
73
+ enableWhenItems,
74
+ enableWhenExpressions
75
+ });
76
+ if (newQrItem) {
77
+ newQrItems.push(newQrItem);
78
+ }
79
+ // Decrement qItem index if the next qrItem is an answer from a repeatGroup
80
+ // Essentially persisting the current qItem linked to be matched up with the next qrItem linkId
81
+ if (qrItems.length !== qrItemIndex + 1 &&
82
+ qrItems[qrItemIndex].linkId === qrItems[qrItemIndex + 1].linkId) {
83
+ qItemIndex--;
84
+ }
85
+ // Only Increment qrItem index whenever the current qrItem linkId matches up with the current qItem
86
+ qrItemIndex++;
87
+ }
88
+ }
89
+ return Object.assign(Object.assign({}, qrItem), { item: newQrItems });
90
+ }
91
+ // Also perform checking if answer exists
92
+ return qrItem['answer'] ? qrItem : null;
93
+ }
94
+ // Process non-group items
95
+ return isHidden({
96
+ questionnaireItem: qItem,
97
+ enableWhenIsActivated,
98
+ enableWhenItems,
99
+ enableWhenExpressions
100
+ })
101
+ ? null
102
+ : Object.assign({}, qrItem);
103
+ }
104
+ //# sourceMappingURL=removeHidden.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"removeHidden.js","sourceRoot":"","sources":["../../src/utils/removeHidden.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,190 @@
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 { hasHiddenExtension, isSpecificItemControl } from './itemControl';
18
+ import { isHiddenByEnableWhens } from './qItem';
19
+ export function getFirstVisibleTab(tabs, enableWhenItems, enableWhenExpressions) {
20
+ return Object.entries(tabs)
21
+ .sort(([, tabA], [, tabB]) => tabA.tabIndex - tabB.tabIndex)
22
+ .findIndex(([tabLinkId, tab]) => {
23
+ if (tab.isHidden) {
24
+ return false;
25
+ }
26
+ if (enableWhenItems[tabLinkId]) {
27
+ return enableWhenItems[tabLinkId].isEnabled;
28
+ }
29
+ if (enableWhenExpressions[tabLinkId]) {
30
+ return enableWhenExpressions[tabLinkId].isEnabled;
31
+ }
32
+ return true;
33
+ });
34
+ }
35
+ /*
36
+ * Copyright 2023 Commonwealth Scientific and Industrial Research
37
+ * Organisation (CSIRO) ABN 41 687 119 230.
38
+ *
39
+ * Licensed under the Apache License, Version 2.0 (the "License");
40
+ * you may not use this file except in compliance with the License.
41
+ * You may obtain a copy of the License at
42
+ *
43
+ * http://www.apache.org/licenses/LICENSE-2.0
44
+ *
45
+ * Unless required by applicable law or agreed to in writing, software
46
+ * distributed under the License is distributed on an "AS IS" BASIS,
47
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
48
+ * See the License for the specific language governing permissions and
49
+ * limitations under the License.
50
+ */
51
+ /**
52
+ * Checks if any of the items in a qItem array is a tabbed item
53
+ * Returns true if there is at least one tabbed item
54
+ *
55
+ * @author Sean Fong
56
+ */
57
+ export function containsTabs(topLevelQItem) {
58
+ if (!topLevelQItem.item) {
59
+ return false;
60
+ }
61
+ const tabs = getTabbedItems(topLevelQItem.item);
62
+ return tabs.length > 0;
63
+ }
64
+ /**
65
+ * Checks if a top-level QItem is a tab container
66
+ * All items within a tab container are tabbed items
67
+ *
68
+ * @author Sean Fong
69
+ */
70
+ export function isTabContainer(topLevelQItem) {
71
+ return isSpecificItemControl(topLevelQItem, 'tab-container');
72
+ }
73
+ /**
74
+ * Get tabbed items from a qItem array
75
+ *
76
+ * @author Sean Fong
77
+ */
78
+ export function getTabbedItems(items) {
79
+ return items.filter((i) => isTab(i));
80
+ }
81
+ /**
82
+ * Check if a qItem is a tabbed item
83
+ *
84
+ * @author Sean Fong
85
+ */
86
+ export function isTab(item) {
87
+ var _a, _b, _c;
88
+ const itemControl = (_a = item.extension) === null || _a === void 0 ? void 0 : _a.find((e) => e.url === 'http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl');
89
+ if (itemControl) {
90
+ const tabCoding = (_c = (_b = itemControl.valueCodeableConcept) === null || _b === void 0 ? void 0 : _b.coding) === null || _c === void 0 ? void 0 : _c.find((c) => c.code === 'tab');
91
+ if (tabCoding) {
92
+ return true;
93
+ }
94
+ }
95
+ return false;
96
+ }
97
+ /**
98
+ * Create a <linkId, {isComplete: boolean}> key-value pair for all tabbed items in a qItem array
99
+ *
100
+ * @author Sean Fong
101
+ */
102
+ export function constructTabsWithProperties(qItems, hasTabContainer) {
103
+ if (!qItems)
104
+ return {};
105
+ const qItemTabs = hasTabContainer ? qItems : qItems.filter(isTab);
106
+ const tabs = {};
107
+ for (const [i, qItem] of qItemTabs.entries()) {
108
+ tabs[qItem.linkId] = {
109
+ tabIndex: i,
110
+ isComplete: false,
111
+ isHidden: hasHiddenExtension(qItem)
112
+ };
113
+ }
114
+ return tabs;
115
+ }
116
+ export function constructTabsWithVisibility(params) {
117
+ const { tabs, enableWhenIsActivated, enableWhenItems, enableWhenExpressions } = params;
118
+ return Object.entries(tabs).map(([linkId]) => {
119
+ const isVisible = !isHiddenByEnableWhens({
120
+ linkId,
121
+ enableWhenIsActivated,
122
+ enableWhenItems,
123
+ enableWhenExpressions
124
+ });
125
+ return {
126
+ linkId,
127
+ isVisible
128
+ };
129
+ });
130
+ }
131
+ /**
132
+ * Get index of next visible tab
133
+ *
134
+ * @author Sean Fong
135
+ */
136
+ export function getNextVisibleTabIndex(params) {
137
+ const { tabs, currentTabIndex, enableWhenIsActivated, enableWhenItems, enableWhenExpressions } = params;
138
+ const tabsWithVisibility = constructTabsWithVisibility({
139
+ tabs,
140
+ enableWhenIsActivated,
141
+ enableWhenItems,
142
+ enableWhenExpressions
143
+ });
144
+ let nextTabIndex = currentTabIndex + 1;
145
+ const nextTabIndexIsVisible = false;
146
+ while (!nextTabIndexIsVisible) {
147
+ if (tabsWithVisibility[nextTabIndex].isVisible) {
148
+ return nextTabIndex;
149
+ }
150
+ nextTabIndex++;
151
+ }
152
+ return nextTabIndex;
153
+ }
154
+ /**
155
+ *
156
+ * Get index of first visible tab
157
+ *
158
+ * @author Sean Fong
159
+ */
160
+ export function getFirstVisibleTabIndex(tabs, enableWhenIsActivated, enableWhenItems, enableWhenExpressions) {
161
+ const tabsWithVisibility = constructTabsWithVisibility({
162
+ tabs,
163
+ enableWhenIsActivated,
164
+ enableWhenItems,
165
+ enableWhenExpressions
166
+ });
167
+ return tabsWithVisibility.findIndex((tab) => tab.isVisible);
168
+ }
169
+ /**
170
+ *
171
+ * Find number of visible tabs
172
+ *
173
+ * @author Sean Fong
174
+ */
175
+ export function findNumOfVisibleTabs(tabs, enableWhenIsActivated, enableWhenItems, enableWhenExpressions) {
176
+ const tabsWithVisibility = constructTabsWithVisibility({
177
+ tabs,
178
+ enableWhenIsActivated,
179
+ enableWhenItems,
180
+ enableWhenExpressions
181
+ });
182
+ return tabsWithVisibility.filter((tab) => tab.isVisible).length;
183
+ }
184
+ export function getContextDisplays(item) {
185
+ if (!item.item || item.item.length === 0) {
186
+ return [];
187
+ }
188
+ return item.item.filter((childItem) => isSpecificItemControl(childItem, 'context-display') && childItem.type === 'display');
189
+ }
190
+ //# sourceMappingURL=tabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../src/utils/tabs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,126 @@
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
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
+ return new (P || (P = Promise))(function (resolve, reject) {
20
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
22
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
23
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
24
+ });
25
+ };
26
+ import * as FHIR from 'fhirclient';
27
+ const VALID_VALUE_SET_URL_REGEX = /https?:\/\/(www\.)?[-\w@:%.+~#=]{2,256}\.[a-z]{2,4}\b([-@\w:%+.~#?&/=]*ValueSet[-@\w:%+.~#?&/=]*)/;
28
+ const VALID_FHIRPATH_VARIABLE_REGEX = /%(.*?)\./;
29
+ const ONTOSERVER_ENDPOINT = 'https://r4.ontoserver.csiro.au/fhir/';
30
+ export function getTerminologyServerUrl(qItem) {
31
+ var _a;
32
+ const itemControl = (_a = qItem.extension) === null || _a === void 0 ? void 0 : _a.find((extension) => extension.url === 'http://hl7.org/fhir/StructureDefinition/terminology-server');
33
+ if (itemControl) {
34
+ return itemControl.valueUrl;
35
+ }
36
+ return undefined;
37
+ }
38
+ export function getValueSetPromise(url, terminologyServer) {
39
+ let valueSetUrl = url;
40
+ if (url.includes('ValueSet/$expand?url=')) {
41
+ const splitUrl = url.split('ValueSet/$expand?url=');
42
+ terminologyServer = splitUrl[0];
43
+ valueSetUrl = splitUrl[1];
44
+ }
45
+ valueSetUrl = valueSetUrl.replace('|', '&version=');
46
+ return FHIR.client({ serverUrl: terminologyServer !== null && terminologyServer !== void 0 ? terminologyServer : ONTOSERVER_ENDPOINT }).request({
47
+ url: 'ValueSet/$expand?url=' + valueSetUrl
48
+ });
49
+ }
50
+ export function resolvePromises(valueSetPromises) {
51
+ return __awaiter(this, void 0, void 0, function* () {
52
+ const newValueSetPromises = {};
53
+ const valueSetPromiseKeys = Object.keys(valueSetPromises);
54
+ const valueSetPromiseValues = Object.values(valueSetPromises);
55
+ const promises = valueSetPromiseValues.map((valueSetPromise) => valueSetPromise.promise);
56
+ const settledPromises = yield Promise.allSettled(promises);
57
+ for (const [i, settledPromise] of settledPromises.entries()) {
58
+ // Only add valueSet if the promise was fulfilled
59
+ if (settledPromise.status === 'fulfilled') {
60
+ const valueSet = settledPromise.value;
61
+ const key = valueSetPromiseKeys[i];
62
+ const valueSetPromise = valueSetPromiseValues[i];
63
+ if (key && valueSetPromise) {
64
+ valueSetPromise.valueSet = valueSet;
65
+ newValueSetPromises[key] = valueSetPromise;
66
+ }
67
+ }
68
+ }
69
+ return newValueSetPromises;
70
+ });
71
+ }
72
+ /**
73
+ * Sets an array of codings with the values from a valueSet
74
+ *
75
+ * @author Sean Fong
76
+ */
77
+ export function getValueSetCodings(valueSet) {
78
+ var _a, _b, _c;
79
+ return (_c = (_b = (_a = valueSet.expansion) === null || _a === void 0 ? void 0 : _a.contains) === null || _b === void 0 ? void 0 : _b.map((coding) => coding)) !== null && _c !== void 0 ? _c : [];
80
+ }
81
+ /**
82
+ * Evaluate valueSets in answerExpression with fhirpath
83
+ *
84
+ * @author Sean Fong
85
+ */
86
+ export function evaluateAnswerExpressionValueSet(answerExpression, itemLevelVariables, preprocessedCodings) {
87
+ var _a;
88
+ const expression = answerExpression.expression;
89
+ if (!expression)
90
+ return [];
91
+ const match = expression.match(VALID_FHIRPATH_VARIABLE_REGEX);
92
+ const variableName = match === null || match === void 0 ? void 0 : match[1];
93
+ if (!variableName)
94
+ return [];
95
+ const matchedVariable = itemLevelVariables === null || itemLevelVariables === void 0 ? void 0 : itemLevelVariables.find((variable) => variable.name === variableName);
96
+ if (!matchedVariable)
97
+ return [];
98
+ const valueSetExpression = matchedVariable.expression;
99
+ if (!valueSetExpression)
100
+ return [];
101
+ if (!VALID_VALUE_SET_URL_REGEX.test(valueSetExpression))
102
+ return [];
103
+ return (_a = preprocessedCodings[valueSetExpression]) !== null && _a !== void 0 ? _a : [];
104
+ }
105
+ export function createValueSetToXFhirQueryVariableNameMap(variables) {
106
+ const valueSetToNameMap = {};
107
+ for (const [name, variable] of Object.entries(variables)) {
108
+ const expressionStr = variable.valueExpression.expression;
109
+ if (expressionStr && VALID_VALUE_SET_URL_REGEX.test(expressionStr)) {
110
+ valueSetToNameMap[expressionStr] = name;
111
+ }
112
+ }
113
+ return valueSetToNameMap;
114
+ }
115
+ export function getResourceFromLaunchContext(resourceType, patient, user, encounter) {
116
+ switch (resourceType) {
117
+ case 'Patient':
118
+ return patient;
119
+ case 'Practitioner':
120
+ return user;
121
+ case 'Encounter':
122
+ return encounter;
123
+ }
124
+ return null;
125
+ }
126
+ //# sourceMappingURL=valueSet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"valueSet.js","sourceRoot":"","sources":["../../src/utils/valueSet.ts"],"names":[],"mappings":"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"}