@aehrc/smart-forms-renderer 0.7.0 → 0.7.2

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 (189) hide show
  1. package/README.md +5 -5
  2. package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.js +1 -1
  3. package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.js.map +1 -1
  4. package/lib/components/FormComponents/DecimalItem/DecimalItem.js +3 -2
  5. package/lib/components/FormComponents/DecimalItem/DecimalItem.js.map +1 -1
  6. package/lib/components/FormComponents/GridGroup/GridGroup.js +2 -2
  7. package/lib/components/FormComponents/GridGroup/GridGroup.js.map +1 -1
  8. package/lib/components/FormComponents/GridGroup/GridRow.js +2 -2
  9. package/lib/components/FormComponents/GridGroup/GridRow.js.map +1 -1
  10. package/lib/components/FormComponents/GroupItem/GroupChildItemSwitcher.d.ts +10 -0
  11. package/lib/components/FormComponents/GroupItem/GroupChildItemSwitcher.js +73 -0
  12. package/lib/components/FormComponents/GroupItem/GroupChildItemSwitcher.js.map +1 -0
  13. package/lib/components/FormComponents/GroupItem/GroupItem.js +3 -3
  14. package/lib/components/FormComponents/GroupItem/GroupItem.js.map +1 -1
  15. package/lib/components/FormComponents/GroupItem/ItemSwitcher.d.ts +10 -0
  16. package/lib/components/FormComponents/GroupItem/ItemSwitcher.js +81 -0
  17. package/lib/components/FormComponents/GroupItem/ItemSwitcher.js.map +1 -0
  18. package/lib/components/FormComponents/GroupItem/TopLevelGroupItemSwitcher.d.ts +10 -0
  19. package/lib/components/FormComponents/GroupItem/TopLevelGroupItemSwitcher.js +45 -0
  20. package/lib/components/FormComponents/GroupItem/TopLevelGroupItemSwitcher.js.map +1 -0
  21. package/lib/components/FormComponents/IntegerItem/IntegerItem.js +3 -2
  22. package/lib/components/FormComponents/IntegerItem/IntegerItem.js.map +1 -1
  23. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.js +2 -2
  24. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.js.map +1 -1
  25. package/lib/components/FormComponents/RepeatGroup/RepeatGroup.js +4 -3
  26. package/lib/components/FormComponents/RepeatGroup/RepeatGroup.js.map +1 -1
  27. package/lib/components/FormComponents/RepeatGroup/index.d.ts +1 -0
  28. package/lib/{theme/overrides/Typography.js → components/FormComponents/RepeatGroup/index.js} +2 -15
  29. package/lib/components/FormComponents/RepeatGroup/index.js.map +1 -0
  30. package/lib/components/FormComponents/RepeatItem/RepeatItem.js +1 -1
  31. package/lib/components/FormComponents/RepeatItem/RepeatItem.js.map +1 -1
  32. package/lib/components/FormComponents/SingleItem/index.d.ts +1 -0
  33. package/lib/components/FormComponents/SingleItem/index.js +18 -0
  34. package/lib/components/FormComponents/SingleItem/index.js.map +1 -0
  35. package/lib/components/FormComponents/StringItem/StringItem.js +3 -2
  36. package/lib/components/FormComponents/StringItem/StringItem.js.map +1 -1
  37. package/lib/components/FormComponents/Tables/QItemGroupTable.js +7 -5
  38. package/lib/components/FormComponents/Tables/QItemGroupTable.js.map +1 -1
  39. package/lib/components/FormComponents/Tables/QItemGroupTableRow.js +2 -2
  40. package/lib/components/FormComponents/Tables/QItemGroupTableRow.js.map +1 -1
  41. package/lib/components/FormComponents/Tables/index.d.ts +1 -0
  42. package/lib/components/FormComponents/Tables/index.js +18 -0
  43. package/lib/components/FormComponents/Tables/index.js.map +1 -0
  44. package/lib/components/FormComponents/TextItem/TextItem.js +3 -2
  45. package/lib/components/FormComponents/TextItem/TextItem.js.map +1 -1
  46. package/lib/components/FormComponents/index.d.ts +3 -0
  47. package/lib/components/FormComponents/index.js +20 -0
  48. package/lib/components/FormComponents/index.js.map +1 -0
  49. package/lib/components/Renderer/BaseRenderer.js +26 -14
  50. package/lib/components/Renderer/BaseRenderer.js.map +1 -1
  51. package/lib/components/Renderer/FormBodyCollapsible.js +2 -2
  52. package/lib/components/Renderer/FormBodyCollapsible.js.map +1 -1
  53. package/lib/components/Renderer/FormBodyTabbed.js +2 -2
  54. package/lib/components/Renderer/FormBodyTabbed.js.map +1 -1
  55. package/lib/components/Renderer/FormTopLevelItem.d.ts +4 -4
  56. package/lib/components/Renderer/FormTopLevelItem.js +14 -1
  57. package/lib/components/Renderer/FormTopLevelItem.js.map +1 -1
  58. package/lib/components/index.d.ts +1 -0
  59. package/lib/components/index.js +1 -0
  60. package/lib/components/index.js.map +1 -1
  61. package/lib/hooks/useDecimalUpdateFromProp.d.ts +2 -0
  62. package/lib/{utils/isHidden.js → hooks/useDecimalUpdateFromProp.js} +12 -13
  63. package/lib/hooks/useDecimalUpdateFromProp.js.map +1 -0
  64. package/lib/hooks/useInitialiseRepeatAnswers.d.ts +2 -2
  65. package/lib/hooks/useInitialiseRepeatAnswers.js +21 -15
  66. package/lib/hooks/useInitialiseRepeatAnswers.js.map +1 -1
  67. package/lib/hooks/useInitialiseRepeatGroups.d.ts +2 -1
  68. package/lib/hooks/useInitialiseRepeatGroups.js +21 -15
  69. package/lib/hooks/useInitialiseRepeatGroups.js.map +1 -1
  70. package/lib/hooks/useIntegerUpdateFromProp.d.ts +2 -0
  71. package/lib/hooks/useIntegerUpdateFromProp.js +29 -0
  72. package/lib/hooks/useIntegerUpdateFromProp.js.map +1 -0
  73. package/lib/hooks/useNumberInput.d.ts +3 -0
  74. package/lib/hooks/useNumberInput.js +31 -0
  75. package/lib/hooks/useNumberInput.js.map +1 -0
  76. package/lib/hooks/useNumberUpdateFromProp.d.ts +2 -0
  77. package/lib/hooks/useNumberUpdateFromProp.js +29 -0
  78. package/lib/hooks/useNumberUpdateFromProp.js.map +1 -0
  79. package/lib/hooks/useRepeatItemState.d.ts +5 -0
  80. package/lib/hooks/useRepeatItemState.js +35 -0
  81. package/lib/hooks/useRepeatItemState.js.map +1 -0
  82. package/lib/hooks/useRepeatItemUpdateFromProp.d.ts +2 -0
  83. package/lib/hooks/useRepeatItemUpdateFromProp.js +29 -0
  84. package/lib/hooks/useRepeatItemUpdateFromProp.js.map +1 -0
  85. package/lib/hooks/useStringField.d.ts +2 -0
  86. package/lib/hooks/useStringField.js +29 -0
  87. package/lib/hooks/useStringField.js.map +1 -0
  88. package/lib/hooks/useStringInput.d.ts +3 -0
  89. package/lib/hooks/useStringInput.js +31 -0
  90. package/lib/hooks/useStringInput.js.map +1 -0
  91. package/lib/hooks/useStringUpdateFromProp.d.ts +2 -0
  92. package/lib/hooks/useStringUpdateFromProp.js +29 -0
  93. package/lib/hooks/useStringUpdateFromProp.js.map +1 -0
  94. package/lib/index.d.ts +16 -0
  95. package/lib/index.js +27 -0
  96. package/lib/index.js.map +1 -1
  97. package/lib/interfaces/questionnaireStore.interface.d.ts +1 -0
  98. package/lib/stores/useQuestionnaireResponseStore.d.ts +1 -1
  99. package/lib/stores/useQuestionnaireResponseStore.js +15 -10
  100. package/lib/stores/useQuestionnaireResponseStore.js.map +1 -1
  101. package/lib/stores/useQuestionnaireStore.d.ts +2 -1
  102. package/lib/stores/useQuestionnaireStore.js +5 -2
  103. package/lib/stores/useQuestionnaireStore.js.map +1 -1
  104. package/lib/theme/overrides/Overrides.js +1 -2
  105. package/lib/theme/overrides/Overrides.js.map +1 -1
  106. package/lib/utils/calculatedExpression.js +2 -2
  107. package/lib/utils/calculatedExpression.js.map +1 -1
  108. package/lib/utils/formChanges.d.ts +18 -0
  109. package/lib/utils/formChanges.js +91 -0
  110. package/lib/utils/formChanges.js.map +1 -0
  111. package/lib/utils/formChangesOld.d.ts +18 -0
  112. package/lib/utils/formChangesOld.js +91 -0
  113. package/lib/utils/formChangesOld.js.map +1 -0
  114. package/lib/utils/index.d.ts +1 -0
  115. package/lib/utils/index.js +18 -0
  116. package/lib/utils/index.js.map +1 -0
  117. package/lib/utils/mapItem.d.ts +2 -2
  118. package/lib/utils/mapItem.js +3 -3
  119. package/lib/utils/mapItem.js.map +1 -1
  120. package/lib/utils/qItem.d.ts +2 -0
  121. package/lib/utils/qItem.js +22 -0
  122. package/lib/utils/qItem.js.map +1 -1
  123. package/lib/utils/qrItem.d.ts +1 -1
  124. package/lib/utils/qrItem.js +92 -93
  125. package/lib/utils/qrItem.js.map +1 -1
  126. package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js +4 -0
  127. package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js.map +1 -1
  128. package/lib/utils/repopulate.d.ts +9 -0
  129. package/lib/utils/repopulate.js +133 -0
  130. package/lib/utils/repopulate.js.map +1 -0
  131. package/lib/utils/repopulateGenerateItems.d.ts +9 -0
  132. package/lib/utils/repopulateGenerateItems.js +133 -0
  133. package/lib/utils/repopulateGenerateItems.js.map +1 -0
  134. package/lib/utils/repopulateIntoResponse.d.ts +3 -0
  135. package/lib/utils/repopulateIntoResponse.js +92 -0
  136. package/lib/utils/repopulateIntoResponse.js.map +1 -0
  137. package/lib/utils/repopulateItems.d.ts +9 -0
  138. package/lib/utils/repopulateItems.js +131 -0
  139. package/lib/utils/repopulateItems.js.map +1 -0
  140. package/lib/utils/repopulateRepeatGroup.d.ts +4 -0
  141. package/lib/utils/repopulateRepeatGroup.js +54 -0
  142. package/lib/utils/repopulateRepeatGroup.js.map +1 -0
  143. package/package.json +3 -1
  144. package/src/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.tsx +1 -1
  145. package/src/components/FormComponents/DecimalItem/DecimalItem.tsx +3 -2
  146. package/src/components/FormComponents/GridGroup/GridGroup.tsx +2 -2
  147. package/src/components/FormComponents/GridGroup/GridRow.tsx +2 -2
  148. package/src/components/FormComponents/GroupItem/GroupItem.tsx +3 -3
  149. package/src/components/FormComponents/IntegerItem/IntegerItem.tsx +3 -2
  150. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.tsx +1 -1
  151. package/src/components/FormComponents/RepeatGroup/RepeatGroup.tsx +4 -3
  152. package/src/{theme/overrides/Backdrop.ts → components/FormComponents/RepeatGroup/index.ts} +1 -17
  153. package/src/components/FormComponents/RepeatItem/RepeatItem.tsx +1 -1
  154. package/src/components/FormComponents/SingleItem/index.ts +18 -0
  155. package/src/components/FormComponents/StringItem/StringItem.tsx +3 -2
  156. package/src/components/FormComponents/Tables/QItemGroupTable.tsx +15 -6
  157. package/src/components/FormComponents/Tables/QItemGroupTableRow.tsx +2 -2
  158. package/src/components/FormComponents/Tables/index.ts +18 -0
  159. package/src/components/FormComponents/TextItem/TextItem.tsx +3 -2
  160. package/src/components/FormComponents/index.ts +20 -0
  161. package/src/components/Renderer/BaseRenderer.tsx +39 -18
  162. package/src/components/Renderer/FormBodyCollapsible.tsx +2 -2
  163. package/src/components/Renderer/FormBodyTabbed.tsx +2 -2
  164. package/src/components/Renderer/FormTopLevelItem.tsx +33 -4
  165. package/src/components/index.ts +1 -0
  166. package/src/hooks/index.ts +1 -0
  167. package/src/hooks/useInitialiseRepeatAnswers.ts +28 -17
  168. package/src/hooks/useInitialiseRepeatGroups.ts +28 -17
  169. package/src/hooks/useNumberInput.ts +37 -0
  170. package/src/hooks/useStringInput.ts +37 -0
  171. package/src/index.ts +43 -0
  172. package/src/interfaces/questionnaireStore.interface.ts +1 -0
  173. package/src/stores/useQuestionnaireResponseStore.ts +14 -10
  174. package/src/stores/useQuestionnaireStore.ts +10 -3
  175. package/src/theme/overrides/Overrides.ts +0 -2
  176. package/src/utils/calculatedExpression.ts +2 -2
  177. package/src/utils/formChanges.ts +141 -0
  178. package/src/utils/index.ts +18 -0
  179. package/src/utils/mapItem.ts +6 -4
  180. package/src/utils/qItem.ts +29 -0
  181. package/src/utils/qrItem.ts +104 -94
  182. package/src/utils/questionnaireStoreUtils/createQuestionaireModel.ts +4 -0
  183. package/src/utils/repopulateIntoResponse.ts +153 -0
  184. package/src/utils/repopulateItems.ts +207 -0
  185. package/src/utils/repopulateRepeatGroup.ts +68 -0
  186. package/lib/theme/overrides/Typography.d.ts +0 -13
  187. package/lib/theme/overrides/Typography.js.map +0 -1
  188. package/lib/utils/isHidden.d.ts +0 -3
  189. package/lib/utils/isHidden.js.map +0 -1
@@ -108,112 +108,111 @@ export function createEmptyQrItemWithUnit(qItem, unit) {
108
108
  *
109
109
  * @author Sean Fong
110
110
  */
111
- export function updateQrGroup(newQrItem, newQrRepeatGroup, qrGroup, qItemsIndexMap) {
111
+ export function updateQrItemsInGroup(newQrItem, newQrRepeatGroup, questionnaireResponseOrQrItem, qItemsIndexMap) {
112
112
  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);
113
+ const qrItems = questionnaireResponseOrQrItem.item;
114
+ if (!qrItems) {
115
+ return;
116
+ }
117
+ // Get actual sequence indexes of qrItems present within a qrGroup
118
+ // e.g. qrGroup has 4 fields but only the 2nd and 3rd field have values - resulting array is [1, 2]
119
+ const qrItemsRealIndexArr = qrItems.map((qrItem) => qItemsIndexMap[qrItem.linkId]);
120
+ if (newQrItem && newQrItem.linkId in qItemsIndexMap) {
121
+ if (qrItems.length === 0) {
122
+ qrItems.push(newQrItem);
123
+ return;
124
+ }
125
+ // Get actual sequence index of qrItem within qrGroup
126
+ const newQrItemIndex = qItemsIndexMap[newQrItem.linkId];
127
+ for (let i = 0; i < qrItemsRealIndexArr.length; i++) {
128
+ // Add qrItem at the end of qrGroup if it is larger than the other indexes
129
+ if (newQrItemIndex > qrItemsRealIndexArr[i]) {
130
+ if (i === qrItemsRealIndexArr.length - 1) {
131
+ qrItems.push(newQrItem);
132
+ }
133
+ continue;
120
134
  }
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
- }
135
+ // Replace or delete qrItem at its supposed position if its index is already present within qrGroup
136
+ if (newQrItemIndex === qrItemsRealIndexArr[i]) {
137
+ // newQrItem has answer value
138
+ if (((_a = newQrItem.item) === null || _a === void 0 ? void 0 : _a.length) || ((_b = newQrItem.answer) === null || _b === void 0 ? void 0 : _b.length)) {
139
+ qrItems[i] = newQrItem;
140
+ break;
149
141
  }
142
+ // newQrItem has no answer value
143
+ qrItems.splice(i, 1);
144
+ break;
150
145
  }
146
+ // Add qrItem at its supposed position if its index is not present within qrGroup
147
+ if (newQrItemIndex < qrItemsRealIndexArr[i]) {
148
+ qrItems.splice(i, 0, newQrItem);
149
+ break;
150
+ }
151
+ }
152
+ }
153
+ if (newQrRepeatGroup && newQrRepeatGroup.linkId in qItemsIndexMap) {
154
+ const newQrItems = newQrRepeatGroup.qrItems;
155
+ if (qrItems.length === 0) {
156
+ qrItems.push(...newQrItems);
157
+ return;
151
158
  }
152
- else if (newQrRepeatGroup && newQrRepeatGroup.linkId in qItemsIndexMap) {
153
- const newQrItems = newQrRepeatGroup.qrItems;
154
- if (qrGroup.item.length === 0) {
155
- qrGroup.item.push(...newQrItems);
159
+ // Get actual sequence index of qrItems within qrGroup
160
+ const newQrItemIndex = qItemsIndexMap[newQrRepeatGroup.linkId];
161
+ for (let i = 0; i < qrItemsRealIndexArr.length; i++) {
162
+ // Add qrItem at the end of qrGroup if it is larger than the other indexes
163
+ if (newQrItemIndex > qrItemsRealIndexArr[i]) {
164
+ if (i === qrItemsRealIndexArr.length - 1) {
165
+ qrItems.push(...newQrItems);
166
+ }
167
+ continue;
156
168
  }
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;
169
+ // Replace or delete qrItem at its supposed position if its index is already present within qrGroup
170
+ if (newQrItemIndex === qrItemsRealIndexArr[i]) {
171
+ // Get number of repeatGroupItems that has the same linkId present in qrGroup
172
+ let repeatGroupItemCount = 0;
173
+ while (newQrItemIndex === qrItemsRealIndexArr[i + repeatGroupItemCount]) {
174
+ repeatGroupItemCount++;
175
+ }
176
+ // Replace each repeat group qrItem with their new counterparts
177
+ if (newQrItems.length === repeatGroupItemCount) {
178
+ for (let j = 0; j < newQrItems.length; j++) {
179
+ qrItems[i + j] = newQrItems[j];
167
180
  }
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;
181
+ break;
182
+ }
183
+ if (newQrItems.length > repeatGroupItemCount) {
184
+ // Replace each repeat group qrItem with their new counterparts,
185
+ // followed by adding an extra newQrItem behind the newly replaced qrItems
186
+ for (let j = 0, k = repeatGroupItemCount; j < newQrItems.length; j++, k--) {
187
+ if (k > 0) {
188
+ qrItems[i + j] = newQrItems[j];
194
189
  }
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;
190
+ else {
191
+ qrItems.splice(i + j, 0, newQrItems[j]);
207
192
  }
208
193
  }
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]);
194
+ break;
195
+ }
196
+ if (newQrItems.length < repeatGroupItemCount) {
197
+ // Replace each repeat group qrItem with their new counterparts (except the last one),
198
+ // followed by deleting the last newQrItem which wasn't replaced
199
+ for (let j = 0; j < repeatGroupItemCount; j++) {
200
+ if (j <= newQrItems.length - 1) {
201
+ qrItems[i + j] = newQrItems[j];
202
+ }
203
+ else {
204
+ qrItems.splice(i + j, 1);
213
205
  }
214
- break;
215
206
  }
207
+ break;
208
+ }
209
+ }
210
+ // Add qrItem at its supposed position if its index is not present within qrGroup
211
+ if (newQrItemIndex < qrItemsRealIndexArr[i]) {
212
+ for (let j = 0; j < newQrItems.length; j++) {
213
+ qrItems.splice(i + j, 0, newQrItems[j]);
216
214
  }
215
+ break;
217
216
  }
218
217
  }
219
218
  }
@@ -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: {},
@@ -1 +1 @@
1
- {"version":3,"file":"createQuestionaireModel.js","sourceRoot":"","sources":["../../../src/utils/questionnaireStoreUtils/createQuestionaireModel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;;;;;;;;;;AAMH,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,kCAAkC,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,MAAM,UAAgB,wBAAwB,CAC5C,aAA4B,EAC5B,mBAA2C,EAC3C,oBAA4B;;QAE5B,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;YACvB,OAAO,gBAAgB,EAAE,CAAC;SAC3B;QAED,MAAM,IAAI,GAAS,WAAW,CAAC,aAAa,CAAC,CAAC;QAE9C,MAAM,cAAc,GAAkC,qBAAqB,CAAC,aAAa,CAAC,CAAC;QAE3F,IAAI,SAAS,GAAc,kCAAkC,CAAC,aAAa,CAAC,CAAC;QAC7E,SAAS,GAAG,sBAAsB,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;QAEnE,MAAM,+BAA+B,GAAG,yBAAyB,CAC/D,aAAa,EACb,oBAAoB,CACrB,CAAC;QACF,IAAI,gBAAgB,GAAG,+BAA+B,CAAC,gBAAgB,CAAC;QACxE,IAAI,wBAAwB,GAAG,+BAA+B,CAAC,wBAAwB,CAAC;QACxF,MAAM,qBAAqB,GAAG,+BAA+B,CAAC,qBAAqB,CAAC;QAEpF,MAAM,4BAA4B,GAAG,sBAAsB,CACzD,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,oBAAoB,CACrB,CAAC;QAEF,MAAM,EAAE,eAAe,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,GACxF,4BAA4B,CAAC;QAC/B,SAAS,GAAG,4BAA4B,CAAC,SAAS,CAAC;QACnD,gBAAgB,GAAG,4BAA4B,CAAC,gBAAgB,CAAC;QAEjE,MAAM,sBAAsB,GAAG,MAAM,gBAAgB,CACnD,SAAS,EACT,gBAAgB,EAChB,wBAAwB,EACxB,oBAAoB,CACrB,CAAC;QAEF,SAAS,GAAG,sBAAsB,CAAC,SAAS,CAAC;QAC7C,wBAAwB,GAAG,sBAAsB,CAAC,wBAAwB,CAAC;QAE3E,OAAO;YACL,IAAI;YACJ,SAAS;YACT,cAAc;YACd,eAAe;YACf,qBAAqB;YACrB,qBAAqB;YACrB,iBAAiB;YACjB,wBAAwB;YACxB,qBAAqB;SACtB,CAAC;IACJ,CAAC;CAAA;AAED,SAAS,gBAAgB;IACvB,OAAO;QACL,IAAI,EAAE,EAAE;QACR,SAAS,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE;QAC7D,cAAc,EAAE,EAAE;QAClB,qBAAqB,EAAE,EAAE;QACzB,qBAAqB,EAAE,EAAE;QACzB,iBAAiB,EAAE,EAAE;QACrB,eAAe,EAAE,EAAE;QACnB,wBAAwB,EAAE,EAAE;QAC5B,qBAAqB,EAAE,EAAE;KAC1B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"createQuestionaireModel.js","sourceRoot":"","sources":["../../../src/utils/questionnaireStoreUtils/createQuestionaireModel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;;;;;;;;;;AAMH,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,kCAAkC,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE/C,MAAM,UAAgB,wBAAwB,CAC5C,aAA4B,EAC5B,mBAA2C,EAC3C,oBAA4B;;QAE5B,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;YACvB,OAAO,gBAAgB,EAAE,CAAC;SAC3B;QAED,MAAM,SAAS,GAA2B,MAAM,CAAC,WAAW,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAC;QACjG,MAAM,IAAI,GAAS,WAAW,CAAC,aAAa,CAAC,CAAC;QAE9C,MAAM,cAAc,GAAkC,qBAAqB,CAAC,aAAa,CAAC,CAAC;QAE3F,IAAI,SAAS,GAAc,kCAAkC,CAAC,aAAa,CAAC,CAAC;QAC7E,SAAS,GAAG,sBAAsB,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;QAEnE,MAAM,+BAA+B,GAAG,yBAAyB,CAC/D,aAAa,EACb,oBAAoB,CACrB,CAAC;QACF,IAAI,gBAAgB,GAAG,+BAA+B,CAAC,gBAAgB,CAAC;QACxE,IAAI,wBAAwB,GAAG,+BAA+B,CAAC,wBAAwB,CAAC;QACxF,MAAM,qBAAqB,GAAG,+BAA+B,CAAC,qBAAqB,CAAC;QAEpF,MAAM,4BAA4B,GAAG,sBAAsB,CACzD,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,oBAAoB,CACrB,CAAC;QAEF,MAAM,EAAE,eAAe,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,GACxF,4BAA4B,CAAC;QAC/B,SAAS,GAAG,4BAA4B,CAAC,SAAS,CAAC;QACnD,gBAAgB,GAAG,4BAA4B,CAAC,gBAAgB,CAAC;QAEjE,MAAM,sBAAsB,GAAG,MAAM,gBAAgB,CACnD,SAAS,EACT,gBAAgB,EAChB,wBAAwB,EACxB,oBAAoB,CACrB,CAAC;QAEF,SAAS,GAAG,sBAAsB,CAAC,SAAS,CAAC;QAC7C,wBAAwB,GAAG,sBAAsB,CAAC,wBAAwB,CAAC;QAE3E,OAAO;YACL,SAAS;YACT,IAAI;YACJ,SAAS;YACT,cAAc;YACd,eAAe;YACf,qBAAqB;YACrB,qBAAqB;YACrB,iBAAiB;YACjB,wBAAwB;YACxB,qBAAqB;SACtB,CAAC;IACJ,CAAC;CAAA;AAED,SAAS,gBAAgB;IACvB,OAAO;QACL,SAAS,EAAE,EAAE;QACb,IAAI,EAAE,EAAE;QACR,SAAS,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE;QAC7D,cAAc,EAAE,EAAE;QAClB,qBAAqB,EAAE,EAAE;QACzB,qBAAqB,EAAE,EAAE;QACzB,iBAAiB,EAAE,EAAE;QACrB,eAAe,EAAE,EAAE;QACnB,wBAAwB,EAAE,EAAE;QAC5B,qBAAqB,EAAE,EAAE;KAC1B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { Questionnaire, QuestionnaireItem, QuestionnaireResponse, QuestionnaireResponseItem } from 'fhir/r4';
2
+ import type { Tabs } from '../interfaces/tab.interface';
3
+ export interface ItemToRepopulate {
4
+ qItem: QuestionnaireItem | null;
5
+ heading: string | null;
6
+ newQRItem: QuestionnaireResponseItem;
7
+ oldQRItem?: QuestionnaireResponseItem;
8
+ }
9
+ export declare function getItemsToRepopulate(sourceQuestionnaire: Questionnaire, itemTypes: Record<string, string>, tabs: Tabs, populatedResponse: QuestionnaireResponse, updatableResponse: QuestionnaireResponse): Record<string, ItemToRepopulate>;
@@ -0,0 +1,133 @@
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 _isEqual from 'lodash/isEqual';
18
+ import { containsTabs, isTabContainer } from './tabs';
19
+ import { getShortText } from './itemControl';
20
+ import { checkIsRepeatGroupToRepopulate, getRepeatGroupToRepopulate } from './repopulateRepeatGroup';
21
+ export function getItemsToRepopulate(sourceQuestionnaire, itemTypes, tabs, populatedResponse, updatableResponse) {
22
+ var _a;
23
+ if (!sourceQuestionnaire.item ||
24
+ sourceQuestionnaire.item.length === 0 ||
25
+ !populatedResponse.item ||
26
+ populatedResponse.item.length === 0 ||
27
+ !updatableResponse.item ||
28
+ updatableResponse.item.length === 0) {
29
+ return {};
30
+ }
31
+ const populatedItems = [];
32
+ for (const topLevelItem of populatedResponse.item) {
33
+ populatedItems.push(...getPopulatedItemsRecursive(topLevelItem, itemTypes));
34
+ }
35
+ const itemsToRepopulate = populatedItems.reduce((mapping, item) => {
36
+ mapping[item.linkId] = {
37
+ qItem: null,
38
+ heading: null,
39
+ newQRItem: item
40
+ };
41
+ return mapping;
42
+ }, {});
43
+ // Get corresponding old items from updatableResponse if they are different
44
+ for (const topLevelItem of updatableResponse.item) {
45
+ checkCorrespondingOldItemsRecursive(topLevelItem, itemTypes, itemsToRepopulate);
46
+ }
47
+ // Get corresponding old items from updatableResponse if they are different
48
+ for (const topLevelItem of sourceQuestionnaire.item) {
49
+ const heading = (_a = topLevelItem.text) !== null && _a !== void 0 ? _a : null;
50
+ const hasTabs = isTabContainer(topLevelItem) || containsTabs(topLevelItem);
51
+ getCorrespondingQuestionnaireItemsRecursive(topLevelItem, heading, tabs, hasTabs, itemsToRepopulate);
52
+ }
53
+ return itemsToRepopulate;
54
+ }
55
+ // 1. Get items to repopulate (only new items)
56
+ // 2. Get corresponding old items from updatableResponse (if they are different)
57
+ // 3. Compare old and new items in dialog - if there are none, show a dialog saying there is no new data
58
+ // 4. Have checkboxes in dialog to update response
59
+ // 5. Replace old answers with new answers
60
+ function getCorrespondingQuestionnaireItemsRecursive(qItem, heading, tabs, hasTabs, itemsToRepopulate) {
61
+ var _a, _b;
62
+ if (qItem.type === 'group' && qItem.item && qItem.item.length > 0) {
63
+ const isTab = !!tabs[qItem.linkId];
64
+ if (isTab) {
65
+ heading = (_b = (_a = getShortText(qItem)) !== null && _a !== void 0 ? _a : qItem.text) !== null && _b !== void 0 ? _b : null;
66
+ }
67
+ // TODO it seems like there can only be one answer per linkId, we might need to do repeat groups differently
68
+ // so we need to fix this one first it seems like
69
+ /* Repeat group implementation */
70
+ if (qItem.type === 'group' && qItem.repeats) {
71
+ const isRepeatGroupToRepopulate = checkIsRepeatGroupToRepopulate(qItem, itemsToRepopulate);
72
+ if (isRepeatGroupToRepopulate) {
73
+ const repeatGroupToRepopulate = getRepeatGroupToRepopulate(qItem, itemsToRepopulate);
74
+ if (repeatGroupToRepopulate) {
75
+ itemsToRepopulate[qItem.linkId] = repeatGroupToRepopulate;
76
+ return;
77
+ }
78
+ }
79
+ }
80
+ // /* Grid implementation */
81
+ // if (qItem.type === 'group' && isSpecificItemControl(qItem, 'grid')) {
82
+ // const isRepeatGroupToRepopulate = checkIsRepeatGroupToRepopulate(qItem, itemsToRepopulate);
83
+ // if (isRepeatGroupToRepopulate) {
84
+ // getRepeatGroupToRepopulate(qItem, itemsToRepopulate);
85
+ // }
86
+ // }
87
+ /* */
88
+ // console.log(itemsToRepopulate);
89
+ for (const childItem of qItem.item) {
90
+ getCorrespondingQuestionnaireItemsRecursive(childItem, heading, tabs, hasTabs, itemsToRepopulate);
91
+ }
92
+ return;
93
+ }
94
+ if (!itemsToRepopulate[qItem.linkId]) {
95
+ return;
96
+ }
97
+ itemsToRepopulate[qItem.linkId].qItem = qItem;
98
+ itemsToRepopulate[qItem.linkId].heading = heading;
99
+ }
100
+ function getPopulatedItemsRecursive(qrItem, itemTypes) {
101
+ const itemType = itemTypes[qrItem.linkId];
102
+ if (itemType === 'group' && qrItem.item && qrItem.item.length > 0) {
103
+ const populatedChildItems = [];
104
+ for (const childItem of qrItem.item) {
105
+ populatedChildItems.push(...getPopulatedItemsRecursive(childItem, itemTypes));
106
+ }
107
+ return populatedChildItems;
108
+ }
109
+ // record item if it is not a group item
110
+ return [qrItem];
111
+ }
112
+ function checkCorrespondingOldItemsRecursive(qrItem, itemTypes, itemsToRepopulate) {
113
+ var _a;
114
+ const itemType = itemTypes[qrItem.linkId];
115
+ if (itemType === 'group' && qrItem.item && qrItem.item.length > 0) {
116
+ for (const childItem of qrItem.item) {
117
+ checkCorrespondingOldItemsRecursive(childItem, itemTypes, itemsToRepopulate);
118
+ }
119
+ return;
120
+ }
121
+ const oldItem = qrItem;
122
+ const newItem = (_a = itemsToRepopulate[qrItem.linkId]) === null || _a === void 0 ? void 0 : _a.newQRItem;
123
+ if (!newItem) {
124
+ return;
125
+ }
126
+ if (_isEqual(oldItem, newItem)) {
127
+ delete itemsToRepopulate[qrItem.linkId];
128
+ return;
129
+ }
130
+ // const filteredNewItems = newItems.filter((newItem) => !_isEqual(oldItem, newItem));
131
+ itemsToRepopulate[qrItem.linkId].oldQRItem = oldItem;
132
+ }
133
+ //# sourceMappingURL=repopulate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repopulate.js","sourceRoot":"","sources":["../../src/utils/repopulate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { Questionnaire, QuestionnaireItem, QuestionnaireResponse, QuestionnaireResponseItem } from 'fhir/r4';
2
+ import type { Tabs } from '../interfaces/tab.interface';
3
+ export interface ItemToRepopulate {
4
+ qItem: QuestionnaireItem | null;
5
+ heading: string | null;
6
+ newQRItem: QuestionnaireResponseItem;
7
+ oldQRItem?: QuestionnaireResponseItem;
8
+ }
9
+ export declare function getItemsToRepopulate(sourceQuestionnaire: Questionnaire, itemTypes: Record<string, string>, tabs: Tabs, populatedResponse: QuestionnaireResponse, updatableResponse: QuestionnaireResponse): Record<string, ItemToRepopulate>;
@@ -0,0 +1,133 @@
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 _isEqual from 'lodash/isEqual';
18
+ import { containsTabs, isTabContainer } from './tabs';
19
+ import { getShortText } from './itemControl';
20
+ import { checkIsRepeatGroupToRepopulate, getRepeatGroupToRepopulate } from './repopulateRepeatGroup';
21
+ export function getItemsToRepopulate(sourceQuestionnaire, itemTypes, tabs, populatedResponse, updatableResponse) {
22
+ var _a;
23
+ if (!sourceQuestionnaire.item ||
24
+ sourceQuestionnaire.item.length === 0 ||
25
+ !populatedResponse.item ||
26
+ populatedResponse.item.length === 0 ||
27
+ !updatableResponse.item ||
28
+ updatableResponse.item.length === 0) {
29
+ return {};
30
+ }
31
+ const populatedItems = [];
32
+ for (const topLevelItem of populatedResponse.item) {
33
+ populatedItems.push(...getPopulatedItemsRecursive(topLevelItem, itemTypes));
34
+ }
35
+ const itemsToRepopulate = populatedItems.reduce((mapping, item) => {
36
+ mapping[item.linkId] = {
37
+ qItem: null,
38
+ heading: null,
39
+ newQRItem: item
40
+ };
41
+ return mapping;
42
+ }, {});
43
+ // Get corresponding old items from updatableResponse if they are different
44
+ for (const topLevelItem of updatableResponse.item) {
45
+ checkCorrespondingOldItemsRecursive(topLevelItem, itemTypes, itemsToRepopulate);
46
+ }
47
+ // Get corresponding old items from updatableResponse if they are different
48
+ for (const topLevelItem of sourceQuestionnaire.item) {
49
+ const heading = (_a = topLevelItem.text) !== null && _a !== void 0 ? _a : null;
50
+ const hasTabs = isTabContainer(topLevelItem) || containsTabs(topLevelItem);
51
+ getCorrespondingQuestionnaireItemsRecursive(topLevelItem, heading, tabs, hasTabs, itemsToRepopulate);
52
+ }
53
+ return itemsToRepopulate;
54
+ }
55
+ // 1. Get items to repopulate (only new items)
56
+ // 2. Get corresponding old items from updatableResponse (if they are different)
57
+ // 3. Compare old and new items in dialog - if there are none, show a dialog saying there is no new data
58
+ // 4. Have checkboxes in dialog to update response
59
+ // 5. Replace old answers with new answers
60
+ function getCorrespondingQuestionnaireItemsRecursive(qItem, heading, tabs, hasTabs, itemsToRepopulate) {
61
+ var _a, _b;
62
+ if (qItem.type === 'group' && qItem.item && qItem.item.length > 0) {
63
+ const isTab = !!tabs[qItem.linkId];
64
+ if (isTab) {
65
+ heading = (_b = (_a = getShortText(qItem)) !== null && _a !== void 0 ? _a : qItem.text) !== null && _b !== void 0 ? _b : null;
66
+ }
67
+ // TODO it seems like there can only be one answer per linkId, we might need to do repeat groups differently
68
+ // so we need to fix this one first it seems like
69
+ /* Repeat group implementation */
70
+ if (qItem.type === 'group' && qItem.repeats) {
71
+ const isRepeatGroupToRepopulate = checkIsRepeatGroupToRepopulate(qItem, itemsToRepopulate);
72
+ if (isRepeatGroupToRepopulate) {
73
+ const repeatGroupToRepopulate = getRepeatGroupToRepopulate(qItem, itemsToRepopulate);
74
+ if (repeatGroupToRepopulate) {
75
+ itemsToRepopulate[qItem.linkId] = repeatGroupToRepopulate;
76
+ return;
77
+ }
78
+ }
79
+ }
80
+ // /* Grid implementation */
81
+ // if (qItem.type === 'group' && isSpecificItemControl(qItem, 'grid')) {
82
+ // const isRepeatGroupToRepopulate = checkIsRepeatGroupToRepopulate(qItem, itemsToRepopulate);
83
+ // if (isRepeatGroupToRepopulate) {
84
+ // getRepeatGroupToRepopulate(qItem, itemsToRepopulate);
85
+ // }
86
+ // }
87
+ /* */
88
+ // console.log(itemsToRepopulate);
89
+ for (const childItem of qItem.item) {
90
+ getCorrespondingQuestionnaireItemsRecursive(childItem, heading, tabs, hasTabs, itemsToRepopulate);
91
+ }
92
+ return;
93
+ }
94
+ if (!itemsToRepopulate[qItem.linkId]) {
95
+ return;
96
+ }
97
+ itemsToRepopulate[qItem.linkId].qItem = qItem;
98
+ itemsToRepopulate[qItem.linkId].heading = heading;
99
+ }
100
+ function getPopulatedItemsRecursive(qrItem, itemTypes) {
101
+ const itemType = itemTypes[qrItem.linkId];
102
+ if (itemType === 'group' && qrItem.item && qrItem.item.length > 0) {
103
+ const populatedChildItems = [];
104
+ for (const childItem of qrItem.item) {
105
+ populatedChildItems.push(...getPopulatedItemsRecursive(childItem, itemTypes));
106
+ }
107
+ return populatedChildItems;
108
+ }
109
+ // record item if it is not a group item
110
+ return [qrItem];
111
+ }
112
+ function checkCorrespondingOldItemsRecursive(qrItem, itemTypes, itemsToRepopulate) {
113
+ var _a;
114
+ const itemType = itemTypes[qrItem.linkId];
115
+ if (itemType === 'group' && qrItem.item && qrItem.item.length > 0) {
116
+ for (const childItem of qrItem.item) {
117
+ checkCorrespondingOldItemsRecursive(childItem, itemTypes, itemsToRepopulate);
118
+ }
119
+ return;
120
+ }
121
+ const oldItem = qrItem;
122
+ const newItem = (_a = itemsToRepopulate[qrItem.linkId]) === null || _a === void 0 ? void 0 : _a.newQRItem;
123
+ if (!newItem) {
124
+ return;
125
+ }
126
+ if (_isEqual(oldItem, newItem)) {
127
+ delete itemsToRepopulate[qrItem.linkId];
128
+ return;
129
+ }
130
+ // const filteredNewItems = newItems.filter((newItem) => !_isEqual(oldItem, newItem));
131
+ itemsToRepopulate[qrItem.linkId].oldQRItem = oldItem;
132
+ }
133
+ //# sourceMappingURL=repopulateGenerateItems.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repopulateGenerateItems.js","sourceRoot":"","sources":["../../src/utils/repopulateGenerateItems.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Questionnaire, QuestionnaireResponse } from 'fhir/r4';
2
+ import { ItemToRepopulate } from './repopulateItems';
3
+ export declare function repopulateItemsIntoResponse(questionnaire: Questionnaire, updatableResponse: QuestionnaireResponse, checkedItemsToRepopulate: Record<string, ItemToRepopulate>): QuestionnaireResponse;