@aehrc/smart-forms-renderer 0.27.2 → 0.27.4

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 (179) hide show
  1. package/.storybook/main.ts +2 -1
  2. package/.storybook/preview.ts +6 -1
  3. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionFields.d.ts +3 -2
  4. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionFields.js +9 -17
  5. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionFields.js.map +1 -1
  6. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.js +12 -9
  7. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.js.map +1 -1
  8. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetFields.d.ts +2 -2
  9. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetFields.js +7 -9
  10. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetFields.js.map +1 -1
  11. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.js +12 -8
  12. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.js.map +1 -1
  13. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionFields.d.ts +2 -1
  14. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionFields.js +3 -3
  15. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionFields.js.map +1 -1
  16. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.js +6 -4
  17. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.js.map +1 -1
  18. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionView.d.ts +2 -1
  19. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionView.js +3 -3
  20. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionView.js.map +1 -1
  21. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetFields.d.ts +2 -2
  22. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetFields.js +5 -7
  23. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetFields.js.map +1 -1
  24. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.js +4 -4
  25. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.js.map +1 -1
  26. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.d.ts +2 -1
  27. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.js +2 -3
  28. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.js.map +1 -1
  29. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.js +5 -3
  30. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.js.map +1 -1
  31. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionView.d.ts +2 -1
  32. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionView.js +3 -3
  33. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionView.js.map +1 -1
  34. package/lib/components/FormComponents/DecimalItem/DecimalItem.js +1 -1
  35. package/lib/components/FormComponents/GroupItem/TabButtonsWrapper.js +20 -20
  36. package/lib/components/FormComponents/GroupItem/TabButtonsWrapper.js.map +1 -1
  37. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionFields.d.ts +3 -2
  38. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionFields.js +7 -19
  39. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionFields.js.map +1 -1
  40. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.js +40 -40
  41. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.js.map +1 -1
  42. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.js +15 -3
  43. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.js.map +1 -1
  44. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionFields.d.ts +2 -1
  45. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionFields.js +3 -3
  46. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionFields.js.map +1 -1
  47. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.js +27 -26
  48. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.js.map +1 -1
  49. package/lib/components/FormComponents/StringItem/StringField.js +1 -1
  50. package/lib/components/FormComponents/StringItem/StringField.js.map +1 -1
  51. package/lib/hooks/useInitialiseRenderer.js +1 -1
  52. package/lib/hooks/useInitialiseRenderer.js.map +1 -1
  53. package/lib/hooks/useNextAndPreviousVisibleTabs.d.ts +7 -0
  54. package/lib/hooks/useNextAndPreviousVisibleTabs.js +63 -0
  55. package/lib/hooks/useNextAndPreviousVisibleTabs.js.map +1 -0
  56. package/lib/hooks/useNextPreviousVisibleTabs.d.ts +6 -0
  57. package/lib/hooks/useNextPreviousVisibleTabs.js +63 -0
  58. package/lib/hooks/useNextPreviousVisibleTabs.js.map +1 -0
  59. package/lib/index.d.ts +0 -7
  60. package/lib/index.js +0 -24
  61. package/lib/index.js.map +1 -1
  62. package/lib/utils/choice.d.ts +1 -7
  63. package/lib/utils/choice.js +10 -20
  64. package/lib/utils/choice.js.map +1 -1
  65. package/lib/utils/enableWhen.js +5 -7
  66. package/lib/utils/enableWhen.js.map +1 -1
  67. package/lib/utils/index.d.ts +1 -0
  68. package/lib/utils/index.js +1 -0
  69. package/lib/utils/index.js.map +1 -1
  70. package/lib/utils/openChoice.d.ts +9 -4
  71. package/lib/utils/openChoice.js +47 -78
  72. package/lib/utils/openChoice.js.map +1 -1
  73. package/lib/utils/tabs.d.ts +0 -21
  74. package/lib/utils/tabs.js +0 -51
  75. package/lib/utils/tabs.js.map +1 -1
  76. package/package.json +4 -4
  77. package/src/components/FormComponents/ChoiceItems/CheckboxOptionList.tsx +82 -0
  78. package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionFields.tsx +23 -52
  79. package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.tsx +15 -9
  80. package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetFields.tsx +17 -19
  81. package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.tsx +13 -8
  82. package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionFields.tsx +5 -4
  83. package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.tsx +6 -2
  84. package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionView.tsx +5 -1
  85. package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetFields.tsx +9 -16
  86. package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.tsx +4 -4
  87. package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.tsx +4 -3
  88. package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.tsx +5 -2
  89. package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionView.tsx +5 -1
  90. package/src/components/FormComponents/DecimalItem/DecimalItem.tsx +1 -1
  91. package/src/components/FormComponents/GroupItem/TabButtonsWrapper.tsx +28 -25
  92. package/src/components/FormComponents/ItemParts/{RadioAnswerOptionButtons.tsx → RadioOptionList.tsx} +7 -7
  93. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionFields.tsx +18 -50
  94. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.tsx +70 -68
  95. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerValueSetFields.tsx +110 -0
  96. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerValueSetItem.tsx +188 -0
  97. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.tsx +46 -19
  98. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionFields.tsx +5 -3
  99. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.tsx +37 -29
  100. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerValueSetFields.tsx +104 -0
  101. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerValueSetItem.tsx +156 -0
  102. package/src/components/FormComponents/StringItem/StringField.tsx +1 -1
  103. package/src/hooks/useInitialiseRenderer.ts +1 -1
  104. package/src/hooks/useNextAndPreviousVisibleTabs.ts +86 -0
  105. package/src/hooks/useOpenLabel.ts +43 -0
  106. package/src/index.ts +0 -21
  107. package/src/stories/BuildFormWrapper.tsx +57 -0
  108. package/src/stories/assets/questionnaires/QAdvancedAdditionalDisplayContent.ts +83 -0
  109. package/src/stories/assets/questionnaires/QAdvancedControlAppearance.ts +294 -0
  110. package/src/stories/assets/questionnaires/QAdvancedOther.ts +495 -0
  111. package/src/stories/assets/questionnaires/QAdvancedTextApperance.ts +188 -0
  112. package/src/stories/assets/questionnaires/QAttachment.ts +38 -0
  113. package/src/stories/assets/questionnaires/QBehaviorCalculations.ts +645 -0
  114. package/src/stories/assets/questionnaires/QBehaviorChoiceRestriction.ts +281 -0
  115. package/src/stories/assets/questionnaires/QBehaviorOther.ts +1149 -0
  116. package/src/stories/assets/questionnaires/QBehaviorValueConstraints.ts +508 -0
  117. package/src/stories/assets/questionnaires/QBoolean.ts +130 -0
  118. package/src/stories/assets/questionnaires/QChoice.ts +137 -0
  119. package/src/stories/assets/questionnaires/QDate.ts +56 -0
  120. package/src/stories/assets/questionnaires/QDateTime.ts +56 -0
  121. package/src/stories/assets/questionnaires/QDecimal.ts +56 -0
  122. package/src/stories/assets/questionnaires/QDisplay.ts +38 -0
  123. package/src/stories/assets/questionnaires/QGroup.ts +52 -0
  124. package/src/stories/assets/questionnaires/QInteger.ts +119 -0
  125. package/src/stories/assets/questionnaires/QItemControlDisplay.ts +114 -0
  126. package/src/stories/assets/questionnaires/QItemControlGroup.ts +419 -0
  127. package/src/stories/assets/questionnaires/QItemControlQuestion.ts +1271 -0
  128. package/src/stories/assets/questionnaires/QOpenChoice.ts +151 -0
  129. package/src/stories/assets/questionnaires/QQuantity.ts +38 -0
  130. package/src/stories/assets/questionnaires/QReference.ts +38 -0
  131. package/src/stories/assets/questionnaires/QSingleItems.ts +251 -0
  132. package/src/stories/assets/questionnaires/QString.ts +131 -0
  133. package/src/stories/assets/questionnaires/QText.ts +169 -0
  134. package/src/stories/assets/questionnaires/QTime.ts +38 -0
  135. package/src/stories/assets/questionnaires/QUrl.ts +38 -0
  136. package/src/stories/assets/questionnaires/index.ts +44 -0
  137. package/src/stories/itemTypes/Attachment.stories.tsx +39 -0
  138. package/src/stories/itemTypes/Boolean.stories.tsx +72 -0
  139. package/src/stories/{MedicalHistoryTable.stories.tsx → itemTypes/Choice.stories.tsx} +32 -26
  140. package/src/stories/itemTypes/Date.stories.tsx +46 -0
  141. package/src/stories/itemTypes/DateTime.stories.tsx +45 -0
  142. package/src/stories/itemTypes/Decimal.stories.tsx +56 -0
  143. package/src/stories/itemTypes/Display.stories.tsx +39 -0
  144. package/src/stories/itemTypes/Group.stories.tsx +39 -0
  145. package/src/stories/itemTypes/Integer.stories.tsx +55 -0
  146. package/src/stories/itemTypes/OpenChoice.stories.tsx +64 -0
  147. package/src/stories/itemTypes/Quantity.stories.tsx +39 -0
  148. package/src/stories/itemTypes/Reference.stories.tsx +39 -0
  149. package/src/stories/itemTypes/String.stories.tsx +51 -0
  150. package/src/stories/itemTypes/Text.stories.tsx +51 -0
  151. package/src/stories/itemTypes/Time.stories.tsx +39 -0
  152. package/src/stories/itemTypes/Url.stories.tsx +39 -0
  153. package/src/stories/sdc/AdvancedAdditionalDisplayContent.stories.tsx +45 -0
  154. package/src/stories/sdc/AdvancedControlAppearance.stories.tsx +51 -0
  155. package/src/stories/sdc/AdvancedOther.stories.tsx +76 -0
  156. package/src/stories/sdc/AdvancedTextAppearance.stories.tsx +69 -0
  157. package/src/stories/sdc/BehaviorCalculations.stories.tsx +69 -0
  158. package/src/stories/sdc/BehaviorChoiceRestriction.stories.tsx +76 -0
  159. package/src/stories/sdc/BehaviorOther.stories.tsx +90 -0
  160. package/src/stories/sdc/BehaviorValueConstraints.stories.tsx +88 -0
  161. package/src/stories/sdc/ItemControlDisplay.stories.tsx +39 -0
  162. package/src/stories/sdc/ItemControlGroup.stories.tsx +55 -0
  163. package/src/stories/sdc/ItemControlQuestion.stories.tsx +118 -0
  164. package/src/utils/buildForm.ts +23 -0
  165. package/src/utils/choice.ts +16 -23
  166. package/src/utils/enableWhen.ts +5 -7
  167. package/src/utils/index.ts +1 -0
  168. package/src/utils/openChoice.ts +83 -98
  169. package/src/utils/tabs.ts +0 -75
  170. package/vite.config.ts +23 -0
  171. package/doctor-storybook.log +0 -18
  172. package/src/stories/SmartFormsRenderer.stories.ts +0 -139
  173. package/src/stories/assets/QItems-and-QRItems/QR_GTableMedicalHistory.json +0 -80
  174. package/src/stories/assets/QItems-and-QRItems/Q_GTableMedicalHistory.json +0 -109
  175. package/src/stories/assets/Qs-and-QRs/Q715.json +0 -15086
  176. package/src/stories/assets/Qs-and-QRs/QDev715.json +0 -16081
  177. package/src/stories/assets/Qs-and-QRs/QTestGrid.json +0 -411
  178. package/src/stories/assets/Qs-and-QRs/R715.json +0 -311
  179. package/src/stories/assets/Qs-and-QRs/RTestGrid.json +0 -34
@@ -1 +1 @@
1
- {"version":3,"file":"openChoice.js","sourceRoot":"","sources":["../../src/utils/openChoice.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openChoice.js","sourceRoot":"","sources":["../../src/utils/openChoice.ts"],"names":[],"mappings":"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"}
@@ -44,27 +44,6 @@ export declare function constructTabsWithVisibility(params: constructTabsWithVis
44
44
  linkId: string;
45
45
  isVisible: boolean;
46
46
  }[];
47
- interface getVisibleTabIndexParams {
48
- direction: 'next' | 'previous';
49
- tabs: Tabs;
50
- currentTabIndex: number;
51
- enableWhenIsActivated: boolean;
52
- enableWhenItems: EnableWhenItems;
53
- enableWhenExpressions: EnableWhenExpressions;
54
- }
55
- /**
56
- * Get index of next visible tab
57
- *
58
- * @author Sean Fong
59
- */
60
- export declare function getVisibleTabIndex(params: getVisibleTabIndexParams): number;
61
- /**
62
- *
63
- * Find number of visible tabs
64
- *
65
- * @author Sean Fong
66
- */
67
- export declare function findNumOfVisibleTabs(tabs: Tabs, enableWhenIsActivated: boolean, enableWhenItems: EnableWhenItems, enableWhenExpressions: EnableWhenExpressions): number;
68
47
  export declare function getContextDisplays(item: QuestionnaireItem): QuestionnaireItem[];
69
48
  interface IsTabHiddenParams {
70
49
  qItem: QuestionnaireItem;
package/lib/utils/tabs.js CHANGED
@@ -117,57 +117,6 @@ export function constructTabsWithVisibility(params) {
117
117
  };
118
118
  });
119
119
  }
120
- /**
121
- * Get index of next visible tab
122
- *
123
- * @author Sean Fong
124
- */
125
- export function getVisibleTabIndex(params) {
126
- const { direction, tabs, currentTabIndex, enableWhenIsActivated, enableWhenItems, enableWhenExpressions } = params;
127
- const tabsWithVisibility = constructTabsWithVisibility({
128
- tabs,
129
- enableWhenIsActivated,
130
- enableWhenItems,
131
- enableWhenExpressions
132
- });
133
- let visibleTabIndex;
134
- if (direction === 'next') {
135
- visibleTabIndex = currentTabIndex + 1;
136
- const nextTabIndexIsVisible = false;
137
- while (!nextTabIndexIsVisible) {
138
- if (tabsWithVisibility[visibleTabIndex].isVisible) {
139
- return visibleTabIndex;
140
- }
141
- visibleTabIndex++;
142
- }
143
- }
144
- else {
145
- visibleTabIndex = currentTabIndex - 1;
146
- const previousTabIndexIsVisible = false;
147
- while (!previousTabIndexIsVisible) {
148
- if (tabsWithVisibility[visibleTabIndex].isVisible) {
149
- return visibleTabIndex;
150
- }
151
- visibleTabIndex--;
152
- }
153
- }
154
- return visibleTabIndex;
155
- }
156
- /**
157
- *
158
- * Find number of visible tabs
159
- *
160
- * @author Sean Fong
161
- */
162
- export function findNumOfVisibleTabs(tabs, enableWhenIsActivated, enableWhenItems, enableWhenExpressions) {
163
- const tabsWithVisibility = constructTabsWithVisibility({
164
- tabs,
165
- enableWhenIsActivated,
166
- enableWhenItems,
167
- enableWhenExpressions
168
- });
169
- return tabsWithVisibility.filter((tab) => tab.isVisible).length;
170
- }
171
120
  export function getContextDisplays(item) {
172
121
  if (!item.item || item.item.length === 0) {
173
122
  return [];
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../src/utils/tabs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,MAAM,UAAU,kBAAkB,CAChC,IAAU,EACV,eAAgC,EAChC,qBAA4C;IAE5C,6DAA6D;IAC7D,MAAM,EAAE,WAAW,EAAE,GAAG,eAAe,CAAC;IACxC,MAAM,EAAE,iBAAiB,EAAE,GAAG,qBAAqB,CAAC;IAEpD,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;SACxB,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;SAC3D,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,EAAE;QAC9B,IAAI,GAAG,CAAC,QAAQ,EAAE;YAChB,OAAO,KAAK,CAAC;SACd;QAED,IAAI,WAAW,CAAC,SAAS,CAAC,EAAE;YAC1B,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC;SACzC;QAED,IAAI,iBAAiB,CAAC,SAAS,CAAC,EAAE;YAChC,OAAO,iBAAiB,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC;SAC/C;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,aAAgC;IAC3D,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;QACvB,OAAO,KAAK,CAAC;KACd;IAED,MAAM,IAAI,GAAG,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAChD,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACzB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,aAAgC;IAC7D,OAAO,qBAAqB,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;AAC/D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,KAA0B;IACvD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAoB,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAAC,IAAuB;;IAC3C,MAAM,WAAW,GAAG,MAAA,IAAI,CAAC,SAAS,0CAAE,IAAI,CACtC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,mEAAmE,CACrF,CAAC;IAEF,IAAI,WAAW,EAAE;QACf,MAAM,SAAS,GAAG,MAAA,MAAA,WAAW,CAAC,oBAAoB,0CAAE,MAAM,0CAAE,IAAI,CAC9D,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAChC,CAAC;QACF,IAAI,SAAS,EAAE;YACb,OAAO,IAAI,CAAC;SACb;KACF;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CACzC,MAAuC,EACvC,eAAwB;;IAExB,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAEvB,MAAM,SAAS,GAAG,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAElE,MAAM,IAAI,GAAS,EAAE,CAAC;IACtB,KAAK,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE;QAC5C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG;YACnB,QAAQ,EAAE,CAAC;YACX,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,MAAA,qBAAqB,CAAC,SAAS,CAAC,KAAK,CAAC,mCAAI,KAAK;SAC1D,CAAC;KACH;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AASD,MAAM,UAAU,2BAA2B,CACzC,MAAyC;IAEzC,MAAM,EAAE,IAAI,EAAE,qBAAqB,EAAE,eAAe,EAAE,qBAAqB,EAAE,GAAG,MAAM,CAAC;IAEvF,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE;QAC3C,MAAM,SAAS,GAAG,CAAC,oBAAoB,CAAC;YACtC,MAAM;YACN,qBAAqB;YACrB,eAAe;YACf,qBAAqB;SACtB,CAAC,CAAC;QAEH,OAAO;YACL,MAAM;YACN,SAAS;SACV,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAUD;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAgC;IACjE,MAAM,EACJ,SAAS,EACT,IAAI,EACJ,eAAe,EACf,qBAAqB,EACrB,eAAe,EACf,qBAAqB,EACtB,GAAG,MAAM,CAAC;IAEX,MAAM,kBAAkB,GAAG,2BAA2B,CAAC;QACrD,IAAI;QACJ,qBAAqB;QACrB,eAAe;QACf,qBAAqB;KACtB,CAAC,CAAC;IAEH,IAAI,eAAe,CAAC;IACpB,IAAI,SAAS,KAAK,MAAM,EAAE;QACxB,eAAe,GAAG,eAAe,GAAG,CAAC,CAAC;QACtC,MAAM,qBAAqB,GAAG,KAAK,CAAC;QACpC,OAAO,CAAC,qBAAqB,EAAE;YAC7B,IAAI,kBAAkB,CAAC,eAAe,CAAC,CAAC,SAAS,EAAE;gBACjD,OAAO,eAAe,CAAC;aACxB;YACD,eAAe,EAAE,CAAC;SACnB;KACF;SAAM;QACL,eAAe,GAAG,eAAe,GAAG,CAAC,CAAC;QACtC,MAAM,yBAAyB,GAAG,KAAK,CAAC;QACxC,OAAO,CAAC,yBAAyB,EAAE;YACjC,IAAI,kBAAkB,CAAC,eAAe,CAAC,CAAC,SAAS,EAAE;gBACjD,OAAO,eAAe,CAAC;aACxB;YACD,eAAe,EAAE,CAAC;SACnB;KACF;IAED,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,IAAU,EACV,qBAA8B,EAC9B,eAAgC,EAChC,qBAA4C;IAE5C,MAAM,kBAAkB,GAAG,2BAA2B,CAAC;QACrD,IAAI;QACJ,qBAAqB;QACrB,eAAe;QACf,qBAAqB;KACtB,CAAC,CAAC;IACH,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAuB;IACxD,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QACxC,OAAO,EAAE,CAAC;KACX;IAED,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CACrB,CAAC,SAAS,EAAE,EAAE,CACZ,qBAAqB,CAAC,SAAS,EAAE,iBAAiB,CAAC,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,CACtF,CAAC;AACJ,CAAC;AAYD,MAAM,UAAU,WAAW,CAAC,MAAyB;IACnD,MAAM,EACJ,KAAK,EACL,mBAAmB,EACnB,KAAK,EACL,qBAAqB,EACrB,eAAe,EACf,qBAAqB,EACrB,sBAAsB,EACvB,GAAG,MAAM,CAAC;IAEX,IACE,CAAC,KAAK;QACN,oBAAoB,CAAC;YACnB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,qBAAqB;YACrB,eAAe;YACf,qBAAqB;SACtB,CAAC;QACF,qBAAqB,CAAC,SAAS,CAAC,KAAK,CAAC,EACtC;QACA,OAAO,IAAI,CAAC;KACb;IAED,IAAI,sBAAsB,EAAE;QAC1B,MAAM,oBAAoB,GAAG,mBAAmB,CAAC,IAAI,CACnD,CAAC,kBAAkB,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,KAAK,UAAU,CAC/D,CAAC;QACF,MAAM,QAAQ,GACZ,CAAC,oBAAoB;YACnB,oBAAoB,CAAC;gBACnB,MAAM,EAAE,oBAAoB,CAAC,MAAM;gBACnC,qBAAqB;gBACrB,eAAe;gBACf,qBAAqB;aACtB,CAAC,CAAC;YACL,qBAAqB,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QAExD,IAAI,CAAC,QAAQ,EAAE;YACb,OAAO,IAAI,CAAC;SACb;KACF;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../src/utils/tabs.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aehrc/smart-forms-renderer",
3
- "version": "0.27.2",
3
+ "version": "0.27.4",
4
4
  "description": "FHIR Structured Data Captured (SDC) rendering engine for Smart Forms",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -25,8 +25,6 @@
25
25
  "homepage": "https://github.com/aehrc/smart-forms#readme",
26
26
  "dependencies": {
27
27
  "@iconify/react": "^4.1.1",
28
- "@storybook/test": "^8.0.10",
29
- "@types/fhir": "^0.0.38",
30
28
  "dayjs": "^1.11.10",
31
29
  "deep-diff": "^1.0.2",
32
30
  "fhirclient": "^2.5.2",
@@ -55,7 +53,7 @@
55
53
  },
56
54
  "devDependencies": {
57
55
  "@babel/core": "^7.24.4",
58
- "@chromatic-com/storybook": "^1.3.3",
56
+ "@chromatic-com/storybook": "^1.3.5",
59
57
  "@storybook/addon-essentials": "^8.0.10",
60
58
  "@storybook/addon-interactions": "^8.0.10",
61
59
  "@storybook/addon-links": "^8.0.10",
@@ -63,12 +61,14 @@
63
61
  "@storybook/blocks": "^8.0.10",
64
62
  "@storybook/react": "^8.0.10",
65
63
  "@storybook/react-vite": "^8.0.10",
64
+ "@storybook/test": "^8.0.10",
66
65
  "@swc/cli": "^0.1.63",
67
66
  "@swc/core": "^1.3.99",
68
67
  "@testing-library/jest-dom": "^6.1.2",
69
68
  "@testing-library/react": "^14.2.1",
70
69
  "@testing-library/react-hooks": "^7.0.2",
71
70
  "@types/deep-diff": "^1.0.5",
71
+ "@types/fhir": "^0.0.38",
72
72
  "@types/jest": "^29.5.12",
73
73
  "@types/lodash.clonedeep": "^4.5.9",
74
74
  "@types/lodash.debounce": "^4.0.7",
@@ -0,0 +1,82 @@
1
+ /*
2
+ * Copyright 2024 Commonwealth Scientific and Industrial Research
3
+ * Organisation (CSIRO) ABN 41 687 119 230.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ import React from 'react';
19
+ import type { QuestionnaireItemAnswerOption, QuestionnaireResponseItemAnswer } from 'fhir/r4';
20
+ import CheckboxSingle from '../ItemParts/CheckboxSingle';
21
+
22
+ interface CheckboxOptionListProps {
23
+ options: QuestionnaireItemAnswerOption[];
24
+ answers: QuestionnaireResponseItemAnswer[];
25
+ readOnly: boolean;
26
+ onCheckedChange: (newValue: string) => void;
27
+ }
28
+
29
+ function CheckboxOptionList(props: CheckboxOptionListProps) {
30
+ const { options, answers, readOnly, onCheckedChange } = props;
31
+
32
+ return (
33
+ <>
34
+ {options.map((option) => {
35
+ if (option['valueCoding']) {
36
+ return (
37
+ <CheckboxSingle
38
+ key={option.valueCoding.code ?? ''}
39
+ value={option.valueCoding.code ?? ''}
40
+ label={option.valueCoding.display ?? `${option.valueCoding.code}`}
41
+ readOnly={readOnly}
42
+ isChecked={answers.some(
43
+ (answer) => JSON.stringify(answer) === JSON.stringify(option)
44
+ )}
45
+ onCheckedChange={onCheckedChange}
46
+ />
47
+ );
48
+ }
49
+
50
+ if (option['valueString']) {
51
+ return (
52
+ <CheckboxSingle
53
+ key={option.valueString}
54
+ value={option.valueString}
55
+ label={option.valueString}
56
+ readOnly={readOnly}
57
+ isChecked={answers.some((answer) => answer.valueString === option.valueString)}
58
+ onCheckedChange={onCheckedChange}
59
+ />
60
+ );
61
+ }
62
+
63
+ if (option['valueInteger']) {
64
+ return (
65
+ <CheckboxSingle
66
+ key={option.valueInteger}
67
+ value={option.valueInteger.toString()}
68
+ label={option.valueInteger.toString()}
69
+ readOnly={readOnly}
70
+ isChecked={answers.some((answer) => answer.valueInteger === option.valueInteger)}
71
+ onCheckedChange={onCheckedChange}
72
+ />
73
+ );
74
+ }
75
+
76
+ return null;
77
+ })}
78
+ </>
79
+ );
80
+ }
81
+
82
+ export default CheckboxOptionList;
@@ -16,72 +16,43 @@
16
16
  */
17
17
 
18
18
  import React from 'react';
19
+ import type {
20
+ QuestionnaireItem,
21
+ QuestionnaireItemAnswerOption,
22
+ QuestionnaireResponseItemAnswer
23
+ } from 'fhir/r4';
24
+ import { getChoiceOrientation } from '../../../utils/choice';
19
25
  import { ChoiceItemOrientation } from '../../../interfaces/choice.enum';
20
- import type { QuestionnaireItem, QuestionnaireResponseItemAnswer } from 'fhir/r4';
21
- import QItemChoiceCheckboxSingle from '../ItemParts/CheckboxSingle';
26
+ import CheckboxOptionList from './CheckboxOptionList';
22
27
  import { StyledFormGroup } from '../Item.styles';
23
- import { getChoiceOrientation } from '../../../utils/choice';
24
28
 
25
29
  interface ChoiceCheckboxAnswerOptionFieldsProps {
26
30
  qItem: QuestionnaireItem;
31
+ options: QuestionnaireItemAnswerOption[];
27
32
  answers: QuestionnaireResponseItemAnswer[];
28
33
  readOnly: boolean;
29
34
  onCheckedChange: (newValue: string) => void;
30
35
  }
31
36
 
32
37
  function ChoiceCheckboxAnswerOptionFields(props: ChoiceCheckboxAnswerOptionFieldsProps) {
33
- const { qItem, answers, readOnly, onCheckedChange } = props;
38
+ const { qItem, options, answers, readOnly, onCheckedChange } = props;
34
39
 
35
40
  const orientation = getChoiceOrientation(qItem) ?? ChoiceItemOrientation.Vertical;
36
41
 
37
- return (
38
- <StyledFormGroup row={orientation === ChoiceItemOrientation.Horizontal}>
39
- {qItem.answerOption?.map((option) => {
40
- if (option['valueCoding']) {
41
- return (
42
- <QItemChoiceCheckboxSingle
43
- key={option.valueCoding.code ?? ''}
44
- value={option.valueCoding.code ?? ''}
45
- label={option.valueCoding.display ?? `${option.valueCoding.code}`}
46
- readOnly={readOnly}
47
- isChecked={answers.some(
48
- (answer) => JSON.stringify(answer) === JSON.stringify(option)
49
- )}
50
- onCheckedChange={onCheckedChange}
51
- />
52
- );
53
- }
54
-
55
- if (option['valueString']) {
56
- return (
57
- <QItemChoiceCheckboxSingle
58
- key={option.valueString}
59
- value={option.valueString}
60
- label={option.valueString}
61
- readOnly={readOnly}
62
- isChecked={answers.some((answer) => answer.valueString === option.valueString)}
63
- onCheckedChange={onCheckedChange}
64
- />
65
- );
66
- }
67
-
68
- if (option['valueInteger']) {
69
- return (
70
- <QItemChoiceCheckboxSingle
71
- key={option.valueInteger}
72
- value={option.valueInteger.toString()}
73
- label={option.valueInteger.toString()}
74
- readOnly={readOnly}
75
- isChecked={answers.some((answer) => answer.valueInteger === option.valueInteger)}
76
- onCheckedChange={onCheckedChange}
77
- />
78
- );
79
- }
80
-
81
- return null;
82
- })}
83
- </StyledFormGroup>
84
- );
42
+ if (options.length > 0) {
43
+ return (
44
+ <StyledFormGroup row={orientation === ChoiceItemOrientation.Horizontal}>
45
+ <CheckboxOptionList
46
+ options={options}
47
+ answers={answers}
48
+ readOnly={readOnly}
49
+ onCheckedChange={onCheckedChange}
50
+ />
51
+ </StyledFormGroup>
52
+ );
53
+ }
54
+
55
+ return null;
85
56
  }
86
57
 
87
58
  export default ChoiceCheckboxAnswerOptionFields;
@@ -18,7 +18,7 @@
18
18
  import React from 'react';
19
19
  import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
20
20
  import { createEmptyQrItem } from '../../../utils/qrItem';
21
- import { updateQrCheckboxAnswers } from '../../../utils/choice';
21
+ import { updateChoiceCheckboxAnswers } from '../../../utils/choice';
22
22
  import { FullWidthFormComponentBox } from '../../Box.styles';
23
23
  import useRenderingExtensions from '../../../hooks/useRenderingExtensions';
24
24
  import type {
@@ -29,10 +29,10 @@ import type {
29
29
  PropsWithShowMinimalViewAttribute
30
30
  } from '../../../interfaces/renderProps.interface';
31
31
  import DisplayInstructions from '../DisplayItem/DisplayInstructions';
32
- import ChoiceCheckboxAnswerValueSetFields from './ChoiceCheckboxAnswerOptionFields';
33
32
  import useReadOnly from '../../../hooks/useReadOnly';
34
33
  import ItemFieldGrid from '../ItemParts/ItemFieldGrid';
35
34
  import { useQuestionnaireStore } from '../../../stores';
35
+ import ChoiceCheckboxAnswerOptionFields from './ChoiceCheckboxAnswerOptionFields';
36
36
 
37
37
  interface ChoiceCheckboxAnswerOptionItemProps
38
38
  extends PropsWithQrItemChangeHandler,
@@ -59,7 +59,7 @@ function ChoiceCheckboxAnswerOptionItem(props: ChoiceCheckboxAnswerOptionItemPro
59
59
 
60
60
  // Init input value
61
61
  const qrChoiceCheckbox = qrItem ?? createEmptyQrItem(qItem);
62
- const answers = qrChoiceCheckbox.answer ? qrChoiceCheckbox.answer : [];
62
+ const answers = qrChoiceCheckbox.answer ?? [];
63
63
 
64
64
  const readOnly = useReadOnly(qItem, parentIsReadOnly);
65
65
  const { displayInstructions } = useRenderingExtensions(qItem);
@@ -68,15 +68,19 @@ function ChoiceCheckboxAnswerOptionItem(props: ChoiceCheckboxAnswerOptionItemPro
68
68
  // This requires its own hook, because in the case of multi-select, we need to check if the value is already checked to prevent an infinite loop
69
69
  // This will be done after the choice/open-choice refactoring
70
70
 
71
+ const options = qItem.answerOption ?? [];
72
+
71
73
  // Event handlers
72
74
  function handleCheckedChange(changedValue: string) {
73
- const answerOptions = qItem.answerOption;
74
- if (!answerOptions) return null;
75
+ if (options.length === 0) {
76
+ onQrItemChange(createEmptyQrItem(qItem));
77
+ return;
78
+ }
75
79
 
76
- const updatedQrChoiceCheckbox = updateQrCheckboxAnswers(
80
+ const updatedQrChoiceCheckbox = updateChoiceCheckboxAnswers(
77
81
  changedValue,
78
82
  answers,
79
- answerOptions,
83
+ options,
80
84
  qrChoiceCheckbox,
81
85
  isRepeated
82
86
  );
@@ -89,8 +93,9 @@ function ChoiceCheckboxAnswerOptionItem(props: ChoiceCheckboxAnswerOptionItemPro
89
93
  if (showMinimalView) {
90
94
  return (
91
95
  <>
92
- <ChoiceCheckboxAnswerValueSetFields
96
+ <ChoiceCheckboxAnswerOptionFields
93
97
  qItem={qItem}
98
+ options={options}
94
99
  answers={answers}
95
100
  readOnly={readOnly}
96
101
  onCheckedChange={handleCheckedChange}
@@ -106,8 +111,9 @@ function ChoiceCheckboxAnswerOptionItem(props: ChoiceCheckboxAnswerOptionItemPro
106
111
  data-linkid={qItem.linkId}
107
112
  onClick={() => onFocusLinkId(qItem.linkId)}>
108
113
  <ItemFieldGrid qItem={qItem} readOnly={readOnly}>
109
- <ChoiceCheckboxAnswerValueSetFields
114
+ <ChoiceCheckboxAnswerOptionFields
110
115
  qItem={qItem}
116
+ options={options}
111
117
  answers={answers}
112
118
  readOnly={readOnly}
113
119
  onCheckedChange={handleCheckedChange}
@@ -16,19 +16,23 @@
16
16
  */
17
17
 
18
18
  import React from 'react';
19
- import { ChoiceItemOrientation } from '../../../interfaces/choice.enum';
20
- import type { Coding, QuestionnaireItem, QuestionnaireResponseItemAnswer } from 'fhir/r4';
21
- import CheckboxSingle from '../ItemParts/CheckboxSingle';
22
- import { StyledFormGroup } from '../Item.styles';
19
+ import type {
20
+ QuestionnaireItem,
21
+ QuestionnaireItemAnswerOption,
22
+ QuestionnaireResponseItemAnswer
23
+ } from 'fhir/r4';
23
24
  import { StyledAlert } from '../../Alert.styles';
24
25
  import ErrorOutlineIcon from '@mui/icons-material/ErrorOutline';
25
26
  import Typography from '@mui/material/Typography';
26
27
  import type { TerminologyError } from '../../../hooks/useValueSetCodings';
27
28
  import { getChoiceOrientation } from '../../../utils/choice';
29
+ import { ChoiceItemOrientation } from '../../../interfaces/choice.enum';
30
+ import CheckboxOptionList from './CheckboxOptionList';
31
+ import { StyledFormGroup } from '../Item.styles';
28
32
 
29
33
  interface ChoiceCheckboxAnswerValueSetFieldsProps {
30
34
  qItem: QuestionnaireItem;
31
- codings: Coding[];
35
+ options: QuestionnaireItemAnswerOption[];
32
36
  answers: QuestionnaireResponseItemAnswer[];
33
37
  readOnly: boolean;
34
38
  terminologyError: TerminologyError;
@@ -36,25 +40,19 @@ interface ChoiceCheckboxAnswerValueSetFieldsProps {
36
40
  }
37
41
 
38
42
  function ChoiceCheckboxAnswerValueSetFields(props: ChoiceCheckboxAnswerValueSetFieldsProps) {
39
- const { qItem, codings, answers, readOnly, terminologyError, onCheckedChange } = props;
43
+ const { qItem, options, answers, readOnly, terminologyError, onCheckedChange } = props;
40
44
 
41
45
  const orientation = getChoiceOrientation(qItem) ?? ChoiceItemOrientation.Vertical;
42
46
 
43
- if (codings.length > 0) {
47
+ if (options.length > 0) {
44
48
  return (
45
49
  <StyledFormGroup row={orientation === ChoiceItemOrientation.Horizontal}>
46
- {codings.map((coding) => (
47
- <CheckboxSingle
48
- key={coding.code ?? ''}
49
- value={coding.code ?? ''}
50
- label={coding.display ?? `${coding.code}`}
51
- readOnly={readOnly}
52
- isChecked={answers.some(
53
- (answer) => JSON.stringify(answer.valueCoding) === JSON.stringify(coding)
54
- )}
55
- onCheckedChange={onCheckedChange}
56
- />
57
- ))}
50
+ <CheckboxOptionList
51
+ options={options}
52
+ answers={answers}
53
+ readOnly={readOnly}
54
+ onCheckedChange={onCheckedChange}
55
+ />
58
56
  </StyledFormGroup>
59
57
  );
60
58
  }
@@ -15,11 +15,11 @@
15
15
  * limitations under the License.
16
16
  */
17
17
 
18
- import React from 'react';
18
+ import React, { useMemo } from 'react';
19
19
  import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
20
20
  import { createEmptyQrItem } from '../../../utils/qrItem';
21
21
  import useValueSetCodings from '../../../hooks/useValueSetCodings';
22
- import { mapCodingsToOptions, updateQrCheckboxAnswers } from '../../../utils/choice';
22
+ import { convertCodingsToAnswerOptions, updateChoiceCheckboxAnswers } from '../../../utils/choice';
23
23
  import { FullWidthFormComponentBox } from '../../Box.styles';
24
24
  import useRenderingExtensions from '../../../hooks/useRenderingExtensions';
25
25
  import type {
@@ -61,7 +61,7 @@ function ChoiceCheckboxAnswerValueSetItem(props: ChoiceCheckboxAnswerValueSetIte
61
61
 
62
62
  // Init input value
63
63
  const qrChoiceCheckbox = qrItem ?? createEmptyQrItem(qItem);
64
- const answers = qrChoiceCheckbox.answer ? qrChoiceCheckbox.answer : [];
64
+ const answers = qrChoiceCheckbox.answer ?? [];
65
65
 
66
66
  const readOnly = useReadOnly(qItem, parentIsReadOnly);
67
67
  const { displayInstructions } = useRenderingExtensions(qItem);
@@ -69,18 +69,23 @@ function ChoiceCheckboxAnswerValueSetItem(props: ChoiceCheckboxAnswerValueSetIte
69
69
  // Get codings/options from valueSet
70
70
  const { codings, terminologyError } = useValueSetCodings(qItem);
71
71
 
72
+ const options = useMemo(() => convertCodingsToAnswerOptions(codings), [codings]);
73
+
72
74
  // TODO Process calculated expressions
73
75
  // This requires its own hook, because in the case of multi-select, we need to check if the value is already checked to prevent an infinite loop
74
76
  // This will be done after the choice/open-choice refactoring
75
77
 
76
78
  // Event handlers
77
79
  function handleCheckedChange(changedValue: string) {
78
- if (codings.length < 1) return null;
80
+ if (options.length === 0) {
81
+ onQrItemChange(createEmptyQrItem(qItem));
82
+ return;
83
+ }
79
84
 
80
- const updatedQrChoiceCheckbox = updateQrCheckboxAnswers(
85
+ const updatedQrChoiceCheckbox = updateChoiceCheckboxAnswers(
81
86
  changedValue,
82
87
  answers,
83
- mapCodingsToOptions(codings),
88
+ options,
84
89
  qrChoiceCheckbox,
85
90
  isRepeated
86
91
  );
@@ -95,7 +100,7 @@ function ChoiceCheckboxAnswerValueSetItem(props: ChoiceCheckboxAnswerValueSetIte
95
100
  <>
96
101
  <ChoiceCheckboxAnswerValueSetFields
97
102
  qItem={qItem}
98
- codings={codings}
103
+ options={options}
99
104
  answers={answers}
100
105
  readOnly={readOnly}
101
106
  terminologyError={terminologyError}
@@ -114,7 +119,7 @@ function ChoiceCheckboxAnswerValueSetItem(props: ChoiceCheckboxAnswerValueSetIte
114
119
  <ItemFieldGrid qItem={qItem} readOnly={readOnly}>
115
120
  <ChoiceCheckboxAnswerValueSetFields
116
121
  qItem={qItem}
117
- codings={codings}
122
+ options={options}
118
123
  answers={answers}
119
124
  readOnly={readOnly}
120
125
  terminologyError={terminologyError}
@@ -17,8 +17,8 @@
17
17
 
18
18
  import React from 'react';
19
19
  import { ChoiceItemOrientation } from '../../../interfaces/choice.enum';
20
- import type { QuestionnaireItem } from 'fhir/r4';
21
- import RadioAnswerOptionButtons from '../ItemParts/RadioAnswerOptionButtons';
20
+ import type { QuestionnaireItem, QuestionnaireItemAnswerOption } from 'fhir/r4';
21
+ import RadioOptionList from '../ItemParts/RadioOptionList';
22
22
  import { StyledRadioGroup } from '../Item.styles';
23
23
  import { getChoiceOrientation } from '../../../utils/choice';
24
24
  import type { PropsWithIsTabledAttribute } from '../../../interfaces/renderProps.interface';
@@ -27,6 +27,7 @@ import FadingCheckIcon from '../ItemParts/FadingCheckIcon';
27
27
 
28
28
  interface ChoiceRadioAnswerOptionFieldsProps extends PropsWithIsTabledAttribute {
29
29
  qItem: QuestionnaireItem;
30
+ options: QuestionnaireItemAnswerOption[];
30
31
  valueRadio: string | null;
31
32
  readOnly: boolean;
32
33
  calcExpUpdated: boolean;
@@ -34,7 +35,7 @@ interface ChoiceRadioAnswerOptionFieldsProps extends PropsWithIsTabledAttribute
34
35
  }
35
36
 
36
37
  function ChoiceRadioAnswerOptionFields(props: ChoiceRadioAnswerOptionFieldsProps) {
37
- const { qItem, valueRadio, readOnly, calcExpUpdated, isTabled, onCheckedChange } = props;
38
+ const { qItem, options, valueRadio, readOnly, calcExpUpdated, isTabled, onCheckedChange } = props;
38
39
 
39
40
  const orientation = getChoiceOrientation(qItem) ?? ChoiceItemOrientation.Vertical;
40
41
 
@@ -47,7 +48,7 @@ function ChoiceRadioAnswerOptionFields(props: ChoiceRadioAnswerOptionFieldsProps
47
48
  onChange={(e) => onCheckedChange(e.target.value)}
48
49
  value={valueRadio}
49
50
  data-test="q-item-radio-group">
50
- <RadioAnswerOptionButtons qItem={qItem} readOnly={readOnly} />
51
+ <RadioOptionList options={options} readOnly={readOnly} />
51
52
  </StyledRadioGroup>
52
53
 
53
54
  <Box flexGrow={1} />
@@ -53,6 +53,8 @@ function ChoiceRadioAnswerOptionItem(props: ChoiceRadioAnswerOptionItemProps) {
53
53
 
54
54
  const readOnly = useReadOnly(qItem, parentIsReadOnly);
55
55
 
56
+ const options = qItem.answerOption ?? [];
57
+
56
58
  // Process calculated expressions
57
59
  const { calcExpUpdated } = useCodingCalculatedExpression({
58
60
  qItem: qItem,
@@ -67,12 +69,12 @@ function ChoiceRadioAnswerOptionItem(props: ChoiceRadioAnswerOptionItemProps) {
67
69
 
68
70
  // Event handlers
69
71
  function handleChange(newValue: string) {
70
- if (!qItem.answerOption) {
72
+ if (options.length === 0) {
71
73
  onQrItemChange(createEmptyQrItem(qItem));
72
74
  return;
73
75
  }
74
76
 
75
- const qrAnswer = findInAnswerOptions(qItem.answerOption, newValue);
77
+ const qrAnswer = findInAnswerOptions(options, newValue);
76
78
  onQrItemChange(
77
79
  qrAnswer ? { ...createEmptyQrItem(qItem), answer: [qrAnswer] } : createEmptyQrItem(qItem)
78
80
  );
@@ -87,6 +89,7 @@ function ChoiceRadioAnswerOptionItem(props: ChoiceRadioAnswerOptionItemProps) {
87
89
  return (
88
90
  <ChoiceRadioAnswerOptionView
89
91
  qItem={qItem}
92
+ options={options}
90
93
  valueChoice={valueChoice}
91
94
  isRepeated={isRepeated}
92
95
  isTabled={isTabled}
@@ -102,6 +105,7 @@ function ChoiceRadioAnswerOptionItem(props: ChoiceRadioAnswerOptionItemProps) {
102
105
  return (
103
106
  <ChoiceSelectAnswerOptionView
104
107
  qItem={qItem}
108
+ options={options}
105
109
  valueChoice={valueChoice}
106
110
  isRepeated={isRepeated}
107
111
  isTabled={isTabled}