formanitor 0.1.10 → 0.2.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 (290) hide show
  1. package/dist/AddInvestigationWidget-G7NPTSFY.cjs +32 -0
  2. package/dist/AddInvestigationWidget-G7NPTSFY.cjs.map +1 -0
  3. package/dist/AddInvestigationWidget-TQUKTGAW.mjs +30 -0
  4. package/dist/AddInvestigationWidget-TQUKTGAW.mjs.map +1 -0
  5. package/dist/AddMedicationWidget-26RHKIA6.cjs +32 -0
  6. package/dist/AddMedicationWidget-26RHKIA6.cjs.map +1 -0
  7. package/dist/AddMedicationWidget-I5UIT3WG.mjs +30 -0
  8. package/dist/AddMedicationWidget-I5UIT3WG.mjs.map +1 -0
  9. package/dist/AddProcedureWidget-B6OUF3BM.cjs +278 -0
  10. package/dist/AddProcedureWidget-B6OUF3BM.cjs.map +1 -0
  11. package/dist/AddProcedureWidget-NB46COB6.mjs +276 -0
  12. package/dist/AddProcedureWidget-NB46COB6.mjs.map +1 -0
  13. package/dist/BiometryIolWorkupWidget-F7HRYMOJ.mjs +298 -0
  14. package/dist/BiometryIolWorkupWidget-F7HRYMOJ.mjs.map +1 -0
  15. package/dist/BiometryIolWorkupWidget-TCU4MMVI.cjs +300 -0
  16. package/dist/BiometryIolWorkupWidget-TCU4MMVI.cjs.map +1 -0
  17. package/dist/DateTimeWidget-72YUK7PX.cjs +61 -0
  18. package/dist/DateTimeWidget-72YUK7PX.cjs.map +1 -0
  19. package/dist/DateTimeWidget-WKQIEQSA.mjs +59 -0
  20. package/dist/DateTimeWidget-WKQIEQSA.mjs.map +1 -0
  21. package/dist/DateWidget-K2TVTZ7Z.mjs +72 -0
  22. package/dist/DateWidget-K2TVTZ7Z.mjs.map +1 -0
  23. package/dist/DateWidget-SYDMSGWO.cjs +74 -0
  24. package/dist/DateWidget-SYDMSGWO.cjs.map +1 -0
  25. package/dist/DiagnosisTextareaWidget-RD65PGDY.mjs +184 -0
  26. package/dist/DiagnosisTextareaWidget-RD65PGDY.mjs.map +1 -0
  27. package/dist/DiagnosisTextareaWidget-UKWLE2SQ.cjs +190 -0
  28. package/dist/DiagnosisTextareaWidget-UKWLE2SQ.cjs.map +1 -0
  29. package/dist/DifferentialDiagnosisWidget-FENJP245.mjs +15 -0
  30. package/dist/DifferentialDiagnosisWidget-FENJP245.mjs.map +1 -0
  31. package/dist/DifferentialDiagnosisWidget-ZGFXP2BH.cjs +17 -0
  32. package/dist/DifferentialDiagnosisWidget-ZGFXP2BH.cjs.map +1 -0
  33. package/dist/DischargeMedicationOrdersWidget-26ALTGJM.mjs +161 -0
  34. package/dist/DischargeMedicationOrdersWidget-26ALTGJM.mjs.map +1 -0
  35. package/dist/DischargeMedicationOrdersWidget-B4CJQ3QS.cjs +163 -0
  36. package/dist/DischargeMedicationOrdersWidget-B4CJQ3QS.cjs.map +1 -0
  37. package/dist/EditableTable-LPAYCK36.mjs +279 -0
  38. package/dist/EditableTable-LPAYCK36.mjs.map +1 -0
  39. package/dist/EditableTable-YB4IC3ZK.cjs +281 -0
  40. package/dist/EditableTable-YB4IC3ZK.cjs.map +1 -0
  41. package/dist/FollowupWidget-EEKOI2TW.cjs +285 -0
  42. package/dist/FollowupWidget-EEKOI2TW.cjs.map +1 -0
  43. package/dist/FollowupWidget-NJ4QDBOG.mjs +283 -0
  44. package/dist/FollowupWidget-NJ4QDBOG.mjs.map +1 -0
  45. package/dist/FunctionalImpairmentScoreWidget-HAAPCMIS.cjs +93 -0
  46. package/dist/FunctionalImpairmentScoreWidget-HAAPCMIS.cjs.map +1 -0
  47. package/dist/FunctionalImpairmentScoreWidget-ZNLKKBYN.mjs +91 -0
  48. package/dist/FunctionalImpairmentScoreWidget-ZNLKKBYN.mjs.map +1 -0
  49. package/dist/GsExaminationWidget-EX6C3EF5.cjs +528 -0
  50. package/dist/GsExaminationWidget-EX6C3EF5.cjs.map +1 -0
  51. package/dist/GsExaminationWidget-MEIUHRQQ.mjs +526 -0
  52. package/dist/GsExaminationWidget-MEIUHRQQ.mjs.map +1 -0
  53. package/dist/GsGradingWidget-4UPOEYNL.mjs +90 -0
  54. package/dist/GsGradingWidget-4UPOEYNL.mjs.map +1 -0
  55. package/dist/GsGradingWidget-IV3UF63W.cjs +92 -0
  56. package/dist/GsGradingWidget-IV3UF63W.cjs.map +1 -0
  57. package/dist/GsSmartHistoryWidget-7QNJZEI4.cjs +398 -0
  58. package/dist/GsSmartHistoryWidget-7QNJZEI4.cjs.map +1 -0
  59. package/dist/GsSmartHistoryWidget-LGN7W2AV.mjs +396 -0
  60. package/dist/GsSmartHistoryWidget-LGN7W2AV.mjs.map +1 -0
  61. package/dist/HiddenVitalsWidget-AMH32HT2.cjs +55 -0
  62. package/dist/HiddenVitalsWidget-AMH32HT2.cjs.map +1 -0
  63. package/dist/HiddenVitalsWidget-W23IFSEF.mjs +53 -0
  64. package/dist/HiddenVitalsWidget-W23IFSEF.mjs.map +1 -0
  65. package/dist/LensAssessmentWidget-LSHBUTT5.cjs +234 -0
  66. package/dist/LensAssessmentWidget-LSHBUTT5.cjs.map +1 -0
  67. package/dist/LensAssessmentWidget-SJ6YUTSN.mjs +232 -0
  68. package/dist/LensAssessmentWidget-SJ6YUTSN.mjs.map +1 -0
  69. package/dist/MarMedicationOrdersWidget-IKMAFPRG.mjs +74 -0
  70. package/dist/MarMedicationOrdersWidget-IKMAFPRG.mjs.map +1 -0
  71. package/dist/MarMedicationOrdersWidget-ZKZLSZRN.cjs +76 -0
  72. package/dist/MarMedicationOrdersWidget-ZKZLSZRN.cjs.map +1 -0
  73. package/dist/OBGExaminationWidget-BK4ERETW.mjs +213 -0
  74. package/dist/OBGExaminationWidget-BK4ERETW.mjs.map +1 -0
  75. package/dist/OBGExaminationWidget-SMFZ2WCL.cjs +215 -0
  76. package/dist/OBGExaminationWidget-SMFZ2WCL.cjs.map +1 -0
  77. package/dist/OBGPathwayWidget-5YTUDBEH.cjs +519 -0
  78. package/dist/OBGPathwayWidget-5YTUDBEH.cjs.map +1 -0
  79. package/dist/OBGPathwayWidget-U5BCAESB.mjs +517 -0
  80. package/dist/OBGPathwayWidget-U5BCAESB.mjs.map +1 -0
  81. package/dist/ObstetricHistoryWidget-GC63CB3U.cjs +1115 -0
  82. package/dist/ObstetricHistoryWidget-GC63CB3U.cjs.map +1 -0
  83. package/dist/ObstetricHistoryWidget-WD572Q7H.mjs +1113 -0
  84. package/dist/ObstetricHistoryWidget-WD572Q7H.mjs.map +1 -0
  85. package/dist/OphthalDiagnosisWidget-QXFK446I.cjs +91 -0
  86. package/dist/OphthalDiagnosisWidget-QXFK446I.cjs.map +1 -0
  87. package/dist/OphthalDiagnosisWidget-Y3AHD6AG.mjs +89 -0
  88. package/dist/OphthalDiagnosisWidget-Y3AHD6AG.mjs.map +1 -0
  89. package/dist/OphthalmologyWidget-CRQMN5QU.mjs +1329 -0
  90. package/dist/OphthalmologyWidget-CRQMN5QU.mjs.map +1 -0
  91. package/dist/OphthalmologyWidget-U2HQMZ4J.cjs +1331 -0
  92. package/dist/OphthalmologyWidget-U2HQMZ4J.cjs.map +1 -0
  93. package/dist/OrthopedicExamWidget-LP7VN3W5.cjs +368 -0
  94. package/dist/OrthopedicExamWidget-LP7VN3W5.cjs.map +1 -0
  95. package/dist/OrthopedicExamWidget-PAOIVU6Z.mjs +366 -0
  96. package/dist/OrthopedicExamWidget-PAOIVU6Z.mjs.map +1 -0
  97. package/dist/PainScaleFlagsWidget-IBNGVVHD.cjs +153 -0
  98. package/dist/PainScaleFlagsWidget-IBNGVVHD.cjs.map +1 -0
  99. package/dist/PainScaleFlagsWidget-MRMQ7HPJ.mjs +151 -0
  100. package/dist/PainScaleFlagsWidget-MRMQ7HPJ.mjs.map +1 -0
  101. package/dist/ReadOnlyTable-4Y2XW4MX.mjs +6 -0
  102. package/dist/ReadOnlyTable-4Y2XW4MX.mjs.map +1 -0
  103. package/dist/ReadOnlyTable-L7G6GWEJ.cjs +15 -0
  104. package/dist/ReadOnlyTable-L7G6GWEJ.cjs.map +1 -0
  105. package/dist/ReferralWidget-IYTS32TS.mjs +169 -0
  106. package/dist/ReferralWidget-IYTS32TS.mjs.map +1 -0
  107. package/dist/ReferralWidget-PDNEKHFO.cjs +171 -0
  108. package/dist/ReferralWidget-PDNEKHFO.cjs.map +1 -0
  109. package/dist/RichTextWidget-5OOJ2LJN.mjs +11 -0
  110. package/dist/RichTextWidget-5OOJ2LJN.mjs.map +1 -0
  111. package/dist/RichTextWidget-XWLOHKLE.cjs +24 -0
  112. package/dist/RichTextWidget-XWLOHKLE.cjs.map +1 -0
  113. package/dist/SmartTextarea-L7Q4CORK.cjs +19 -0
  114. package/dist/SmartTextarea-L7Q4CORK.cjs.map +1 -0
  115. package/dist/SmartTextarea-ZCXGMZLG.mjs +10 -0
  116. package/dist/SmartTextarea-ZCXGMZLG.mjs.map +1 -0
  117. package/dist/SuggestionTextareaWidget-2TEITBPF.cjs +226 -0
  118. package/dist/SuggestionTextareaWidget-2TEITBPF.cjs.map +1 -0
  119. package/dist/SuggestionTextareaWidget-RN5LZYFC.mjs +215 -0
  120. package/dist/SuggestionTextareaWidget-RN5LZYFC.mjs.map +1 -0
  121. package/dist/SurgicalRiskFlagsWidget-DBICX4MB.mjs +144 -0
  122. package/dist/SurgicalRiskFlagsWidget-DBICX4MB.mjs.map +1 -0
  123. package/dist/SurgicalRiskFlagsWidget-JCSL3GWS.cjs +146 -0
  124. package/dist/SurgicalRiskFlagsWidget-JCSL3GWS.cjs.map +1 -0
  125. package/dist/UrologyExaminationWidget-74L3IN2X.cjs +273 -0
  126. package/dist/UrologyExaminationWidget-74L3IN2X.cjs.map +1 -0
  127. package/dist/UrologyExaminationWidget-IQEBP6CI.mjs +271 -0
  128. package/dist/UrologyExaminationWidget-IQEBP6CI.mjs.map +1 -0
  129. package/dist/UrologyPathwayWidget-S4QY6RD6.mjs +153 -0
  130. package/dist/UrologyPathwayWidget-S4QY6RD6.mjs.map +1 -0
  131. package/dist/UrologyPathwayWidget-UJY5EW2G.cjs +155 -0
  132. package/dist/UrologyPathwayWidget-UJY5EW2G.cjs.map +1 -0
  133. package/dist/UrologySmartHistoryWidget-NFTHHK6A.mjs +469 -0
  134. package/dist/UrologySmartHistoryWidget-NFTHHK6A.mjs.map +1 -0
  135. package/dist/UrologySmartHistoryWidget-XKZF63BV.cjs +471 -0
  136. package/dist/UrologySmartHistoryWidget-XKZF63BV.cjs.map +1 -0
  137. package/dist/VitalsWidget-44UWQGIF.cjs +208 -0
  138. package/dist/VitalsWidget-44UWQGIF.cjs.map +1 -0
  139. package/dist/VitalsWidget-MBYDGC7U.mjs +187 -0
  140. package/dist/VitalsWidget-MBYDGC7U.mjs.map +1 -0
  141. package/dist/chunk-4BAKQIPJ.mjs +27 -0
  142. package/dist/chunk-4BAKQIPJ.mjs.map +1 -0
  143. package/dist/chunk-4KSZUIJE.cjs +143 -0
  144. package/dist/chunk-4KSZUIJE.cjs.map +1 -0
  145. package/dist/chunk-4PMNVBJD.mjs +121 -0
  146. package/dist/chunk-4PMNVBJD.mjs.map +1 -0
  147. package/dist/chunk-5E3APMY6.cjs +54 -0
  148. package/dist/chunk-5E3APMY6.cjs.map +1 -0
  149. package/dist/chunk-AIZ3XYEZ.cjs +551 -0
  150. package/dist/chunk-AIZ3XYEZ.cjs.map +1 -0
  151. package/dist/chunk-AZHTIUOL.mjs +116 -0
  152. package/dist/chunk-AZHTIUOL.mjs.map +1 -0
  153. package/dist/chunk-AZSAPO2V.cjs +174 -0
  154. package/dist/chunk-AZSAPO2V.cjs.map +1 -0
  155. package/dist/chunk-AZVJU7NZ.mjs +137 -0
  156. package/dist/chunk-AZVJU7NZ.mjs.map +1 -0
  157. package/dist/chunk-B3GBIAHZ.mjs +285 -0
  158. package/dist/chunk-B3GBIAHZ.mjs.map +1 -0
  159. package/dist/chunk-BMNY7F6H.mjs +148 -0
  160. package/dist/chunk-BMNY7F6H.mjs.map +1 -0
  161. package/dist/chunk-BU4ZEAAP.mjs +102 -0
  162. package/dist/chunk-BU4ZEAAP.mjs.map +1 -0
  163. package/dist/chunk-CTW65YW2.cjs +388 -0
  164. package/dist/chunk-CTW65YW2.cjs.map +1 -0
  165. package/dist/chunk-DE7VZVKR.cjs +140 -0
  166. package/dist/chunk-DE7VZVKR.cjs.map +1 -0
  167. package/dist/chunk-DZYV47QC.mjs +54 -0
  168. package/dist/chunk-DZYV47QC.mjs.map +1 -0
  169. package/dist/chunk-E7WUDHSA.cjs +127 -0
  170. package/dist/chunk-E7WUDHSA.cjs.map +1 -0
  171. package/dist/chunk-FHHISVCH.cjs +13 -0
  172. package/dist/chunk-FHHISVCH.cjs.map +1 -0
  173. package/dist/chunk-FZEEWRW3.cjs +77 -0
  174. package/dist/chunk-FZEEWRW3.cjs.map +1 -0
  175. package/dist/chunk-GFDE2KZC.mjs +228 -0
  176. package/dist/chunk-GFDE2KZC.mjs.map +1 -0
  177. package/dist/chunk-GNZWSVTB.mjs +29 -0
  178. package/dist/chunk-GNZWSVTB.mjs.map +1 -0
  179. package/dist/chunk-GXXWMHAA.mjs +49 -0
  180. package/dist/chunk-GXXWMHAA.mjs.map +1 -0
  181. package/dist/chunk-GZPCYSJK.mjs +104 -0
  182. package/dist/chunk-GZPCYSJK.mjs.map +1 -0
  183. package/dist/chunk-HEFZA2AH.mjs +22 -0
  184. package/dist/chunk-HEFZA2AH.mjs.map +1 -0
  185. package/dist/chunk-I4AV6BQF.mjs +10 -0
  186. package/dist/chunk-I4AV6BQF.mjs.map +1 -0
  187. package/dist/chunk-IDSBJOFY.cjs +1885 -0
  188. package/dist/chunk-IDSBJOFY.cjs.map +1 -0
  189. package/dist/chunk-IFMQKLNW.mjs +39 -0
  190. package/dist/chunk-IFMQKLNW.mjs.map +1 -0
  191. package/dist/chunk-IFSKLIS2.cjs +12 -0
  192. package/dist/chunk-IFSKLIS2.cjs.map +1 -0
  193. package/dist/chunk-IKAKE7TR.mjs +527 -0
  194. package/dist/chunk-IKAKE7TR.mjs.map +1 -0
  195. package/dist/chunk-JE6VXRWW.cjs +86 -0
  196. package/dist/chunk-JE6VXRWW.cjs.map +1 -0
  197. package/dist/chunk-JMGUUFOJ.cjs +45 -0
  198. package/dist/chunk-JMGUUFOJ.cjs.map +1 -0
  199. package/dist/chunk-JNVSA77L.cjs +236 -0
  200. package/dist/chunk-JNVSA77L.cjs.map +1 -0
  201. package/dist/chunk-KJA5BLGX.cjs +31 -0
  202. package/dist/chunk-KJA5BLGX.cjs.map +1 -0
  203. package/dist/chunk-KMJOTMUQ.cjs +109 -0
  204. package/dist/chunk-KMJOTMUQ.cjs.map +1 -0
  205. package/dist/chunk-KPGTPJDH.cjs +32 -0
  206. package/dist/chunk-KPGTPJDH.cjs.map +1 -0
  207. package/dist/chunk-LBWB7MYU.cjs +287 -0
  208. package/dist/chunk-LBWB7MYU.cjs.map +1 -0
  209. package/dist/chunk-LGGOBIEA.mjs +61 -0
  210. package/dist/chunk-LGGOBIEA.mjs.map +1 -0
  211. package/dist/chunk-LQYWMYEC.mjs +28 -0
  212. package/dist/chunk-LQYWMYEC.mjs.map +1 -0
  213. package/dist/chunk-MIUUO4CI.mjs +361 -0
  214. package/dist/chunk-MIUUO4CI.mjs.map +1 -0
  215. package/dist/chunk-N4L76SHJ.cjs +65 -0
  216. package/dist/chunk-N4L76SHJ.cjs.map +1 -0
  217. package/dist/chunk-NJJTIL3U.cjs +73 -0
  218. package/dist/chunk-NJJTIL3U.cjs.map +1 -0
  219. package/dist/chunk-O3VQBPEW.cjs +72 -0
  220. package/dist/chunk-O3VQBPEW.cjs.map +1 -0
  221. package/dist/chunk-P62377LB.cjs +27 -0
  222. package/dist/chunk-P62377LB.cjs.map +1 -0
  223. package/dist/chunk-PHADAQSH.cjs +49 -0
  224. package/dist/chunk-PHADAQSH.cjs.map +1 -0
  225. package/dist/chunk-PZBJYPWW.cjs +52 -0
  226. package/dist/chunk-PZBJYPWW.cjs.map +1 -0
  227. package/dist/chunk-QKJ7BQSR.cjs +538 -0
  228. package/dist/chunk-QKJ7BQSR.cjs.map +1 -0
  229. package/dist/chunk-QS6WG2XJ.cjs +56 -0
  230. package/dist/chunk-QS6WG2XJ.cjs.map +1 -0
  231. package/dist/chunk-S7EMPE2D.cjs +104 -0
  232. package/dist/chunk-S7EMPE2D.cjs.map +1 -0
  233. package/dist/chunk-SCMXLRX5.mjs +42 -0
  234. package/dist/chunk-SCMXLRX5.mjs.map +1 -0
  235. package/dist/chunk-TJHG5WHX.cjs +47 -0
  236. package/dist/chunk-TJHG5WHX.cjs.map +1 -0
  237. package/dist/chunk-UGGUIXUS.cjs +41 -0
  238. package/dist/chunk-UGGUIXUS.cjs.map +1 -0
  239. package/dist/chunk-UULLSS4O.mjs +82 -0
  240. package/dist/chunk-UULLSS4O.mjs.map +1 -0
  241. package/dist/chunk-VNFBUAZD.mjs +25 -0
  242. package/dist/chunk-VNFBUAZD.mjs.map +1 -0
  243. package/dist/chunk-VPU66PI6.mjs +11 -0
  244. package/dist/chunk-VPU66PI6.mjs.map +1 -0
  245. package/dist/chunk-WYVXXEZI.mjs +46 -0
  246. package/dist/chunk-WYVXXEZI.mjs.map +1 -0
  247. package/dist/chunk-XDUVO3IZ.mjs +547 -0
  248. package/dist/chunk-XDUVO3IZ.mjs.map +1 -0
  249. package/dist/chunk-XR2ZM654.mjs +30 -0
  250. package/dist/chunk-XR2ZM654.mjs.map +1 -0
  251. package/dist/chunk-Y7TIWH4I.mjs +25 -0
  252. package/dist/chunk-Y7TIWH4I.mjs.map +1 -0
  253. package/dist/chunk-YEFM2ERQ.cjs +143 -0
  254. package/dist/chunk-YEFM2ERQ.cjs.map +1 -0
  255. package/dist/chunk-YYPMIUDW.mjs +69 -0
  256. package/dist/chunk-YYPMIUDW.mjs.map +1 -0
  257. package/dist/chunk-ZGPHTPAN.mjs +1851 -0
  258. package/dist/chunk-ZGPHTPAN.mjs.map +1 -0
  259. package/dist/chunk-ZSOIQVB3.mjs +75 -0
  260. package/dist/chunk-ZSOIQVB3.mjs.map +1 -0
  261. package/dist/index.cjs +1596 -14537
  262. package/dist/index.cjs.map +1 -1
  263. package/dist/index.d.cts +4 -767
  264. package/dist/index.d.ts +4 -767
  265. package/dist/index.mjs +1358 -14346
  266. package/dist/index.mjs.map +1 -1
  267. package/dist/read-only-table.cjs +15 -0
  268. package/dist/read-only-table.cjs.map +1 -0
  269. package/dist/read-only-table.d.cts +10 -0
  270. package/dist/read-only-table.d.ts +10 -0
  271. package/dist/read-only-table.mjs +6 -0
  272. package/dist/read-only-table.mjs.map +1 -0
  273. package/dist/rich-text.cjs +24 -0
  274. package/dist/rich-text.cjs.map +1 -0
  275. package/dist/rich-text.d.cts +8 -0
  276. package/dist/rich-text.d.ts +8 -0
  277. package/dist/rich-text.mjs +11 -0
  278. package/dist/rich-text.mjs.map +1 -0
  279. package/dist/richTextClassName--8wkuHkW.d.cts +10 -0
  280. package/dist/richTextClassName--8wkuHkW.d.ts +10 -0
  281. package/dist/smart.cjs +23 -0
  282. package/dist/smart.cjs.map +1 -0
  283. package/dist/smart.d.cts +23 -0
  284. package/dist/smart.d.ts +23 -0
  285. package/dist/smart.mjs +10 -0
  286. package/dist/smart.mjs.map +1 -0
  287. package/dist/types-D0iYXUOo.d.cts +736 -0
  288. package/dist/types-D0iYXUOo.d.ts +736 -0
  289. package/package.json +20 -2
  290. package/src/styles/index.css +35 -2
@@ -0,0 +1,90 @@
1
+ import { getThemeConfig } from './chunk-Y7TIWH4I.mjs';
2
+ import { FieldRequiredIndicator } from './chunk-WYVXXEZI.mjs';
3
+ import { useForm } from './chunk-XR2ZM654.mjs';
4
+ import { Select, SelectTrigger, SelectValue, SelectContent, SelectItem } from './chunk-AZHTIUOL.mjs';
5
+ import { useField, normalizeGeneralSurgeryGrading, ALL_GS_CONDITIONS, gsGradingRowVisible, GS_GRADE_DESCRIPTIONS, GS_CONDITION_LABELS, normalizeGeneralSurgeryExamination } from './chunk-ZGPHTPAN.mjs';
6
+ import { Label } from './chunk-HEFZA2AH.mjs';
7
+ import { cn } from './chunk-VPU66PI6.mjs';
8
+ import { useMemo } from 'react';
9
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
10
+
11
+ var CHIEF_CHIPS_FIELD = "chief_complaints_chips";
12
+ var GS_EXAMINATION_FIELD = "gs_examination";
13
+ function chipList(state) {
14
+ const raw = state.values[CHIEF_CHIPS_FIELD];
15
+ return Array.isArray(raw) ? raw.filter((x) => typeof x === "string") : [];
16
+ }
17
+ function regionList(state) {
18
+ const raw = state.values[GS_EXAMINATION_FIELD];
19
+ const ex = normalizeGeneralSurgeryExamination(raw);
20
+ return ex.regions;
21
+ }
22
+ var GsGradingWidget = ({ fieldId }) => {
23
+ const { fieldDef, value, setValue, setTouched, error, touched, disabled } = useField(fieldId);
24
+ const { state } = useForm();
25
+ const showError = !!error && (touched || state.submitAttempted);
26
+ const safe = useMemo(() => normalizeGeneralSurgeryGrading(value), [value]);
27
+ const chips = useMemo(() => chipList(state), [state]);
28
+ const regions = useMemo(() => regionList(state), [state]);
29
+ const visibleRows = useMemo(() => {
30
+ return ALL_GS_CONDITIONS.filter(
31
+ (c) => gsGradingRowVisible(c, chips, regions, safe[c] ?? 0)
32
+ );
33
+ }, [chips, regions, safe]);
34
+ const update = (next) => {
35
+ setValue(next);
36
+ setTouched();
37
+ };
38
+ const setGrade = (cond, gradeStr) => {
39
+ const n = Math.min(5, Math.max(0, Math.round(Number(gradeStr)) || 0));
40
+ update({ ...safe, [cond]: n });
41
+ };
42
+ if (!fieldDef) return null;
43
+ const theme = getThemeConfig("textarea", fieldDef.theme);
44
+ const wrapperClass = theme?.wrapperClassName ?? "rounded-md overflow-hidden flex flex-col border border-[#D0D0D0]";
45
+ const labelClass = theme?.labelClassName;
46
+ const labelContent = /* @__PURE__ */ jsxs(Fragment, { children: [
47
+ fieldDef.label,
48
+ /* @__PURE__ */ jsx(FieldRequiredIndicator, { fieldDef })
49
+ ] });
50
+ const labelEl = theme ? /* @__PURE__ */ jsx(Label, { className: labelClass, children: labelContent }) : /* @__PURE__ */ jsx(Label, { className: "text-sm font-medium", children: labelContent });
51
+ const bodyClass = cn(
52
+ "-mt-1 flex min-w-0 flex-col gap-3 border-t border-[#D0D0D0] bg-white px-3 py-3",
53
+ disabled && "pointer-events-none opacity-60"
54
+ );
55
+ return /* @__PURE__ */ jsxs("div", { className: cn("w-full min-w-0", wrapperClass), children: [
56
+ labelEl,
57
+ /* @__PURE__ */ jsx("div", { className: bodyClass, children: visibleRows.length === 0 ? /* @__PURE__ */ jsx("div", { className: "rounded-md border border-dashed border-[#D0D0D0] bg-white p-6 text-center text-xs text-muted-foreground", children: "No conditions to grade yet. Select a chief complaint category or pick an examination region." }) : /* @__PURE__ */ jsx("div", { className: "overflow-x-auto rounded-md border border-[#D0D0D0]", children: /* @__PURE__ */ jsxs("table", { className: "w-full min-w-[520px] border-collapse text-xs", children: [
58
+ /* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsxs("tr", { className: "border-b border-[#D0D0D0] bg-[#FEE8EC]/50", children: [
59
+ /* @__PURE__ */ jsx("th", { className: "px-3 py-2 text-left font-semibold text-slate-700", children: "Condition" }),
60
+ /* @__PURE__ */ jsx("th", { className: "w-24 px-2 py-2 font-semibold text-slate-700", children: "Grade" }),
61
+ /* @__PURE__ */ jsx("th", { className: "px-3 py-2 text-left font-semibold text-slate-700", children: "Description" })
62
+ ] }) }),
63
+ /* @__PURE__ */ jsx("tbody", { className: "bg-white", children: visibleRows.map((c) => {
64
+ const g = safe[c] ?? 0;
65
+ const desc = GS_GRADE_DESCRIPTIONS[c][g] ?? "\u2014";
66
+ return /* @__PURE__ */ jsxs("tr", { className: "border-b border-[#D0D0D0]/80 last:border-0", children: [
67
+ /* @__PURE__ */ jsx("td", { className: "px-3 py-2 font-medium", children: GS_CONDITION_LABELS[c] }),
68
+ /* @__PURE__ */ jsx("td", { className: "px-2 py-1.5 align-middle", children: /* @__PURE__ */ jsxs(
69
+ Select,
70
+ {
71
+ value: String(g),
72
+ onValueChange: (v) => setGrade(c, v),
73
+ disabled,
74
+ children: [
75
+ /* @__PURE__ */ jsx(SelectTrigger, { className: "h-8 text-xs", children: /* @__PURE__ */ jsx(SelectValue, {}) }),
76
+ /* @__PURE__ */ jsx(SelectContent, { children: [0, 1, 2, 3, 4, 5].map((n) => /* @__PURE__ */ jsx(SelectItem, { value: String(n), children: n === 0 ? "\u2014" : String(n) }, n)) })
77
+ ]
78
+ }
79
+ ) }),
80
+ /* @__PURE__ */ jsx("td", { className: "px-3 py-2 text-muted-foreground", children: desc })
81
+ ] }, c);
82
+ }) })
83
+ ] }) }) }),
84
+ showError ? /* @__PURE__ */ jsx("p", { className: "px-3 pb-2 text-xs text-red-500", children: error }) : null
85
+ ] });
86
+ };
87
+
88
+ export { GsGradingWidget };
89
+ //# sourceMappingURL=GsGradingWidget-4UPOEYNL.mjs.map
90
+ //# sourceMappingURL=GsGradingWidget-4UPOEYNL.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ui/widgets/GsGradingWidget.tsx"],"names":[],"mappings":";;;;;;;;;;AAyBA,IAAM,iBAAA,GAAoB,wBAAA;AAE1B,IAAM,oBAAA,GAAuB,gBAAA;AAE7B,SAAS,SAAS,KAAA,EAAsD;AACtE,EAAA,MAAM,GAAA,GAAM,KAAA,CAAM,MAAA,CAAO,iBAAiB,CAAA;AAC1C,EAAA,OAAO,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA,GAAI,GAAA,CAAI,MAAA,CAAO,CAAC,CAAA,KAAmB,OAAO,CAAA,KAAM,QAAQ,CAAA,GAAI,EAAC;AACvF;AAEA,SAAS,WAAW,KAAA,EAAsD;AACxE,EAAA,MAAM,GAAA,GAAM,KAAA,CAAM,MAAA,CAAO,oBAAoB,CAAA;AAC7C,EAAA,MAAM,EAAA,GAAK,mCAAmC,GAAG,CAAA;AACjD,EAAA,OAAO,EAAA,CAAG,OAAA;AACZ;AAEO,IAAM,eAAA,GAAiD,CAAC,EAAE,OAAA,EAAQ,KAAM;AAC7E,EAAA,MAAM,EAAE,QAAA,EAAU,KAAA,EAAO,QAAA,EAAU,UAAA,EAAY,OAAO,OAAA,EAAS,QAAA,EAAS,GAAI,QAAA,CAAS,OAAO,CAAA;AAC5F,EAAA,MAAM,EAAE,KAAA,EAAM,GAAI,OAAA,EAAQ;AAC1B,EAAA,MAAM,SAAA,GAAY,CAAC,CAAC,KAAA,KAAU,WAAW,KAAA,CAAM,eAAA,CAAA;AAE/C,EAAA,MAAM,IAAA,GAAO,QAAQ,MAAM,8BAAA,CAA+B,KAAK,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAEzE,EAAA,MAAM,KAAA,GAAQ,QAAQ,MAAM,QAAA,CAAS,KAAK,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AACpD,EAAA,MAAM,OAAA,GAAU,QAAQ,MAAM,UAAA,CAAW,KAAK,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAExD,EAAA,MAAM,WAAA,GAAc,QAAQ,MAAM;AAChC,IAAA,OAAO,iBAAA,CAAkB,MAAA;AAAA,MAAO,CAAC,MAC/B,mBAAA,CAAoB,CAAA,EAAG,OAAO,OAAA,EAAS,IAAA,CAAK,CAAC,CAAA,IAAK,CAAC;AAAA,KACrD;AAAA,EACF,CAAA,EAAG,CAAC,KAAA,EAAO,OAAA,EAAS,IAAI,CAAC,CAAA;AAEzB,EAAA,MAAM,MAAA,GAAS,CAAC,IAAA,KAAqC;AACnD,IAAA,QAAA,CAAS,IAAI,CAAA;AACb,IAAA,UAAA,EAAW;AAAA,EACb,CAAA;AAEA,EAAA,MAAM,QAAA,GAAW,CAAC,IAAA,EAAkC,QAAA,KAAqB;AACvE,IAAA,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,KAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,QAAQ,CAAC,CAAA,IAAK,CAAC,CAAC,CAAA;AACpE,IAAA,MAAA,CAAO,EAAE,GAAG,IAAA,EAAM,CAAC,IAAI,GAAG,GAAG,CAAA;AAAA,EAC/B,CAAA;AAEA,EAAA,IAAI,CAAC,UAAU,OAAO,IAAA;AAEtB,EAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,UAAA,EAAY,QAAA,CAAS,KAAK,CAAA;AACvD,EAAA,MAAM,YAAA,GAAe,OAAO,gBAAA,IAAoB,kEAAA;AAChD,EAAA,MAAM,aAAa,KAAA,EAAO,cAAA;AAE1B,EAAA,MAAM,+BACJ,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,QAAA,CAAS,KAAA;AAAA,oBACV,GAAA,CAAC,0BAAuB,QAAA,EAAoB;AAAA,GAAA,EAC9C,CAAA;AAGF,EAAA,MAAM,OAAA,GAAU,KAAA,mBACd,GAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAW,UAAA,EAAa,QAAA,EAAA,YAAA,EAAa,CAAA,mBAE5C,GAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAU,qBAAA,EAAuB,QAAA,EAAA,YAAA,EAAa,CAAA;AAGvD,EAAA,MAAM,SAAA,GAAY,EAAA;AAAA,IAChB,gFAAA;AAAA,IACA,QAAA,IAAY;AAAA,GACd;AAEA,EAAA,4BACG,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,gBAAA,EAAkB,YAAY,CAAA,EAC9C,QAAA,EAAA;AAAA,IAAA,OAAA;AAAA,oBAED,GAAA,CAAC,SAAI,SAAA,EAAW,SAAA,EACb,sBAAY,MAAA,KAAW,CAAA,uBACrB,KAAA,EAAA,EAAI,SAAA,EAAU,2GAA0G,QAAA,EAAA,8FAAA,EAEzH,CAAA,uBAEC,KAAA,EAAA,EAAI,SAAA,EAAU,sDACb,QAAA,kBAAA,IAAA,CAAC,OAAA,EAAA,EAAM,WAAU,8CAAA,EACf,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,OAAA,EAAA,EACC,QAAA,kBAAA,IAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,2CAAA,EACZ,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,kDAAA,EAAmD,QAAA,EAAA,WAAA,EAAS,CAAA;AAAA,wBAC1E,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,6CAAA,EAA8C,QAAA,EAAA,OAAA,EAAK,CAAA;AAAA,wBACjE,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,kDAAA,EAAmD,QAAA,EAAA,aAAA,EAAW;AAAA,OAAA,EAC9E,CAAA,EACF,CAAA;AAAA,0BACC,OAAA,EAAA,EAAM,SAAA,EAAU,YACd,QAAA,EAAA,WAAA,CAAY,GAAA,CAAI,CAAC,CAAA,KAAM;AACtB,QAAA,MAAM,CAAA,GAAI,IAAA,CAAK,CAAC,CAAA,IAAK,CAAA;AACrB,QAAA,MAAM,IAAA,GAAO,qBAAA,CAAsB,CAAC,CAAA,CAAE,CAAC,CAAA,IAAK,QAAA;AAC5C,QAAA,uBACE,IAAA,CAAC,IAAA,EAAA,EAAW,SAAA,EAAU,4CAAA,EACpB,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,uBAAA,EAAyB,QAAA,EAAA,mBAAA,CAAoB,CAAC,CAAA,EAAE,CAAA;AAAA,0BAC9D,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,0BAAA,EACZ,QAAA,kBAAA,IAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,OAAO,CAAC,CAAA;AAAA,cACf,aAAA,EAAe,CAAC,CAAA,KAAM,QAAA,CAAS,GAAG,CAAC,CAAA;AAAA,cACnC,QAAA;AAAA,cAEA,QAAA,EAAA;AAAA,gCAAA,GAAA,CAAC,aAAA,EAAA,EAAc,SAAA,EAAU,aAAA,EACvB,QAAA,kBAAA,GAAA,CAAC,eAAY,CAAA,EACf,CAAA;AAAA,gCACA,GAAA,CAAC,aAAA,EAAA,EACE,QAAA,EAAA,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,qBACvB,GAAA,CAAC,UAAA,EAAA,EAAmB,KAAA,EAAO,MAAA,CAAO,CAAC,CAAA,EAChC,QAAA,EAAA,CAAA,KAAM,CAAA,GAAI,QAAA,GAAM,MAAA,CAAO,CAAC,CAAA,EAAA,EADV,CAEjB,CACD,CAAA,EACH;AAAA;AAAA;AAAA,WACF,EACF,CAAA;AAAA,0BACA,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,iCAAA,EAAmC,QAAA,EAAA,IAAA,EAAK;AAAA,SAAA,EAAA,EApB/C,CAqBT,CAAA;AAAA,MAEJ,CAAC,CAAA,EACH;AAAA,KAAA,EACF,GACF,CAAA,EAEJ,CAAA;AAAA,IAEC,4BAAY,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,gCAAA,EAAkC,iBAAM,CAAA,GAAO;AAAA,GAAA,EAC3E,CAAA;AAEJ","file":"GsGradingWidget-4UPOEYNL.mjs","sourcesContent":["import React, { useMemo } from 'react';\nimport { useField } from '../../react/useField';\nimport { useForm } from '../../react/useForm';\nimport { Label } from '../shadcn/label';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '../shadcn/select';\nimport { cn } from '../../core/utils';\nimport { FieldRequiredIndicator } from '../../react/fieldStyle';\nimport { getThemeConfig } from '../themes';\nimport {\n ALL_GS_CONDITIONS,\n GS_CONDITION_LABELS,\n GS_GRADE_DESCRIPTIONS,\n gsGradingRowVisible,\n normalizeGeneralSurgeryExamination,\n normalizeGeneralSurgeryGrading,\n type GeneralSurgeryConditionKey,\n type GeneralSurgeryGradingValue,\n} from '../../core/generalSurgeryPathway';\n\nconst CHIEF_CHIPS_FIELD = 'chief_complaints_chips';\n/** Examination field id on the GS template (regions drive grading unlock). */\nconst GS_EXAMINATION_FIELD = 'gs_examination';\n\nfunction chipList(state: { values: Record<string, unknown> }): string[] {\n const raw = state.values[CHIEF_CHIPS_FIELD];\n return Array.isArray(raw) ? raw.filter((x): x is string => typeof x === 'string') : [];\n}\n\nfunction regionList(state: { values: Record<string, unknown> }): string[] {\n const raw = state.values[GS_EXAMINATION_FIELD];\n const ex = normalizeGeneralSurgeryExamination(raw);\n return ex.regions;\n}\n\nexport const GsGradingWidget: React.FC<{ fieldId: string }> = ({ fieldId }) => {\n const { fieldDef, value, setValue, setTouched, error, touched, disabled } = useField(fieldId);\n const { state } = useForm();\n const showError = !!error && (touched || state.submitAttempted);\n\n const safe = useMemo(() => normalizeGeneralSurgeryGrading(value), [value]);\n\n const chips = useMemo(() => chipList(state), [state]);\n const regions = useMemo(() => regionList(state), [state]);\n\n const visibleRows = useMemo(() => {\n return ALL_GS_CONDITIONS.filter((c) =>\n gsGradingRowVisible(c, chips, regions, safe[c] ?? 0),\n );\n }, [chips, regions, safe]);\n\n const update = (next: GeneralSurgeryGradingValue) => {\n setValue(next);\n setTouched();\n };\n\n const setGrade = (cond: GeneralSurgeryConditionKey, gradeStr: string) => {\n const n = Math.min(5, Math.max(0, Math.round(Number(gradeStr)) || 0));\n update({ ...safe, [cond]: n });\n };\n\n if (!fieldDef) return null;\n\n const theme = getThemeConfig('textarea', fieldDef.theme);\n const wrapperClass = theme?.wrapperClassName ?? 'rounded-md overflow-hidden flex flex-col border border-[#D0D0D0]';\n const labelClass = theme?.labelClassName;\n\n const labelContent = (\n <>\n {fieldDef.label}\n <FieldRequiredIndicator fieldDef={fieldDef} />\n </>\n );\n\n const labelEl = theme ? (\n <Label className={labelClass}>{labelContent}</Label>\n ) : (\n <Label className=\"text-sm font-medium\">{labelContent}</Label>\n );\n\n const bodyClass = cn(\n '-mt-1 flex min-w-0 flex-col gap-3 border-t border-[#D0D0D0] bg-white px-3 py-3',\n disabled && 'pointer-events-none opacity-60',\n );\n\n return (\n <div className={cn('w-full min-w-0', wrapperClass)}>\n {labelEl}\n\n <div className={bodyClass}>\n {visibleRows.length === 0 ? (\n <div className=\"rounded-md border border-dashed border-[#D0D0D0] bg-white p-6 text-center text-xs text-muted-foreground\">\n No conditions to grade yet. Select a chief complaint category or pick an examination region.\n </div>\n ) : (\n <div className=\"overflow-x-auto rounded-md border border-[#D0D0D0]\">\n <table className=\"w-full min-w-[520px] border-collapse text-xs\">\n <thead>\n <tr className=\"border-b border-[#D0D0D0] bg-[#FEE8EC]/50\">\n <th className=\"px-3 py-2 text-left font-semibold text-slate-700\">Condition</th>\n <th className=\"w-24 px-2 py-2 font-semibold text-slate-700\">Grade</th>\n <th className=\"px-3 py-2 text-left font-semibold text-slate-700\">Description</th>\n </tr>\n </thead>\n <tbody className=\"bg-white\">\n {visibleRows.map((c) => {\n const g = safe[c] ?? 0;\n const desc = GS_GRADE_DESCRIPTIONS[c][g] ?? '—';\n return (\n <tr key={c} className=\"border-b border-[#D0D0D0]/80 last:border-0\">\n <td className=\"px-3 py-2 font-medium\">{GS_CONDITION_LABELS[c]}</td>\n <td className=\"px-2 py-1.5 align-middle\">\n <Select\n value={String(g)}\n onValueChange={(v) => setGrade(c, v)}\n disabled={disabled}\n >\n <SelectTrigger className=\"h-8 text-xs\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {[0, 1, 2, 3, 4, 5].map((n) => (\n <SelectItem key={n} value={String(n)}>\n {n === 0 ? '—' : String(n)}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </td>\n <td className=\"px-3 py-2 text-muted-foreground\">{desc}</td>\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n )}\n </div>\n\n {showError ? <p className=\"px-3 pb-2 text-xs text-red-500\">{error}</p> : null}\n </div>\n );\n};\n"]}
@@ -0,0 +1,92 @@
1
+ 'use strict';
2
+
3
+ var chunkP62377LB_cjs = require('./chunk-P62377LB.cjs');
4
+ var chunk5E3APMY6_cjs = require('./chunk-5E3APMY6.cjs');
5
+ var chunkKPGTPJDH_cjs = require('./chunk-KPGTPJDH.cjs');
6
+ var chunk4KSZUIJE_cjs = require('./chunk-4KSZUIJE.cjs');
7
+ var chunkIDSBJOFY_cjs = require('./chunk-IDSBJOFY.cjs');
8
+ var chunkJMGUUFOJ_cjs = require('./chunk-JMGUUFOJ.cjs');
9
+ var chunkFHHISVCH_cjs = require('./chunk-FHHISVCH.cjs');
10
+ var react = require('react');
11
+ var jsxRuntime = require('react/jsx-runtime');
12
+
13
+ var CHIEF_CHIPS_FIELD = "chief_complaints_chips";
14
+ var GS_EXAMINATION_FIELD = "gs_examination";
15
+ function chipList(state) {
16
+ const raw = state.values[CHIEF_CHIPS_FIELD];
17
+ return Array.isArray(raw) ? raw.filter((x) => typeof x === "string") : [];
18
+ }
19
+ function regionList(state) {
20
+ const raw = state.values[GS_EXAMINATION_FIELD];
21
+ const ex = chunkIDSBJOFY_cjs.normalizeGeneralSurgeryExamination(raw);
22
+ return ex.regions;
23
+ }
24
+ var GsGradingWidget = ({ fieldId }) => {
25
+ const { fieldDef, value, setValue, setTouched, error, touched, disabled } = chunkIDSBJOFY_cjs.useField(fieldId);
26
+ const { state } = chunkKPGTPJDH_cjs.useForm();
27
+ const showError = !!error && (touched || state.submitAttempted);
28
+ const safe = react.useMemo(() => chunkIDSBJOFY_cjs.normalizeGeneralSurgeryGrading(value), [value]);
29
+ const chips = react.useMemo(() => chipList(state), [state]);
30
+ const regions = react.useMemo(() => regionList(state), [state]);
31
+ const visibleRows = react.useMemo(() => {
32
+ return chunkIDSBJOFY_cjs.ALL_GS_CONDITIONS.filter(
33
+ (c) => chunkIDSBJOFY_cjs.gsGradingRowVisible(c, chips, regions, safe[c] ?? 0)
34
+ );
35
+ }, [chips, regions, safe]);
36
+ const update = (next) => {
37
+ setValue(next);
38
+ setTouched();
39
+ };
40
+ const setGrade = (cond, gradeStr) => {
41
+ const n = Math.min(5, Math.max(0, Math.round(Number(gradeStr)) || 0));
42
+ update({ ...safe, [cond]: n });
43
+ };
44
+ if (!fieldDef) return null;
45
+ const theme = chunkP62377LB_cjs.getThemeConfig("textarea", fieldDef.theme);
46
+ const wrapperClass = theme?.wrapperClassName ?? "rounded-md overflow-hidden flex flex-col border border-[#D0D0D0]";
47
+ const labelClass = theme?.labelClassName;
48
+ const labelContent = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
49
+ fieldDef.label,
50
+ /* @__PURE__ */ jsxRuntime.jsx(chunk5E3APMY6_cjs.FieldRequiredIndicator, { fieldDef })
51
+ ] });
52
+ const labelEl = theme ? /* @__PURE__ */ jsxRuntime.jsx(chunkJMGUUFOJ_cjs.Label, { className: labelClass, children: labelContent }) : /* @__PURE__ */ jsxRuntime.jsx(chunkJMGUUFOJ_cjs.Label, { className: "text-sm font-medium", children: labelContent });
53
+ const bodyClass = chunkFHHISVCH_cjs.cn(
54
+ "-mt-1 flex min-w-0 flex-col gap-3 border-t border-[#D0D0D0] bg-white px-3 py-3",
55
+ disabled && "pointer-events-none opacity-60"
56
+ );
57
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkFHHISVCH_cjs.cn("w-full min-w-0", wrapperClass), children: [
58
+ labelEl,
59
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: bodyClass, children: visibleRows.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-md border border-dashed border-[#D0D0D0] bg-white p-6 text-center text-xs text-muted-foreground", children: "No conditions to grade yet. Select a chief complaint category or pick an examination region." }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "overflow-x-auto rounded-md border border-[#D0D0D0]", children: /* @__PURE__ */ jsxRuntime.jsxs("table", { className: "w-full min-w-[520px] border-collapse text-xs", children: [
60
+ /* @__PURE__ */ jsxRuntime.jsx("thead", { children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { className: "border-b border-[#D0D0D0] bg-[#FEE8EC]/50", children: [
61
+ /* @__PURE__ */ jsxRuntime.jsx("th", { className: "px-3 py-2 text-left font-semibold text-slate-700", children: "Condition" }),
62
+ /* @__PURE__ */ jsxRuntime.jsx("th", { className: "w-24 px-2 py-2 font-semibold text-slate-700", children: "Grade" }),
63
+ /* @__PURE__ */ jsxRuntime.jsx("th", { className: "px-3 py-2 text-left font-semibold text-slate-700", children: "Description" })
64
+ ] }) }),
65
+ /* @__PURE__ */ jsxRuntime.jsx("tbody", { className: "bg-white", children: visibleRows.map((c) => {
66
+ const g = safe[c] ?? 0;
67
+ const desc = chunkIDSBJOFY_cjs.GS_GRADE_DESCRIPTIONS[c][g] ?? "\u2014";
68
+ return /* @__PURE__ */ jsxRuntime.jsxs("tr", { className: "border-b border-[#D0D0D0]/80 last:border-0", children: [
69
+ /* @__PURE__ */ jsxRuntime.jsx("td", { className: "px-3 py-2 font-medium", children: chunkIDSBJOFY_cjs.GS_CONDITION_LABELS[c] }),
70
+ /* @__PURE__ */ jsxRuntime.jsx("td", { className: "px-2 py-1.5 align-middle", children: /* @__PURE__ */ jsxRuntime.jsxs(
71
+ chunk4KSZUIJE_cjs.Select,
72
+ {
73
+ value: String(g),
74
+ onValueChange: (v) => setGrade(c, v),
75
+ disabled,
76
+ children: [
77
+ /* @__PURE__ */ jsxRuntime.jsx(chunk4KSZUIJE_cjs.SelectTrigger, { className: "h-8 text-xs", children: /* @__PURE__ */ jsxRuntime.jsx(chunk4KSZUIJE_cjs.SelectValue, {}) }),
78
+ /* @__PURE__ */ jsxRuntime.jsx(chunk4KSZUIJE_cjs.SelectContent, { children: [0, 1, 2, 3, 4, 5].map((n) => /* @__PURE__ */ jsxRuntime.jsx(chunk4KSZUIJE_cjs.SelectItem, { value: String(n), children: n === 0 ? "\u2014" : String(n) }, n)) })
79
+ ]
80
+ }
81
+ ) }),
82
+ /* @__PURE__ */ jsxRuntime.jsx("td", { className: "px-3 py-2 text-muted-foreground", children: desc })
83
+ ] }, c);
84
+ }) })
85
+ ] }) }) }),
86
+ showError ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "px-3 pb-2 text-xs text-red-500", children: error }) : null
87
+ ] });
88
+ };
89
+
90
+ exports.GsGradingWidget = GsGradingWidget;
91
+ //# sourceMappingURL=GsGradingWidget-IV3UF63W.cjs.map
92
+ //# sourceMappingURL=GsGradingWidget-IV3UF63W.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ui/widgets/GsGradingWidget.tsx"],"names":["normalizeGeneralSurgeryExamination","useField","useForm","useMemo","normalizeGeneralSurgeryGrading","ALL_GS_CONDITIONS","gsGradingRowVisible","getThemeConfig","jsxs","Fragment","jsx","FieldRequiredIndicator","Label","cn","GS_GRADE_DESCRIPTIONS","GS_CONDITION_LABELS","Select","SelectTrigger","SelectValue","SelectContent","SelectItem"],"mappings":"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","file":"GsGradingWidget-IV3UF63W.cjs","sourcesContent":["import React, { useMemo } from 'react';\nimport { useField } from '../../react/useField';\nimport { useForm } from '../../react/useForm';\nimport { Label } from '../shadcn/label';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '../shadcn/select';\nimport { cn } from '../../core/utils';\nimport { FieldRequiredIndicator } from '../../react/fieldStyle';\nimport { getThemeConfig } from '../themes';\nimport {\n ALL_GS_CONDITIONS,\n GS_CONDITION_LABELS,\n GS_GRADE_DESCRIPTIONS,\n gsGradingRowVisible,\n normalizeGeneralSurgeryExamination,\n normalizeGeneralSurgeryGrading,\n type GeneralSurgeryConditionKey,\n type GeneralSurgeryGradingValue,\n} from '../../core/generalSurgeryPathway';\n\nconst CHIEF_CHIPS_FIELD = 'chief_complaints_chips';\n/** Examination field id on the GS template (regions drive grading unlock). */\nconst GS_EXAMINATION_FIELD = 'gs_examination';\n\nfunction chipList(state: { values: Record<string, unknown> }): string[] {\n const raw = state.values[CHIEF_CHIPS_FIELD];\n return Array.isArray(raw) ? raw.filter((x): x is string => typeof x === 'string') : [];\n}\n\nfunction regionList(state: { values: Record<string, unknown> }): string[] {\n const raw = state.values[GS_EXAMINATION_FIELD];\n const ex = normalizeGeneralSurgeryExamination(raw);\n return ex.regions;\n}\n\nexport const GsGradingWidget: React.FC<{ fieldId: string }> = ({ fieldId }) => {\n const { fieldDef, value, setValue, setTouched, error, touched, disabled } = useField(fieldId);\n const { state } = useForm();\n const showError = !!error && (touched || state.submitAttempted);\n\n const safe = useMemo(() => normalizeGeneralSurgeryGrading(value), [value]);\n\n const chips = useMemo(() => chipList(state), [state]);\n const regions = useMemo(() => regionList(state), [state]);\n\n const visibleRows = useMemo(() => {\n return ALL_GS_CONDITIONS.filter((c) =>\n gsGradingRowVisible(c, chips, regions, safe[c] ?? 0),\n );\n }, [chips, regions, safe]);\n\n const update = (next: GeneralSurgeryGradingValue) => {\n setValue(next);\n setTouched();\n };\n\n const setGrade = (cond: GeneralSurgeryConditionKey, gradeStr: string) => {\n const n = Math.min(5, Math.max(0, Math.round(Number(gradeStr)) || 0));\n update({ ...safe, [cond]: n });\n };\n\n if (!fieldDef) return null;\n\n const theme = getThemeConfig('textarea', fieldDef.theme);\n const wrapperClass = theme?.wrapperClassName ?? 'rounded-md overflow-hidden flex flex-col border border-[#D0D0D0]';\n const labelClass = theme?.labelClassName;\n\n const labelContent = (\n <>\n {fieldDef.label}\n <FieldRequiredIndicator fieldDef={fieldDef} />\n </>\n );\n\n const labelEl = theme ? (\n <Label className={labelClass}>{labelContent}</Label>\n ) : (\n <Label className=\"text-sm font-medium\">{labelContent}</Label>\n );\n\n const bodyClass = cn(\n '-mt-1 flex min-w-0 flex-col gap-3 border-t border-[#D0D0D0] bg-white px-3 py-3',\n disabled && 'pointer-events-none opacity-60',\n );\n\n return (\n <div className={cn('w-full min-w-0', wrapperClass)}>\n {labelEl}\n\n <div className={bodyClass}>\n {visibleRows.length === 0 ? (\n <div className=\"rounded-md border border-dashed border-[#D0D0D0] bg-white p-6 text-center text-xs text-muted-foreground\">\n No conditions to grade yet. Select a chief complaint category or pick an examination region.\n </div>\n ) : (\n <div className=\"overflow-x-auto rounded-md border border-[#D0D0D0]\">\n <table className=\"w-full min-w-[520px] border-collapse text-xs\">\n <thead>\n <tr className=\"border-b border-[#D0D0D0] bg-[#FEE8EC]/50\">\n <th className=\"px-3 py-2 text-left font-semibold text-slate-700\">Condition</th>\n <th className=\"w-24 px-2 py-2 font-semibold text-slate-700\">Grade</th>\n <th className=\"px-3 py-2 text-left font-semibold text-slate-700\">Description</th>\n </tr>\n </thead>\n <tbody className=\"bg-white\">\n {visibleRows.map((c) => {\n const g = safe[c] ?? 0;\n const desc = GS_GRADE_DESCRIPTIONS[c][g] ?? '—';\n return (\n <tr key={c} className=\"border-b border-[#D0D0D0]/80 last:border-0\">\n <td className=\"px-3 py-2 font-medium\">{GS_CONDITION_LABELS[c]}</td>\n <td className=\"px-2 py-1.5 align-middle\">\n <Select\n value={String(g)}\n onValueChange={(v) => setGrade(c, v)}\n disabled={disabled}\n >\n <SelectTrigger className=\"h-8 text-xs\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {[0, 1, 2, 3, 4, 5].map((n) => (\n <SelectItem key={n} value={String(n)}>\n {n === 0 ? '—' : String(n)}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </td>\n <td className=\"px-3 py-2 text-muted-foreground\">{desc}</td>\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n )}\n </div>\n\n {showError ? <p className=\"px-3 pb-2 text-xs text-red-500\">{error}</p> : null}\n </div>\n );\n};\n"]}
@@ -0,0 +1,398 @@
1
+ 'use strict';
2
+
3
+ var chunkPZBJYPWW_cjs = require('./chunk-PZBJYPWW.cjs');
4
+ var chunkPHADAQSH_cjs = require('./chunk-PHADAQSH.cjs');
5
+ var chunkP62377LB_cjs = require('./chunk-P62377LB.cjs');
6
+ var chunk5E3APMY6_cjs = require('./chunk-5E3APMY6.cjs');
7
+ var chunkKPGTPJDH_cjs = require('./chunk-KPGTPJDH.cjs');
8
+ var chunkTJHG5WHX_cjs = require('./chunk-TJHG5WHX.cjs');
9
+ var chunkO3VQBPEW_cjs = require('./chunk-O3VQBPEW.cjs');
10
+ var chunkIDSBJOFY_cjs = require('./chunk-IDSBJOFY.cjs');
11
+ var chunkJMGUUFOJ_cjs = require('./chunk-JMGUUFOJ.cjs');
12
+ var chunkFHHISVCH_cjs = require('./chunk-FHHISVCH.cjs');
13
+ var react = require('react');
14
+ var jsxRuntime = require('react/jsx-runtime');
15
+
16
+ var CHIEF_CHIPS_FIELD = "chief_complaints_chips";
17
+ var GS_SYMPTOMS_FIELD = "symptoms";
18
+ var SWELLING_OPTS = [
19
+ { value: "reducible_hernia", label: "Reducible (hernia)" },
20
+ { value: "cough_impulse", label: "Cough impulse" },
21
+ { value: "skin_changes", label: "Skin changes" }
22
+ ];
23
+ var GI_OPTS = [
24
+ { value: "bleeding_pr", label: "Bleeding PR" },
25
+ { value: "vomiting", label: "Vomiting" },
26
+ { value: "haematemesis", label: "Haematemesis" }
27
+ ];
28
+ var BREAST_OPTS = [
29
+ { value: "pain", label: "Pain" },
30
+ { value: "fh_ca_breast", label: "Family history of Ca breast" }
31
+ ];
32
+ var ANO_OPTS = [
33
+ { value: "pain_defecation", label: "Pain during defecation" },
34
+ { value: "bleeding", label: "Bleeding" },
35
+ { value: "constipation", label: "Constipation" },
36
+ { value: "discharge", label: "Discharge" }
37
+ ];
38
+ var THYROID_OPTS = [
39
+ { value: "dysphagia", label: "Dysphagia" },
40
+ { value: "voice_change", label: "Voice change" },
41
+ { value: "thyrotoxicosis", label: "Thyrotoxicosis symptoms" }
42
+ ];
43
+ var SOCRATES_KEYS = [
44
+ "site",
45
+ "onset",
46
+ "character",
47
+ "radiation",
48
+ "associated",
49
+ "timing",
50
+ "exacerbating"
51
+ ];
52
+ function Panel({ title, children }) {
53
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "overflow-hidden rounded-md border border-[#D0D0D0] bg-white", children: [
54
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "border-b border-[#D0D0D0] bg-[#FEE8EC]/50 px-3 py-1.5 text-xs font-semibold text-slate-700", children: title }),
55
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-3", children })
56
+ ] });
57
+ }
58
+ function chipListFromRaw(raw) {
59
+ return Array.isArray(raw) ? raw.filter((x) => typeof x === "string") : [];
60
+ }
61
+ var GsSmartHistoryWidget = ({ fieldId }) => {
62
+ const { fieldDef, value, setValue, setTouched, error, touched, disabled } = chunkIDSBJOFY_cjs.useField(fieldId);
63
+ const hopcField = chunkIDSBJOFY_cjs.useField(GS_SYMPTOMS_FIELD);
64
+ const { state } = chunkKPGTPJDH_cjs.useForm();
65
+ const showError = !!error && (touched || state.submitAttempted);
66
+ const safe = react.useMemo(() => chunkIDSBJOFY_cjs.normalizeGeneralSurgerySmartHistory(value), [value]);
67
+ const chiefChipsRaw = state.values[CHIEF_CHIPS_FIELD];
68
+ const chips = react.useMemo(() => chipListFromRaw(chiefChipsRaw), [chiefChipsRaw]);
69
+ const [hopcNarrativeLocked, setHopcNarrativeLocked] = react.useState(false);
70
+ react.useEffect(() => {
71
+ if (hopcNarrativeLocked) return;
72
+ const next = chunkIDSBJOFY_cjs.formatGeneralSurgerySmartHistoryToNarrative(
73
+ chunkIDSBJOFY_cjs.normalizeGeneralSurgerySmartHistory(value),
74
+ chips
75
+ );
76
+ hopcField.setValue(next);
77
+ }, [value, chips, hopcNarrativeLocked]);
78
+ const showPain = chips.includes("pain");
79
+ const showSwelling = chips.includes("swelling_lump");
80
+ const showGI = chips.includes("bleeding") || chips.includes("obstruction");
81
+ const showBreast = chips.includes("breast");
82
+ const showAno = chips.includes("anorectal");
83
+ const showThyroid = chips.includes("thyroid");
84
+ const update = (next) => {
85
+ setValue(next);
86
+ setTouched();
87
+ };
88
+ const setPain = (key, v) => {
89
+ if (key === "severity") {
90
+ const n = typeof v === "number" ? v : Number(v);
91
+ const sev = Number.isFinite(n) ? Math.min(10, Math.max(0, Math.round(n))) : 0;
92
+ update({ ...safe, pain: { ...safe.pain, severity: sev } });
93
+ return;
94
+ }
95
+ update({ ...safe, pain: { ...safe.pain, [key]: String(v) } });
96
+ };
97
+ const toggleArr = (section, val) => {
98
+ if (section === "swelling") {
99
+ const a = safe.swelling.checks;
100
+ const next = a.includes(val) ? a.filter((x) => x !== val) : [...a, val];
101
+ update({ ...safe, swelling: { ...safe.swelling, checks: next } });
102
+ } else if (section === "gi") {
103
+ const a = safe.gi.checks;
104
+ const next = a.includes(val) ? a.filter((x) => x !== val) : [...a, val];
105
+ update({ ...safe, gi: { ...safe.gi, checks: next } });
106
+ } else if (section === "breast") {
107
+ const a = safe.breast.checks;
108
+ const next = a.includes(val) ? a.filter((x) => x !== val) : [...a, val];
109
+ update({ ...safe, breast: { ...safe.breast, checks: next } });
110
+ } else if (section === "ano") {
111
+ const a = safe.ano.checks;
112
+ const next = a.includes(val) ? a.filter((x) => x !== val) : [...a, val];
113
+ update({ ...safe, ano: { ...safe.ano, checks: next } });
114
+ } else {
115
+ const a = safe.thyroid.checks;
116
+ const next = a.includes(val) ? a.filter((x) => x !== val) : [...a, val];
117
+ update({ ...safe, thyroid: { ...safe.thyroid, checks: next } });
118
+ }
119
+ };
120
+ if (!fieldDef) return null;
121
+ const theme = chunkP62377LB_cjs.getThemeConfig("textarea", fieldDef.theme);
122
+ const wrapperClass = theme?.wrapperClassName ?? "rounded-md overflow-hidden flex flex-col border border-[#D0D0D0]";
123
+ const labelClass = theme?.labelClassName;
124
+ const labelContent = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
125
+ fieldDef.label,
126
+ /* @__PURE__ */ jsxRuntime.jsx(chunk5E3APMY6_cjs.FieldRequiredIndicator, { fieldDef })
127
+ ] });
128
+ const labelEl = theme ? /* @__PURE__ */ jsxRuntime.jsx(chunkJMGUUFOJ_cjs.Label, { className: labelClass, children: labelContent }) : /* @__PURE__ */ jsxRuntime.jsx(chunkJMGUUFOJ_cjs.Label, { className: "text-sm font-medium", children: labelContent });
129
+ const bodyClass = chunkFHHISVCH_cjs.cn(
130
+ "-mt-1 flex min-w-0 flex-col gap-3 border-t border-[#D0D0D0] bg-white px-3 py-3",
131
+ disabled && "pointer-events-none opacity-60"
132
+ );
133
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkFHHISVCH_cjs.cn("w-full min-w-0", wrapperClass), children: [
134
+ labelEl,
135
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: bodyClass, children: [
136
+ showPain ? /* @__PURE__ */ jsxRuntime.jsx(Panel, { title: "SOCRATES \u2014 pain", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-2 md:grid-cols-4", children: [
137
+ SOCRATES_KEYS.map((k) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
138
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] font-medium uppercase tracking-wide text-muted-foreground", children: k }),
139
+ /* @__PURE__ */ jsxRuntime.jsx(
140
+ chunkTJHG5WHX_cjs.Input,
141
+ {
142
+ className: "h-8 text-xs",
143
+ value: safe.pain[k],
144
+ onChange: (e) => setPain(k, e.target.value),
145
+ disabled
146
+ }
147
+ )
148
+ ] }, k)),
149
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
150
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] font-medium uppercase tracking-wide text-muted-foreground", children: "Severity 0\u201310" }),
151
+ /* @__PURE__ */ jsxRuntime.jsx(
152
+ chunkTJHG5WHX_cjs.Input,
153
+ {
154
+ type: "number",
155
+ min: 0,
156
+ max: 10,
157
+ className: "h-8 text-xs",
158
+ value: safe.pain.severity,
159
+ onChange: (e) => setPain("severity", e.target.value),
160
+ disabled
161
+ }
162
+ )
163
+ ] })
164
+ ] }) }) : null,
165
+ showSwelling ? /* @__PURE__ */ jsxRuntime.jsxs(Panel, { title: "Swelling history", children: [
166
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 text-xs md:grid-cols-3", children: [
167
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
168
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium", children: "Duration" }),
169
+ /* @__PURE__ */ jsxRuntime.jsx(
170
+ chunkTJHG5WHX_cjs.Input,
171
+ {
172
+ className: "h-8 text-xs",
173
+ value: safe.swelling.duration,
174
+ onChange: (e) => update({ ...safe, swelling: { ...safe.swelling, duration: e.target.value } }),
175
+ disabled
176
+ }
177
+ )
178
+ ] }),
179
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
180
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium", children: "Size progression" }),
181
+ /* @__PURE__ */ jsxRuntime.jsx(
182
+ chunkTJHG5WHX_cjs.Input,
183
+ {
184
+ className: "h-8 text-xs",
185
+ value: safe.swelling.sizeProgression,
186
+ onChange: (e) => update({ ...safe, swelling: { ...safe.swelling, sizeProgression: e.target.value } }),
187
+ disabled
188
+ }
189
+ )
190
+ ] }),
191
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
192
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium", children: "Painful / painless" }),
193
+ /* @__PURE__ */ jsxRuntime.jsx(
194
+ chunkTJHG5WHX_cjs.Input,
195
+ {
196
+ className: "h-8 text-xs",
197
+ value: safe.swelling.painfulPainless,
198
+ onChange: (e) => update({ ...safe, swelling: { ...safe.swelling, painfulPainless: e.target.value } }),
199
+ disabled
200
+ }
201
+ )
202
+ ] })
203
+ ] }),
204
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-3 flex flex-wrap gap-x-4 gap-y-2", children: SWELLING_OPTS.map((o) => /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-xs", children: [
205
+ /* @__PURE__ */ jsxRuntime.jsx(
206
+ chunkPZBJYPWW_cjs.Checkbox,
207
+ {
208
+ checked: safe.swelling.checks.includes(o.value),
209
+ onCheckedChange: () => toggleArr("swelling", o.value),
210
+ disabled
211
+ }
212
+ ),
213
+ o.label
214
+ ] }, o.value)) })
215
+ ] }) : null,
216
+ showGI ? /* @__PURE__ */ jsxRuntime.jsxs(Panel, { title: "GI history", children: [
217
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-2 text-xs md:grid-cols-3", children: [
218
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
219
+ "Appetite",
220
+ /* @__PURE__ */ jsxRuntime.jsx(
221
+ chunkTJHG5WHX_cjs.Input,
222
+ {
223
+ className: "h-8 text-xs",
224
+ value: safe.gi.appetite,
225
+ onChange: (e) => update({ ...safe, gi: { ...safe.gi, appetite: e.target.value } }),
226
+ disabled
227
+ }
228
+ )
229
+ ] }),
230
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
231
+ "Weight loss",
232
+ /* @__PURE__ */ jsxRuntime.jsx(
233
+ chunkTJHG5WHX_cjs.Input,
234
+ {
235
+ className: "h-8 text-xs",
236
+ value: safe.gi.weightLoss,
237
+ onChange: (e) => update({ ...safe, gi: { ...safe.gi, weightLoss: e.target.value } }),
238
+ disabled
239
+ }
240
+ )
241
+ ] }),
242
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
243
+ "Bowel habits",
244
+ /* @__PURE__ */ jsxRuntime.jsx(
245
+ chunkTJHG5WHX_cjs.Input,
246
+ {
247
+ className: "h-8 text-xs",
248
+ value: safe.gi.bowelHabits,
249
+ onChange: (e) => update({ ...safe, gi: { ...safe.gi, bowelHabits: e.target.value } }),
250
+ disabled
251
+ }
252
+ )
253
+ ] })
254
+ ] }),
255
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-3 flex flex-wrap gap-x-4 gap-y-2", children: GI_OPTS.map((o) => /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-xs", children: [
256
+ /* @__PURE__ */ jsxRuntime.jsx(
257
+ chunkPZBJYPWW_cjs.Checkbox,
258
+ {
259
+ checked: safe.gi.checks.includes(o.value),
260
+ onCheckedChange: () => toggleArr("gi", o.value),
261
+ disabled
262
+ }
263
+ ),
264
+ o.label
265
+ ] }, o.value)) })
266
+ ] }) : null,
267
+ showBreast ? /* @__PURE__ */ jsxRuntime.jsxs(Panel, { title: "Breast history", children: [
268
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-2 text-xs md:grid-cols-2", children: [
269
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
270
+ "Lump duration",
271
+ /* @__PURE__ */ jsxRuntime.jsx(
272
+ chunkTJHG5WHX_cjs.Input,
273
+ {
274
+ className: "h-8 text-xs",
275
+ value: safe.breast.lumpDuration,
276
+ onChange: (e) => update({ ...safe, breast: { ...safe.breast, lumpDuration: e.target.value } }),
277
+ disabled
278
+ }
279
+ )
280
+ ] }),
281
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
282
+ "Nipple discharge",
283
+ /* @__PURE__ */ jsxRuntime.jsx(
284
+ chunkTJHG5WHX_cjs.Input,
285
+ {
286
+ className: "h-8 text-xs",
287
+ value: safe.breast.nippleDischarge,
288
+ onChange: (e) => update({ ...safe, breast: { ...safe.breast, nippleDischarge: e.target.value } }),
289
+ disabled
290
+ }
291
+ )
292
+ ] })
293
+ ] }),
294
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-3 flex flex-wrap gap-x-4 gap-y-2", children: BREAST_OPTS.map((o) => /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-xs", children: [
295
+ /* @__PURE__ */ jsxRuntime.jsx(
296
+ chunkPZBJYPWW_cjs.Checkbox,
297
+ {
298
+ checked: safe.breast.checks.includes(o.value),
299
+ onCheckedChange: () => toggleArr("breast", o.value),
300
+ disabled
301
+ }
302
+ ),
303
+ o.label
304
+ ] }, o.value)) })
305
+ ] }) : null,
306
+ showAno ? /* @__PURE__ */ jsxRuntime.jsx(Panel, { title: "Anorectal history", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-2 text-xs md:grid-cols-2", children: ANO_OPTS.map((o) => /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2", children: [
307
+ /* @__PURE__ */ jsxRuntime.jsx(
308
+ chunkPZBJYPWW_cjs.Checkbox,
309
+ {
310
+ checked: safe.ano.checks.includes(o.value),
311
+ onCheckedChange: () => toggleArr("ano", o.value),
312
+ disabled
313
+ }
314
+ ),
315
+ o.label
316
+ ] }, o.value)) }) }) : null,
317
+ showThyroid ? /* @__PURE__ */ jsxRuntime.jsxs(Panel, { title: "Thyroid history", children: [
318
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-2 text-xs md:grid-cols-2", children: /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1 md:col-span-2", children: [
319
+ "Swelling duration",
320
+ /* @__PURE__ */ jsxRuntime.jsx(
321
+ chunkTJHG5WHX_cjs.Input,
322
+ {
323
+ className: "h-8 text-xs",
324
+ value: safe.thyroid.swellingDuration,
325
+ onChange: (e) => update({ ...safe, thyroid: { ...safe.thyroid, swellingDuration: e.target.value } }),
326
+ disabled
327
+ }
328
+ )
329
+ ] }) }),
330
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-3 flex flex-wrap gap-x-4 gap-y-2", children: THYROID_OPTS.map((o) => /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-xs", children: [
331
+ /* @__PURE__ */ jsxRuntime.jsx(
332
+ chunkPZBJYPWW_cjs.Checkbox,
333
+ {
334
+ checked: safe.thyroid.checks.includes(o.value),
335
+ onCheckedChange: () => toggleArr("thyroid", o.value),
336
+ disabled
337
+ }
338
+ ),
339
+ o.label
340
+ ] }, o.value)) })
341
+ ] }) : null,
342
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
343
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center justify-between gap-2", children: [
344
+ /* @__PURE__ */ jsxRuntime.jsx(chunkJMGUUFOJ_cjs.Label, { className: "text-xs font-semibold text-slate-700", children: hopcField.fieldDef?.label ?? "History of presenting complaint" }),
345
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
346
+ hopcNarrativeLocked ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "rounded bg-amber-50 px-1.5 py-0.5 text-[10px] font-medium text-amber-900 ring-1 ring-amber-200/80", children: [
347
+ "You edited this summary. Use",
348
+ " ",
349
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "italic", children: "'Regenerate'" }),
350
+ " ",
351
+ "to update it from the form."
352
+ ] }) : null,
353
+ hopcNarrativeLocked ? /* @__PURE__ */ jsxRuntime.jsx(
354
+ chunkO3VQBPEW_cjs.Button,
355
+ {
356
+ type: "button",
357
+ variant: "outline",
358
+ size: "sm",
359
+ className: "h-7 shrink-0 px-2 text-xs",
360
+ disabled: disabled || hopcField.disabled,
361
+ onClick: () => {
362
+ setHopcNarrativeLocked(false);
363
+ hopcField.setValue(
364
+ chunkIDSBJOFY_cjs.formatGeneralSurgerySmartHistoryToNarrative(
365
+ chunkIDSBJOFY_cjs.normalizeGeneralSurgerySmartHistory(value),
366
+ chips
367
+ )
368
+ );
369
+ },
370
+ children: "Regenerate"
371
+ }
372
+ ) : null
373
+ ] })
374
+ ] }),
375
+ hopcNarrativeLocked ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[10px] text-muted-foreground", children: "Edit this box anytime. Use Regenerate to replace with fresh text from the structured fields." }) : null,
376
+ /* @__PURE__ */ jsxRuntime.jsx(
377
+ chunkPHADAQSH_cjs.Textarea,
378
+ {
379
+ className: "min-h-[88px] rounded-md border border-input bg-white text-sm",
380
+ placeholder: "Onset, progression, associated symptoms, relevant negatives\u2026",
381
+ value: typeof hopcField.value === "string" ? hopcField.value : hopcField.value == null ? "" : String(hopcField.value),
382
+ onChange: (e) => {
383
+ setHopcNarrativeLocked(true);
384
+ hopcField.setValue(e.target.value);
385
+ hopcField.setTouched();
386
+ },
387
+ disabled: disabled || hopcField.disabled
388
+ }
389
+ )
390
+ ] })
391
+ ] }),
392
+ showError ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "px-3 pb-2 text-xs text-red-500", children: error }) : null
393
+ ] });
394
+ };
395
+
396
+ exports.GsSmartHistoryWidget = GsSmartHistoryWidget;
397
+ //# sourceMappingURL=GsSmartHistoryWidget-7QNJZEI4.cjs.map
398
+ //# sourceMappingURL=GsSmartHistoryWidget-7QNJZEI4.cjs.map