@aehrc/smart-forms-renderer 0.7.1 → 0.8.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 (347) hide show
  1. package/README.md +1 -1
  2. package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.js +1 -2
  3. package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.js.map +1 -1
  4. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionFields.d.ts +12 -0
  5. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionFields.js +39 -0
  6. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionFields.js.map +1 -0
  7. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.d.ts +3 -3
  8. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.js +14 -27
  9. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.js.map +1 -1
  10. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetFields.d.ts +13 -0
  11. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetFields.js +42 -0
  12. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetFields.js.map +1 -0
  13. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.d.ts +4 -3
  14. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.js +14 -22
  15. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.js.map +1 -1
  16. package/lib/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.d.ts +2 -2
  17. package/lib/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.js +3 -3
  18. package/lib/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.js.map +1 -1
  19. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionFields.d.ts +12 -0
  20. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionFields.js +27 -0
  21. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionFields.js.map +1 -0
  22. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.d.ts +1 -1
  23. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.js +9 -24
  24. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.js.map +1 -1
  25. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetFields.d.ts +14 -0
  26. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetFields.js +42 -0
  27. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetFields.js.map +1 -0
  28. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.d.ts +1 -1
  29. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.js +8 -21
  30. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.js.map +1 -1
  31. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.d.ts +10 -0
  32. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.js +41 -0
  33. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.js.map +1 -0
  34. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.js +7 -23
  35. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.js.map +1 -1
  36. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.d.ts +12 -0
  37. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.js +42 -0
  38. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.js.map +1 -0
  39. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.js +8 -18
  40. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.js.map +1 -1
  41. package/lib/components/FormComponents/DecimalItem/DecimalItem.js +3 -2
  42. package/lib/components/FormComponents/DecimalItem/DecimalItem.js.map +1 -1
  43. package/lib/components/FormComponents/GridGroup/GridGroup.js +2 -2
  44. package/lib/components/FormComponents/GridGroup/GridGroup.js.map +1 -1
  45. package/lib/components/FormComponents/GridGroup/GridRow.js +2 -2
  46. package/lib/components/FormComponents/GridGroup/GridRow.js.map +1 -1
  47. package/lib/components/FormComponents/GroupItem/GroupChildItemSwitcher.d.ts +10 -0
  48. package/lib/components/FormComponents/GroupItem/GroupChildItemSwitcher.js +73 -0
  49. package/lib/components/FormComponents/GroupItem/GroupChildItemSwitcher.js.map +1 -0
  50. package/lib/components/FormComponents/GroupItem/GroupItem.js +3 -3
  51. package/lib/components/FormComponents/GroupItem/GroupItem.js.map +1 -1
  52. package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.js +4 -4
  53. package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.js.map +1 -1
  54. package/lib/components/FormComponents/GroupItem/ItemSwitcher.d.ts +10 -0
  55. package/lib/components/FormComponents/GroupItem/ItemSwitcher.js +81 -0
  56. package/lib/components/FormComponents/GroupItem/ItemSwitcher.js.map +1 -0
  57. package/lib/components/FormComponents/GroupItem/TopLevelGroupItemSwitcher.d.ts +10 -0
  58. package/lib/components/FormComponents/GroupItem/TopLevelGroupItemSwitcher.js +45 -0
  59. package/lib/components/FormComponents/GroupItem/TopLevelGroupItemSwitcher.js.map +1 -0
  60. package/lib/components/FormComponents/IntegerItem/IntegerItem.js +3 -2
  61. package/lib/components/FormComponents/IntegerItem/IntegerItem.js.map +1 -1
  62. package/lib/components/FormComponents/Item.styles.d.ts +2 -2
  63. package/lib/components/FormComponents/Item.styles.js +2 -2
  64. package/lib/components/FormComponents/Item.styles.js.map +1 -1
  65. package/lib/components/FormComponents/ItemParts/RadioAnswerOptionButtons.d.ts +8 -0
  66. package/lib/components/FormComponents/ItemParts/RadioAnswerOptionButtons.js +37 -0
  67. package/lib/components/FormComponents/ItemParts/RadioAnswerOptionButtons.js.map +1 -0
  68. package/lib/components/FormComponents/ItemParts/RadioButtons.d.ts +8 -0
  69. package/lib/components/FormComponents/ItemParts/RadioButtons.js +37 -0
  70. package/lib/components/FormComponents/ItemParts/RadioButtons.js.map +1 -0
  71. package/lib/components/FormComponents/ItemParts/RadioButtonsAnswerOption.d.ts +8 -0
  72. package/lib/components/FormComponents/ItemParts/RadioButtonsAnswerOption.js +37 -0
  73. package/lib/components/FormComponents/ItemParts/RadioButtonsAnswerOption.js.map +1 -0
  74. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.d.ts +20 -0
  75. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.js +49 -0
  76. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.js.map +1 -0
  77. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteFieldEndAdornment.d.ts +0 -0
  78. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteFieldEndAdornment.js +2 -0
  79. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteFieldEndAdornment.js.map +1 -0
  80. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.js +11 -35
  81. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.js.map +1 -1
  82. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionFields.d.ts +17 -0
  83. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionFields.js +42 -0
  84. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionFields.js.map +1 -0
  85. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.d.ts +3 -3
  86. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.js +23 -36
  87. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.js.map +1 -1
  88. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.d.ts +2 -2
  89. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.js +3 -3
  90. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.js.map +1 -1
  91. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionFields.d.ts +15 -0
  92. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionFields.js +29 -0
  93. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionFields.js.map +1 -0
  94. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.d.ts +1 -1
  95. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.js +3 -23
  96. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.js.map +1 -1
  97. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.d.ts +11 -0
  98. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.js +14 -0
  99. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.js.map +1 -0
  100. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionFields.d.ts +0 -0
  101. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionFields.js +2 -0
  102. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionFields.js.map +1 -0
  103. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.js +18 -23
  104. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.js.map +1 -1
  105. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.d.ts +12 -0
  106. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.js +16 -0
  107. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.js.map +1 -0
  108. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.js +8 -14
  109. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.js.map +1 -1
  110. package/lib/components/FormComponents/RepeatGroup/RepeatGroup.js +4 -3
  111. package/lib/components/FormComponents/RepeatGroup/RepeatGroup.js.map +1 -1
  112. package/lib/components/FormComponents/RepeatGroup/index.d.ts +1 -0
  113. package/lib/components/FormComponents/RepeatGroup/index.js +18 -0
  114. package/lib/components/FormComponents/RepeatGroup/index.js.map +1 -0
  115. package/lib/components/FormComponents/RepeatItem/RepeatItem.js +1 -1
  116. package/lib/components/FormComponents/RepeatItem/RepeatItem.js.map +1 -1
  117. package/lib/components/FormComponents/SingleItem/SingleItem.d.ts +2 -2
  118. package/lib/components/FormComponents/SingleItem/SingleItem.js +2 -2
  119. package/lib/components/FormComponents/SingleItem/SingleItem.js.map +1 -1
  120. package/lib/components/FormComponents/SingleItem/SingleItemSwitcher.d.ts +2 -2
  121. package/lib/components/FormComponents/SingleItem/SingleItemSwitcher.js +3 -3
  122. package/lib/components/FormComponents/SingleItem/SingleItemSwitcher.js.map +1 -1
  123. package/lib/components/FormComponents/SingleItem/index.d.ts +1 -0
  124. package/lib/components/FormComponents/SingleItem/index.js +18 -0
  125. package/lib/components/FormComponents/SingleItem/index.js.map +1 -0
  126. package/lib/components/FormComponents/StringItem/StringItem.js +3 -2
  127. package/lib/components/FormComponents/StringItem/StringItem.js.map +1 -1
  128. package/lib/components/FormComponents/Tables/AddItemButton.d.ts +8 -0
  129. package/lib/components/FormComponents/Tables/AddItemButton.js +28 -0
  130. package/lib/components/FormComponents/Tables/AddItemButton.js.map +1 -0
  131. package/lib/components/FormComponents/Tables/AddRowButton.d.ts +8 -0
  132. package/lib/components/FormComponents/Tables/AddRowButton.js +28 -0
  133. package/lib/components/FormComponents/Tables/AddRowButton.js.map +1 -0
  134. package/lib/components/FormComponents/Tables/GroupTable.d.ts +10 -0
  135. package/lib/components/FormComponents/Tables/GroupTable.js +108 -0
  136. package/lib/components/FormComponents/Tables/GroupTable.js.map +1 -0
  137. package/lib/components/FormComponents/Tables/GroupTableRow.d.ts +10 -0
  138. package/lib/components/FormComponents/Tables/GroupTableRow.js +46 -0
  139. package/lib/components/FormComponents/Tables/GroupTableRow.js.map +1 -0
  140. package/lib/components/FormComponents/Tables/QItemGroupTable.js +7 -5
  141. package/lib/components/FormComponents/Tables/QItemGroupTable.js.map +1 -1
  142. package/lib/components/FormComponents/Tables/QItemGroupTableRow.js +2 -2
  143. package/lib/components/FormComponents/Tables/QItemGroupTableRow.js.map +1 -1
  144. package/lib/components/FormComponents/Tables/index.d.ts +1 -0
  145. package/lib/components/FormComponents/Tables/index.js +18 -0
  146. package/lib/components/FormComponents/Tables/index.js.map +1 -0
  147. package/lib/components/FormComponents/TextItem/TextItem.js +3 -2
  148. package/lib/components/FormComponents/TextItem/TextItem.js.map +1 -1
  149. package/lib/components/FormComponents/index.d.ts +3 -0
  150. package/lib/components/FormComponents/index.js +20 -0
  151. package/lib/components/FormComponents/index.js.map +1 -0
  152. package/lib/components/Renderer/BaseRenderer.js +26 -14
  153. package/lib/components/Renderer/BaseRenderer.js.map +1 -1
  154. package/lib/components/Renderer/FormBodyCollapsible.js +2 -2
  155. package/lib/components/Renderer/FormBodyCollapsible.js.map +1 -1
  156. package/lib/components/Renderer/FormBodyTabbed.js +3 -3
  157. package/lib/components/Renderer/FormBodyTabbed.js.map +1 -1
  158. package/lib/components/Renderer/FormTopLevelItem.d.ts +4 -4
  159. package/lib/components/Renderer/FormTopLevelItem.js +14 -1
  160. package/lib/components/Renderer/FormTopLevelItem.js.map +1 -1
  161. package/lib/components/Tabs/FormBodySingleTab.js +1 -1
  162. package/lib/components/Tabs/FormBodySingleTab.js.map +1 -1
  163. package/lib/components/Tabs/FormBodyTabList.d.ts +1 -0
  164. package/lib/components/Tabs/FormBodyTabList.js +3 -4
  165. package/lib/components/Tabs/FormBodyTabList.js.map +1 -1
  166. package/lib/components/Tabs/FormBodyTabListWrapper.d.ts +1 -1
  167. package/lib/components/Tabs/FormBodyTabListWrapper.js +6 -13
  168. package/lib/components/Tabs/FormBodyTabListWrapper.js.map +1 -1
  169. package/lib/components/Tabs/ShowCompletedTabsSection.d.ts +7 -0
  170. package/lib/components/Tabs/ShowCompletedTabsSection.js +34 -0
  171. package/lib/components/Tabs/ShowCompletedTabsSection.js.map +1 -0
  172. package/lib/components/index.d.ts +1 -0
  173. package/lib/components/index.js +1 -0
  174. package/lib/components/index.js.map +1 -1
  175. package/lib/hooks/index.d.ts +1 -0
  176. package/lib/hooks/index.js +2 -0
  177. package/lib/hooks/index.js.map +1 -0
  178. package/lib/hooks/useContextDisplayItems.d.ts +6 -0
  179. package/lib/hooks/useContextDisplayItems.js +30 -0
  180. package/lib/hooks/useContextDisplayItems.js.map +1 -0
  181. package/lib/hooks/useDecimalUpdateFromProp.d.ts +2 -0
  182. package/lib/hooks/useDecimalUpdateFromProp.js +29 -0
  183. package/lib/hooks/useDecimalUpdateFromProp.js.map +1 -0
  184. package/lib/hooks/useInitialiseRenderer.js +2 -2
  185. package/lib/hooks/useInitialiseRenderer.js.map +1 -1
  186. package/lib/hooks/useInitialiseRepeatAnswers.d.ts +2 -2
  187. package/lib/hooks/useInitialiseRepeatAnswers.js +21 -15
  188. package/lib/hooks/useInitialiseRepeatAnswers.js.map +1 -1
  189. package/lib/hooks/useInitialiseRepeatGroups.d.ts +2 -1
  190. package/lib/hooks/useInitialiseRepeatGroups.js +21 -15
  191. package/lib/hooks/useInitialiseRepeatGroups.js.map +1 -1
  192. package/lib/hooks/useIntegerUpdateFromProp.d.ts +2 -0
  193. package/lib/hooks/useIntegerUpdateFromProp.js +29 -0
  194. package/lib/hooks/useIntegerUpdateFromProp.js.map +1 -0
  195. package/lib/hooks/useNumberInput.d.ts +3 -0
  196. package/lib/hooks/useNumberInput.js +31 -0
  197. package/lib/hooks/useNumberInput.js.map +1 -0
  198. package/lib/hooks/useNumberUpdateFromProp.d.ts +2 -0
  199. package/lib/hooks/useNumberUpdateFromProp.js +29 -0
  200. package/lib/hooks/useNumberUpdateFromProp.js.map +1 -0
  201. package/lib/hooks/useRepeatItemState.d.ts +5 -0
  202. package/lib/hooks/useRepeatItemState.js +35 -0
  203. package/lib/hooks/useRepeatItemState.js.map +1 -0
  204. package/lib/hooks/useRepeatItemUpdateFromProp.d.ts +2 -0
  205. package/lib/hooks/useRepeatItemUpdateFromProp.js +29 -0
  206. package/lib/hooks/useRepeatItemUpdateFromProp.js.map +1 -0
  207. package/lib/hooks/useStringField.d.ts +2 -0
  208. package/lib/hooks/useStringField.js +29 -0
  209. package/lib/hooks/useStringField.js.map +1 -0
  210. package/lib/hooks/useStringInput.d.ts +3 -0
  211. package/lib/hooks/useStringInput.js +31 -0
  212. package/lib/hooks/useStringInput.js.map +1 -0
  213. package/lib/hooks/useStringUpdateFromProp.d.ts +2 -0
  214. package/lib/hooks/useStringUpdateFromProp.js +29 -0
  215. package/lib/hooks/useStringUpdateFromProp.js.map +1 -0
  216. package/lib/hooks/useTerminologyServerQuery.js +3 -6
  217. package/lib/hooks/useTerminologyServerQuery.js.map +1 -1
  218. package/lib/index.d.ts +16 -0
  219. package/lib/index.js +29 -2
  220. package/lib/index.js.map +1 -1
  221. package/lib/interfaces/questionnaireStore.interface.d.ts +1 -0
  222. package/lib/interfaces/renderProps.interface.d.ts +3 -0
  223. package/lib/stores/useQuestionnaireResponseStore.d.ts +2 -1
  224. package/lib/stores/useQuestionnaireResponseStore.js +17 -10
  225. package/lib/stores/useQuestionnaireResponseStore.js.map +1 -1
  226. package/lib/stores/useQuestionnaireStore.d.ts +2 -1
  227. package/lib/stores/useQuestionnaireStore.js +5 -2
  228. package/lib/stores/useQuestionnaireStore.js.map +1 -1
  229. package/lib/theme/overrides/Overrides.js +1 -2
  230. package/lib/theme/overrides/Overrides.js.map +1 -1
  231. package/lib/utils/calculatedExpression.js +2 -2
  232. package/lib/utils/calculatedExpression.js.map +1 -1
  233. package/lib/utils/formChanges.d.ts +18 -0
  234. package/lib/utils/formChanges.js +91 -0
  235. package/lib/utils/formChanges.js.map +1 -0
  236. package/lib/utils/formChangesOld.d.ts +18 -0
  237. package/lib/utils/formChangesOld.js +91 -0
  238. package/lib/utils/formChangesOld.js.map +1 -0
  239. package/lib/utils/index.d.ts +1 -0
  240. package/lib/utils/index.js +18 -0
  241. package/lib/utils/index.js.map +1 -0
  242. package/lib/utils/mapItem.d.ts +2 -2
  243. package/lib/utils/mapItem.js +3 -3
  244. package/lib/utils/mapItem.js.map +1 -1
  245. package/lib/utils/qItem.d.ts +2 -0
  246. package/lib/utils/qItem.js +22 -0
  247. package/lib/utils/qItem.js.map +1 -1
  248. package/lib/utils/qrItem.d.ts +3 -4
  249. package/lib/utils/qrItem.js +94 -96
  250. package/lib/utils/qrItem.js.map +1 -1
  251. package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js +4 -0
  252. package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js.map +1 -1
  253. package/lib/utils/repopulate.d.ts +9 -0
  254. package/lib/utils/repopulate.js +133 -0
  255. package/lib/utils/repopulate.js.map +1 -0
  256. package/lib/utils/repopulateGenerateItems.d.ts +9 -0
  257. package/lib/utils/repopulateGenerateItems.js +133 -0
  258. package/lib/utils/repopulateGenerateItems.js.map +1 -0
  259. package/lib/utils/repopulateIntoResponse.d.ts +3 -0
  260. package/lib/utils/repopulateIntoResponse.js +92 -0
  261. package/lib/utils/repopulateIntoResponse.js.map +1 -0
  262. package/lib/utils/repopulateItems.d.ts +9 -0
  263. package/lib/utils/repopulateItems.js +130 -0
  264. package/lib/utils/repopulateItems.js.map +1 -0
  265. package/lib/utils/repopulateRepeatGroup.d.ts +4 -0
  266. package/lib/utils/repopulateRepeatGroup.js +54 -0
  267. package/lib/utils/repopulateRepeatGroup.js.map +1 -0
  268. package/package.json +7 -5
  269. package/src/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.tsx +1 -2
  270. package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionFields.tsx +85 -0
  271. package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.tsx +35 -58
  272. package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetFields.tsx +79 -0
  273. package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.tsx +37 -50
  274. package/src/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.tsx +10 -5
  275. package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionFields.tsx +48 -0
  276. package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.tsx +25 -53
  277. package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetFields.tsx +83 -0
  278. package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.tsx +27 -49
  279. package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.tsx +81 -0
  280. package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.tsx +19 -54
  281. package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.tsx +97 -0
  282. package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.tsx +22 -60
  283. package/src/components/FormComponents/DecimalItem/DecimalItem.tsx +3 -2
  284. package/src/components/FormComponents/GridGroup/GridGroup.tsx +2 -2
  285. package/src/components/FormComponents/GridGroup/GridRow.tsx +2 -2
  286. package/src/components/FormComponents/GroupItem/GroupItem.tsx +3 -3
  287. package/src/components/FormComponents/GroupItem/GroupItemSwitcher.tsx +4 -4
  288. package/src/components/FormComponents/IntegerItem/IntegerItem.tsx +3 -2
  289. package/src/components/FormComponents/Item.styles.ts +2 -2
  290. package/src/components/FormComponents/ItemParts/RadioAnswerOptionButtons.tsx +72 -0
  291. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.tsx +131 -0
  292. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.tsx +38 -93
  293. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionFields.tsx +112 -0
  294. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.tsx +57 -76
  295. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.tsx +8 -5
  296. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionFields.tsx +72 -0
  297. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.tsx +12 -59
  298. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.tsx +54 -0
  299. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.tsx +40 -64
  300. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.tsx +63 -0
  301. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.tsx +22 -50
  302. package/src/components/FormComponents/RepeatGroup/RepeatGroup.tsx +4 -3
  303. package/src/{theme/overrides/Backdrop.ts → components/FormComponents/RepeatGroup/index.ts} +1 -17
  304. package/src/components/FormComponents/RepeatItem/RepeatItem.tsx +1 -1
  305. package/src/components/FormComponents/SingleItem/SingleItem.tsx +6 -3
  306. package/src/components/FormComponents/SingleItem/SingleItemSwitcher.tsx +7 -3
  307. package/src/components/FormComponents/SingleItem/index.ts +18 -0
  308. package/src/components/FormComponents/StringItem/StringItem.tsx +3 -2
  309. package/src/components/FormComponents/Tables/AddRowButton.tsx +49 -0
  310. package/src/components/FormComponents/Tables/{QItemGroupTable.tsx → GroupTable.tsx} +21 -23
  311. package/src/components/FormComponents/Tables/{QItemGroupTableRow.tsx → GroupTableRow.tsx} +4 -4
  312. package/src/components/FormComponents/Tables/index.ts +18 -0
  313. package/src/components/FormComponents/TextItem/TextItem.tsx +3 -2
  314. package/src/components/FormComponents/index.ts +20 -0
  315. package/src/components/Renderer/BaseRenderer.tsx +39 -18
  316. package/src/components/Renderer/FormBodyCollapsible.tsx +2 -2
  317. package/src/components/Renderer/FormBodyTabbed.tsx +3 -3
  318. package/src/components/Renderer/FormTopLevelItem.tsx +33 -4
  319. package/src/components/Tabs/FormBodySingleTab.tsx +1 -1
  320. package/src/components/Tabs/FormBodyTabList.tsx +5 -8
  321. package/src/components/Tabs/FormBodyTabListWrapper.tsx +15 -26
  322. package/src/components/Tabs/ShowCompletedTabsSection.tsx +52 -0
  323. package/src/components/index.ts +1 -0
  324. package/src/hooks/index.ts +1 -0
  325. package/src/hooks/useContextDisplayItems.ts +40 -0
  326. package/src/hooks/useInitialiseRenderer.ts +2 -2
  327. package/src/hooks/useInitialiseRepeatAnswers.ts +28 -17
  328. package/src/hooks/useInitialiseRepeatGroups.ts +28 -17
  329. package/src/hooks/useNumberInput.ts +38 -0
  330. package/src/hooks/useStringInput.ts +38 -0
  331. package/src/hooks/useTerminologyServerQuery.ts +3 -6
  332. package/src/index.ts +45 -2
  333. package/src/interfaces/questionnaireStore.interface.ts +1 -0
  334. package/src/interfaces/renderProps.interface.ts +4 -0
  335. package/src/stores/useQuestionnaireResponseStore.ts +15 -10
  336. package/src/stores/useQuestionnaireStore.ts +10 -3
  337. package/src/theme/overrides/Overrides.ts +0 -2
  338. package/src/utils/calculatedExpression.ts +2 -2
  339. package/src/utils/formChanges.ts +141 -0
  340. package/src/utils/index.ts +18 -0
  341. package/src/utils/mapItem.ts +6 -4
  342. package/src/utils/qItem.ts +29 -0
  343. package/src/utils/qrItem.ts +108 -97
  344. package/src/utils/questionnaireStoreUtils/createQuestionaireModel.ts +4 -0
  345. package/src/utils/repopulateIntoResponse.ts +153 -0
  346. package/src/utils/repopulateItems.ts +206 -0
  347. package/src/utils/repopulateRepeatGroup.ts +68 -0
@@ -0,0 +1,91 @@
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 readFormChanges(formChanges, itemTypes) {
18
+ if (!('item' in formChanges)) {
19
+ return {};
20
+ }
21
+ const changedItems = {};
22
+ const diffArrays = formChanges.item;
23
+ for (const diffArray of diffArrays) {
24
+ readItemChangesRecursive(diffArray, itemTypes, changedItems);
25
+ }
26
+ return changedItems;
27
+ }
28
+ export function readItemChangesRecursive(diffArray, itemTypes, changedItems) {
29
+ const operator = diffArray[0];
30
+ const diffItem = diffArray[1];
31
+ if (!operator || !diffItem) {
32
+ return changedItems;
33
+ }
34
+ changedItems[diffItem.linkId] = null;
35
+ const childDiffArrays = diffItem.item;
36
+ if (childDiffArrays && childDiffArrays.length > 0) {
37
+ for (const childDiffArray of childDiffArrays) {
38
+ readItemChangesRecursive(childDiffArray, itemTypes, changedItems);
39
+ }
40
+ }
41
+ // if (operator !== ' ') {
42
+ // console.log(operator, diffItem);
43
+ // }
44
+ // explore answer diff arrays
45
+ // exmaple: [["+", {"valueString": "test"}], ["-", {"valueString": "test"}]]
46
+ // or it could be a regular answer array
47
+ // exmaple: [{"valueString": "test"}, {"valueString": "test"}]
48
+ const answerDiffArrays = diffItem.answer;
49
+ if (answerDiffArrays && isAnswerDiffArray(answerDiffArrays)) {
50
+ for (const answerDiffArray of answerDiffArrays) {
51
+ getItemChange(diffItem, answerDiffArray, itemTypes, changedItems);
52
+ }
53
+ }
54
+ return changedItems;
55
+ }
56
+ function getItemChange(diffItem, answerDiffArray, itemTypes, changedItems) {
57
+ const operator = answerDiffArray[0];
58
+ const answer = answerDiffArray[1];
59
+ if (operator === ' ') {
60
+ return;
61
+ }
62
+ const itemType = itemTypes[diffItem.linkId];
63
+ const operation = answerDiffOperationSwitcher(operator);
64
+ if (operation) {
65
+ changedItems[diffItem.linkId] = {
66
+ linkId: diffItem.linkId,
67
+ itemType: itemType,
68
+ operation: operation,
69
+ value: answer
70
+ };
71
+ }
72
+ }
73
+ function answerDiffOperationSwitcher(operator) {
74
+ switch (operator) {
75
+ case '+':
76
+ return 'add';
77
+ case '-':
78
+ return 'remove';
79
+ case '~':
80
+ return 'update';
81
+ default:
82
+ return null;
83
+ }
84
+ }
85
+ // type predicates
86
+ function isAnswerDiffArray(answer) {
87
+ return answer.every((answerItem) => Array.isArray(answerItem) &&
88
+ typeof answerItem[0] === 'string' &&
89
+ typeof answerItem[1] === 'object');
90
+ }
91
+ //# sourceMappingURL=formChanges.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formChanges.js","sourceRoot":"","sources":["../../src/utils/formChanges.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAyBH,MAAM,UAAU,eAAe,CAAC,WAAmB,EAAE,SAAiC;IACpF,IAAI,CAAC,CAAC,MAAM,IAAI,WAAW,CAAC,EAAE;QAC5B,OAAO,EAAE,CAAC;KACX;IAED,MAAM,YAAY,GAAsC,EAAE,CAAC;IAC3D,MAAM,UAAU,GAAG,WAAW,CAAC,IAA4C,CAAC;IAC5E,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;QAClC,wBAAwB,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;KAC9D;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,SAA6C,EAC7C,SAAiC,EACjC,YAA+C;IAE/C,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAE9B,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE;QAC1B,OAAO,YAAY,CAAC;KACrB;IAED,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IAErC,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC;IACtC,IAAI,eAAe,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;QACjD,KAAK,MAAM,cAAc,IAAI,eAAe,EAAE;YAC5C,wBAAwB,CAAC,cAAc,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;SACnE;KACF;IAED,0BAA0B;IAC1B,qCAAqC;IACrC,IAAI;IAEJ,6BAA6B;IAC7B,4EAA4E;IAC5E,wCAAwC;IACxC,8DAA8D;IAE9D,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC;IACzC,IAAI,gBAAgB,IAAI,iBAAiB,CAAC,gBAAgB,CAAC,EAAE;QAC3D,KAAK,MAAM,eAAe,IAAI,gBAAgB,EAAE;YAC9C,aAAa,CAAC,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;SACnE;KACF;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,aAAa,CACpB,QAAuC,EACvC,eAAyD,EACzD,SAAiC,EACjC,YAA+C;IAE/C,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;IAElC,IAAI,QAAQ,KAAK,GAAG,EAAE;QACpB,OAAO;KACR;IAED,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IACxD,IAAI,SAAS,EAAE;QACb,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG;YAC9B,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,QAAQ,EAAE,QAAQ;YAClB,SAAS,EAAE,SAAS;YACpB,KAAK,EAAE,MAAM;SACd,CAAC;KACH;AACH,CAAC;AAED,SAAS,2BAA2B,CAAC,QAA0B;IAC7D,QAAQ,QAAQ,EAAE;QAChB,KAAK,GAAG;YACN,OAAO,KAAK,CAAC;QACf,KAAK,GAAG;YACN,OAAO,QAAQ,CAAC;QAClB,KAAK,GAAG;YACN,OAAO,QAAQ,CAAC;QAClB;YACE,OAAO,IAAI,CAAC;KACf;AACH,CAAC;AAED,kBAAkB;AAClB,SAAS,iBAAiB,CAAC,MAAa;IACtC,OAAO,MAAM,CAAC,KAAK,CACjB,CAAC,UAAU,EAAE,EAAE,CACb,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;QACzB,OAAO,UAAU,CAAC,CAAC,CAAC,KAAK,QAAQ;QACjC,OAAO,UAAU,CAAC,CAAC,CAAC,KAAK,QAAQ,CACpC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { QuestionnaireResponseItemAnswer } from 'fhir/r4';
2
+ type JsonDiffOperator = '+' | '-' | '~' | ' ';
3
+ type QuestionnaireResponseItemDiffArray = [JsonDiffOperator, QuestionnaireResponseDiffItem];
4
+ type QuestionnaireResponseItemAnswerDiffArray = [JsonDiffOperator, QuestionnaireResponseItemAnswer];
5
+ interface QuestionnaireResponseDiffItem {
6
+ linkId: string;
7
+ item: QuestionnaireResponseItemDiffArray[] | undefined;
8
+ answer: QuestionnaireResponseItemAnswer[] | QuestionnaireResponseItemAnswerDiffArray[] | undefined;
9
+ }
10
+ interface ItemChange {
11
+ linkId: string;
12
+ itemType: string;
13
+ operation: 'add' | 'remove' | 'update';
14
+ value: QuestionnaireResponseItemAnswer;
15
+ }
16
+ export declare function readFormChanges(formChanges: object, itemTypes: Record<string, string>): Record<string, ItemChange | null>;
17
+ export declare function readItemChangesRecursive(diffArray: QuestionnaireResponseItemDiffArray, itemTypes: Record<string, string>, changedItems: Record<string, ItemChange | null>): Record<string, ItemChange | null>;
18
+ export {};
@@ -0,0 +1,91 @@
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 readFormChanges(formChanges, itemTypes) {
18
+ if (!('item' in formChanges)) {
19
+ return {};
20
+ }
21
+ const changedItems = {};
22
+ const diffArrays = formChanges.item;
23
+ for (const diffArray of diffArrays) {
24
+ readItemChangesRecursive(diffArray, itemTypes, changedItems);
25
+ }
26
+ return changedItems;
27
+ }
28
+ export function readItemChangesRecursive(diffArray, itemTypes, changedItems) {
29
+ const operator = diffArray[0];
30
+ const diffItem = diffArray[1];
31
+ if (!operator || !diffItem) {
32
+ return changedItems;
33
+ }
34
+ changedItems[diffItem.linkId] = null;
35
+ const childDiffArrays = diffItem.item;
36
+ if (childDiffArrays && childDiffArrays.length > 0) {
37
+ for (const childDiffArray of childDiffArrays) {
38
+ readItemChangesRecursive(childDiffArray, itemTypes, changedItems);
39
+ }
40
+ }
41
+ // if (operator !== ' ') {
42
+ // console.log(operator, diffItem);
43
+ // }
44
+ // explore answer diff arrays
45
+ // exmaple: [["+", {"valueString": "test"}], ["-", {"valueString": "test"}]]
46
+ // or it could be a regular answer array
47
+ // exmaple: [{"valueString": "test"}, {"valueString": "test"}]
48
+ const answerDiffArrays = diffItem.answer;
49
+ if (answerDiffArrays && isAnswerDiffArray(answerDiffArrays)) {
50
+ for (const answerDiffArray of answerDiffArrays) {
51
+ getItemChange(diffItem, answerDiffArray, itemTypes, changedItems);
52
+ }
53
+ }
54
+ return changedItems;
55
+ }
56
+ function getItemChange(diffItem, answerDiffArray, itemTypes, changedItems) {
57
+ const operator = answerDiffArray[0];
58
+ const answer = answerDiffArray[1];
59
+ if (operator === ' ') {
60
+ return;
61
+ }
62
+ const itemType = itemTypes[diffItem.linkId];
63
+ const operation = answerDiffOperationSwitcher(operator);
64
+ if (operation) {
65
+ changedItems[diffItem.linkId] = {
66
+ linkId: diffItem.linkId,
67
+ itemType: itemType,
68
+ operation: operation,
69
+ value: answer
70
+ };
71
+ }
72
+ }
73
+ function answerDiffOperationSwitcher(operator) {
74
+ switch (operator) {
75
+ case '+':
76
+ return 'add';
77
+ case '-':
78
+ return 'remove';
79
+ case '~':
80
+ return 'update';
81
+ default:
82
+ return null;
83
+ }
84
+ }
85
+ // type predicates
86
+ function isAnswerDiffArray(answer) {
87
+ return answer.every((answerItem) => Array.isArray(answerItem) &&
88
+ typeof answerItem[0] === 'string' &&
89
+ typeof answerItem[1] === 'object');
90
+ }
91
+ //# sourceMappingURL=formChangesOld.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formChangesOld.js","sourceRoot":"","sources":["../../src/utils/formChangesOld.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export { isSpecificItemControl } from './itemControl';
@@ -0,0 +1,18 @@
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 { isSpecificItemControl } from './itemControl';
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
1
+ import type { Questionnaire, QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
2
2
  /**
3
3
  * Generate an array of QuestionnaireResponseItems corresponding to its QuestionnaireItem indexes an array.
4
4
  * QuestionnaireItems without a corresponding QuestionnaireResponseItem is set as undefined.
@@ -15,4 +15,4 @@ export declare function getQrItemsIndex(qItems: QuestionnaireItem[], qrItems: Qu
15
15
  *
16
16
  * @author Sean Fong
17
17
  */
18
- export declare function mapQItemsIndex(qGroup: QuestionnaireItem): Record<string, number>;
18
+ export declare function mapQItemsIndex(questionnaireOrQItem: QuestionnaireItem | Questionnaire): Record<string, number>;
@@ -67,12 +67,12 @@ export function getQrItemsIndex(qItems, qrItems, qItemsIndexMap) {
67
67
  *
68
68
  * @author Sean Fong
69
69
  */
70
- export function mapQItemsIndex(qGroup) {
71
- if (!qGroup.item) {
70
+ export function mapQItemsIndex(questionnaireOrQItem) {
71
+ if (!questionnaireOrQItem.item) {
72
72
  return {};
73
73
  }
74
74
  // generate a <linkId, QItemIndex> dictionary
75
- return qGroup.item.reduce((mapping, item, i) => {
75
+ return questionnaireOrQItem.item.reduce((mapping, item, i) => {
76
76
  mapping[item.linkId] = i;
77
77
  return mapping;
78
78
  }, {});
@@ -1 +1 @@
1
- {"version":3,"file":"mapItem.js","sourceRoot":"","sources":["../../src/utils/mapItem.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAErD;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAC7B,MAA2B,EAC3B,OAAoC,EACpC,cAAsC;IAEtC,oDAAoD;IACpD,MAAM,gBAAgB,GACpB,EAAE,CAAC;IACL,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;QAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAE7B,kFAAkF;QAClF,IAAI,gBAAgB,CAAC,MAAM,CAAC,EAAE;YAC5B,IAAI,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAE3C,8EAA8E;YAC9E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;gBAC/B,WAAW,GAAG,CAAC,WAAW,CAAC,CAAC;aAC7B;YAED,6BAA6B;YAC7B,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzB,gBAAgB,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC;SACxC;aAAM;YACL,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;YAE1C,8FAA8F;YAC9F,MAAM,aAAa,GACjB,0BAA0B,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC;YAExF,gBAAgB,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;SAC9D;KACF;IAED,6GAA6G;IAC7G,0DAA0D;IAC1D,OAAO,MAAM,CAAC,MAAM,CAClB,CAAC,OAAoE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACjF,MAAM,aAAa,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACrD,iFAAiF;QACjF,IAAI,0BAA0B,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;YAC/D,OAAO,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAClE;aAAM;YACL,OAAO,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;SAC7C;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,EACD,EAAE,CACH,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,MAAyB;IACtD,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;QAChB,OAAO,EAAE,CAAC;KACX;IAED,6CAA6C;IAC7C,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAA+B,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE;QACrE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,OAAO,OAAO,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC"}
1
+ {"version":3,"file":"mapItem.js","sourceRoot":"","sources":["../../src/utils/mapItem.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAErD;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAC7B,MAA2B,EAC3B,OAAoC,EACpC,cAAsC;IAEtC,oDAAoD;IACpD,MAAM,gBAAgB,GACpB,EAAE,CAAC;IACL,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;QAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAE7B,kFAAkF;QAClF,IAAI,gBAAgB,CAAC,MAAM,CAAC,EAAE;YAC5B,IAAI,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAE3C,8EAA8E;YAC9E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;gBAC/B,WAAW,GAAG,CAAC,WAAW,CAAC,CAAC;aAC7B;YAED,6BAA6B;YAC7B,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzB,gBAAgB,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC;SACxC;aAAM;YACL,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;YAE1C,8FAA8F;YAC9F,MAAM,aAAa,GACjB,0BAA0B,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC;YAExF,gBAAgB,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;SAC9D;KACF;IAED,6GAA6G;IAC7G,0DAA0D;IAC1D,OAAO,MAAM,CAAC,MAAM,CAClB,CAAC,OAAoE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACjF,MAAM,aAAa,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACrD,iFAAiF;QACjF,IAAI,0BAA0B,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;YAC/D,OAAO,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAClE;aAAM;YACL,OAAO,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;SAC7C;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,EACD,EAAE,CACH,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAC5B,oBAAuD;IAEvD,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE;QAC9B,OAAO,EAAE,CAAC;KACX;IAED,6CAA6C;IAC7C,OAAO,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAA+B,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE;QACnF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,OAAO,OAAO,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC"}
@@ -29,4 +29,6 @@ export declare function isHiddenByEnableWhens(params: isHiddenByEnableWhensParam
29
29
  */
30
30
  export declare function isRepeatItemAndNotCheckbox(qItem: QuestionnaireItem): boolean;
31
31
  export declare function getXHtmlStringFromQuestionnaire(questionnaire: Questionnaire): string | null;
32
+ export declare function getLinkIdTypeTuples(questionnaire: Questionnaire): [string, string][];
33
+ export declare function getLinkIdTypeTuplesFromItemRecursive(qItem: QuestionnaireItem): [string, string][];
32
34
  export {};
@@ -70,4 +70,26 @@ export function getXHtmlStringFromQuestionnaire(questionnaire) {
70
70
  }
71
71
  return null;
72
72
  }
73
+ export function getLinkIdTypeTuples(questionnaire) {
74
+ if (!questionnaire.item || questionnaire.item.length === 0) {
75
+ return [];
76
+ }
77
+ const linkIds = [];
78
+ for (const topLevelItem of questionnaire.item) {
79
+ linkIds.push(...getLinkIdTypeTuplesFromItemRecursive(topLevelItem));
80
+ }
81
+ return linkIds;
82
+ }
83
+ export function getLinkIdTypeTuplesFromItemRecursive(qItem) {
84
+ const linkIds = [];
85
+ if (qItem.linkId) {
86
+ linkIds.push([qItem.linkId, qItem.type]);
87
+ }
88
+ if (qItem.item) {
89
+ for (const childItem of qItem.item) {
90
+ linkIds.push(...getLinkIdTypeTuplesFromItemRecursive(childItem));
91
+ }
92
+ }
93
+ return linkIds;
94
+ }
73
95
  //# sourceMappingURL=qItem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"qItem.js","sourceRoot":"","sources":["../../src/utils/qItem.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACrF,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAUxD;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAC,MAAsB;IAC7C,MAAM,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,eAAe,EAAE,qBAAqB,EAAE,GACxF,MAAM,CAAC;IACT,IAAI,kBAAkB,CAAC,iBAAiB,CAAC,EAAE;QACzC,OAAO,IAAI,CAAC;KACb;IAED,OAAO,qBAAqB,CAAC;QAC3B,MAAM,EAAE,iBAAiB,CAAC,MAAM;QAChC,qBAAqB;QACrB,eAAe;QACf,qBAAqB;KACtB,CAAC,CAAC;AACL,CAAC;AASD,MAAM,UAAU,qBAAqB,CAAC,MAAmC;IACvE,MAAM,EAAE,MAAM,EAAE,qBAAqB,EAAE,eAAe,EAAE,qBAAqB,EAAE,GAAG,MAAM,CAAC;IAEzF,IAAI,qBAAqB,EAAE;QACzB,IAAI,eAAe,CAAC,MAAM,CAAC,EAAE;YAC3B,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC;SAC3C;QAED,IAAI,qBAAqB,CAAC,MAAM,CAAC,EAAE;YACjC,OAAO,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC;SACjD;KACF;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CAAC,KAAwB;IACjE,MAAM,UAAU,GACd,oBAAoB,CAAC,KAAK,CAAC,KAAK,iBAAiB,CAAC,QAAQ;QAC1D,wBAAwB,CAAC,KAAK,CAAC,KAAK,qBAAqB,CAAC,QAAQ,CAAC;IAErE,OAAO,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,aAA4B;;IAC1E,MAAM,WAAW,GAAG,MAAA,MAAA,aAAa,CAAC,MAAM,0CAAE,SAAS,0CAAE,IAAI,CACvD,CAAC,SAAoB,EAAE,EAAE,CACvB,SAAS,CAAC,GAAG,KAAK,yDAAyD,CAC9E,CAAC;IAEF,IAAI,WAAW,EAAE;QACf,IAAI,WAAW,CAAC,WAAW,EAAE;YAC3B,OAAO,WAAW,CAAC,WAAW,CAAC;SAChC;KACF;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"qItem.js","sourceRoot":"","sources":["../../src/utils/qItem.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,11 @@
1
1
  import type { Questionnaire, QuestionnaireItem, QuestionnaireResponse, QuestionnaireResponseItem } from 'fhir/r4';
2
2
  import type { QrRepeatGroup } from '../interfaces/repeatGroup.interface';
3
3
  /**
4
- * Create a questionnaireResponse from a given questionnaire form item
5
- * A questionnaire form item is the first item of a questionnaire
4
+ * Create an empty questionnaireResponse from a given questionnaire
6
5
  *
7
6
  * @author Sean Fong
8
7
  */
9
- export declare function createQuestionnaireResponse(questionnaire: Questionnaire): QuestionnaireResponse;
8
+ export declare function createEmptyQuestionnaireResponse(questionnaire: Questionnaire): QuestionnaireResponse;
10
9
  /**
11
10
  * Remove items with no answers from a given questionnaireResponse
12
11
  * Also remove any starting or trailing whitespace from valueStrings
@@ -39,4 +38,4 @@ export declare function createEmptyQrItemWithUnit(qItem: QuestionnaireItem, unit
39
38
  *
40
39
  * @author Sean Fong
41
40
  */
42
- export declare function updateQrGroup(newQrItem: QuestionnaireResponseItem | null, newQrRepeatGroup: QrRepeatGroup | null, qrGroup: QuestionnaireResponseItem, qItemsIndexMap: Record<string, number>): void;
41
+ export declare function updateQrItemsInGroup(newQrItem: QuestionnaireResponseItem | null, newQrRepeatGroup: QrRepeatGroup | null, questionnaireResponseOrQrItem: QuestionnaireResponseItem | QuestionnaireResponse, qItemsIndexMap: Record<string, number>): void;
@@ -15,12 +15,11 @@
15
15
  * limitations under the License.
16
16
  */
17
17
  /**
18
- * Create a questionnaireResponse from a given questionnaire form item
19
- * A questionnaire form item is the first item of a questionnaire
18
+ * Create an empty questionnaireResponse from a given questionnaire
20
19
  *
21
20
  * @author Sean Fong
22
21
  */
23
- export function createQuestionnaireResponse(questionnaire) {
22
+ export function createEmptyQuestionnaireResponse(questionnaire) {
24
23
  var _a;
25
24
  const questionnaireResponse = {
26
25
  resourceType: 'QuestionnaireResponse',
@@ -108,112 +107,111 @@ export function createEmptyQrItemWithUnit(qItem, unit) {
108
107
  *
109
108
  * @author Sean Fong
110
109
  */
111
- export function updateQrGroup(newQrItem, newQrRepeatGroup, qrGroup, qItemsIndexMap) {
110
+ export function updateQrItemsInGroup(newQrItem, newQrRepeatGroup, questionnaireResponseOrQrItem, qItemsIndexMap) {
112
111
  var _a, _b;
113
- if (qrGroup['item']) {
114
- // Get actual sequence indexes of qrItems present within a qrGroup
115
- // e.g. qrGroup has 4 fields but only the 2nd and 3rd field have values - resulting array is [1, 2]
116
- const qrItemsRealIndexArr = qrGroup.item.map((qrItem) => qItemsIndexMap[qrItem.linkId]);
117
- if (newQrItem && newQrItem.linkId in qItemsIndexMap) {
118
- if (qrGroup.item.length === 0) {
119
- qrGroup.item.push(newQrItem);
112
+ const qrItems = questionnaireResponseOrQrItem.item;
113
+ if (!qrItems) {
114
+ return;
115
+ }
116
+ // Get actual sequence indexes of qrItems present within a qrGroup
117
+ // e.g. qrGroup has 4 fields but only the 2nd and 3rd field have values - resulting array is [1, 2]
118
+ const qrItemsRealIndexArr = qrItems.map((qrItem) => qItemsIndexMap[qrItem.linkId]);
119
+ if (newQrItem && newQrItem.linkId in qItemsIndexMap) {
120
+ if (qrItems.length === 0) {
121
+ qrItems.push(newQrItem);
122
+ return;
123
+ }
124
+ // Get actual sequence index of qrItem within qrGroup
125
+ const newQrItemIndex = qItemsIndexMap[newQrItem.linkId];
126
+ for (let i = 0; i < qrItemsRealIndexArr.length; i++) {
127
+ // Add qrItem at the end of qrGroup if it is larger than the other indexes
128
+ if (newQrItemIndex > qrItemsRealIndexArr[i]) {
129
+ if (i === qrItemsRealIndexArr.length - 1) {
130
+ qrItems.push(newQrItem);
131
+ }
132
+ continue;
120
133
  }
121
- else {
122
- // Get actual sequence index of qrItem within qrGroup
123
- const newQrItemIndex = qItemsIndexMap[newQrItem.linkId];
124
- for (let i = 0; i < qrItemsRealIndexArr.length; i++) {
125
- // Add qrItem at the end of qrGroup if it is larger than the other indexes
126
- if (newQrItemIndex > qrItemsRealIndexArr[i]) {
127
- if (i === qrItemsRealIndexArr.length - 1) {
128
- qrGroup.item.push(newQrItem);
129
- }
130
- continue;
131
- }
132
- // Replace or delete qrItem at its supposed position if its index is already present within qrGroup
133
- if (newQrItemIndex === qrItemsRealIndexArr[i]) {
134
- if (((_a = newQrItem.item) === null || _a === void 0 ? void 0 : _a.length) || ((_b = newQrItem.answer) === null || _b === void 0 ? void 0 : _b.length)) {
135
- // newQrItem has answer value
136
- qrGroup.item[i] = newQrItem;
137
- }
138
- else {
139
- // newQrItem has no answer value
140
- qrGroup.item.splice(i, 1);
141
- }
142
- break;
143
- }
144
- // Add qrItem at its supposed position if its index is not present within qrGroup
145
- if (newQrItemIndex < qrItemsRealIndexArr[i]) {
146
- qrGroup.item.splice(i, 0, newQrItem);
147
- break;
148
- }
134
+ // Replace or delete qrItem at its supposed position if its index is already present within qrGroup
135
+ if (newQrItemIndex === qrItemsRealIndexArr[i]) {
136
+ // newQrItem has answer value
137
+ if (((_a = newQrItem.item) === null || _a === void 0 ? void 0 : _a.length) || ((_b = newQrItem.answer) === null || _b === void 0 ? void 0 : _b.length)) {
138
+ qrItems[i] = newQrItem;
139
+ break;
149
140
  }
141
+ // newQrItem has no answer value
142
+ qrItems.splice(i, 1);
143
+ break;
150
144
  }
145
+ // Add qrItem at its supposed position if its index is not present within qrGroup
146
+ if (newQrItemIndex < qrItemsRealIndexArr[i]) {
147
+ qrItems.splice(i, 0, newQrItem);
148
+ break;
149
+ }
150
+ }
151
+ }
152
+ if (newQrRepeatGroup && newQrRepeatGroup.linkId in qItemsIndexMap) {
153
+ const newQrItems = newQrRepeatGroup.qrItems;
154
+ if (qrItems.length === 0) {
155
+ qrItems.push(...newQrItems);
156
+ return;
151
157
  }
152
- else if (newQrRepeatGroup && newQrRepeatGroup.linkId in qItemsIndexMap) {
153
- const newQrItems = newQrRepeatGroup.qrItems;
154
- if (qrGroup.item.length === 0) {
155
- qrGroup.item.push(...newQrItems);
158
+ // Get actual sequence index of qrItems within qrGroup
159
+ const newQrItemIndex = qItemsIndexMap[newQrRepeatGroup.linkId];
160
+ for (let i = 0; i < qrItemsRealIndexArr.length; i++) {
161
+ // Add qrItem at the end of qrGroup if it is larger than the other indexes
162
+ if (newQrItemIndex > qrItemsRealIndexArr[i]) {
163
+ if (i === qrItemsRealIndexArr.length - 1) {
164
+ qrItems.push(...newQrItems);
165
+ }
166
+ continue;
156
167
  }
157
- else {
158
- // Get actual sequence index of qrItems within qrGroup
159
- const newQrItemIndex = qItemsIndexMap[newQrRepeatGroup.linkId];
160
- for (let i = 0; i < qrItemsRealIndexArr.length; i++) {
161
- // Add qrItem at the end of qrGroup if it is larger than the other indexes
162
- if (newQrItemIndex > qrItemsRealIndexArr[i]) {
163
- if (i === qrItemsRealIndexArr.length - 1) {
164
- qrGroup.item.push(...newQrItems);
165
- }
166
- continue;
168
+ // Replace or delete qrItem at its supposed position if its index is already present within qrGroup
169
+ if (newQrItemIndex === qrItemsRealIndexArr[i]) {
170
+ // Get number of repeatGroupItems that has the same linkId present in qrGroup
171
+ let repeatGroupItemCount = 0;
172
+ while (newQrItemIndex === qrItemsRealIndexArr[i + repeatGroupItemCount]) {
173
+ repeatGroupItemCount++;
174
+ }
175
+ // Replace each repeat group qrItem with their new counterparts
176
+ if (newQrItems.length === repeatGroupItemCount) {
177
+ for (let j = 0; j < newQrItems.length; j++) {
178
+ qrItems[i + j] = newQrItems[j];
167
179
  }
168
- // Replace or delete qrItem at its supposed position if its index is already present within qrGroup
169
- if (newQrItemIndex === qrItemsRealIndexArr[i]) {
170
- // Get number of repeatGroupItems that has the same linkId present in qrGroup
171
- let repeatGroupItemCount = 0;
172
- while (newQrItemIndex === qrItemsRealIndexArr[i + repeatGroupItemCount]) {
173
- repeatGroupItemCount++;
174
- }
175
- // Replace each repeat group qrItem with their new counterparts
176
- if (newQrItems.length === repeatGroupItemCount) {
177
- for (let j = 0; j < newQrItems.length; j++) {
178
- qrGroup.item[i + j] = newQrItems[j];
179
- }
180
- break;
181
- }
182
- else if (newQrItems.length > repeatGroupItemCount) {
183
- // Replace each repeat group qrItem with their new counterparts,
184
- // followed by adding an extra newQrItem behind the newly replaced qrItems
185
- for (let j = 0, k = repeatGroupItemCount; j < newQrItems.length; j++, k--) {
186
- if (k > 0) {
187
- qrGroup.item[i + j] = newQrItems[j];
188
- }
189
- else {
190
- qrGroup.item.splice(i + j, 0, newQrItems[j]);
191
- }
192
- }
193
- break;
180
+ break;
181
+ }
182
+ if (newQrItems.length > repeatGroupItemCount) {
183
+ // Replace each repeat group qrItem with their new counterparts,
184
+ // followed by adding an extra newQrItem behind the newly replaced qrItems
185
+ for (let j = 0, k = repeatGroupItemCount; j < newQrItems.length; j++, k--) {
186
+ if (k > 0) {
187
+ qrItems[i + j] = newQrItems[j];
194
188
  }
195
- else if (newQrItems.length < repeatGroupItemCount) {
196
- // Replace each repeat group qrItem with their new counterparts (except the last one),
197
- // followed by deleting the last newQrItem which wasn't replaced
198
- for (let j = 0; j < repeatGroupItemCount; j++) {
199
- if (j <= newQrItems.length - 1) {
200
- qrGroup.item[i + j] = newQrItems[j];
201
- }
202
- else {
203
- qrGroup.item.splice(i + j, 1);
204
- }
205
- }
206
- break;
189
+ else {
190
+ qrItems.splice(i + j, 0, newQrItems[j]);
207
191
  }
208
192
  }
209
- // Add qrItem at its supposed position if its index is not present within qrGroup
210
- if (newQrItemIndex < qrItemsRealIndexArr[i]) {
211
- for (let j = 0; j < newQrItems.length; j++) {
212
- qrGroup.item.splice(i + j, 0, newQrItems[j]);
193
+ break;
194
+ }
195
+ if (newQrItems.length < repeatGroupItemCount) {
196
+ // Replace each repeat group qrItem with their new counterparts (except the last one),
197
+ // followed by deleting the last newQrItem which wasn't replaced
198
+ for (let j = 0; j < repeatGroupItemCount; j++) {
199
+ if (j <= newQrItems.length - 1) {
200
+ qrItems[i + j] = newQrItems[j];
201
+ }
202
+ else {
203
+ qrItems.splice(i + j, 1);
213
204
  }
214
- break;
215
205
  }
206
+ break;
207
+ }
208
+ }
209
+ // Add qrItem at its supposed position if its index is not present within qrGroup
210
+ if (newQrItemIndex < qrItemsRealIndexArr[i]) {
211
+ for (let j = 0; j < newQrItems.length; j++) {
212
+ qrItems.splice(i + j, 0, newQrItems[j]);
216
213
  }
214
+ break;
217
215
  }
218
216
  }
219
217
  }
@@ -1 +1 @@
1
- {"version":3,"file":"qrItem.js","sourceRoot":"","sources":["../../src/utils/qrItem.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"qrItem.js","sourceRoot":"","sources":["../../src/utils/qrItem.ts"],"names":[],"mappings":"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"}
@@ -30,11 +30,13 @@ import { extractContainedValueSets } from './extractContainedValueSets';
30
30
  import { extractOtherExtensions } from './extractOtherExtensions';
31
31
  import { resolveValueSets } from './resolveValueSets';
32
32
  import { addAdditionalVariables } from './addAdditionalVariables';
33
+ import { getLinkIdTypeTuples } from '../qItem';
33
34
  export function createQuestionnaireModel(questionnaire, additionalVariables, terminologyServerUrl) {
34
35
  return __awaiter(this, void 0, void 0, function* () {
35
36
  if (!questionnaire.item) {
36
37
  return createEmptyModel();
37
38
  }
39
+ const itemTypes = Object.fromEntries(getLinkIdTypeTuples(questionnaire));
38
40
  const tabs = extractTabs(questionnaire);
39
41
  const launchContexts = extractLaunchContexts(questionnaire);
40
42
  let variables = extractQuestionnaireLevelVariables(questionnaire);
@@ -51,6 +53,7 @@ export function createQuestionnaireModel(questionnaire, additionalVariables, ter
51
53
  variables = resolveValueSetsResult.variables;
52
54
  processedValueSetCodings = resolveValueSetsResult.processedValueSetCodings;
53
55
  return {
56
+ itemTypes,
54
57
  tabs,
55
58
  variables,
56
59
  launchContexts,
@@ -65,6 +68,7 @@ export function createQuestionnaireModel(questionnaire, additionalVariables, ter
65
68
  }
66
69
  function createEmptyModel() {
67
70
  return {
71
+ itemTypes: {},
68
72
  tabs: {},
69
73
  variables: { fhirPathVariables: {}, xFhirQueryVariables: {} },
70
74
  launchContexts: {},