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,1115 @@
1
+ 'use strict';
2
+
3
+ var chunkNJJTIL3U_cjs = require('./chunk-NJJTIL3U.cjs');
4
+ var chunkJE6VXRWW_cjs = require('./chunk-JE6VXRWW.cjs');
5
+ var chunkQKJ7BQSR_cjs = require('./chunk-QKJ7BQSR.cjs');
6
+ var chunkPZBJYPWW_cjs = require('./chunk-PZBJYPWW.cjs');
7
+ var chunkPHADAQSH_cjs = require('./chunk-PHADAQSH.cjs');
8
+ var chunkTJHG5WHX_cjs = require('./chunk-TJHG5WHX.cjs');
9
+ var chunk4KSZUIJE_cjs = require('./chunk-4KSZUIJE.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 OBG_PATHWAY_FIELD = "obg_pathway";
17
+ var AntenatalPanels = () => {
18
+ const pathwayField = chunkIDSBJOFY_cjs.useField(OBG_PATHWAY_FIELD);
19
+ const { writeSymptoms } = chunkNJJTIL3U_cjs.useObgSymptomsSync();
20
+ const hasField = !!pathwayField.fieldDef;
21
+ const safe = react.useMemo(
22
+ () => chunkQKJ7BQSR_cjs.normalizeObgPathway(pathwayField.value),
23
+ [pathwayField.value]
24
+ );
25
+ const [ant, setAnt] = react.useState(() => safe.antenatal);
26
+ const lastWrittenRef = react.useRef(safe.antenatal);
27
+ react.useEffect(() => {
28
+ if (safe.antenatal === lastWrittenRef.current) return;
29
+ if (JSON.stringify(safe.antenatal) === JSON.stringify(lastWrittenRef.current)) return;
30
+ setAnt(safe.antenatal);
31
+ lastWrittenRef.current = safe.antenatal;
32
+ }, [safe.antenatal]);
33
+ if (!hasField) return null;
34
+ if (!safe.zones.includes("antenatal")) return null;
35
+ const disabled = pathwayField.disabled;
36
+ const commit = (nextAnt) => {
37
+ const prev = { ...safe, antenatal: ant };
38
+ const nextPathway = { ...safe, antenatal: nextAnt };
39
+ setAnt(nextAnt);
40
+ lastWrittenRef.current = nextAnt;
41
+ pathwayField.setValue(nextPathway);
42
+ pathwayField.setTouched();
43
+ writeSymptoms(prev, nextPathway);
44
+ };
45
+ const a = ant;
46
+ const setAntenatal = (patch) => commit({ ...a, ...patch });
47
+ const setAntenatalSymptom = (key) => commit({ ...a, symptoms: { ...a.symptoms, [key]: !a.symptoms[key] } });
48
+ const setAntenatalExam = (patch) => commit({ ...a, exam: { ...a.exam, ...patch } });
49
+ const setAntenatalInv = (patch) => commit({ ...a, investigations: { ...a.investigations, ...patch } });
50
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3 text-xs", children: [
51
+ /* @__PURE__ */ jsxRuntime.jsx(chunkNJJTIL3U_cjs.Panel, { title: "Current pregnancy details", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-3 md:grid-cols-4", children: [
52
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "space-y-1", children: [
53
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block font-medium", children: "Gravida" }),
54
+ /* @__PURE__ */ jsxRuntime.jsx(
55
+ chunkTJHG5WHX_cjs.Input,
56
+ {
57
+ type: "number",
58
+ min: 0,
59
+ className: "h-8 text-xs",
60
+ value: a.gravida,
61
+ onChange: (e) => setAntenatal({ gravida: Number(e.target.value) || 0 }),
62
+ disabled
63
+ }
64
+ )
65
+ ] }),
66
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
67
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block font-medium", children: "GA (LMP) \u2014 w / d" }),
68
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1", children: [
69
+ /* @__PURE__ */ jsxRuntime.jsx(
70
+ chunkTJHG5WHX_cjs.Input,
71
+ {
72
+ type: "number",
73
+ min: 0,
74
+ max: 45,
75
+ className: "h-8 text-xs",
76
+ value: a.gaWeeksLmp,
77
+ onChange: (e) => setAntenatal({ gaWeeksLmp: Number(e.target.value) || 0 }),
78
+ disabled
79
+ }
80
+ ),
81
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground", children: "w" }),
82
+ /* @__PURE__ */ jsxRuntime.jsx(
83
+ chunkTJHG5WHX_cjs.Input,
84
+ {
85
+ type: "number",
86
+ min: 0,
87
+ max: 6,
88
+ className: "h-8 text-xs",
89
+ value: a.gaDaysLmp,
90
+ onChange: (e) => setAntenatal({ gaDaysLmp: Number(e.target.value) || 0 }),
91
+ disabled
92
+ }
93
+ ),
94
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground", children: "d" })
95
+ ] })
96
+ ] }),
97
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
98
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block font-medium", children: "GA (USG) \u2014 w / d" }),
99
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1", children: [
100
+ /* @__PURE__ */ jsxRuntime.jsx(
101
+ chunkTJHG5WHX_cjs.Input,
102
+ {
103
+ type: "number",
104
+ min: 0,
105
+ max: 45,
106
+ className: "h-8 text-xs",
107
+ value: a.gaWeeksUsg,
108
+ onChange: (e) => setAntenatal({ gaWeeksUsg: Number(e.target.value) || 0 }),
109
+ disabled
110
+ }
111
+ ),
112
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground", children: "w" }),
113
+ /* @__PURE__ */ jsxRuntime.jsx(
114
+ chunkTJHG5WHX_cjs.Input,
115
+ {
116
+ type: "number",
117
+ min: 0,
118
+ max: 6,
119
+ className: "h-8 text-xs",
120
+ value: a.gaDaysUsg,
121
+ onChange: (e) => setAntenatal({ gaDaysUsg: Number(e.target.value) || 0 }),
122
+ disabled
123
+ }
124
+ ),
125
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground", children: "d" })
126
+ ] })
127
+ ] }),
128
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "space-y-1", children: [
129
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block font-medium", children: "EDD" }),
130
+ /* @__PURE__ */ jsxRuntime.jsx(
131
+ chunkTJHG5WHX_cjs.Input,
132
+ {
133
+ type: "date",
134
+ className: "h-8 text-xs",
135
+ value: a.edd,
136
+ onChange: (e) => setAntenatal({ edd: e.target.value }),
137
+ disabled
138
+ }
139
+ )
140
+ ] }),
141
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "space-y-1 md:col-span-2", children: [
142
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block font-medium", children: "Risk category" }),
143
+ /* @__PURE__ */ jsxRuntime.jsxs(
144
+ chunk4KSZUIJE_cjs.Select,
145
+ {
146
+ value: a.riskCategory === "" ? "none" : a.riskCategory,
147
+ onValueChange: (v) => setAntenatal({
148
+ riskCategory: v === "none" ? "" : v
149
+ }),
150
+ disabled,
151
+ children: [
152
+ /* @__PURE__ */ jsxRuntime.jsx(chunk4KSZUIJE_cjs.SelectTrigger, { className: "h-8 text-xs", children: /* @__PURE__ */ jsxRuntime.jsx(chunk4KSZUIJE_cjs.SelectValue, { placeholder: "\u2014" }) }),
153
+ /* @__PURE__ */ jsxRuntime.jsxs(chunk4KSZUIJE_cjs.SelectContent, { children: [
154
+ /* @__PURE__ */ jsxRuntime.jsx(chunk4KSZUIJE_cjs.SelectItem, { value: "none", children: "\u2014" }),
155
+ /* @__PURE__ */ jsxRuntime.jsx(chunk4KSZUIJE_cjs.SelectItem, { value: "Low", children: "Low" }),
156
+ /* @__PURE__ */ jsxRuntime.jsx(chunk4KSZUIJE_cjs.SelectItem, { value: "High", children: "High" })
157
+ ] })
158
+ ]
159
+ }
160
+ )
161
+ ] })
162
+ ] }) }),
163
+ /* @__PURE__ */ jsxRuntime.jsx(chunkNJJTIL3U_cjs.Panel, { title: "Antenatal symptoms", children: /* @__PURE__ */ jsxRuntime.jsx(
164
+ chunkNJJTIL3U_cjs.ChipRow,
165
+ {
166
+ options: [
167
+ { key: "nauseaVomiting", label: "Nausea / vomiting" },
168
+ { key: "bleedingPV", label: "Bleeding PV" },
169
+ { key: "painAbdomen", label: "Pain abdomen" },
170
+ { key: "decreasedFetalMovements", label: "Decreased fetal movements" }
171
+ ],
172
+ selected: a.symptoms,
173
+ onToggle: (k) => setAntenatalSymptom(k),
174
+ disabled
175
+ }
176
+ ) }),
177
+ /* @__PURE__ */ jsxRuntime.jsx(chunkNJJTIL3U_cjs.Panel, { title: "Antenatal examination", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-3 md:grid-cols-4", children: [
178
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "space-y-1", children: [
179
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block font-medium", children: "Weight (kg)" }),
180
+ /* @__PURE__ */ jsxRuntime.jsx(
181
+ chunkTJHG5WHX_cjs.Input,
182
+ {
183
+ type: "number",
184
+ className: "h-8 text-xs",
185
+ value: a.exam.weightKg,
186
+ onChange: (e) => setAntenatalExam({ weightKg: Number(e.target.value) || 0 }),
187
+ disabled
188
+ }
189
+ )
190
+ ] }),
191
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "space-y-1", children: [
192
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block font-medium", children: "Height (cm)" }),
193
+ /* @__PURE__ */ jsxRuntime.jsx(
194
+ chunkTJHG5WHX_cjs.Input,
195
+ {
196
+ type: "number",
197
+ className: "h-8 text-xs",
198
+ value: a.exam.heightCm,
199
+ onChange: (e) => setAntenatalExam({ heightCm: Number(e.target.value) || 0 }),
200
+ disabled
201
+ }
202
+ )
203
+ ] }),
204
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "space-y-1", children: [
205
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block font-medium", children: "BMI" }),
206
+ /* @__PURE__ */ jsxRuntime.jsx(
207
+ chunkTJHG5WHX_cjs.Input,
208
+ {
209
+ type: "number",
210
+ step: 0.1,
211
+ className: "h-8 text-xs",
212
+ value: a.exam.bmi,
213
+ onChange: (e) => setAntenatalExam({ bmi: Number(e.target.value) || 0 }),
214
+ disabled
215
+ }
216
+ )
217
+ ] }),
218
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "space-y-1", children: [
219
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block font-medium", children: "BP" }),
220
+ /* @__PURE__ */ jsxRuntime.jsx(
221
+ chunkTJHG5WHX_cjs.Input,
222
+ {
223
+ placeholder: "e.g. 120/80",
224
+ className: "h-8 text-xs",
225
+ value: a.exam.bp,
226
+ onChange: (e) => setAntenatalExam({ bp: e.target.value }),
227
+ disabled
228
+ }
229
+ )
230
+ ] }),
231
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-end gap-2 pb-1", children: [
232
+ /* @__PURE__ */ jsxRuntime.jsx(
233
+ chunkPZBJYPWW_cjs.Checkbox,
234
+ {
235
+ checked: a.exam.pallor,
236
+ onCheckedChange: (c) => setAntenatalExam({ pallor: c === true }),
237
+ disabled
238
+ }
239
+ ),
240
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Pallor" })
241
+ ] }),
242
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-end gap-2 pb-1", children: [
243
+ /* @__PURE__ */ jsxRuntime.jsx(
244
+ chunkPZBJYPWW_cjs.Checkbox,
245
+ {
246
+ checked: a.exam.oedema,
247
+ onCheckedChange: (c) => setAntenatalExam({ oedema: c === true }),
248
+ disabled
249
+ }
250
+ ),
251
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Oedema" })
252
+ ] }),
253
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "space-y-1", children: [
254
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block font-medium", children: "Fundal height (cm)" }),
255
+ /* @__PURE__ */ jsxRuntime.jsx(
256
+ chunkTJHG5WHX_cjs.Input,
257
+ {
258
+ type: "number",
259
+ className: "h-8 text-xs",
260
+ value: a.exam.fundalHeightCm,
261
+ onChange: (e) => setAntenatalExam({ fundalHeightCm: Number(e.target.value) || 0 }),
262
+ disabled
263
+ }
264
+ )
265
+ ] }),
266
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "space-y-1", children: [
267
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block font-medium", children: "FHR (bpm)" }),
268
+ /* @__PURE__ */ jsxRuntime.jsx(
269
+ chunkTJHG5WHX_cjs.Input,
270
+ {
271
+ type: "number",
272
+ className: "h-8 text-xs",
273
+ value: a.exam.fhrBpm,
274
+ onChange: (e) => setAntenatalExam({ fhrBpm: Number(e.target.value) || 0 }),
275
+ disabled
276
+ }
277
+ )
278
+ ] }),
279
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "space-y-1", children: [
280
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block font-medium", children: "Presentation" }),
281
+ /* @__PURE__ */ jsxRuntime.jsxs(
282
+ chunk4KSZUIJE_cjs.Select,
283
+ {
284
+ value: a.exam.presentation === "" ? "none" : a.exam.presentation,
285
+ onValueChange: (v) => setAntenatalExam({
286
+ presentation: v === "none" ? "" : v
287
+ }),
288
+ disabled,
289
+ children: [
290
+ /* @__PURE__ */ jsxRuntime.jsx(chunk4KSZUIJE_cjs.SelectTrigger, { className: "h-8 text-xs", children: /* @__PURE__ */ jsxRuntime.jsx(chunk4KSZUIJE_cjs.SelectValue, { placeholder: "\u2014" }) }),
291
+ /* @__PURE__ */ jsxRuntime.jsxs(chunk4KSZUIJE_cjs.SelectContent, { children: [
292
+ /* @__PURE__ */ jsxRuntime.jsx(chunk4KSZUIJE_cjs.SelectItem, { value: "none", children: "\u2014" }),
293
+ /* @__PURE__ */ jsxRuntime.jsx(chunk4KSZUIJE_cjs.SelectItem, { value: "Cephalic", children: "Cephalic" }),
294
+ /* @__PURE__ */ jsxRuntime.jsx(chunk4KSZUIJE_cjs.SelectItem, { value: "Breech", children: "Breech" }),
295
+ /* @__PURE__ */ jsxRuntime.jsx(chunk4KSZUIJE_cjs.SelectItem, { value: "Other", children: "Other" })
296
+ ] })
297
+ ]
298
+ }
299
+ )
300
+ ] }),
301
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "space-y-1", children: [
302
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block font-medium", children: "Lie" }),
303
+ /* @__PURE__ */ jsxRuntime.jsxs(
304
+ chunk4KSZUIJE_cjs.Select,
305
+ {
306
+ value: a.exam.lie === "" ? "none" : a.exam.lie,
307
+ onValueChange: (v) => setAntenatalExam({ lie: v === "none" ? "" : v }),
308
+ disabled,
309
+ children: [
310
+ /* @__PURE__ */ jsxRuntime.jsx(chunk4KSZUIJE_cjs.SelectTrigger, { className: "h-8 text-xs", children: /* @__PURE__ */ jsxRuntime.jsx(chunk4KSZUIJE_cjs.SelectValue, { placeholder: "\u2014" }) }),
311
+ /* @__PURE__ */ jsxRuntime.jsxs(chunk4KSZUIJE_cjs.SelectContent, { children: [
312
+ /* @__PURE__ */ jsxRuntime.jsx(chunk4KSZUIJE_cjs.SelectItem, { value: "none", children: "\u2014" }),
313
+ /* @__PURE__ */ jsxRuntime.jsx(chunk4KSZUIJE_cjs.SelectItem, { value: "Longitudinal", children: "Longitudinal" }),
314
+ /* @__PURE__ */ jsxRuntime.jsx(chunk4KSZUIJE_cjs.SelectItem, { value: "Transverse", children: "Transverse" }),
315
+ /* @__PURE__ */ jsxRuntime.jsx(chunk4KSZUIJE_cjs.SelectItem, { value: "Oblique", children: "Oblique" })
316
+ ] })
317
+ ]
318
+ }
319
+ )
320
+ ] })
321
+ ] }) }),
322
+ /* @__PURE__ */ jsxRuntime.jsx(chunkNJJTIL3U_cjs.Panel, { title: "Investigations tracker", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-3 md:grid-cols-3", children: [
323
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "space-y-1", children: [
324
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block font-medium", children: "Blood Group / Rh" }),
325
+ /* @__PURE__ */ jsxRuntime.jsx(
326
+ chunkTJHG5WHX_cjs.Input,
327
+ {
328
+ className: "h-8 text-xs",
329
+ placeholder: "e.g. O+ve",
330
+ value: a.investigations.bloodGroup,
331
+ onChange: (e) => setAntenatalInv({ bloodGroup: e.target.value }),
332
+ disabled
333
+ }
334
+ )
335
+ ] }),
336
+ [
337
+ { key: "cbc", label: "CBC" },
338
+ { key: "tsh", label: "TSH" },
339
+ { key: "rbsOgtt", label: "RBS / OGTT" },
340
+ { key: "serology", label: "HIV / HBsAg / VDRL" },
341
+ { key: "urine", label: "Urine routine" }
342
+ ].map((row) => /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "space-y-1", children: [
343
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block font-medium", children: row.label }),
344
+ /* @__PURE__ */ jsxRuntime.jsxs(
345
+ chunk4KSZUIJE_cjs.Select,
346
+ {
347
+ value: a.investigations[row.key] === "" ? "none" : a.investigations[row.key],
348
+ onValueChange: (v) => setAntenatalInv({
349
+ [row.key]: v === "none" ? "" : v
350
+ }),
351
+ disabled,
352
+ children: [
353
+ /* @__PURE__ */ jsxRuntime.jsx(chunk4KSZUIJE_cjs.SelectTrigger, { className: "h-8 text-xs", children: /* @__PURE__ */ jsxRuntime.jsx(chunk4KSZUIJE_cjs.SelectValue, { placeholder: "\u2014" }) }),
354
+ /* @__PURE__ */ jsxRuntime.jsxs(chunk4KSZUIJE_cjs.SelectContent, { children: [
355
+ /* @__PURE__ */ jsxRuntime.jsx(chunk4KSZUIJE_cjs.SelectItem, { value: "none", children: "\u2014" }),
356
+ /* @__PURE__ */ jsxRuntime.jsx(chunk4KSZUIJE_cjs.SelectItem, { value: "Done", children: "Done" }),
357
+ /* @__PURE__ */ jsxRuntime.jsx(chunk4KSZUIJE_cjs.SelectItem, { value: "Pending", children: "Pending" }),
358
+ /* @__PURE__ */ jsxRuntime.jsx(chunk4KSZUIJE_cjs.SelectItem, { value: "Abnormal", children: "Abnormal" })
359
+ ] })
360
+ ]
361
+ }
362
+ )
363
+ ] }, row.key)),
364
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "space-y-1", children: [
365
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block font-medium", children: "USG" }),
366
+ /* @__PURE__ */ jsxRuntime.jsxs(
367
+ chunk4KSZUIJE_cjs.Select,
368
+ {
369
+ value: a.investigations.usg === "" ? "none" : a.investigations.usg,
370
+ onValueChange: (v) => setAntenatalInv({
371
+ usg: v === "none" ? "" : v
372
+ }),
373
+ disabled,
374
+ children: [
375
+ /* @__PURE__ */ jsxRuntime.jsx(chunk4KSZUIJE_cjs.SelectTrigger, { className: "h-8 text-xs", children: /* @__PURE__ */ jsxRuntime.jsx(chunk4KSZUIJE_cjs.SelectValue, { placeholder: "\u2014" }) }),
376
+ /* @__PURE__ */ jsxRuntime.jsxs(chunk4KSZUIJE_cjs.SelectContent, { children: [
377
+ /* @__PURE__ */ jsxRuntime.jsx(chunk4KSZUIJE_cjs.SelectItem, { value: "none", children: "\u2014" }),
378
+ /* @__PURE__ */ jsxRuntime.jsx(chunk4KSZUIJE_cjs.SelectItem, { value: "Dating", children: "Dating" }),
379
+ /* @__PURE__ */ jsxRuntime.jsx(chunk4KSZUIJE_cjs.SelectItem, { value: "NT", children: "NT" }),
380
+ /* @__PURE__ */ jsxRuntime.jsx(chunk4KSZUIJE_cjs.SelectItem, { value: "Anomaly", children: "Anomaly" }),
381
+ /* @__PURE__ */ jsxRuntime.jsx(chunk4KSZUIJE_cjs.SelectItem, { value: "Growth", children: "Growth" }),
382
+ /* @__PURE__ */ jsxRuntime.jsx(chunk4KSZUIJE_cjs.SelectItem, { value: "Pending", children: "Pending" })
383
+ ] })
384
+ ]
385
+ }
386
+ )
387
+ ] })
388
+ ] }) })
389
+ ] });
390
+ };
391
+ var DEFAULT_MENSTRUAL = {
392
+ menarche_age: 13,
393
+ cycle_length: 28,
394
+ flow_days: 4,
395
+ cycle_regular: true,
396
+ dysmenorrhea: 0
397
+ };
398
+ var DEFAULT_DRAFT = {
399
+ gpal: { G: 0, P: 0, A: 0, L: 0 },
400
+ lmp: "",
401
+ pregnancy_status: "not_pregnant",
402
+ eddUSG: "",
403
+ primaryEDD: "lmp",
404
+ complications: "",
405
+ outcome: null,
406
+ menstrual: { ...DEFAULT_MENSTRUAL }
407
+ };
408
+ function pad2(n) {
409
+ return String(n).padStart(2, "0");
410
+ }
411
+ function formatDdMmYyyy(iso) {
412
+ const [y, m, d] = iso.split("-");
413
+ if (!y || !m || !d) return iso;
414
+ return `${pad2(Number(d))}/${pad2(Number(m))}/${y}`;
415
+ }
416
+ function todayIso() {
417
+ const d = /* @__PURE__ */ new Date();
418
+ const y = d.getFullYear();
419
+ const m = pad2(d.getMonth() + 1);
420
+ const day = pad2(d.getDate());
421
+ return `${y}-${m}-${day}`;
422
+ }
423
+ function isValidIsoDate(val) {
424
+ if (!/^\d{4}-\d{2}-\d{2}$/.test(val)) return false;
425
+ const dt = /* @__PURE__ */ new Date(`${val}T00:00:00.000Z`);
426
+ return !Number.isNaN(dt.getTime());
427
+ }
428
+ function safeJsonParse(val) {
429
+ try {
430
+ return JSON.parse(val);
431
+ } catch {
432
+ return null;
433
+ }
434
+ }
435
+ function clampInt(val, min, max) {
436
+ if (!Number.isFinite(val)) return min;
437
+ return Math.max(min, Math.min(max, Math.trunc(val)));
438
+ }
439
+ function clampDysmenorrhea(val) {
440
+ const n = Math.round(Number(val));
441
+ if (!Number.isFinite(n)) return 0;
442
+ if (n <= 0) return 0;
443
+ if (n >= 3) return 3;
444
+ return n;
445
+ }
446
+ function isPregnancyStatus(x) {
447
+ return x === "not_pregnant" || x === "pregnant" || x === "unknown";
448
+ }
449
+ function normalizeMenstrual(raw) {
450
+ if (!raw || typeof raw !== "object" || Array.isArray(raw)) {
451
+ return { ...DEFAULT_MENSTRUAL };
452
+ }
453
+ const o = raw;
454
+ const num = (v, fb) => {
455
+ const n = Number(v);
456
+ return Number.isFinite(n) ? n : fb;
457
+ };
458
+ return {
459
+ menarche_age: num(o.menarche_age, DEFAULT_MENSTRUAL.menarche_age),
460
+ cycle_length: num(o.cycle_length, DEFAULT_MENSTRUAL.cycle_length),
461
+ flow_days: num(o.flow_days, DEFAULT_MENSTRUAL.flow_days),
462
+ cycle_regular: typeof o.cycle_regular === "boolean" ? o.cycle_regular : DEFAULT_MENSTRUAL.cycle_regular,
463
+ dysmenorrhea: clampDysmenorrhea(o.dysmenorrhea)
464
+ };
465
+ }
466
+ function parseLegacyString(input) {
467
+ const result = {};
468
+ const gpalMatch = input.match(/G(\d+)\s*P(\d+)\s*A(\d+)\s*L(\d+)/i);
469
+ if (gpalMatch) {
470
+ const [, g, p, a, l] = gpalMatch;
471
+ result.gpal = {
472
+ G: clampInt(Number(g), 0, 20),
473
+ P: clampInt(Number(p), 0, 20),
474
+ A: clampInt(Number(a), 0, 20),
475
+ L: clampInt(Number(l), 0, 20)
476
+ };
477
+ }
478
+ const lmpMatch = input.match(/LMP:\s*([^\n]+)/i);
479
+ if (lmpMatch?.[1]) result.lmp = lmpMatch[1].trim();
480
+ const eddUsgMatch = input.match(/EDD\s*\(USG\):\s*([^\n]+)/i);
481
+ if (eddUsgMatch?.[1]) result.eddUSG = eddUsgMatch[1].trim();
482
+ const primaryMatch = input.match(/Primary\s*EDD:\s*(lmp|usg)/i);
483
+ if (primaryMatch?.[1]) result.primaryEDD = primaryMatch[1].toLowerCase();
484
+ const compMatch = input.match(/Complications:\s*([^\n]+)/i);
485
+ if (compMatch?.[1]) result.complications = compMatch[1].trim();
486
+ return result;
487
+ }
488
+ function normalizeToDraft(value) {
489
+ if (!value) return { draft: { ...DEFAULT_DRAFT }, isNewEntry: true };
490
+ let parsed = value;
491
+ if (typeof value === "string") {
492
+ const json = safeJsonParse(value);
493
+ parsed = json ?? value;
494
+ }
495
+ const resolvePregnancyStatus = (o) => {
496
+ if (isPregnancyStatus(o?.pregnancy_status)) return o.pregnancy_status;
497
+ if (typeof o?.is_pregnant === "boolean") return o.is_pregnant ? "pregnant" : "not_pregnant";
498
+ return "not_pregnant";
499
+ };
500
+ if (parsed && typeof parsed === "object" && !Array.isArray(parsed) && "gpal" in parsed && parsed.gpal && typeof parsed.gpal === "object") {
501
+ const gpal = parsed.gpal ?? {};
502
+ const edd = parsed.edd ?? null;
503
+ const eddUSG = (edd && typeof edd === "object" ? edd.usg : void 0) ?? parsed.eddUSG ?? "";
504
+ const primaryEDD = (edd && typeof edd === "object" ? edd.primary : void 0) ?? parsed.primaryEDD ?? "lmp";
505
+ const lmp = parsed.lmp ?? "";
506
+ const complications = parsed.complications ?? "";
507
+ const outcome = parsed.outcome ?? null;
508
+ return {
509
+ isNewEntry: false,
510
+ draft: {
511
+ gpal: {
512
+ G: clampInt(Number(gpal.G ?? 0), 0, 20),
513
+ P: clampInt(Number(gpal.P ?? 0), 0, 20),
514
+ A: clampInt(Number(gpal.A ?? 0), 0, 20),
515
+ L: clampInt(Number(gpal.L ?? 0), 0, 20)
516
+ },
517
+ lmp: typeof lmp === "string" ? lmp : "",
518
+ pregnancy_status: resolvePregnancyStatus(parsed),
519
+ eddUSG: typeof eddUSG === "string" ? eddUSG : "",
520
+ primaryEDD: primaryEDD === "usg" ? "usg" : "lmp",
521
+ complications: typeof complications === "string" ? complications : "",
522
+ outcome: outcome && typeof outcome === "object" ? {
523
+ type: outcome.type ?? "",
524
+ date: typeof outcome.date === "string" ? outcome.date : "",
525
+ notes: typeof outcome.notes === "string" ? outcome.notes : "",
526
+ is_final: !!outcome.is_final
527
+ } : null,
528
+ menstrual: normalizeMenstrual(parsed.menstrual)
529
+ }
530
+ };
531
+ }
532
+ if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
533
+ const gpalFromFlat = {
534
+ G: clampInt(Number(parsed.G ?? parsed.g ?? 0), 0, 20),
535
+ P: clampInt(Number(parsed.P ?? parsed.p ?? 0), 0, 20),
536
+ A: clampInt(Number(parsed.A ?? parsed.a ?? 0), 0, 20),
537
+ L: clampInt(Number(parsed.L ?? parsed.l ?? 0), 0, 20)
538
+ };
539
+ return {
540
+ isNewEntry: false,
541
+ draft: {
542
+ ...DEFAULT_DRAFT,
543
+ gpal: gpalFromFlat,
544
+ lmp: typeof parsed.lmp === "string" ? parsed.lmp : "",
545
+ eddUSG: typeof parsed.eddUSG === "string" ? parsed.eddUSG : "",
546
+ primaryEDD: parsed.primaryEDD === "usg" ? "usg" : "lmp",
547
+ complications: typeof parsed.complications === "string" ? parsed.complications : "",
548
+ outcome: parsed.outcome && typeof parsed.outcome === "object" ? {
549
+ type: parsed.outcome.type ?? "",
550
+ date: typeof parsed.outcome.date === "string" ? parsed.outcome.date : "",
551
+ notes: typeof parsed.outcome.notes === "string" ? parsed.outcome.notes : "",
552
+ is_final: !!parsed.outcome.is_final
553
+ } : null,
554
+ pregnancy_status: resolvePregnancyStatus(parsed),
555
+ menstrual: normalizeMenstrual(parsed.menstrual)
556
+ }
557
+ };
558
+ }
559
+ if (typeof parsed === "string") {
560
+ const legacy = parseLegacyString(parsed);
561
+ return { isNewEntry: false, draft: { ...DEFAULT_DRAFT, ...legacy } };
562
+ }
563
+ return { draft: { ...DEFAULT_DRAFT }, isNewEntry: true };
564
+ }
565
+ function computeEddFromLmp(lmpIso) {
566
+ if (!isValidIsoDate(lmpIso)) return null;
567
+ const base = /* @__PURE__ */ new Date(`${lmpIso}T00:00:00.000Z`);
568
+ base.setUTCDate(base.getUTCDate() + 280);
569
+ const y = base.getUTCFullYear();
570
+ const m = pad2(base.getUTCMonth() + 1);
571
+ const d = pad2(base.getUTCDate());
572
+ return `${y}-${m}-${d}`;
573
+ }
574
+ function diffDaysUtc(fromIso, toIso) {
575
+ if (!isValidIsoDate(fromIso) || !isValidIsoDate(toIso)) return null;
576
+ const a = (/* @__PURE__ */ new Date(`${fromIso}T00:00:00.000Z`)).getTime();
577
+ const b = (/* @__PURE__ */ new Date(`${toIso}T00:00:00.000Z`)).getTime();
578
+ return Math.floor((b - a) / (1e3 * 60 * 60 * 24));
579
+ }
580
+ function computeGestationalAgeFromLmp(lmpIso, today) {
581
+ const days = diffDaysUtc(lmpIso, today);
582
+ if (days == null || days < 0) return null;
583
+ const weeks = Math.floor(days / 7);
584
+ const rem = days % 7;
585
+ return { weeks, days: rem, totalDays: days, basedOn: "lmp" };
586
+ }
587
+ function computeGestationalAgeFromUsgEdd(eddUsgIso, today) {
588
+ const daysToEdd = diffDaysUtc(today, eddUsgIso);
589
+ if (daysToEdd == null) return null;
590
+ const daysElapsed = 280 - daysToEdd;
591
+ if (daysElapsed < 0) return null;
592
+ const weeks = Math.floor(daysElapsed / 7);
593
+ const rem = daysElapsed % 7;
594
+ return { weeks, days: rem, totalDays: daysElapsed, basedOn: "usg" };
595
+ }
596
+ function computeTrimester(ga) {
597
+ if (!ga) return null;
598
+ if (ga.weeks < 13) return 1;
599
+ if (ga.weeks < 27) return 2;
600
+ if (ga.weeks < 42) return 3;
601
+ return null;
602
+ }
603
+ function buildStored(draft, today) {
604
+ const lmpIso = isValidIsoDate(draft.lmp) ? draft.lmp : null;
605
+ const eddUsgIso = isValidIsoDate(draft.eddUSG) ? draft.eddUSG : null;
606
+ if (draft.pregnancy_status !== "pregnant") {
607
+ return {
608
+ gpal: draft.gpal,
609
+ lmp: lmpIso,
610
+ is_pregnant: false,
611
+ pregnancy_status: draft.pregnancy_status,
612
+ edd: null,
613
+ gestationalAge: null,
614
+ trimester: null,
615
+ complications: draft.complications.trim() ? draft.complications : null,
616
+ outcome: draft.outcome,
617
+ menstrual: { ...draft.menstrual }
618
+ };
619
+ }
620
+ const eddFromLmp = lmpIso ? computeEddFromLmp(lmpIso) : null;
621
+ const gaFromLmp = lmpIso ? computeGestationalAgeFromLmp(lmpIso, today) : null;
622
+ const gaFromUsg = eddUsgIso ? computeGestationalAgeFromUsgEdd(eddUsgIso, today) : null;
623
+ const primary = draft.primaryEDD;
624
+ const gaPrimary = primary === "usg" && gaFromUsg ? gaFromUsg : gaFromLmp ? gaFromLmp : null;
625
+ return {
626
+ gpal: draft.gpal,
627
+ lmp: lmpIso,
628
+ is_pregnant: true,
629
+ pregnancy_status: "pregnant",
630
+ edd: { lmp: eddFromLmp, usg: eddUsgIso, primary },
631
+ gestationalAge: gaPrimary,
632
+ trimester: computeTrimester(gaPrimary),
633
+ complications: draft.complications.trim() ? draft.complications : null,
634
+ outcome: draft.outcome,
635
+ menstrual: { ...draft.menstrual }
636
+ };
637
+ }
638
+ function stripGpalSuffix(label) {
639
+ return label.replace(/\s*\(G-P-A-L\)\s*$/i, "").trim();
640
+ }
641
+ function useDebouncedCommit(commit, delayMs) {
642
+ const timeoutRef = react.useRef(null);
643
+ const latestCommit = react.useRef(commit);
644
+ latestCommit.current = commit;
645
+ react.useEffect(() => {
646
+ return () => {
647
+ if (timeoutRef.current != null) window.clearTimeout(timeoutRef.current);
648
+ };
649
+ }, []);
650
+ return (next) => {
651
+ if (timeoutRef.current != null) window.clearTimeout(timeoutRef.current);
652
+ timeoutRef.current = window.setTimeout(() => latestCommit.current(next), delayMs);
653
+ };
654
+ }
655
+ var ObstetricHistoryWidget = ({ fieldId }) => {
656
+ const { fieldDef, value, setValue, disabled } = chunkIDSBJOFY_cjs.useField(fieldId);
657
+ const [{ draft, isNewEntry }, setDraftState] = react.useState(() => normalizeToDraft(value));
658
+ const [lmpError, setLmpError] = react.useState(null);
659
+ const [primaryEddError, setPrimaryEddError] = react.useState(null);
660
+ const [activeGpalKey, setActiveGpalKey] = react.useState(null);
661
+ const refs = {
662
+ G: react.useRef(null),
663
+ P: react.useRef(null),
664
+ A: react.useRef(null),
665
+ L: react.useRef(null)
666
+ };
667
+ const today = react.useMemo(() => todayIso(), []);
668
+ react.useEffect(() => {
669
+ const next = normalizeToDraft(value);
670
+ const currStr = JSON.stringify(buildStored(draft, today));
671
+ const nextStr = JSON.stringify(buildStored(next.draft, today));
672
+ if (currStr !== nextStr) setDraftState(next);
673
+ }, [value]);
674
+ const commitImmediate = (nextDraft) => {
675
+ const stored = buildStored(nextDraft, today);
676
+ setValue(JSON.stringify(stored));
677
+ };
678
+ const commitDebounced = useDebouncedCommit(commitImmediate, 500);
679
+ const storedComputed = react.useMemo(() => buildStored(draft, today), [draft, today]);
680
+ const isPregnant = draft.pregnancy_status === "pregnant";
681
+ const rightPanelEnabled = isPregnant && (!!storedComputed.lmp || !!storedComputed.edd?.usg);
682
+ const headerLabel = fieldDef?.label ? stripGpalSuffix(fieldDef.label) : "Obstetric History";
683
+ const setDraft = (updater, persist) => {
684
+ setDraftState((prev) => {
685
+ const nextDraft = updater(prev.draft);
686
+ const nextState = { ...prev, draft: nextDraft };
687
+ if (persist === "immediate") commitImmediate(nextDraft);
688
+ else commitDebounced(nextDraft);
689
+ return nextState;
690
+ });
691
+ };
692
+ const sanitizeGpalInput = (raw) => {
693
+ const digits = raw.replace(/[^\d]/g, "").slice(0, 2);
694
+ if (!digits) return 0;
695
+ return clampInt(Number(digits), 0, 20);
696
+ };
697
+ const handleGpalChange = (key, raw) => {
698
+ const prevWasEmpty = draft.gpal[key] === 0 && activeGpalKey === key;
699
+ const val = sanitizeGpalInput(raw);
700
+ setDraft((prev) => ({ ...prev, gpal: { ...prev.gpal, [key]: val } }), "debounce");
701
+ const digitsOnly = raw.replace(/[^\d]/g, "");
702
+ const shouldAutoTab = digitsOnly.length === 1 && (prevWasEmpty || String(draft.gpal[key]).length >= 1);
703
+ if (shouldAutoTab) {
704
+ const order = ["G", "P", "A", "L"];
705
+ const idx = order.indexOf(key);
706
+ const nextKey = order[idx + 1];
707
+ if (nextKey) refs[nextKey].current?.focus();
708
+ }
709
+ };
710
+ const handleLmpChange = (nextIso) => {
711
+ setPrimaryEddError(null);
712
+ if (nextIso && nextIso > today) {
713
+ setLmpError("LMP cannot be in the future");
714
+ return;
715
+ }
716
+ setLmpError(null);
717
+ setDraft((prev) => ({ ...prev, lmp: nextIso }), "debounce");
718
+ };
719
+ const handlePregStatus = (status) => {
720
+ setLmpError(null);
721
+ setPrimaryEddError(null);
722
+ setDraft((prev) => ({ ...prev, pregnancy_status: status }), "immediate");
723
+ };
724
+ const setMenstrualPatch = (patch) => {
725
+ setDraft((prev) => ({ ...prev, menstrual: { ...prev.menstrual, ...patch } }), "debounce");
726
+ };
727
+ const handleEddUsgChange = (nextIso) => {
728
+ setPrimaryEddError(null);
729
+ setDraft((prev) => ({ ...prev, eddUSG: nextIso }), "debounce");
730
+ };
731
+ const handlePrimaryEdd = (next) => {
732
+ if (next === "usg" && !isValidIsoDate(draft.eddUSG)) {
733
+ setPrimaryEddError("Please enter EDD from USG first");
734
+ return;
735
+ }
736
+ setPrimaryEddError(null);
737
+ setDraft((prev) => ({ ...prev, primaryEDD: next }), "immediate");
738
+ };
739
+ const ensureOutcome = () => {
740
+ if (draft.outcome) return;
741
+ setDraft(
742
+ (prev) => ({
743
+ ...prev,
744
+ outcome: { type: "", date: "", notes: "", is_final: false }
745
+ }),
746
+ "immediate"
747
+ );
748
+ };
749
+ const clearOutcome = () => {
750
+ setDraft((prev) => ({ ...prev, outcome: null }), "immediate");
751
+ };
752
+ const updateOutcomeImmediate = (updater) => {
753
+ setDraft(
754
+ (prev) => {
755
+ const o = prev.outcome ?? { type: "", date: "", notes: "", is_final: false };
756
+ return { ...prev, outcome: updater(o) };
757
+ },
758
+ "immediate"
759
+ );
760
+ };
761
+ const updateOutcomeNotesDebounced = (notes) => {
762
+ setDraft(
763
+ (prev) => {
764
+ const o = prev.outcome ?? { type: "", date: "", notes: "", is_final: false };
765
+ return { ...prev, outcome: { ...o, notes } };
766
+ },
767
+ "debounce"
768
+ );
769
+ };
770
+ return /* @__PURE__ */ jsxRuntime.jsxs(chunkJE6VXRWW_cjs.Card, { className: chunkFHHISVCH_cjs.cn("w-full", disabled && "opacity-70 pointer-events-none"), children: [
771
+ /* @__PURE__ */ jsxRuntime.jsx(chunkJE6VXRWW_cjs.CardHeader, { className: "pb-3", children: /* @__PURE__ */ jsxRuntime.jsx(chunkJE6VXRWW_cjs.CardTitle, { className: "text-base font-semibold", children: headerLabel }) }),
772
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkJE6VXRWW_cjs.CardContent, { className: "space-y-4", children: [
773
+ isNewEntry && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-md border border-blue-200 bg-blue-50 px-3 py-2 text-xs text-blue-900", children: "No previous maternity episode found. Please fill obstetric details to start tracking." }),
774
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4 items-start", children: [
775
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
776
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-lg border bg-white p-4", children: [
777
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs font-medium text-muted-foreground mb-2", children: "G-P-A-L" }),
778
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-3", children: ["G", "P", "A", "L"].map((k) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
779
+ /* @__PURE__ */ jsxRuntime.jsx(chunkJMGUUFOJ_cjs.Label, { htmlFor: `${fieldId}-gpal-${k}`, className: "text-[11px] text-muted-foreground", children: k }),
780
+ /* @__PURE__ */ jsxRuntime.jsx(
781
+ chunkTJHG5WHX_cjs.Input,
782
+ {
783
+ ref: refs[k],
784
+ id: `${fieldId}-gpal-${k}`,
785
+ inputMode: "numeric",
786
+ pattern: "\\d*",
787
+ maxLength: 2,
788
+ value: String(draft.gpal[k] ?? 0),
789
+ onFocus: () => {
790
+ setActiveGpalKey(k);
791
+ const el = refs[k].current;
792
+ if (el) el.select();
793
+ },
794
+ onChange: (e) => handleGpalChange(k, e.target.value),
795
+ onKeyDown: (e) => {
796
+ const allowed = ["Backspace", "Delete", "ArrowLeft", "ArrowRight", "Tab", "Home", "End"];
797
+ if (allowed.includes(e.key)) return;
798
+ if (/^\d$/.test(e.key)) return;
799
+ e.preventDefault();
800
+ },
801
+ className: "text-center text-base"
802
+ }
803
+ )
804
+ ] }, k)) })
805
+ ] }),
806
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-3", children: [
807
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 rounded-lg border bg-white p-4", children: [
808
+ /* @__PURE__ */ jsxRuntime.jsx(chunkJMGUUFOJ_cjs.Label, { htmlFor: `${fieldId}-lmp`, className: chunkFHHISVCH_cjs.cn("text-sm", lmpError && "text-red-600"), children: "Last Menstrual Period (LMP)" }),
809
+ /* @__PURE__ */ jsxRuntime.jsx(
810
+ chunkTJHG5WHX_cjs.Input,
811
+ {
812
+ id: `${fieldId}-lmp`,
813
+ type: "date",
814
+ max: today,
815
+ value: draft.lmp,
816
+ onChange: (e) => handleLmpChange(e.target.value),
817
+ className: chunkFHHISVCH_cjs.cn(lmpError && "border-red-500")
818
+ }
819
+ ),
820
+ lmpError && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-red-600", children: lmpError })
821
+ ] }),
822
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 rounded-lg border bg-white p-4 min-w-0", children: [
823
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm font-medium", children: "Pregnancy Status" }),
824
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 flex-wrap gap-2", children: [
825
+ /* @__PURE__ */ jsxRuntime.jsx(
826
+ "button",
827
+ {
828
+ type: "button",
829
+ onClick: () => handlePregStatus("not_pregnant"),
830
+ className: chunkFHHISVCH_cjs.cn(
831
+ "shrink-0 rounded-full border px-3 py-1.5 text-[11px] font-medium transition-colors",
832
+ draft.pregnancy_status === "not_pregnant" ? "border-green-600 bg-green-600 text-white" : "border-slate-300 bg-white text-slate-700 hover:bg-slate-50"
833
+ ),
834
+ children: "Not Pregnant"
835
+ }
836
+ ),
837
+ /* @__PURE__ */ jsxRuntime.jsx(
838
+ "button",
839
+ {
840
+ type: "button",
841
+ onClick: () => handlePregStatus("pregnant"),
842
+ className: chunkFHHISVCH_cjs.cn(
843
+ "shrink-0 rounded-full border px-3 py-1.5 text-[11px] font-medium transition-colors",
844
+ draft.pregnancy_status === "pregnant" ? "border-green-600 bg-green-600 text-white" : "border-slate-300 bg-white text-slate-700 hover:bg-slate-50"
845
+ ),
846
+ children: "Pregnant"
847
+ }
848
+ ),
849
+ /* @__PURE__ */ jsxRuntime.jsx(
850
+ "button",
851
+ {
852
+ type: "button",
853
+ onClick: () => handlePregStatus("unknown"),
854
+ className: chunkFHHISVCH_cjs.cn(
855
+ "shrink-0 rounded-full border px-3 py-1.5 text-[11px] font-medium transition-colors",
856
+ draft.pregnancy_status === "unknown" ? "border-amber-500 bg-amber-500 text-white" : "border-slate-300 bg-white text-slate-700 hover:bg-slate-50"
857
+ ),
858
+ children: "Unknown"
859
+ }
860
+ )
861
+ ] })
862
+ ] })
863
+ ] }),
864
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-lg border bg-white p-4", children: [
865
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs font-medium text-muted-foreground mb-3", children: "Menstrual" }),
866
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-3 sm:grid-cols-4", children: [
867
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "space-y-1", children: [
868
+ /* @__PURE__ */ jsxRuntime.jsx(chunkJMGUUFOJ_cjs.Label, { htmlFor: `${fieldId}-menarche`, className: "text-[11px] text-muted-foreground", children: "Menarche (age)" }),
869
+ /* @__PURE__ */ jsxRuntime.jsx(
870
+ chunkTJHG5WHX_cjs.Input,
871
+ {
872
+ id: `${fieldId}-menarche`,
873
+ type: "number",
874
+ min: 5,
875
+ max: 25,
876
+ value: draft.menstrual.menarche_age,
877
+ onChange: (e) => setMenstrualPatch({ menarche_age: Number(e.target.value) || 0 })
878
+ }
879
+ )
880
+ ] }),
881
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "space-y-1", children: [
882
+ /* @__PURE__ */ jsxRuntime.jsx(chunkJMGUUFOJ_cjs.Label, { htmlFor: `${fieldId}-cycle-length`, className: "text-[11px] text-muted-foreground", children: "Cycle (days)" }),
883
+ /* @__PURE__ */ jsxRuntime.jsx(
884
+ chunkTJHG5WHX_cjs.Input,
885
+ {
886
+ id: `${fieldId}-cycle-length`,
887
+ type: "number",
888
+ min: 0,
889
+ max: 120,
890
+ value: draft.menstrual.cycle_length,
891
+ onChange: (e) => setMenstrualPatch({ cycle_length: Number(e.target.value) || 0 })
892
+ }
893
+ )
894
+ ] }),
895
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "space-y-1", children: [
896
+ /* @__PURE__ */ jsxRuntime.jsx(chunkJMGUUFOJ_cjs.Label, { htmlFor: `${fieldId}-flow-days`, className: "text-[11px] text-muted-foreground", children: "Flow (days)" }),
897
+ /* @__PURE__ */ jsxRuntime.jsx(
898
+ chunkTJHG5WHX_cjs.Input,
899
+ {
900
+ id: `${fieldId}-flow-days`,
901
+ type: "number",
902
+ min: 0,
903
+ max: 30,
904
+ value: draft.menstrual.flow_days,
905
+ onChange: (e) => setMenstrualPatch({ flow_days: Number(e.target.value) || 0 })
906
+ }
907
+ )
908
+ ] }),
909
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "space-y-1", children: [
910
+ /* @__PURE__ */ jsxRuntime.jsx(chunkJMGUUFOJ_cjs.Label, { className: "text-[11px] text-muted-foreground", children: "Dysmenorrhea" }),
911
+ /* @__PURE__ */ jsxRuntime.jsxs(
912
+ "select",
913
+ {
914
+ className: "h-9 w-full rounded-md border border-input bg-background px-2 text-sm",
915
+ value: String(draft.menstrual.dysmenorrhea),
916
+ onChange: (e) => setMenstrualPatch({
917
+ dysmenorrhea: clampDysmenorrhea(Number(e.target.value))
918
+ }),
919
+ children: [
920
+ /* @__PURE__ */ jsxRuntime.jsx("option", { value: "0", children: "0 \u2014 none" }),
921
+ /* @__PURE__ */ jsxRuntime.jsx("option", { value: "1", children: "1 \u2014 mild" }),
922
+ /* @__PURE__ */ jsxRuntime.jsx("option", { value: "2", children: "2 \u2014 moderate" }),
923
+ /* @__PURE__ */ jsxRuntime.jsx("option", { value: "3", children: "3 \u2014 severe" })
924
+ ]
925
+ }
926
+ )
927
+ ] })
928
+ ] }),
929
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "mt-3 flex items-center gap-2 text-sm", children: [
930
+ /* @__PURE__ */ jsxRuntime.jsx(
931
+ "input",
932
+ {
933
+ type: "checkbox",
934
+ checked: draft.menstrual.cycle_regular,
935
+ onChange: (e) => setMenstrualPatch({ cycle_regular: e.target.checked })
936
+ }
937
+ ),
938
+ "Regular cycle"
939
+ ] })
940
+ ] }),
941
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 rounded-lg border bg-white p-4", children: [
942
+ /* @__PURE__ */ jsxRuntime.jsx(chunkJMGUUFOJ_cjs.Label, { htmlFor: `${fieldId}-complications`, className: "text-sm", children: "Previous Pregnancy Complications" }),
943
+ /* @__PURE__ */ jsxRuntime.jsx(
944
+ chunkPHADAQSH_cjs.Textarea,
945
+ {
946
+ id: `${fieldId}-complications`,
947
+ placeholder: "e.g. Pre-eclampsia, Gestational diabetes, C-section, etc.",
948
+ value: draft.complications,
949
+ onChange: (e) => setDraft((prev) => ({ ...prev, complications: e.target.value }), "debounce"),
950
+ className: "min-h-[140px]"
951
+ }
952
+ )
953
+ ] })
954
+ ] }),
955
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-lg border bg-white p-4 min-h-[260px]", children: [
956
+ !isPregnant && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-full flex items-center justify-center text-center text-sm text-muted-foreground px-6 py-10", children: draft.pregnancy_status === "unknown" ? "Pregnancy status unknown \u2014 confirm with UPT/USG to enable gestational age and EDD." : 'Only for "Pregnant Women" and enter LMP to calculate gestational age and EDD' }),
957
+ isPregnant && !rightPanelEnabled && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-full flex items-center justify-center text-center text-sm text-muted-foreground px-6 py-10", children: "Enter LMP and/or EDD (USG) to enable gestational age and EDD calculations." }),
958
+ isPregnant && rightPanelEnabled && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
959
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-lg border p-4", children: [
960
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
961
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm font-semibold text-blue-700", children: "Expected Delivery Date (EDD)" }),
962
+ storedComputed.gestationalAge?.basedOn && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "rounded-full bg-blue-100 px-2 py-1 text-[11px] text-blue-700", children: [
963
+ "Based on ",
964
+ storedComputed.gestationalAge.basedOn.toUpperCase()
965
+ ] })
966
+ ] }),
967
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-3", children: [
968
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs text-muted-foreground", children: "Gestational Age:" }),
969
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-lg font-semibold", children: storedComputed.gestationalAge ? `${storedComputed.gestationalAge.weeks} weeks ${storedComputed.gestationalAge.days} days` : "\u2014" }),
970
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs text-muted-foreground mt-1", children: storedComputed.trimester ? `Trimester ${storedComputed.trimester}` : "Trimester \u2014" })
971
+ ] })
972
+ ] }),
973
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
974
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs text-muted-foreground", children: "EDD (from LMP):" }),
975
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-md border bg-muted/20 px-3 py-2 text-sm font-semibold", children: storedComputed.edd?.lmp ? formatDdMmYyyy(storedComputed.edd.lmp) : "\u2014" })
976
+ ] }),
977
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
978
+ /* @__PURE__ */ jsxRuntime.jsx(chunkJMGUUFOJ_cjs.Label, { htmlFor: `${fieldId}-edd-usg`, className: "text-sm", children: "EDD (from USG):" }),
979
+ /* @__PURE__ */ jsxRuntime.jsx(
980
+ chunkTJHG5WHX_cjs.Input,
981
+ {
982
+ id: `${fieldId}-edd-usg`,
983
+ type: "date",
984
+ value: draft.eddUSG,
985
+ onChange: (e) => handleEddUsgChange(e.target.value)
986
+ }
987
+ )
988
+ ] }),
989
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
990
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm font-medium", children: "Primary EDD:" }),
991
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
992
+ /* @__PURE__ */ jsxRuntime.jsx(
993
+ "button",
994
+ {
995
+ type: "button",
996
+ onClick: () => handlePrimaryEdd("lmp"),
997
+ className: chunkFHHISVCH_cjs.cn(
998
+ "flex-1 rounded-md border px-3 py-2 text-sm",
999
+ draft.primaryEDD === "lmp" ? "bg-blue-600 text-white border-blue-600" : "bg-white"
1000
+ ),
1001
+ children: "LMP"
1002
+ }
1003
+ ),
1004
+ /* @__PURE__ */ jsxRuntime.jsx(
1005
+ "button",
1006
+ {
1007
+ type: "button",
1008
+ onClick: () => handlePrimaryEdd("usg"),
1009
+ className: chunkFHHISVCH_cjs.cn(
1010
+ "flex-1 rounded-md border px-3 py-2 text-sm",
1011
+ draft.primaryEDD === "usg" ? "bg-blue-600 text-white border-blue-600" : "bg-white"
1012
+ ),
1013
+ children: "USG"
1014
+ }
1015
+ )
1016
+ ] }),
1017
+ primaryEddError && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-red-600", children: primaryEddError })
1018
+ ] })
1019
+ ] })
1020
+ ] })
1021
+ ] }),
1022
+ /* @__PURE__ */ jsxRuntime.jsx(AntenatalPanels, {}),
1023
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-lg border bg-yellow-50/60 p-4", children: [
1024
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
1025
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm font-semibold", children: "Pregnancy Outcome (Optional - To Close Episode)" }),
1026
+ draft.outcome && /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: "text-sm text-red-600 hover:underline", onClick: clearOutcome, children: "Clear" })
1027
+ ] }),
1028
+ !draft.outcome && /* @__PURE__ */ jsxRuntime.jsx(
1029
+ "button",
1030
+ {
1031
+ type: "button",
1032
+ onClick: ensureOutcome,
1033
+ className: "mt-3 w-full rounded-md border border-yellow-300 bg-yellow-100 px-3 py-2 text-sm font-medium",
1034
+ children: "+ Add Pregnancy Outcome"
1035
+ }
1036
+ ),
1037
+ draft.outcome && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-4 space-y-3", children: [
1038
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
1039
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkJMGUUFOJ_cjs.Label, { className: "text-sm", children: [
1040
+ "Outcome Type ",
1041
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-red-500", children: "*" })
1042
+ ] }),
1043
+ /* @__PURE__ */ jsxRuntime.jsxs(
1044
+ "select",
1045
+ {
1046
+ className: "w-full rounded-md border px-3 py-2 text-sm bg-white",
1047
+ value: draft.outcome.type,
1048
+ onChange: (e) => updateOutcomeImmediate((o) => ({ ...o, type: e.target.value })),
1049
+ children: [
1050
+ /* @__PURE__ */ jsxRuntime.jsx("option", { value: "", children: "Select outcome..." }),
1051
+ /* @__PURE__ */ jsxRuntime.jsx("option", { value: "delivery", children: "Normal Delivery" }),
1052
+ /* @__PURE__ */ jsxRuntime.jsx("option", { value: "cesarean", children: "Cesarean Section" }),
1053
+ /* @__PURE__ */ jsxRuntime.jsx("option", { value: "abortion", children: "Abortion" }),
1054
+ /* @__PURE__ */ jsxRuntime.jsx("option", { value: "miscarriage", children: "Miscarriage" }),
1055
+ /* @__PURE__ */ jsxRuntime.jsx("option", { value: "stillbirth", children: "Stillbirth" })
1056
+ ]
1057
+ }
1058
+ )
1059
+ ] }),
1060
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
1061
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkJMGUUFOJ_cjs.Label, { htmlFor: `${fieldId}-outcome-date`, className: "text-sm", children: [
1062
+ "Date ",
1063
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-red-500", children: "*" })
1064
+ ] }),
1065
+ /* @__PURE__ */ jsxRuntime.jsx(
1066
+ chunkTJHG5WHX_cjs.Input,
1067
+ {
1068
+ id: `${fieldId}-outcome-date`,
1069
+ type: "date",
1070
+ max: today,
1071
+ value: draft.outcome.date,
1072
+ onChange: (e) => updateOutcomeImmediate((o) => ({ ...o, date: e.target.value }))
1073
+ }
1074
+ ),
1075
+ draft.outcome.date && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-xs text-muted-foreground", children: [
1076
+ "Selected: ",
1077
+ formatDdMmYyyy(draft.outcome.date)
1078
+ ] })
1079
+ ] }),
1080
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
1081
+ /* @__PURE__ */ jsxRuntime.jsx(chunkJMGUUFOJ_cjs.Label, { htmlFor: `${fieldId}-outcome-notes`, className: "text-sm", children: "Notes" }),
1082
+ /* @__PURE__ */ jsxRuntime.jsx(
1083
+ chunkPHADAQSH_cjs.Textarea,
1084
+ {
1085
+ id: `${fieldId}-outcome-notes`,
1086
+ placeholder: "e.g. Normal vaginal delivery, healthy baby boy, 3.2kg",
1087
+ value: draft.outcome.notes,
1088
+ onChange: (e) => updateOutcomeNotesDebounced(e.target.value),
1089
+ className: "min-h-[90px]"
1090
+ }
1091
+ )
1092
+ ] }),
1093
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-md border bg-white p-3", children: [
1094
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-sm", children: [
1095
+ /* @__PURE__ */ jsxRuntime.jsx(
1096
+ "input",
1097
+ {
1098
+ type: "checkbox",
1099
+ checked: !!draft.outcome.is_final,
1100
+ onChange: (e) => updateOutcomeImmediate((o) => ({ ...o, is_final: e.target.checked }))
1101
+ }
1102
+ ),
1103
+ "Close this pregnancy episode"
1104
+ ] }),
1105
+ draft.outcome.is_final && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-3 rounded-md border border-red-300 bg-red-50 px-3 py-2 text-xs text-red-800", children: "Checking this will mark the pregnancy as completed and is intended to close the maternity episode." })
1106
+ ] })
1107
+ ] })
1108
+ ] })
1109
+ ] })
1110
+ ] });
1111
+ };
1112
+
1113
+ exports.ObstetricHistoryWidget = ObstetricHistoryWidget;
1114
+ //# sourceMappingURL=ObstetricHistoryWidget-GC63CB3U.cjs.map
1115
+ //# sourceMappingURL=ObstetricHistoryWidget-GC63CB3U.cjs.map