formanitor 0.2.6 → 0.2.8

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 (225) hide show
  1. package/dist/{AddInvestigationWidget-MSY4VSQZ.cjs → AddInvestigationWidget-4AZ7HTJY.cjs} +7 -7
  2. package/dist/{AddInvestigationWidget-MSY4VSQZ.cjs.map → AddInvestigationWidget-4AZ7HTJY.cjs.map} +1 -1
  3. package/dist/{AddInvestigationWidget-A2JS2ETO.mjs → AddInvestigationWidget-MSW4FUHR.mjs} +3 -3
  4. package/dist/{AddInvestigationWidget-A2JS2ETO.mjs.map → AddInvestigationWidget-MSW4FUHR.mjs.map} +1 -1
  5. package/dist/{AddMedicationWidget-B5RXRYBK.mjs → AddMedicationWidget-OEULICY3.mjs} +7 -5
  6. package/dist/AddMedicationWidget-OEULICY3.mjs.map +1 -0
  7. package/dist/AddMedicationWidget-UDVVDKHR.cjs +34 -0
  8. package/dist/AddMedicationWidget-UDVVDKHR.cjs.map +1 -0
  9. package/dist/{AddProcedureWidget-YW4EV66W.mjs → AddProcedureWidget-7IZ7SY7N.mjs} +3 -3
  10. package/dist/{AddProcedureWidget-YW4EV66W.mjs.map → AddProcedureWidget-7IZ7SY7N.mjs.map} +1 -1
  11. package/dist/{AddProcedureWidget-QUNDIZGR.cjs → AddProcedureWidget-NQCN5FBQ.cjs} +6 -6
  12. package/dist/{AddProcedureWidget-QUNDIZGR.cjs.map → AddProcedureWidget-NQCN5FBQ.cjs.map} +1 -1
  13. package/dist/{BiometryIolWorkupWidget-FWO3IWTF.cjs → BiometryIolWorkupWidget-NTYCAGGX.cjs} +6 -6
  14. package/dist/{BiometryIolWorkupWidget-FWO3IWTF.cjs.map → BiometryIolWorkupWidget-NTYCAGGX.cjs.map} +1 -1
  15. package/dist/{BiometryIolWorkupWidget-5RZP34FF.mjs → BiometryIolWorkupWidget-ZJRUTQZK.mjs} +4 -4
  16. package/dist/{BiometryIolWorkupWidget-5RZP34FF.mjs.map → BiometryIolWorkupWidget-ZJRUTQZK.mjs.map} +1 -1
  17. package/dist/BpeChartWidget-OL5WKSQG.mjs +7 -0
  18. package/dist/{BpeChartWidget-HATASHAC.mjs.map → BpeChartWidget-OL5WKSQG.mjs.map} +1 -1
  19. package/dist/BpeChartWidget-WYDP2BVS.cjs +28 -0
  20. package/dist/{BpeChartWidget-VZRH7M7L.cjs.map → BpeChartWidget-WYDP2BVS.cjs.map} +1 -1
  21. package/dist/{DateTimeWidget-RJ7SATVA.cjs → DateTimeWidget-3E6N4NOK.cjs} +6 -6
  22. package/dist/{DateTimeWidget-RJ7SATVA.cjs.map → DateTimeWidget-3E6N4NOK.cjs.map} +1 -1
  23. package/dist/{DateTimeWidget-KRX4O6OD.mjs → DateTimeWidget-TAHCCYCX.mjs} +4 -4
  24. package/dist/{DateTimeWidget-KRX4O6OD.mjs.map → DateTimeWidget-TAHCCYCX.mjs.map} +1 -1
  25. package/dist/{DateWidget-JEKDKPNS.mjs → DateWidget-5LFXAWRK.mjs} +4 -4
  26. package/dist/{DateWidget-JEKDKPNS.mjs.map → DateWidget-5LFXAWRK.mjs.map} +1 -1
  27. package/dist/{DateWidget-T7IQUWEA.cjs → DateWidget-HIYZ3TY7.cjs} +6 -6
  28. package/dist/{DateWidget-T7IQUWEA.cjs.map → DateWidget-HIYZ3TY7.cjs.map} +1 -1
  29. package/dist/{DentalChartWidget-P2YPKAMO.mjs → DentalChartWidget-4ZUVMMRX.mjs} +4 -4
  30. package/dist/{DentalChartWidget-LYLOFWZU.cjs.map → DentalChartWidget-4ZUVMMRX.mjs.map} +1 -1
  31. package/dist/DentalChartWidget-J6CHCPWI.cjs +21 -0
  32. package/dist/{DentalChartWidget-P2YPKAMO.mjs.map → DentalChartWidget-J6CHCPWI.cjs.map} +1 -1
  33. package/dist/{DiagnosisTextareaWidget-XJ47OZYH.cjs → DiagnosisTextareaWidget-2N5DP2CP.cjs} +7 -7
  34. package/dist/{DiagnosisTextareaWidget-XJ47OZYH.cjs.map → DiagnosisTextareaWidget-2N5DP2CP.cjs.map} +1 -1
  35. package/dist/{DiagnosisTextareaWidget-6UCYCCSB.mjs → DiagnosisTextareaWidget-OXOXANMF.mjs} +4 -4
  36. package/dist/{DiagnosisTextareaWidget-6UCYCCSB.mjs.map → DiagnosisTextareaWidget-OXOXANMF.mjs.map} +1 -1
  37. package/dist/{DifferentialDiagnosisWidget-XESNHNQQ.cjs → DifferentialDiagnosisWidget-RLGTZFGB.cjs} +4 -4
  38. package/dist/{DifferentialDiagnosisWidget-XESNHNQQ.cjs.map → DifferentialDiagnosisWidget-RLGTZFGB.cjs.map} +1 -1
  39. package/dist/{DifferentialDiagnosisWidget-IZEZVW5F.mjs → DifferentialDiagnosisWidget-XY7CJ5OG.mjs} +3 -3
  40. package/dist/{DifferentialDiagnosisWidget-IZEZVW5F.mjs.map → DifferentialDiagnosisWidget-XY7CJ5OG.mjs.map} +1 -1
  41. package/dist/{DischargeMedicationOrdersWidget-KA3HANHE.mjs → DischargeMedicationOrdersWidget-JXLQWPCP.mjs} +4 -4
  42. package/dist/{DischargeMedicationOrdersWidget-KA3HANHE.mjs.map → DischargeMedicationOrdersWidget-JXLQWPCP.mjs.map} +1 -1
  43. package/dist/{DischargeMedicationOrdersWidget-WRJRYL6F.cjs → DischargeMedicationOrdersWidget-X3ZVW3FP.cjs} +7 -7
  44. package/dist/{DischargeMedicationOrdersWidget-WRJRYL6F.cjs.map → DischargeMedicationOrdersWidget-X3ZVW3FP.cjs.map} +1 -1
  45. package/dist/{EditableTable-VZ66IXYI.mjs → EditableTable-ECNOISL3.mjs} +3 -3
  46. package/dist/{EditableTable-VZ66IXYI.mjs.map → EditableTable-ECNOISL3.mjs.map} +1 -1
  47. package/dist/{EditableTable-OW5LC6OC.cjs → EditableTable-OFVKAYRA.cjs} +4 -4
  48. package/dist/{EditableTable-OW5LC6OC.cjs.map → EditableTable-OFVKAYRA.cjs.map} +1 -1
  49. package/dist/{ExtraOralExamWidget-JVKJ4ZWC.mjs → ExtraOralExamWidget-74G73HGP.mjs} +3 -3
  50. package/dist/{ExtraOralExamWidget-JVKJ4ZWC.mjs.map → ExtraOralExamWidget-74G73HGP.mjs.map} +1 -1
  51. package/dist/{ExtraOralExamWidget-ZIOSKMIO.cjs → ExtraOralExamWidget-ETQI25NZ.cjs} +4 -4
  52. package/dist/{ExtraOralExamWidget-ZIOSKMIO.cjs.map → ExtraOralExamWidget-ETQI25NZ.cjs.map} +1 -1
  53. package/dist/{FollowupWidget-GCGPWZVY.mjs → FollowupWidget-ENDML2BN.mjs} +3 -3
  54. package/dist/{FollowupWidget-GCGPWZVY.mjs.map → FollowupWidget-ENDML2BN.mjs.map} +1 -1
  55. package/dist/{FollowupWidget-2STSJSDY.cjs → FollowupWidget-XMPHTW2M.cjs} +4 -4
  56. package/dist/{FollowupWidget-2STSJSDY.cjs.map → FollowupWidget-XMPHTW2M.cjs.map} +1 -1
  57. package/dist/{FunctionalImpairmentScoreWidget-FCA4UKQA.cjs → FunctionalImpairmentScoreWidget-7TACV6EV.cjs} +6 -6
  58. package/dist/{FunctionalImpairmentScoreWidget-FCA4UKQA.cjs.map → FunctionalImpairmentScoreWidget-7TACV6EV.cjs.map} +1 -1
  59. package/dist/{FunctionalImpairmentScoreWidget-TKS6KE7K.mjs → FunctionalImpairmentScoreWidget-MGK6K4ZW.mjs} +4 -4
  60. package/dist/{FunctionalImpairmentScoreWidget-TKS6KE7K.mjs.map → FunctionalImpairmentScoreWidget-MGK6K4ZW.mjs.map} +1 -1
  61. package/dist/{GsExaminationWidget-ESIEZCP3.mjs → GsExaminationWidget-LCFURWVZ.mjs} +4 -4
  62. package/dist/{GsExaminationWidget-ESIEZCP3.mjs.map → GsExaminationWidget-LCFURWVZ.mjs.map} +1 -1
  63. package/dist/{GsExaminationWidget-KKE5I5GX.cjs → GsExaminationWidget-PCPCUJWN.cjs} +10 -10
  64. package/dist/{GsExaminationWidget-KKE5I5GX.cjs.map → GsExaminationWidget-PCPCUJWN.cjs.map} +1 -1
  65. package/dist/{GsGradingWidget-HC4MJ4KJ.mjs → GsGradingWidget-2TNN3B3R.mjs} +4 -4
  66. package/dist/{GsGradingWidget-HC4MJ4KJ.mjs.map → GsGradingWidget-2TNN3B3R.mjs.map} +1 -1
  67. package/dist/{GsGradingWidget-NGCQQVYA.cjs → GsGradingWidget-OXS65SQJ.cjs} +12 -12
  68. package/dist/{GsGradingWidget-NGCQQVYA.cjs.map → GsGradingWidget-OXS65SQJ.cjs.map} +1 -1
  69. package/dist/{GsSmartHistoryWidget-AAB427Q2.cjs → GsSmartHistoryWidget-CCIUZHMN.cjs} +12 -12
  70. package/dist/{GsSmartHistoryWidget-AAB427Q2.cjs.map → GsSmartHistoryWidget-CCIUZHMN.cjs.map} +1 -1
  71. package/dist/{GsSmartHistoryWidget-7HYGDU4O.mjs → GsSmartHistoryWidget-G5B3VUHN.mjs} +4 -4
  72. package/dist/{GsSmartHistoryWidget-7HYGDU4O.mjs.map → GsSmartHistoryWidget-G5B3VUHN.mjs.map} +1 -1
  73. package/dist/{HiddenVitalsWidget-5GFBDDPT.cjs → HiddenVitalsWidget-DHZOSOQY.cjs} +6 -6
  74. package/dist/{HiddenVitalsWidget-5GFBDDPT.cjs.map → HiddenVitalsWidget-DHZOSOQY.cjs.map} +1 -1
  75. package/dist/{HiddenVitalsWidget-CIE3KERT.mjs → HiddenVitalsWidget-QWJHUVRJ.mjs} +4 -4
  76. package/dist/{HiddenVitalsWidget-CIE3KERT.mjs.map → HiddenVitalsWidget-QWJHUVRJ.mjs.map} +1 -1
  77. package/dist/{LensAssessmentWidget-SIKJVVAE.cjs → LensAssessmentWidget-6DFZYT5F.cjs} +6 -6
  78. package/dist/{LensAssessmentWidget-SIKJVVAE.cjs.map → LensAssessmentWidget-6DFZYT5F.cjs.map} +1 -1
  79. package/dist/{LensAssessmentWidget-B4OMHTOE.mjs → LensAssessmentWidget-P2KHBHM2.mjs} +4 -4
  80. package/dist/{LensAssessmentWidget-B4OMHTOE.mjs.map → LensAssessmentWidget-P2KHBHM2.mjs.map} +1 -1
  81. package/dist/{MarMedicationOrdersWidget-767F65K6.cjs → MarMedicationOrdersWidget-QSMTNWR3.cjs} +7 -7
  82. package/dist/{MarMedicationOrdersWidget-767F65K6.cjs.map → MarMedicationOrdersWidget-QSMTNWR3.cjs.map} +1 -1
  83. package/dist/{MarMedicationOrdersWidget-LG3WOXN7.mjs → MarMedicationOrdersWidget-XW2YFTTH.mjs} +4 -4
  84. package/dist/{MarMedicationOrdersWidget-LG3WOXN7.mjs.map → MarMedicationOrdersWidget-XW2YFTTH.mjs.map} +1 -1
  85. package/dist/{OBGExaminationWidget-MRTGWLXJ.cjs → OBGExaminationWidget-5THYKJI5.cjs} +11 -11
  86. package/dist/{OBGExaminationWidget-MRTGWLXJ.cjs.map → OBGExaminationWidget-5THYKJI5.cjs.map} +1 -1
  87. package/dist/{OBGExaminationWidget-HQKTHSOZ.mjs → OBGExaminationWidget-Y2BVJB33.mjs} +4 -4
  88. package/dist/{OBGExaminationWidget-HQKTHSOZ.mjs.map → OBGExaminationWidget-Y2BVJB33.mjs.map} +1 -1
  89. package/dist/{OBGPathwayWidget-QJNWUIEM.mjs → OBGPathwayWidget-ALGYLNKZ.mjs} +5 -5
  90. package/dist/{OBGPathwayWidget-QJNWUIEM.mjs.map → OBGPathwayWidget-ALGYLNKZ.mjs.map} +1 -1
  91. package/dist/{OBGPathwayWidget-YRU36UL7.cjs → OBGPathwayWidget-FHBZPBPH.cjs} +9 -9
  92. package/dist/{OBGPathwayWidget-YRU36UL7.cjs.map → OBGPathwayWidget-FHBZPBPH.cjs.map} +1 -1
  93. package/dist/{ObstetricHistoryWidget-EW6JLNQ7.mjs → ObstetricHistoryWidget-5GDUCYS3.mjs} +4 -4
  94. package/dist/{ObstetricHistoryWidget-EW6JLNQ7.mjs.map → ObstetricHistoryWidget-5GDUCYS3.mjs.map} +1 -1
  95. package/dist/{ObstetricHistoryWidget-OOWCVFRB.cjs → ObstetricHistoryWidget-XGZM2HL4.cjs} +7 -7
  96. package/dist/{ObstetricHistoryWidget-OOWCVFRB.cjs.map → ObstetricHistoryWidget-XGZM2HL4.cjs.map} +1 -1
  97. package/dist/{OphthalDiagnosisWidget-UXXYGKD5.cjs → OphthalDiagnosisWidget-7WY633CI.cjs} +4 -4
  98. package/dist/{OphthalDiagnosisWidget-UXXYGKD5.cjs.map → OphthalDiagnosisWidget-7WY633CI.cjs.map} +1 -1
  99. package/dist/{OphthalDiagnosisWidget-MZYBQTFV.mjs → OphthalDiagnosisWidget-YHEDHIX5.mjs} +3 -3
  100. package/dist/{OphthalDiagnosisWidget-MZYBQTFV.mjs.map → OphthalDiagnosisWidget-YHEDHIX5.mjs.map} +1 -1
  101. package/dist/{OphthalmologyWidget-27ZN2E3F.mjs → OphthalmologyWidget-6RWGZHLU.mjs} +3 -3
  102. package/dist/{OphthalmologyWidget-27ZN2E3F.mjs.map → OphthalmologyWidget-6RWGZHLU.mjs.map} +1 -1
  103. package/dist/{OphthalmologyWidget-WFSFIHT4.cjs → OphthalmologyWidget-VLW4CM2Q.cjs} +4 -4
  104. package/dist/{OphthalmologyWidget-WFSFIHT4.cjs.map → OphthalmologyWidget-VLW4CM2Q.cjs.map} +1 -1
  105. package/dist/{OrthopedicExamWidget-ULZTDFXJ.cjs → OrthopedicExamWidget-4ZNOVW54.cjs} +6 -6
  106. package/dist/{OrthopedicExamWidget-ULZTDFXJ.cjs.map → OrthopedicExamWidget-4ZNOVW54.cjs.map} +1 -1
  107. package/dist/{OrthopedicExamWidget-WM55M3Y4.mjs → OrthopedicExamWidget-CWEH3ZY7.mjs} +4 -4
  108. package/dist/{OrthopedicExamWidget-WM55M3Y4.mjs.map → OrthopedicExamWidget-CWEH3ZY7.mjs.map} +1 -1
  109. package/dist/{PainScaleFlagsWidget-IFA3RCEL.cjs → PainScaleFlagsWidget-EYYQBSYL.cjs} +8 -8
  110. package/dist/{PainScaleFlagsWidget-IFA3RCEL.cjs.map → PainScaleFlagsWidget-EYYQBSYL.cjs.map} +1 -1
  111. package/dist/{PainScaleFlagsWidget-5KN7T4JK.mjs → PainScaleFlagsWidget-XC73ND7X.mjs} +4 -4
  112. package/dist/{PainScaleFlagsWidget-5KN7T4JK.mjs.map → PainScaleFlagsWidget-XC73ND7X.mjs.map} +1 -1
  113. package/dist/{PregnancyStatusWidget-U2BEJGBJ.mjs → PregnancyStatusWidget-U6Y3DCDB.mjs} +3 -3
  114. package/dist/{PregnancyStatusWidget-U2BEJGBJ.mjs.map → PregnancyStatusWidget-U6Y3DCDB.mjs.map} +1 -1
  115. package/dist/{PregnancyStatusWidget-QTTVFBOE.cjs → PregnancyStatusWidget-YZRYO2WA.cjs} +4 -4
  116. package/dist/{PregnancyStatusWidget-QTTVFBOE.cjs.map → PregnancyStatusWidget-YZRYO2WA.cjs.map} +1 -1
  117. package/dist/{ReferralWidget-GU3JYED2.mjs → ReferralWidget-FXJC56AF.mjs} +4 -4
  118. package/dist/{ReferralWidget-GU3JYED2.mjs.map → ReferralWidget-FXJC56AF.mjs.map} +1 -1
  119. package/dist/{ReferralWidget-27VGZCOQ.cjs → ReferralWidget-KD36EA74.cjs} +7 -7
  120. package/dist/{ReferralWidget-27VGZCOQ.cjs.map → ReferralWidget-KD36EA74.cjs.map} +1 -1
  121. package/dist/RichTextWidget-JG4Y7X66.mjs +11 -0
  122. package/dist/{RichTextWidget-2KLV65QP.cjs.map → RichTextWidget-JG4Y7X66.mjs.map} +1 -1
  123. package/dist/{RichTextWidget-2KLV65QP.cjs → RichTextWidget-KKC3P5Z3.cjs} +7 -7
  124. package/dist/{RichTextWidget-ZBX554ZJ.mjs.map → RichTextWidget-KKC3P5Z3.cjs.map} +1 -1
  125. package/dist/SmartTextarea-DSM5TP5N.cjs +19 -0
  126. package/dist/{SmartTextarea-LQDXFCYT.mjs.map → SmartTextarea-DSM5TP5N.cjs.map} +1 -1
  127. package/dist/SmartTextarea-HDRABZIN.mjs +10 -0
  128. package/dist/{SmartTextarea-WITNRNDU.cjs.map → SmartTextarea-HDRABZIN.mjs.map} +1 -1
  129. package/dist/{SuggestionTextareaWidget-UNL3FZRI.mjs → SuggestionTextareaWidget-IKL46SCV.mjs} +7 -7
  130. package/dist/{SuggestionTextareaWidget-UNL3FZRI.mjs.map → SuggestionTextareaWidget-IKL46SCV.mjs.map} +1 -1
  131. package/dist/{SuggestionTextareaWidget-FWRZ46MV.cjs → SuggestionTextareaWidget-KABKRNP3.cjs} +18 -18
  132. package/dist/{SuggestionTextareaWidget-FWRZ46MV.cjs.map → SuggestionTextareaWidget-KABKRNP3.cjs.map} +1 -1
  133. package/dist/{SurgicalRiskFlagsWidget-OJKCZIWJ.cjs → SurgicalRiskFlagsWidget-DO66VPQC.cjs} +6 -6
  134. package/dist/{SurgicalRiskFlagsWidget-OJKCZIWJ.cjs.map → SurgicalRiskFlagsWidget-DO66VPQC.cjs.map} +1 -1
  135. package/dist/{SurgicalRiskFlagsWidget-ZTQJ6CDF.mjs → SurgicalRiskFlagsWidget-NPOHFMIZ.mjs} +4 -4
  136. package/dist/{SurgicalRiskFlagsWidget-ZTQJ6CDF.mjs.map → SurgicalRiskFlagsWidget-NPOHFMIZ.mjs.map} +1 -1
  137. package/dist/{TreatmentPlanWidget-665HLKYV.mjs → TreatmentPlanWidget-7XYIVHQO.mjs} +4 -4
  138. package/dist/{TreatmentPlanWidget-665HLKYV.mjs.map → TreatmentPlanWidget-7XYIVHQO.mjs.map} +1 -1
  139. package/dist/{TreatmentPlanWidget-TATWSPLY.cjs → TreatmentPlanWidget-ELTSULQ4.cjs} +6 -6
  140. package/dist/{TreatmentPlanWidget-TATWSPLY.cjs.map → TreatmentPlanWidget-ELTSULQ4.cjs.map} +1 -1
  141. package/dist/{UrologyExaminationWidget-GRBL2SDG.mjs → UrologyExaminationWidget-OQLZPWVR.mjs} +4 -4
  142. package/dist/{UrologyExaminationWidget-GRBL2SDG.mjs.map → UrologyExaminationWidget-OQLZPWVR.mjs.map} +1 -1
  143. package/dist/{UrologyExaminationWidget-GQLMV4FB.cjs → UrologyExaminationWidget-OSNFGBI2.cjs} +12 -12
  144. package/dist/{UrologyExaminationWidget-GQLMV4FB.cjs.map → UrologyExaminationWidget-OSNFGBI2.cjs.map} +1 -1
  145. package/dist/{UrologyPathwayWidget-PEO5BVQX.mjs → UrologyPathwayWidget-KE2LAZTZ.mjs} +4 -4
  146. package/dist/{UrologyPathwayWidget-PEO5BVQX.mjs.map → UrologyPathwayWidget-KE2LAZTZ.mjs.map} +1 -1
  147. package/dist/{UrologyPathwayWidget-D6EWSOGW.cjs → UrologyPathwayWidget-YPYIX43Z.cjs} +7 -7
  148. package/dist/{UrologyPathwayWidget-D6EWSOGW.cjs.map → UrologyPathwayWidget-YPYIX43Z.cjs.map} +1 -1
  149. package/dist/{UrologySmartHistoryWidget-BDKRFBYN.mjs → UrologySmartHistoryWidget-ET6CU36D.mjs} +4 -4
  150. package/dist/{UrologySmartHistoryWidget-BDKRFBYN.mjs.map → UrologySmartHistoryWidget-ET6CU36D.mjs.map} +1 -1
  151. package/dist/{UrologySmartHistoryWidget-P3KTQE7L.cjs → UrologySmartHistoryWidget-SLBJALMO.cjs} +15 -15
  152. package/dist/{UrologySmartHistoryWidget-P3KTQE7L.cjs.map → UrologySmartHistoryWidget-SLBJALMO.cjs.map} +1 -1
  153. package/dist/{VitalsWidget-MS3OOZSW.cjs → VitalsWidget-MGUUJZP4.cjs} +5 -5
  154. package/dist/{VitalsWidget-MS3OOZSW.cjs.map → VitalsWidget-MGUUJZP4.cjs.map} +1 -1
  155. package/dist/{VitalsWidget-63HTXK2M.mjs → VitalsWidget-YI3IXQYN.mjs} +3 -3
  156. package/dist/{VitalsWidget-63HTXK2M.mjs.map → VitalsWidget-YI3IXQYN.mjs.map} +1 -1
  157. package/dist/{chunk-5RT3S67O.cjs → chunk-35I4CBEC.cjs} +6 -6
  158. package/dist/{chunk-5RT3S67O.cjs.map → chunk-35I4CBEC.cjs.map} +1 -1
  159. package/dist/{chunk-XDUVO3IZ.mjs → chunk-4422KT6O.mjs} +61 -6
  160. package/dist/chunk-4422KT6O.mjs.map +1 -0
  161. package/dist/{chunk-BBD3Y37O.cjs → chunk-4KTQ4NEI.cjs} +4 -4
  162. package/dist/{chunk-BBD3Y37O.cjs.map → chunk-4KTQ4NEI.cjs.map} +1 -1
  163. package/dist/{chunk-MBZRRYJB.mjs → chunk-7ZRK7ZWY.mjs} +4 -4
  164. package/dist/{chunk-MBZRRYJB.mjs.map → chunk-7ZRK7ZWY.mjs.map} +1 -1
  165. package/dist/{chunk-AIZ3XYEZ.cjs → chunk-A2A5EB5R.cjs} +60 -5
  166. package/dist/chunk-A2A5EB5R.cjs.map +1 -0
  167. package/dist/{chunk-T3UHPMFX.mjs → chunk-BKZXISZH.mjs} +3 -3
  168. package/dist/{chunk-T3UHPMFX.mjs.map → chunk-BKZXISZH.mjs.map} +1 -1
  169. package/dist/{chunk-G6Y4UJPN.mjs → chunk-CC54SKAA.mjs} +5 -5
  170. package/dist/{chunk-G6Y4UJPN.mjs.map → chunk-CC54SKAA.mjs.map} +1 -1
  171. package/dist/{chunk-Q66LXMRR.mjs → chunk-FAAMKLBY.mjs} +3 -3
  172. package/dist/{chunk-Q66LXMRR.mjs.map → chunk-FAAMKLBY.mjs.map} +1 -1
  173. package/dist/{chunk-TCQQUJCL.cjs → chunk-GQX2UGHH.cjs} +11 -11
  174. package/dist/{chunk-TCQQUJCL.cjs.map → chunk-GQX2UGHH.cjs.map} +1 -1
  175. package/dist/{chunk-2BGJZ44Q.mjs → chunk-HKEUAERY.mjs} +9 -4
  176. package/dist/{chunk-TB33A4PD.cjs.map → chunk-HKEUAERY.mjs.map} +1 -1
  177. package/dist/{chunk-T2IKWRV2.cjs → chunk-JFZ7XPDM.cjs} +9 -9
  178. package/dist/{chunk-T2IKWRV2.cjs.map → chunk-JFZ7XPDM.cjs.map} +1 -1
  179. package/dist/{chunk-TB33A4PD.cjs → chunk-JVIU4OBK.cjs} +9 -3
  180. package/dist/chunk-JVIU4OBK.cjs.map +1 -0
  181. package/dist/{chunk-XIUXYHGG.cjs → chunk-L2H5SOAV.cjs} +5 -5
  182. package/dist/{chunk-XIUXYHGG.cjs.map → chunk-L2H5SOAV.cjs.map} +1 -1
  183. package/dist/{chunk-XLCTFYFD.mjs → chunk-PNRSJPGV.mjs} +5 -5
  184. package/dist/{chunk-XLCTFYFD.mjs.map → chunk-PNRSJPGV.mjs.map} +1 -1
  185. package/dist/{chunk-X4AJCTON.cjs → chunk-PVKHVVFS.cjs} +4 -4
  186. package/dist/{chunk-X4AJCTON.cjs.map → chunk-PVKHVVFS.cjs.map} +1 -1
  187. package/dist/{chunk-Q3K646K4.mjs → chunk-QM6UMI2M.mjs} +3 -3
  188. package/dist/{chunk-Q3K646K4.mjs.map → chunk-QM6UMI2M.mjs.map} +1 -1
  189. package/dist/{chunk-MQHZ7HD2.mjs → chunk-QQXBHDUF.mjs} +3 -3
  190. package/dist/{chunk-MQHZ7HD2.mjs.map → chunk-QQXBHDUF.mjs.map} +1 -1
  191. package/dist/{chunk-UKSP3B3W.mjs → chunk-VAJR2VBK.mjs} +3 -3
  192. package/dist/{chunk-UKSP3B3W.mjs.map → chunk-VAJR2VBK.mjs.map} +1 -1
  193. package/dist/{chunk-RZK44P3C.cjs → chunk-WM43XTEK.cjs} +7 -7
  194. package/dist/{chunk-RZK44P3C.cjs.map → chunk-WM43XTEK.cjs.map} +1 -1
  195. package/dist/{chunk-7DISRJAB.cjs → chunk-XGO2HG3N.cjs} +4 -4
  196. package/dist/{chunk-7DISRJAB.cjs.map → chunk-XGO2HG3N.cjs.map} +1 -1
  197. package/dist/index.cjs +136 -134
  198. package/dist/index.cjs.map +1 -1
  199. package/dist/index.d.cts +9 -4
  200. package/dist/index.d.ts +9 -4
  201. package/dist/index.mjs +54 -56
  202. package/dist/index.mjs.map +1 -1
  203. package/dist/read-only-table.d.cts +1 -1
  204. package/dist/read-only-table.d.ts +1 -1
  205. package/dist/rich-text.cjs +5 -5
  206. package/dist/rich-text.mjs +4 -4
  207. package/dist/smart.cjs +5 -5
  208. package/dist/smart.d.cts +1 -1
  209. package/dist/smart.d.ts +1 -1
  210. package/dist/smart.mjs +3 -3
  211. package/dist/{types-BbOnd5IN.d.cts → types-27f9S27N.d.cts} +13 -1
  212. package/dist/{types-BbOnd5IN.d.ts → types-27f9S27N.d.ts} +13 -1
  213. package/package.json +1 -1
  214. package/dist/AddMedicationWidget-45T4XVEL.cjs +0 -32
  215. package/dist/AddMedicationWidget-45T4XVEL.cjs.map +0 -1
  216. package/dist/AddMedicationWidget-B5RXRYBK.mjs.map +0 -1
  217. package/dist/BpeChartWidget-HATASHAC.mjs +0 -7
  218. package/dist/BpeChartWidget-VZRH7M7L.cjs +0 -28
  219. package/dist/DentalChartWidget-LYLOFWZU.cjs +0 -21
  220. package/dist/RichTextWidget-ZBX554ZJ.mjs +0 -11
  221. package/dist/SmartTextarea-LQDXFCYT.mjs +0 -10
  222. package/dist/SmartTextarea-WITNRNDU.cjs +0 -19
  223. package/dist/chunk-2BGJZ44Q.mjs.map +0 -1
  224. package/dist/chunk-AIZ3XYEZ.cjs.map +0 -1
  225. package/dist/chunk-XDUVO3IZ.mjs.map +0 -1
@@ -2,11 +2,11 @@ import { Checkbox } from './chunk-GNZWSVTB.mjs';
2
2
  import { Textarea } from './chunk-4BAKQIPJ.mjs';
3
3
  import { getThemeConfig } from './chunk-Y7TIWH4I.mjs';
4
4
  import { FieldRequiredIndicator } from './chunk-WYVXXEZI.mjs';
5
- import { useForm } from './chunk-T3UHPMFX.mjs';
5
+ import { useForm } from './chunk-BKZXISZH.mjs';
6
6
  import { Input } from './chunk-VNFBUAZD.mjs';
7
7
  import { Select, SelectTrigger, SelectValue, SelectContent, SelectItem } from './chunk-AZHTIUOL.mjs';
8
8
  import { Button } from './chunk-GXXWMHAA.mjs';
9
- import { useField, normalizeUrologyExamination, formatUrologyExaminationToClinicalExamination } from './chunk-2BGJZ44Q.mjs';
9
+ import { useField, normalizeUrologyExamination, formatUrologyExaminationToClinicalExamination } from './chunk-HKEUAERY.mjs';
10
10
  import { Label } from './chunk-HEFZA2AH.mjs';
11
11
  import { cn } from './chunk-VPU66PI6.mjs';
12
12
  import { useMemo, useState, useEffect } from 'react';
@@ -267,5 +267,5 @@ var UrologyExaminationWidget = ({ fieldId }) => {
267
267
  };
268
268
 
269
269
  export { UrologyExaminationWidget };
270
- //# sourceMappingURL=UrologyExaminationWidget-GRBL2SDG.mjs.map
271
- //# sourceMappingURL=UrologyExaminationWidget-GRBL2SDG.mjs.map
270
+ //# sourceMappingURL=UrologyExaminationWidget-OQLZPWVR.mjs.map
271
+ //# sourceMappingURL=UrologyExaminationWidget-OQLZPWVR.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ui/widgets/UrologyExaminationWidget.tsx"],"names":[],"mappings":"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","file":"UrologyExaminationWidget-GRBL2SDG.mjs","sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\nimport { useField } from '../../react/useField';\nimport { useForm } from '../../react/useForm';\nimport { Label } from '../shadcn/label';\nimport { Input } from '../shadcn/input';\nimport { Textarea } from '../shadcn/textarea';\nimport { Checkbox } from '../shadcn/checkbox';\nimport { Button } from '../shadcn/button';\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 type { UrologyExaminationValue } from '../../core/urologyPathway';\nimport {\n formatUrologyExaminationToClinicalExamination,\n normalizeUrologyExamination,\n} from '../../core/urologyPathway';\n\n/** Free-text exam narrative; field id must match template `clinical_examination`. */\nconst URO_CLINICAL_EXAMINATION_FIELD = 'clinical_examination';\n\ntype GeneralKey = keyof UrologyExaminationValue['general'];\ntype AbdomenKey = keyof UrologyExaminationValue['abdomen'];\ntype GuKey = keyof UrologyExaminationValue['gu'];\n\nconst GENERAL_ROWS: { key: GeneralKey; label: string }[] = [\n { key: 'pallor', label: 'Pallor (chronic dz)' },\n { key: 'oedema', label: 'Oedema (renal)' },\n { key: 'icterus', label: 'Icterus' },\n { key: 'lymphadenopathy', label: 'Lymphadenopathy' },\n];\n\nconst ABD_ROWS: { key: AbdomenKey; label: string }[] = [\n { key: 'distension', label: 'Distension' },\n { key: 'scars', label: 'Surgical scars' },\n { key: 'mass', label: 'Visible mass' },\n { key: 'kidneyPalpable', label: 'Kidney palpable' },\n { key: 'bladderPalpable', label: 'Bladder palpable' },\n { key: 'renalAngleTender', label: 'Renal angle tender' },\n { key: 'bladderDull', label: 'Bladder dullness (retention)' },\n];\n\nconst GU_ROWS: { key: GuKey; label: string }[] = [\n { key: 'meatusAbnormal', label: 'Meatus abnormal (hypospadias?)' },\n { key: 'phimosis', label: 'Phimosis / paraphimosis' },\n { key: 'lesions', label: 'Penile lesions / ulcers' },\n { key: 'scrotalSwelling', label: 'Scrotal swelling' },\n { key: 'transilluminant', label: 'Transilluminant' },\n { key: 'tenderTestis', label: 'Tender testis' },\n { key: 'hydrocele', label: 'Hydrocele' },\n { key: 'varicocele', label: 'Varicocele' },\n { key: 'suspiciousMass', label: 'Suspicious mass' },\n];\n\nconst DRE_CONSISTENCY = ['none', 'Soft (benign)', 'Firm', 'Hard / nodular (malignancy?)'] as const;\nconst DRE_SULCUS = ['none', 'Preserved', 'Obliterated'] as const;\n\nexport const UrologyExaminationWidget: React.FC<{ fieldId: string }> = ({ fieldId }) => {\n const { fieldDef, value, setValue, setTouched, error, touched, disabled } = useField(fieldId);\n const clinicalField = useField(URO_CLINICAL_EXAMINATION_FIELD);\n const { state } = useForm();\n const showError = !!error && (touched || state.submitAttempted);\n\n const safe = useMemo(() => normalizeUrologyExamination(value), [value]);\n\n const [clinicalNarrativeLocked, setClinicalNarrativeLocked] = useState(false);\n\n useEffect(() => {\n if (clinicalNarrativeLocked || disabled) return;\n const norm = normalizeUrologyExamination(value);\n const next = formatUrologyExaminationToClinicalExamination(norm);\n clinicalField.setValue(next);\n if (norm.examinationNotes !== next) {\n setValue({ ...norm, examinationNotes: next });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value, clinicalNarrativeLocked, disabled]);\n\n const bump = (next: UrologyExaminationValue) => {\n setValue(next);\n setTouched();\n };\n\n const toggleGeneral = (key: GeneralKey) => {\n bump({ ...safe, general: { ...safe.general, [key]: !safe.general[key] } });\n };\n\n const toggleAbdomen = (key: AbdomenKey) => {\n bump({ ...safe, abdomen: { ...safe.abdomen, [key]: !safe.abdomen[key] } });\n };\n\n const toggleGu = (key: GuKey) => {\n bump({ ...safe, gu: { ...safe.gu, [key]: !safe.gu[key] } });\n };\n\n if (!fieldDef) return null;\n\n const theme = getThemeConfig('textarea', fieldDef.theme);\n const wrapperClass =\n 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 <div className=\"grid grid-cols-1 gap-3 text-xs md:grid-cols-2 xl:grid-cols-4\">\n <div className=\"space-y-2\">\n <p className=\"font-semibold text-slate-800\">General</p>\n {GENERAL_ROWS.map((r) => (\n <label key={r.key} className=\"flex items-center gap-2\">\n <Checkbox\n checked={safe.general[r.key]}\n onCheckedChange={() => toggleGeneral(r.key)}\n disabled={disabled}\n />\n {r.label}\n </label>\n ))}\n </div>\n <div className=\"space-y-2\">\n <p className=\"font-semibold text-slate-800\">Abdomen</p>\n {ABD_ROWS.map((r) => (\n <label key={r.key} className=\"flex items-center gap-2\">\n <Checkbox\n checked={safe.abdomen[r.key]}\n onCheckedChange={() => toggleAbdomen(r.key)}\n disabled={disabled}\n />\n {r.label}\n </label>\n ))}\n </div>\n <div className=\"space-y-2\">\n <p className=\"font-semibold text-slate-800\">External genitalia / scrotum</p>\n {GU_ROWS.map((r) => (\n <label key={r.key} className=\"flex items-center gap-2\">\n <Checkbox\n checked={safe.gu[r.key]}\n onCheckedChange={() => toggleGu(r.key)}\n disabled={disabled}\n />\n {r.key === 'suspiciousMass' ? (\n <span className=\"font-medium text-red-600\">{r.label}</span>\n ) : (\n r.label\n )}\n </label>\n ))}\n </div>\n <div className=\"space-y-2\">\n <p className=\"font-semibold text-slate-800\">DRE — Prostate</p>\n <label className=\"flex items-center gap-2\">\n <Checkbox\n checked={safe.dre.done}\n onCheckedChange={(c) =>\n bump({ ...safe, dre: { ...safe.dre, done: c === true } })\n }\n disabled={disabled}\n />\n DRE performed\n </label>\n <label className=\"block\">\n <span className=\"mb-1 block font-medium\">Estimated size (g)</span>\n <Input\n type=\"number\"\n min={0}\n className=\"h-8 text-xs\"\n value={safe.dre.sizeGrams}\n onChange={(e) => {\n const n = Number(e.target.value);\n bump({\n ...safe,\n dre: {\n ...safe.dre,\n sizeGrams: Number.isFinite(n) && n >= 0 ? Math.round(n) : 0,\n },\n });\n }}\n disabled={disabled}\n />\n </label>\n <label className=\"block\">\n <span className=\"mb-1 block font-medium\">Consistency</span>\n <Select\n value={safe.dre.consistency || 'none'}\n onValueChange={(val) =>\n bump({\n ...safe,\n dre: { ...safe.dre, consistency: val === 'none' ? '' : val },\n })\n }\n disabled={disabled}\n >\n <SelectTrigger className=\"h-8 text-xs\">\n <SelectValue placeholder=\"—\" />\n </SelectTrigger>\n <SelectContent>\n {DRE_CONSISTENCY.map((opt) => (\n <SelectItem key={opt} value={opt}>\n {opt === 'none' ? '—' : opt}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </label>\n <label className=\"block\">\n <span className=\"mb-1 block font-medium\">Median sulcus</span>\n <Select\n value={safe.dre.medianSulcus || 'none'}\n onValueChange={(val) =>\n bump({\n ...safe,\n dre: { ...safe.dre, medianSulcus: val === 'none' ? '' : val },\n })\n }\n disabled={disabled}\n >\n <SelectTrigger className=\"h-8 text-xs\">\n <SelectValue placeholder=\"—\" />\n </SelectTrigger>\n <SelectContent>\n {DRE_SULCUS.map((opt) => (\n <SelectItem key={opt} value={opt}>\n {opt === 'none' ? '—' : opt}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </label>\n <label className=\"flex items-center gap-2\">\n <Checkbox\n checked={safe.dre.tenderness}\n onCheckedChange={(c) =>\n bump({ ...safe, dre: { ...safe.dre, tenderness: c === true } })\n }\n disabled={disabled}\n />\n Tender (prostatitis?)\n </label>\n </div>\n </div>\n\n <div className=\"space-y-1\">\n <div className=\"flex flex-wrap items-center justify-between gap-2\">\n <Label className=\"text-xs font-semibold text-slate-700\">\n {clinicalField.fieldDef?.label ?? 'Clinical examination'}\n </Label>\n <div className=\"flex items-center gap-2\">\n {clinicalNarrativeLocked ? (\n <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\">\n You edited this summary. Use{' '}\n <span className=\"italic\">'Regenerate'</span> to update it from the form.\n </span>\n ) : null}\n {clinicalNarrativeLocked ? (\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n className=\"h-7 shrink-0 px-2 text-xs\"\n disabled={disabled || clinicalField.disabled}\n onClick={() => {\n setClinicalNarrativeLocked(false);\n const norm = normalizeUrologyExamination(value);\n clinicalField.setValue(formatUrologyExaminationToClinicalExamination(norm));\n }}\n >\n Regenerate\n </Button>\n ) : null}\n </div>\n </div>\n {clinicalNarrativeLocked ? (\n <p className=\"text-[10px] text-muted-foreground\">\n Edit this box anytime. Use Regenerate to replace with fresh text from the structured\n examination.\n </p>\n ) : null}\n <Textarea\n className=\"min-h-[88px] rounded-md border border-input bg-white text-sm\"\n placeholder=\"Auto-filled from selections above…\"\n value={\n typeof clinicalField.value === 'string'\n ? clinicalField.value\n : clinicalField.value == null\n ? ''\n : String(clinicalField.value)\n }\n onChange={(e) => {\n setClinicalNarrativeLocked(true);\n const t = e.target.value;\n clinicalField.setValue(t);\n clinicalField.setTouched();\n setValue({ ...safe, examinationNotes: t });\n setTouched();\n }}\n disabled={disabled || clinicalField.disabled}\n />\n </div>\n </div>\n\n {showError ? <p className=\"px-3 pb-2 text-xs text-red-500\">{error}</p> : null}\n </div>\n );\n};\n"]}
1
+ {"version":3,"sources":["../src/ui/widgets/UrologyExaminationWidget.tsx"],"names":[],"mappings":"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","file":"UrologyExaminationWidget-OQLZPWVR.mjs","sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\nimport { useField } from '../../react/useField';\nimport { useForm } from '../../react/useForm';\nimport { Label } from '../shadcn/label';\nimport { Input } from '../shadcn/input';\nimport { Textarea } from '../shadcn/textarea';\nimport { Checkbox } from '../shadcn/checkbox';\nimport { Button } from '../shadcn/button';\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 type { UrologyExaminationValue } from '../../core/urologyPathway';\nimport {\n formatUrologyExaminationToClinicalExamination,\n normalizeUrologyExamination,\n} from '../../core/urologyPathway';\n\n/** Free-text exam narrative; field id must match template `clinical_examination`. */\nconst URO_CLINICAL_EXAMINATION_FIELD = 'clinical_examination';\n\ntype GeneralKey = keyof UrologyExaminationValue['general'];\ntype AbdomenKey = keyof UrologyExaminationValue['abdomen'];\ntype GuKey = keyof UrologyExaminationValue['gu'];\n\nconst GENERAL_ROWS: { key: GeneralKey; label: string }[] = [\n { key: 'pallor', label: 'Pallor (chronic dz)' },\n { key: 'oedema', label: 'Oedema (renal)' },\n { key: 'icterus', label: 'Icterus' },\n { key: 'lymphadenopathy', label: 'Lymphadenopathy' },\n];\n\nconst ABD_ROWS: { key: AbdomenKey; label: string }[] = [\n { key: 'distension', label: 'Distension' },\n { key: 'scars', label: 'Surgical scars' },\n { key: 'mass', label: 'Visible mass' },\n { key: 'kidneyPalpable', label: 'Kidney palpable' },\n { key: 'bladderPalpable', label: 'Bladder palpable' },\n { key: 'renalAngleTender', label: 'Renal angle tender' },\n { key: 'bladderDull', label: 'Bladder dullness (retention)' },\n];\n\nconst GU_ROWS: { key: GuKey; label: string }[] = [\n { key: 'meatusAbnormal', label: 'Meatus abnormal (hypospadias?)' },\n { key: 'phimosis', label: 'Phimosis / paraphimosis' },\n { key: 'lesions', label: 'Penile lesions / ulcers' },\n { key: 'scrotalSwelling', label: 'Scrotal swelling' },\n { key: 'transilluminant', label: 'Transilluminant' },\n { key: 'tenderTestis', label: 'Tender testis' },\n { key: 'hydrocele', label: 'Hydrocele' },\n { key: 'varicocele', label: 'Varicocele' },\n { key: 'suspiciousMass', label: 'Suspicious mass' },\n];\n\nconst DRE_CONSISTENCY = ['none', 'Soft (benign)', 'Firm', 'Hard / nodular (malignancy?)'] as const;\nconst DRE_SULCUS = ['none', 'Preserved', 'Obliterated'] as const;\n\nexport const UrologyExaminationWidget: React.FC<{ fieldId: string }> = ({ fieldId }) => {\n const { fieldDef, value, setValue, setTouched, error, touched, disabled } = useField(fieldId);\n const clinicalField = useField(URO_CLINICAL_EXAMINATION_FIELD);\n const { state } = useForm();\n const showError = !!error && (touched || state.submitAttempted);\n\n const safe = useMemo(() => normalizeUrologyExamination(value), [value]);\n\n const [clinicalNarrativeLocked, setClinicalNarrativeLocked] = useState(false);\n\n useEffect(() => {\n if (clinicalNarrativeLocked || disabled) return;\n const norm = normalizeUrologyExamination(value);\n const next = formatUrologyExaminationToClinicalExamination(norm);\n clinicalField.setValue(next);\n if (norm.examinationNotes !== next) {\n setValue({ ...norm, examinationNotes: next });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value, clinicalNarrativeLocked, disabled]);\n\n const bump = (next: UrologyExaminationValue) => {\n setValue(next);\n setTouched();\n };\n\n const toggleGeneral = (key: GeneralKey) => {\n bump({ ...safe, general: { ...safe.general, [key]: !safe.general[key] } });\n };\n\n const toggleAbdomen = (key: AbdomenKey) => {\n bump({ ...safe, abdomen: { ...safe.abdomen, [key]: !safe.abdomen[key] } });\n };\n\n const toggleGu = (key: GuKey) => {\n bump({ ...safe, gu: { ...safe.gu, [key]: !safe.gu[key] } });\n };\n\n if (!fieldDef) return null;\n\n const theme = getThemeConfig('textarea', fieldDef.theme);\n const wrapperClass =\n 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 <div className=\"grid grid-cols-1 gap-3 text-xs md:grid-cols-2 xl:grid-cols-4\">\n <div className=\"space-y-2\">\n <p className=\"font-semibold text-slate-800\">General</p>\n {GENERAL_ROWS.map((r) => (\n <label key={r.key} className=\"flex items-center gap-2\">\n <Checkbox\n checked={safe.general[r.key]}\n onCheckedChange={() => toggleGeneral(r.key)}\n disabled={disabled}\n />\n {r.label}\n </label>\n ))}\n </div>\n <div className=\"space-y-2\">\n <p className=\"font-semibold text-slate-800\">Abdomen</p>\n {ABD_ROWS.map((r) => (\n <label key={r.key} className=\"flex items-center gap-2\">\n <Checkbox\n checked={safe.abdomen[r.key]}\n onCheckedChange={() => toggleAbdomen(r.key)}\n disabled={disabled}\n />\n {r.label}\n </label>\n ))}\n </div>\n <div className=\"space-y-2\">\n <p className=\"font-semibold text-slate-800\">External genitalia / scrotum</p>\n {GU_ROWS.map((r) => (\n <label key={r.key} className=\"flex items-center gap-2\">\n <Checkbox\n checked={safe.gu[r.key]}\n onCheckedChange={() => toggleGu(r.key)}\n disabled={disabled}\n />\n {r.key === 'suspiciousMass' ? (\n <span className=\"font-medium text-red-600\">{r.label}</span>\n ) : (\n r.label\n )}\n </label>\n ))}\n </div>\n <div className=\"space-y-2\">\n <p className=\"font-semibold text-slate-800\">DRE — Prostate</p>\n <label className=\"flex items-center gap-2\">\n <Checkbox\n checked={safe.dre.done}\n onCheckedChange={(c) =>\n bump({ ...safe, dre: { ...safe.dre, done: c === true } })\n }\n disabled={disabled}\n />\n DRE performed\n </label>\n <label className=\"block\">\n <span className=\"mb-1 block font-medium\">Estimated size (g)</span>\n <Input\n type=\"number\"\n min={0}\n className=\"h-8 text-xs\"\n value={safe.dre.sizeGrams}\n onChange={(e) => {\n const n = Number(e.target.value);\n bump({\n ...safe,\n dre: {\n ...safe.dre,\n sizeGrams: Number.isFinite(n) && n >= 0 ? Math.round(n) : 0,\n },\n });\n }}\n disabled={disabled}\n />\n </label>\n <label className=\"block\">\n <span className=\"mb-1 block font-medium\">Consistency</span>\n <Select\n value={safe.dre.consistency || 'none'}\n onValueChange={(val) =>\n bump({\n ...safe,\n dre: { ...safe.dre, consistency: val === 'none' ? '' : val },\n })\n }\n disabled={disabled}\n >\n <SelectTrigger className=\"h-8 text-xs\">\n <SelectValue placeholder=\"—\" />\n </SelectTrigger>\n <SelectContent>\n {DRE_CONSISTENCY.map((opt) => (\n <SelectItem key={opt} value={opt}>\n {opt === 'none' ? '—' : opt}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </label>\n <label className=\"block\">\n <span className=\"mb-1 block font-medium\">Median sulcus</span>\n <Select\n value={safe.dre.medianSulcus || 'none'}\n onValueChange={(val) =>\n bump({\n ...safe,\n dre: { ...safe.dre, medianSulcus: val === 'none' ? '' : val },\n })\n }\n disabled={disabled}\n >\n <SelectTrigger className=\"h-8 text-xs\">\n <SelectValue placeholder=\"—\" />\n </SelectTrigger>\n <SelectContent>\n {DRE_SULCUS.map((opt) => (\n <SelectItem key={opt} value={opt}>\n {opt === 'none' ? '—' : opt}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </label>\n <label className=\"flex items-center gap-2\">\n <Checkbox\n checked={safe.dre.tenderness}\n onCheckedChange={(c) =>\n bump({ ...safe, dre: { ...safe.dre, tenderness: c === true } })\n }\n disabled={disabled}\n />\n Tender (prostatitis?)\n </label>\n </div>\n </div>\n\n <div className=\"space-y-1\">\n <div className=\"flex flex-wrap items-center justify-between gap-2\">\n <Label className=\"text-xs font-semibold text-slate-700\">\n {clinicalField.fieldDef?.label ?? 'Clinical examination'}\n </Label>\n <div className=\"flex items-center gap-2\">\n {clinicalNarrativeLocked ? (\n <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\">\n You edited this summary. Use{' '}\n <span className=\"italic\">'Regenerate'</span> to update it from the form.\n </span>\n ) : null}\n {clinicalNarrativeLocked ? (\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n className=\"h-7 shrink-0 px-2 text-xs\"\n disabled={disabled || clinicalField.disabled}\n onClick={() => {\n setClinicalNarrativeLocked(false);\n const norm = normalizeUrologyExamination(value);\n clinicalField.setValue(formatUrologyExaminationToClinicalExamination(norm));\n }}\n >\n Regenerate\n </Button>\n ) : null}\n </div>\n </div>\n {clinicalNarrativeLocked ? (\n <p className=\"text-[10px] text-muted-foreground\">\n Edit this box anytime. Use Regenerate to replace with fresh text from the structured\n examination.\n </p>\n ) : null}\n <Textarea\n className=\"min-h-[88px] rounded-md border border-input bg-white text-sm\"\n placeholder=\"Auto-filled from selections above…\"\n value={\n typeof clinicalField.value === 'string'\n ? clinicalField.value\n : clinicalField.value == null\n ? ''\n : String(clinicalField.value)\n }\n onChange={(e) => {\n setClinicalNarrativeLocked(true);\n const t = e.target.value;\n clinicalField.setValue(t);\n clinicalField.setTouched();\n setValue({ ...safe, examinationNotes: t });\n setTouched();\n }}\n disabled={disabled || clinicalField.disabled}\n />\n </div>\n </div>\n\n {showError ? <p className=\"px-3 pb-2 text-xs text-red-500\">{error}</p> : null}\n </div>\n );\n};\n"]}
@@ -4,11 +4,11 @@ var chunkPZBJYPWW_cjs = require('./chunk-PZBJYPWW.cjs');
4
4
  var chunkPHADAQSH_cjs = require('./chunk-PHADAQSH.cjs');
5
5
  var chunkP62377LB_cjs = require('./chunk-P62377LB.cjs');
6
6
  var chunk5E3APMY6_cjs = require('./chunk-5E3APMY6.cjs');
7
- var chunk7DISRJAB_cjs = require('./chunk-7DISRJAB.cjs');
7
+ var chunkXGO2HG3N_cjs = require('./chunk-XGO2HG3N.cjs');
8
8
  var chunkTJHG5WHX_cjs = require('./chunk-TJHG5WHX.cjs');
9
9
  var chunk4KSZUIJE_cjs = require('./chunk-4KSZUIJE.cjs');
10
10
  var chunkO3VQBPEW_cjs = require('./chunk-O3VQBPEW.cjs');
11
- var chunkTB33A4PD_cjs = require('./chunk-TB33A4PD.cjs');
11
+ var chunkJVIU4OBK_cjs = require('./chunk-JVIU4OBK.cjs');
12
12
  var chunkJMGUUFOJ_cjs = require('./chunk-JMGUUFOJ.cjs');
13
13
  var chunkFHHISVCH_cjs = require('./chunk-FHHISVCH.cjs');
14
14
  var react = require('react');
@@ -44,16 +44,16 @@ var GU_ROWS = [
44
44
  var DRE_CONSISTENCY = ["none", "Soft (benign)", "Firm", "Hard / nodular (malignancy?)"];
45
45
  var DRE_SULCUS = ["none", "Preserved", "Obliterated"];
46
46
  var UrologyExaminationWidget = ({ fieldId }) => {
47
- const { fieldDef, value, setValue, setTouched, error, touched, disabled } = chunkTB33A4PD_cjs.useField(fieldId);
48
- const clinicalField = chunkTB33A4PD_cjs.useField(URO_CLINICAL_EXAMINATION_FIELD);
49
- const { state } = chunk7DISRJAB_cjs.useForm();
47
+ const { fieldDef, value, setValue, setTouched, error, touched, disabled } = chunkJVIU4OBK_cjs.useField(fieldId);
48
+ const clinicalField = chunkJVIU4OBK_cjs.useField(URO_CLINICAL_EXAMINATION_FIELD);
49
+ const { state } = chunkXGO2HG3N_cjs.useForm();
50
50
  const showError = !!error && (touched || state.submitAttempted);
51
- const safe = react.useMemo(() => chunkTB33A4PD_cjs.normalizeUrologyExamination(value), [value]);
51
+ const safe = react.useMemo(() => chunkJVIU4OBK_cjs.normalizeUrologyExamination(value), [value]);
52
52
  const [clinicalNarrativeLocked, setClinicalNarrativeLocked] = react.useState(false);
53
53
  react.useEffect(() => {
54
54
  if (clinicalNarrativeLocked || disabled) return;
55
- const norm = chunkTB33A4PD_cjs.normalizeUrologyExamination(value);
56
- const next = chunkTB33A4PD_cjs.formatUrologyExaminationToClinicalExamination(norm);
55
+ const norm = chunkJVIU4OBK_cjs.normalizeUrologyExamination(value);
56
+ const next = chunkJVIU4OBK_cjs.formatUrologyExaminationToClinicalExamination(norm);
57
57
  clinicalField.setValue(next);
58
58
  if (norm.examinationNotes !== next) {
59
59
  setValue({ ...norm, examinationNotes: next });
@@ -236,8 +236,8 @@ var UrologyExaminationWidget = ({ fieldId }) => {
236
236
  disabled: disabled || clinicalField.disabled,
237
237
  onClick: () => {
238
238
  setClinicalNarrativeLocked(false);
239
- const norm = chunkTB33A4PD_cjs.normalizeUrologyExamination(value);
240
- clinicalField.setValue(chunkTB33A4PD_cjs.formatUrologyExaminationToClinicalExamination(norm));
239
+ const norm = chunkJVIU4OBK_cjs.normalizeUrologyExamination(value);
240
+ clinicalField.setValue(chunkJVIU4OBK_cjs.formatUrologyExaminationToClinicalExamination(norm));
241
241
  },
242
242
  children: "Regenerate"
243
243
  }
@@ -269,5 +269,5 @@ var UrologyExaminationWidget = ({ fieldId }) => {
269
269
  };
270
270
 
271
271
  exports.UrologyExaminationWidget = UrologyExaminationWidget;
272
- //# sourceMappingURL=UrologyExaminationWidget-GQLMV4FB.cjs.map
273
- //# sourceMappingURL=UrologyExaminationWidget-GQLMV4FB.cjs.map
272
+ //# sourceMappingURL=UrologyExaminationWidget-OSNFGBI2.cjs.map
273
+ //# sourceMappingURL=UrologyExaminationWidget-OSNFGBI2.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ui/widgets/UrologyExaminationWidget.tsx"],"names":["useField","useForm","useMemo","normalizeUrologyExamination","useState","useEffect","formatUrologyExaminationToClinicalExamination","getThemeConfig","jsxs","Fragment","jsx","FieldRequiredIndicator","Label","cn","Checkbox","Input","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","Button","Textarea"],"mappings":"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","file":"UrologyExaminationWidget-GQLMV4FB.cjs","sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\nimport { useField } from '../../react/useField';\nimport { useForm } from '../../react/useForm';\nimport { Label } from '../shadcn/label';\nimport { Input } from '../shadcn/input';\nimport { Textarea } from '../shadcn/textarea';\nimport { Checkbox } from '../shadcn/checkbox';\nimport { Button } from '../shadcn/button';\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 type { UrologyExaminationValue } from '../../core/urologyPathway';\nimport {\n formatUrologyExaminationToClinicalExamination,\n normalizeUrologyExamination,\n} from '../../core/urologyPathway';\n\n/** Free-text exam narrative; field id must match template `clinical_examination`. */\nconst URO_CLINICAL_EXAMINATION_FIELD = 'clinical_examination';\n\ntype GeneralKey = keyof UrologyExaminationValue['general'];\ntype AbdomenKey = keyof UrologyExaminationValue['abdomen'];\ntype GuKey = keyof UrologyExaminationValue['gu'];\n\nconst GENERAL_ROWS: { key: GeneralKey; label: string }[] = [\n { key: 'pallor', label: 'Pallor (chronic dz)' },\n { key: 'oedema', label: 'Oedema (renal)' },\n { key: 'icterus', label: 'Icterus' },\n { key: 'lymphadenopathy', label: 'Lymphadenopathy' },\n];\n\nconst ABD_ROWS: { key: AbdomenKey; label: string }[] = [\n { key: 'distension', label: 'Distension' },\n { key: 'scars', label: 'Surgical scars' },\n { key: 'mass', label: 'Visible mass' },\n { key: 'kidneyPalpable', label: 'Kidney palpable' },\n { key: 'bladderPalpable', label: 'Bladder palpable' },\n { key: 'renalAngleTender', label: 'Renal angle tender' },\n { key: 'bladderDull', label: 'Bladder dullness (retention)' },\n];\n\nconst GU_ROWS: { key: GuKey; label: string }[] = [\n { key: 'meatusAbnormal', label: 'Meatus abnormal (hypospadias?)' },\n { key: 'phimosis', label: 'Phimosis / paraphimosis' },\n { key: 'lesions', label: 'Penile lesions / ulcers' },\n { key: 'scrotalSwelling', label: 'Scrotal swelling' },\n { key: 'transilluminant', label: 'Transilluminant' },\n { key: 'tenderTestis', label: 'Tender testis' },\n { key: 'hydrocele', label: 'Hydrocele' },\n { key: 'varicocele', label: 'Varicocele' },\n { key: 'suspiciousMass', label: 'Suspicious mass' },\n];\n\nconst DRE_CONSISTENCY = ['none', 'Soft (benign)', 'Firm', 'Hard / nodular (malignancy?)'] as const;\nconst DRE_SULCUS = ['none', 'Preserved', 'Obliterated'] as const;\n\nexport const UrologyExaminationWidget: React.FC<{ fieldId: string }> = ({ fieldId }) => {\n const { fieldDef, value, setValue, setTouched, error, touched, disabled } = useField(fieldId);\n const clinicalField = useField(URO_CLINICAL_EXAMINATION_FIELD);\n const { state } = useForm();\n const showError = !!error && (touched || state.submitAttempted);\n\n const safe = useMemo(() => normalizeUrologyExamination(value), [value]);\n\n const [clinicalNarrativeLocked, setClinicalNarrativeLocked] = useState(false);\n\n useEffect(() => {\n if (clinicalNarrativeLocked || disabled) return;\n const norm = normalizeUrologyExamination(value);\n const next = formatUrologyExaminationToClinicalExamination(norm);\n clinicalField.setValue(next);\n if (norm.examinationNotes !== next) {\n setValue({ ...norm, examinationNotes: next });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value, clinicalNarrativeLocked, disabled]);\n\n const bump = (next: UrologyExaminationValue) => {\n setValue(next);\n setTouched();\n };\n\n const toggleGeneral = (key: GeneralKey) => {\n bump({ ...safe, general: { ...safe.general, [key]: !safe.general[key] } });\n };\n\n const toggleAbdomen = (key: AbdomenKey) => {\n bump({ ...safe, abdomen: { ...safe.abdomen, [key]: !safe.abdomen[key] } });\n };\n\n const toggleGu = (key: GuKey) => {\n bump({ ...safe, gu: { ...safe.gu, [key]: !safe.gu[key] } });\n };\n\n if (!fieldDef) return null;\n\n const theme = getThemeConfig('textarea', fieldDef.theme);\n const wrapperClass =\n 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 <div className=\"grid grid-cols-1 gap-3 text-xs md:grid-cols-2 xl:grid-cols-4\">\n <div className=\"space-y-2\">\n <p className=\"font-semibold text-slate-800\">General</p>\n {GENERAL_ROWS.map((r) => (\n <label key={r.key} className=\"flex items-center gap-2\">\n <Checkbox\n checked={safe.general[r.key]}\n onCheckedChange={() => toggleGeneral(r.key)}\n disabled={disabled}\n />\n {r.label}\n </label>\n ))}\n </div>\n <div className=\"space-y-2\">\n <p className=\"font-semibold text-slate-800\">Abdomen</p>\n {ABD_ROWS.map((r) => (\n <label key={r.key} className=\"flex items-center gap-2\">\n <Checkbox\n checked={safe.abdomen[r.key]}\n onCheckedChange={() => toggleAbdomen(r.key)}\n disabled={disabled}\n />\n {r.label}\n </label>\n ))}\n </div>\n <div className=\"space-y-2\">\n <p className=\"font-semibold text-slate-800\">External genitalia / scrotum</p>\n {GU_ROWS.map((r) => (\n <label key={r.key} className=\"flex items-center gap-2\">\n <Checkbox\n checked={safe.gu[r.key]}\n onCheckedChange={() => toggleGu(r.key)}\n disabled={disabled}\n />\n {r.key === 'suspiciousMass' ? (\n <span className=\"font-medium text-red-600\">{r.label}</span>\n ) : (\n r.label\n )}\n </label>\n ))}\n </div>\n <div className=\"space-y-2\">\n <p className=\"font-semibold text-slate-800\">DRE — Prostate</p>\n <label className=\"flex items-center gap-2\">\n <Checkbox\n checked={safe.dre.done}\n onCheckedChange={(c) =>\n bump({ ...safe, dre: { ...safe.dre, done: c === true } })\n }\n disabled={disabled}\n />\n DRE performed\n </label>\n <label className=\"block\">\n <span className=\"mb-1 block font-medium\">Estimated size (g)</span>\n <Input\n type=\"number\"\n min={0}\n className=\"h-8 text-xs\"\n value={safe.dre.sizeGrams}\n onChange={(e) => {\n const n = Number(e.target.value);\n bump({\n ...safe,\n dre: {\n ...safe.dre,\n sizeGrams: Number.isFinite(n) && n >= 0 ? Math.round(n) : 0,\n },\n });\n }}\n disabled={disabled}\n />\n </label>\n <label className=\"block\">\n <span className=\"mb-1 block font-medium\">Consistency</span>\n <Select\n value={safe.dre.consistency || 'none'}\n onValueChange={(val) =>\n bump({\n ...safe,\n dre: { ...safe.dre, consistency: val === 'none' ? '' : val },\n })\n }\n disabled={disabled}\n >\n <SelectTrigger className=\"h-8 text-xs\">\n <SelectValue placeholder=\"—\" />\n </SelectTrigger>\n <SelectContent>\n {DRE_CONSISTENCY.map((opt) => (\n <SelectItem key={opt} value={opt}>\n {opt === 'none' ? '—' : opt}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </label>\n <label className=\"block\">\n <span className=\"mb-1 block font-medium\">Median sulcus</span>\n <Select\n value={safe.dre.medianSulcus || 'none'}\n onValueChange={(val) =>\n bump({\n ...safe,\n dre: { ...safe.dre, medianSulcus: val === 'none' ? '' : val },\n })\n }\n disabled={disabled}\n >\n <SelectTrigger className=\"h-8 text-xs\">\n <SelectValue placeholder=\"—\" />\n </SelectTrigger>\n <SelectContent>\n {DRE_SULCUS.map((opt) => (\n <SelectItem key={opt} value={opt}>\n {opt === 'none' ? '—' : opt}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </label>\n <label className=\"flex items-center gap-2\">\n <Checkbox\n checked={safe.dre.tenderness}\n onCheckedChange={(c) =>\n bump({ ...safe, dre: { ...safe.dre, tenderness: c === true } })\n }\n disabled={disabled}\n />\n Tender (prostatitis?)\n </label>\n </div>\n </div>\n\n <div className=\"space-y-1\">\n <div className=\"flex flex-wrap items-center justify-between gap-2\">\n <Label className=\"text-xs font-semibold text-slate-700\">\n {clinicalField.fieldDef?.label ?? 'Clinical examination'}\n </Label>\n <div className=\"flex items-center gap-2\">\n {clinicalNarrativeLocked ? (\n <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\">\n You edited this summary. Use{' '}\n <span className=\"italic\">'Regenerate'</span> to update it from the form.\n </span>\n ) : null}\n {clinicalNarrativeLocked ? (\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n className=\"h-7 shrink-0 px-2 text-xs\"\n disabled={disabled || clinicalField.disabled}\n onClick={() => {\n setClinicalNarrativeLocked(false);\n const norm = normalizeUrologyExamination(value);\n clinicalField.setValue(formatUrologyExaminationToClinicalExamination(norm));\n }}\n >\n Regenerate\n </Button>\n ) : null}\n </div>\n </div>\n {clinicalNarrativeLocked ? (\n <p className=\"text-[10px] text-muted-foreground\">\n Edit this box anytime. Use Regenerate to replace with fresh text from the structured\n examination.\n </p>\n ) : null}\n <Textarea\n className=\"min-h-[88px] rounded-md border border-input bg-white text-sm\"\n placeholder=\"Auto-filled from selections above…\"\n value={\n typeof clinicalField.value === 'string'\n ? clinicalField.value\n : clinicalField.value == null\n ? ''\n : String(clinicalField.value)\n }\n onChange={(e) => {\n setClinicalNarrativeLocked(true);\n const t = e.target.value;\n clinicalField.setValue(t);\n clinicalField.setTouched();\n setValue({ ...safe, examinationNotes: t });\n setTouched();\n }}\n disabled={disabled || clinicalField.disabled}\n />\n </div>\n </div>\n\n {showError ? <p className=\"px-3 pb-2 text-xs text-red-500\">{error}</p> : null}\n </div>\n );\n};\n"]}
1
+ {"version":3,"sources":["../src/ui/widgets/UrologyExaminationWidget.tsx"],"names":["useField","useForm","useMemo","normalizeUrologyExamination","useState","useEffect","formatUrologyExaminationToClinicalExamination","getThemeConfig","jsxs","Fragment","jsx","FieldRequiredIndicator","Label","cn","Checkbox","Input","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","Button","Textarea"],"mappings":"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","file":"UrologyExaminationWidget-OSNFGBI2.cjs","sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\nimport { useField } from '../../react/useField';\nimport { useForm } from '../../react/useForm';\nimport { Label } from '../shadcn/label';\nimport { Input } from '../shadcn/input';\nimport { Textarea } from '../shadcn/textarea';\nimport { Checkbox } from '../shadcn/checkbox';\nimport { Button } from '../shadcn/button';\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 type { UrologyExaminationValue } from '../../core/urologyPathway';\nimport {\n formatUrologyExaminationToClinicalExamination,\n normalizeUrologyExamination,\n} from '../../core/urologyPathway';\n\n/** Free-text exam narrative; field id must match template `clinical_examination`. */\nconst URO_CLINICAL_EXAMINATION_FIELD = 'clinical_examination';\n\ntype GeneralKey = keyof UrologyExaminationValue['general'];\ntype AbdomenKey = keyof UrologyExaminationValue['abdomen'];\ntype GuKey = keyof UrologyExaminationValue['gu'];\n\nconst GENERAL_ROWS: { key: GeneralKey; label: string }[] = [\n { key: 'pallor', label: 'Pallor (chronic dz)' },\n { key: 'oedema', label: 'Oedema (renal)' },\n { key: 'icterus', label: 'Icterus' },\n { key: 'lymphadenopathy', label: 'Lymphadenopathy' },\n];\n\nconst ABD_ROWS: { key: AbdomenKey; label: string }[] = [\n { key: 'distension', label: 'Distension' },\n { key: 'scars', label: 'Surgical scars' },\n { key: 'mass', label: 'Visible mass' },\n { key: 'kidneyPalpable', label: 'Kidney palpable' },\n { key: 'bladderPalpable', label: 'Bladder palpable' },\n { key: 'renalAngleTender', label: 'Renal angle tender' },\n { key: 'bladderDull', label: 'Bladder dullness (retention)' },\n];\n\nconst GU_ROWS: { key: GuKey; label: string }[] = [\n { key: 'meatusAbnormal', label: 'Meatus abnormal (hypospadias?)' },\n { key: 'phimosis', label: 'Phimosis / paraphimosis' },\n { key: 'lesions', label: 'Penile lesions / ulcers' },\n { key: 'scrotalSwelling', label: 'Scrotal swelling' },\n { key: 'transilluminant', label: 'Transilluminant' },\n { key: 'tenderTestis', label: 'Tender testis' },\n { key: 'hydrocele', label: 'Hydrocele' },\n { key: 'varicocele', label: 'Varicocele' },\n { key: 'suspiciousMass', label: 'Suspicious mass' },\n];\n\nconst DRE_CONSISTENCY = ['none', 'Soft (benign)', 'Firm', 'Hard / nodular (malignancy?)'] as const;\nconst DRE_SULCUS = ['none', 'Preserved', 'Obliterated'] as const;\n\nexport const UrologyExaminationWidget: React.FC<{ fieldId: string }> = ({ fieldId }) => {\n const { fieldDef, value, setValue, setTouched, error, touched, disabled } = useField(fieldId);\n const clinicalField = useField(URO_CLINICAL_EXAMINATION_FIELD);\n const { state } = useForm();\n const showError = !!error && (touched || state.submitAttempted);\n\n const safe = useMemo(() => normalizeUrologyExamination(value), [value]);\n\n const [clinicalNarrativeLocked, setClinicalNarrativeLocked] = useState(false);\n\n useEffect(() => {\n if (clinicalNarrativeLocked || disabled) return;\n const norm = normalizeUrologyExamination(value);\n const next = formatUrologyExaminationToClinicalExamination(norm);\n clinicalField.setValue(next);\n if (norm.examinationNotes !== next) {\n setValue({ ...norm, examinationNotes: next });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value, clinicalNarrativeLocked, disabled]);\n\n const bump = (next: UrologyExaminationValue) => {\n setValue(next);\n setTouched();\n };\n\n const toggleGeneral = (key: GeneralKey) => {\n bump({ ...safe, general: { ...safe.general, [key]: !safe.general[key] } });\n };\n\n const toggleAbdomen = (key: AbdomenKey) => {\n bump({ ...safe, abdomen: { ...safe.abdomen, [key]: !safe.abdomen[key] } });\n };\n\n const toggleGu = (key: GuKey) => {\n bump({ ...safe, gu: { ...safe.gu, [key]: !safe.gu[key] } });\n };\n\n if (!fieldDef) return null;\n\n const theme = getThemeConfig('textarea', fieldDef.theme);\n const wrapperClass =\n 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 <div className=\"grid grid-cols-1 gap-3 text-xs md:grid-cols-2 xl:grid-cols-4\">\n <div className=\"space-y-2\">\n <p className=\"font-semibold text-slate-800\">General</p>\n {GENERAL_ROWS.map((r) => (\n <label key={r.key} className=\"flex items-center gap-2\">\n <Checkbox\n checked={safe.general[r.key]}\n onCheckedChange={() => toggleGeneral(r.key)}\n disabled={disabled}\n />\n {r.label}\n </label>\n ))}\n </div>\n <div className=\"space-y-2\">\n <p className=\"font-semibold text-slate-800\">Abdomen</p>\n {ABD_ROWS.map((r) => (\n <label key={r.key} className=\"flex items-center gap-2\">\n <Checkbox\n checked={safe.abdomen[r.key]}\n onCheckedChange={() => toggleAbdomen(r.key)}\n disabled={disabled}\n />\n {r.label}\n </label>\n ))}\n </div>\n <div className=\"space-y-2\">\n <p className=\"font-semibold text-slate-800\">External genitalia / scrotum</p>\n {GU_ROWS.map((r) => (\n <label key={r.key} className=\"flex items-center gap-2\">\n <Checkbox\n checked={safe.gu[r.key]}\n onCheckedChange={() => toggleGu(r.key)}\n disabled={disabled}\n />\n {r.key === 'suspiciousMass' ? (\n <span className=\"font-medium text-red-600\">{r.label}</span>\n ) : (\n r.label\n )}\n </label>\n ))}\n </div>\n <div className=\"space-y-2\">\n <p className=\"font-semibold text-slate-800\">DRE — Prostate</p>\n <label className=\"flex items-center gap-2\">\n <Checkbox\n checked={safe.dre.done}\n onCheckedChange={(c) =>\n bump({ ...safe, dre: { ...safe.dre, done: c === true } })\n }\n disabled={disabled}\n />\n DRE performed\n </label>\n <label className=\"block\">\n <span className=\"mb-1 block font-medium\">Estimated size (g)</span>\n <Input\n type=\"number\"\n min={0}\n className=\"h-8 text-xs\"\n value={safe.dre.sizeGrams}\n onChange={(e) => {\n const n = Number(e.target.value);\n bump({\n ...safe,\n dre: {\n ...safe.dre,\n sizeGrams: Number.isFinite(n) && n >= 0 ? Math.round(n) : 0,\n },\n });\n }}\n disabled={disabled}\n />\n </label>\n <label className=\"block\">\n <span className=\"mb-1 block font-medium\">Consistency</span>\n <Select\n value={safe.dre.consistency || 'none'}\n onValueChange={(val) =>\n bump({\n ...safe,\n dre: { ...safe.dre, consistency: val === 'none' ? '' : val },\n })\n }\n disabled={disabled}\n >\n <SelectTrigger className=\"h-8 text-xs\">\n <SelectValue placeholder=\"—\" />\n </SelectTrigger>\n <SelectContent>\n {DRE_CONSISTENCY.map((opt) => (\n <SelectItem key={opt} value={opt}>\n {opt === 'none' ? '—' : opt}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </label>\n <label className=\"block\">\n <span className=\"mb-1 block font-medium\">Median sulcus</span>\n <Select\n value={safe.dre.medianSulcus || 'none'}\n onValueChange={(val) =>\n bump({\n ...safe,\n dre: { ...safe.dre, medianSulcus: val === 'none' ? '' : val },\n })\n }\n disabled={disabled}\n >\n <SelectTrigger className=\"h-8 text-xs\">\n <SelectValue placeholder=\"—\" />\n </SelectTrigger>\n <SelectContent>\n {DRE_SULCUS.map((opt) => (\n <SelectItem key={opt} value={opt}>\n {opt === 'none' ? '—' : opt}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </label>\n <label className=\"flex items-center gap-2\">\n <Checkbox\n checked={safe.dre.tenderness}\n onCheckedChange={(c) =>\n bump({ ...safe, dre: { ...safe.dre, tenderness: c === true } })\n }\n disabled={disabled}\n />\n Tender (prostatitis?)\n </label>\n </div>\n </div>\n\n <div className=\"space-y-1\">\n <div className=\"flex flex-wrap items-center justify-between gap-2\">\n <Label className=\"text-xs font-semibold text-slate-700\">\n {clinicalField.fieldDef?.label ?? 'Clinical examination'}\n </Label>\n <div className=\"flex items-center gap-2\">\n {clinicalNarrativeLocked ? (\n <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\">\n You edited this summary. Use{' '}\n <span className=\"italic\">'Regenerate'</span> to update it from the form.\n </span>\n ) : null}\n {clinicalNarrativeLocked ? (\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n className=\"h-7 shrink-0 px-2 text-xs\"\n disabled={disabled || clinicalField.disabled}\n onClick={() => {\n setClinicalNarrativeLocked(false);\n const norm = normalizeUrologyExamination(value);\n clinicalField.setValue(formatUrologyExaminationToClinicalExamination(norm));\n }}\n >\n Regenerate\n </Button>\n ) : null}\n </div>\n </div>\n {clinicalNarrativeLocked ? (\n <p className=\"text-[10px] text-muted-foreground\">\n Edit this box anytime. Use Regenerate to replace with fresh text from the structured\n examination.\n </p>\n ) : null}\n <Textarea\n className=\"min-h-[88px] rounded-md border border-input bg-white text-sm\"\n placeholder=\"Auto-filled from selections above…\"\n value={\n typeof clinicalField.value === 'string'\n ? clinicalField.value\n : clinicalField.value == null\n ? ''\n : String(clinicalField.value)\n }\n onChange={(e) => {\n setClinicalNarrativeLocked(true);\n const t = e.target.value;\n clinicalField.setValue(t);\n clinicalField.setTouched();\n setValue({ ...safe, examinationNotes: t });\n setTouched();\n }}\n disabled={disabled || clinicalField.disabled}\n />\n </div>\n </div>\n\n {showError ? <p className=\"px-3 pb-2 text-xs text-red-500\">{error}</p> : null}\n </div>\n );\n};\n"]}
@@ -1,9 +1,9 @@
1
1
  import { Checkbox } from './chunk-GNZWSVTB.mjs';
2
2
  import { getThemeConfig } from './chunk-Y7TIWH4I.mjs';
3
3
  import { FieldRequiredIndicator } from './chunk-WYVXXEZI.mjs';
4
- import { useForm } from './chunk-T3UHPMFX.mjs';
4
+ import { useForm } from './chunk-BKZXISZH.mjs';
5
5
  import { Input } from './chunk-VNFBUAZD.mjs';
6
- import { useField, normalizeUrologyPathway } from './chunk-2BGJZ44Q.mjs';
6
+ import { useField, normalizeUrologyPathway } from './chunk-HKEUAERY.mjs';
7
7
  import { Label } from './chunk-HEFZA2AH.mjs';
8
8
  import { cn } from './chunk-VPU66PI6.mjs';
9
9
  import { useMemo } from 'react';
@@ -149,5 +149,5 @@ var UrologyPathwayWidget = ({ fieldId }) => {
149
149
  };
150
150
 
151
151
  export { UrologyPathwayWidget };
152
- //# sourceMappingURL=UrologyPathwayWidget-PEO5BVQX.mjs.map
153
- //# sourceMappingURL=UrologyPathwayWidget-PEO5BVQX.mjs.map
152
+ //# sourceMappingURL=UrologyPathwayWidget-KE2LAZTZ.mjs.map
153
+ //# sourceMappingURL=UrologyPathwayWidget-KE2LAZTZ.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ui/widgets/UrologyPathwayWidget.tsx"],"names":[],"mappings":"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","file":"UrologyPathwayWidget-PEO5BVQX.mjs","sourcesContent":["import React, { useMemo } from 'react';\nimport { useField } from '../../react/useField';\nimport { useForm } from '../../react/useForm';\nimport { Label } from '../shadcn/label';\nimport { Input } from '../shadcn/input';\nimport { Checkbox } from '../shadcn/checkbox';\nimport { cn } from '../../core/utils';\nimport { FieldRequiredIndicator } from '../../react/fieldStyle';\nimport { getThemeConfig } from '../themes';\nimport type { UrologyPathwayRisk, UrologyPathwayValue } from '../../core/urologyPathway';\nimport { normalizeUrologyPathway } from '../../core/urologyPathway';\n\nconst RISK_ROWS: { key: keyof UrologyPathwayRisk; label: string }[] = [\n { key: 'ckd', label: 'Chronic kidney disease' },\n { key: 'diabetes', label: 'Diabetes' },\n { key: 'anticoagulants', label: 'Anticoagulants' },\n { key: 'activeInfection', label: 'Active infection' },\n];\n\nexport const UrologyPathwayWidget: 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(() => normalizeUrologyPathway(value), [value]);\n\n const update = (next: UrologyPathwayValue) => {\n setValue(next);\n setTouched();\n };\n\n const setNum = (key: keyof Pick<UrologyPathwayValue, 'stoneSizeMm' | 'prostateVolumeCc' | 'psaNgMl' | 'uroflowQmaxMlSec'>, raw: string) => {\n const n = Number(raw);\n const v = Number.isFinite(n) && n >= 0 ? n : 0;\n if (key === 'stoneSizeMm') {\n update({ ...safe, stoneSizeMm: Math.round(v) });\n return;\n }\n update({ ...safe, [key]: v });\n };\n\n const toggleRisk = (key: keyof UrologyPathwayRisk) => {\n update({\n ...safe,\n risk: { ...safe.risk, [key]: !safe.risk[key] },\n });\n };\n\n if (!fieldDef) return null;\n\n const theme = getThemeConfig('textarea', fieldDef.theme);\n const wrapperClass =\n theme?.wrapperClassName ?? 'rounded-md overflow-hidden flex flex-col border border-[#D0D0D0]';\n const labelClass = theme?.labelClassName;\n\n const subtitle =\n fieldDef.meta && typeof fieldDef.meta === 'object' && fieldDef.meta !== null\n ? String((fieldDef.meta as { subtitle?: unknown }).subtitle ?? '')\n : '';\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-4 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 {subtitle ? (\n <p className=\"px-3 pt-2 text-[11px] text-muted-foreground\">{subtitle}</p>\n ) : null}\n\n <div className={bodyClass}>\n {showError ? <p className=\"text-xs text-red-600\">{error}</p> : null}\n\n <div className=\"grid grid-cols-1 gap-3 md:grid-cols-2\">\n <label className=\"block space-y-1 text-xs\">\n <span className=\"font-medium\">Stone size (mm)</span>\n <Input\n type=\"number\"\n min={0}\n className=\"h-8 text-xs\"\n value={safe.stoneSizeMm}\n onChange={(e) => setNum('stoneSizeMm', e.target.value)}\n disabled={disabled}\n />\n </label>\n <label className=\"flex items-center gap-2 pt-6 text-xs\">\n <Checkbox\n checked={safe.hydronephrosis}\n onCheckedChange={(c) => update({ ...safe, hydronephrosis: c === true })}\n disabled={disabled}\n />\n Hydronephrosis on imaging\n </label>\n <label className=\"block space-y-1 text-xs\">\n <span className=\"font-medium\">Prostate volume (cc)</span>\n <Input\n type=\"number\"\n min={0}\n step={0.1}\n className=\"h-8 text-xs\"\n value={safe.prostateVolumeCc}\n onChange={(e) => setNum('prostateVolumeCc', e.target.value)}\n disabled={disabled}\n />\n </label>\n <label className=\"block space-y-1 text-xs\">\n <span className=\"font-medium\">PSA (ng/mL)</span>\n <Input\n type=\"number\"\n min={0}\n step={0.01}\n className=\"h-8 text-xs\"\n value={safe.psaNgMl}\n onChange={(e) => setNum('psaNgMl', e.target.value)}\n disabled={disabled}\n />\n </label>\n <label className=\"block space-y-1 text-xs md:col-span-2\">\n <span className=\"font-medium\">Uroflow Qmax (mL/s)</span>\n <Input\n type=\"number\"\n min={0}\n step={0.1}\n className=\"h-8 text-xs\"\n value={safe.uroflowQmaxMlSec}\n onChange={(e) => setNum('uroflowQmaxMlSec', e.target.value)}\n disabled={disabled}\n />\n </label>\n </div>\n\n <div className=\"space-y-2 border-t border-muted-foreground/20 pt-3\">\n <p className=\"text-xs font-semibold text-slate-800\">Risk stratification</p>\n <div className=\"grid grid-cols-1 gap-2 sm:grid-cols-2\">\n {RISK_ROWS.map((r) => (\n <label key={r.key} className=\"flex items-center gap-2 text-xs\">\n <Checkbox\n checked={safe.risk[r.key]}\n onCheckedChange={() => toggleRisk(r.key)}\n disabled={disabled}\n />\n {r.label}\n </label>\n ))}\n </div>\n </div>\n </div>\n </div>\n );\n};\n"]}
1
+ {"version":3,"sources":["../src/ui/widgets/UrologyPathwayWidget.tsx"],"names":[],"mappings":"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","file":"UrologyPathwayWidget-KE2LAZTZ.mjs","sourcesContent":["import React, { useMemo } from 'react';\nimport { useField } from '../../react/useField';\nimport { useForm } from '../../react/useForm';\nimport { Label } from '../shadcn/label';\nimport { Input } from '../shadcn/input';\nimport { Checkbox } from '../shadcn/checkbox';\nimport { cn } from '../../core/utils';\nimport { FieldRequiredIndicator } from '../../react/fieldStyle';\nimport { getThemeConfig } from '../themes';\nimport type { UrologyPathwayRisk, UrologyPathwayValue } from '../../core/urologyPathway';\nimport { normalizeUrologyPathway } from '../../core/urologyPathway';\n\nconst RISK_ROWS: { key: keyof UrologyPathwayRisk; label: string }[] = [\n { key: 'ckd', label: 'Chronic kidney disease' },\n { key: 'diabetes', label: 'Diabetes' },\n { key: 'anticoagulants', label: 'Anticoagulants' },\n { key: 'activeInfection', label: 'Active infection' },\n];\n\nexport const UrologyPathwayWidget: 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(() => normalizeUrologyPathway(value), [value]);\n\n const update = (next: UrologyPathwayValue) => {\n setValue(next);\n setTouched();\n };\n\n const setNum = (key: keyof Pick<UrologyPathwayValue, 'stoneSizeMm' | 'prostateVolumeCc' | 'psaNgMl' | 'uroflowQmaxMlSec'>, raw: string) => {\n const n = Number(raw);\n const v = Number.isFinite(n) && n >= 0 ? n : 0;\n if (key === 'stoneSizeMm') {\n update({ ...safe, stoneSizeMm: Math.round(v) });\n return;\n }\n update({ ...safe, [key]: v });\n };\n\n const toggleRisk = (key: keyof UrologyPathwayRisk) => {\n update({\n ...safe,\n risk: { ...safe.risk, [key]: !safe.risk[key] },\n });\n };\n\n if (!fieldDef) return null;\n\n const theme = getThemeConfig('textarea', fieldDef.theme);\n const wrapperClass =\n theme?.wrapperClassName ?? 'rounded-md overflow-hidden flex flex-col border border-[#D0D0D0]';\n const labelClass = theme?.labelClassName;\n\n const subtitle =\n fieldDef.meta && typeof fieldDef.meta === 'object' && fieldDef.meta !== null\n ? String((fieldDef.meta as { subtitle?: unknown }).subtitle ?? '')\n : '';\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-4 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 {subtitle ? (\n <p className=\"px-3 pt-2 text-[11px] text-muted-foreground\">{subtitle}</p>\n ) : null}\n\n <div className={bodyClass}>\n {showError ? <p className=\"text-xs text-red-600\">{error}</p> : null}\n\n <div className=\"grid grid-cols-1 gap-3 md:grid-cols-2\">\n <label className=\"block space-y-1 text-xs\">\n <span className=\"font-medium\">Stone size (mm)</span>\n <Input\n type=\"number\"\n min={0}\n className=\"h-8 text-xs\"\n value={safe.stoneSizeMm}\n onChange={(e) => setNum('stoneSizeMm', e.target.value)}\n disabled={disabled}\n />\n </label>\n <label className=\"flex items-center gap-2 pt-6 text-xs\">\n <Checkbox\n checked={safe.hydronephrosis}\n onCheckedChange={(c) => update({ ...safe, hydronephrosis: c === true })}\n disabled={disabled}\n />\n Hydronephrosis on imaging\n </label>\n <label className=\"block space-y-1 text-xs\">\n <span className=\"font-medium\">Prostate volume (cc)</span>\n <Input\n type=\"number\"\n min={0}\n step={0.1}\n className=\"h-8 text-xs\"\n value={safe.prostateVolumeCc}\n onChange={(e) => setNum('prostateVolumeCc', e.target.value)}\n disabled={disabled}\n />\n </label>\n <label className=\"block space-y-1 text-xs\">\n <span className=\"font-medium\">PSA (ng/mL)</span>\n <Input\n type=\"number\"\n min={0}\n step={0.01}\n className=\"h-8 text-xs\"\n value={safe.psaNgMl}\n onChange={(e) => setNum('psaNgMl', e.target.value)}\n disabled={disabled}\n />\n </label>\n <label className=\"block space-y-1 text-xs md:col-span-2\">\n <span className=\"font-medium\">Uroflow Qmax (mL/s)</span>\n <Input\n type=\"number\"\n min={0}\n step={0.1}\n className=\"h-8 text-xs\"\n value={safe.uroflowQmaxMlSec}\n onChange={(e) => setNum('uroflowQmaxMlSec', e.target.value)}\n disabled={disabled}\n />\n </label>\n </div>\n\n <div className=\"space-y-2 border-t border-muted-foreground/20 pt-3\">\n <p className=\"text-xs font-semibold text-slate-800\">Risk stratification</p>\n <div className=\"grid grid-cols-1 gap-2 sm:grid-cols-2\">\n {RISK_ROWS.map((r) => (\n <label key={r.key} className=\"flex items-center gap-2 text-xs\">\n <Checkbox\n checked={safe.risk[r.key]}\n onCheckedChange={() => toggleRisk(r.key)}\n disabled={disabled}\n />\n {r.label}\n </label>\n ))}\n </div>\n </div>\n </div>\n </div>\n );\n};\n"]}
@@ -3,9 +3,9 @@
3
3
  var chunkPZBJYPWW_cjs = require('./chunk-PZBJYPWW.cjs');
4
4
  var chunkP62377LB_cjs = require('./chunk-P62377LB.cjs');
5
5
  var chunk5E3APMY6_cjs = require('./chunk-5E3APMY6.cjs');
6
- var chunk7DISRJAB_cjs = require('./chunk-7DISRJAB.cjs');
6
+ var chunkXGO2HG3N_cjs = require('./chunk-XGO2HG3N.cjs');
7
7
  var chunkTJHG5WHX_cjs = require('./chunk-TJHG5WHX.cjs');
8
- var chunkTB33A4PD_cjs = require('./chunk-TB33A4PD.cjs');
8
+ var chunkJVIU4OBK_cjs = require('./chunk-JVIU4OBK.cjs');
9
9
  var chunkJMGUUFOJ_cjs = require('./chunk-JMGUUFOJ.cjs');
10
10
  var chunkFHHISVCH_cjs = require('./chunk-FHHISVCH.cjs');
11
11
  var react = require('react');
@@ -18,10 +18,10 @@ var RISK_ROWS = [
18
18
  { key: "activeInfection", label: "Active infection" }
19
19
  ];
20
20
  var UrologyPathwayWidget = ({ fieldId }) => {
21
- const { fieldDef, value, setValue, setTouched, error, touched, disabled } = chunkTB33A4PD_cjs.useField(fieldId);
22
- const { state } = chunk7DISRJAB_cjs.useForm();
21
+ const { fieldDef, value, setValue, setTouched, error, touched, disabled } = chunkJVIU4OBK_cjs.useField(fieldId);
22
+ const { state } = chunkXGO2HG3N_cjs.useForm();
23
23
  const showError = !!error && (touched || state.submitAttempted);
24
- const safe = react.useMemo(() => chunkTB33A4PD_cjs.normalizeUrologyPathway(value), [value]);
24
+ const safe = react.useMemo(() => chunkJVIU4OBK_cjs.normalizeUrologyPathway(value), [value]);
25
25
  const update = (next) => {
26
26
  setValue(next);
27
27
  setTouched();
@@ -151,5 +151,5 @@ var UrologyPathwayWidget = ({ fieldId }) => {
151
151
  };
152
152
 
153
153
  exports.UrologyPathwayWidget = UrologyPathwayWidget;
154
- //# sourceMappingURL=UrologyPathwayWidget-D6EWSOGW.cjs.map
155
- //# sourceMappingURL=UrologyPathwayWidget-D6EWSOGW.cjs.map
154
+ //# sourceMappingURL=UrologyPathwayWidget-YPYIX43Z.cjs.map
155
+ //# sourceMappingURL=UrologyPathwayWidget-YPYIX43Z.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ui/widgets/UrologyPathwayWidget.tsx"],"names":["useField","useForm","useMemo","normalizeUrologyPathway","getThemeConfig","jsxs","Fragment","jsx","FieldRequiredIndicator","Label","cn","Input","Checkbox"],"mappings":"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","file":"UrologyPathwayWidget-D6EWSOGW.cjs","sourcesContent":["import React, { useMemo } from 'react';\nimport { useField } from '../../react/useField';\nimport { useForm } from '../../react/useForm';\nimport { Label } from '../shadcn/label';\nimport { Input } from '../shadcn/input';\nimport { Checkbox } from '../shadcn/checkbox';\nimport { cn } from '../../core/utils';\nimport { FieldRequiredIndicator } from '../../react/fieldStyle';\nimport { getThemeConfig } from '../themes';\nimport type { UrologyPathwayRisk, UrologyPathwayValue } from '../../core/urologyPathway';\nimport { normalizeUrologyPathway } from '../../core/urologyPathway';\n\nconst RISK_ROWS: { key: keyof UrologyPathwayRisk; label: string }[] = [\n { key: 'ckd', label: 'Chronic kidney disease' },\n { key: 'diabetes', label: 'Diabetes' },\n { key: 'anticoagulants', label: 'Anticoagulants' },\n { key: 'activeInfection', label: 'Active infection' },\n];\n\nexport const UrologyPathwayWidget: 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(() => normalizeUrologyPathway(value), [value]);\n\n const update = (next: UrologyPathwayValue) => {\n setValue(next);\n setTouched();\n };\n\n const setNum = (key: keyof Pick<UrologyPathwayValue, 'stoneSizeMm' | 'prostateVolumeCc' | 'psaNgMl' | 'uroflowQmaxMlSec'>, raw: string) => {\n const n = Number(raw);\n const v = Number.isFinite(n) && n >= 0 ? n : 0;\n if (key === 'stoneSizeMm') {\n update({ ...safe, stoneSizeMm: Math.round(v) });\n return;\n }\n update({ ...safe, [key]: v });\n };\n\n const toggleRisk = (key: keyof UrologyPathwayRisk) => {\n update({\n ...safe,\n risk: { ...safe.risk, [key]: !safe.risk[key] },\n });\n };\n\n if (!fieldDef) return null;\n\n const theme = getThemeConfig('textarea', fieldDef.theme);\n const wrapperClass =\n theme?.wrapperClassName ?? 'rounded-md overflow-hidden flex flex-col border border-[#D0D0D0]';\n const labelClass = theme?.labelClassName;\n\n const subtitle =\n fieldDef.meta && typeof fieldDef.meta === 'object' && fieldDef.meta !== null\n ? String((fieldDef.meta as { subtitle?: unknown }).subtitle ?? '')\n : '';\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-4 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 {subtitle ? (\n <p className=\"px-3 pt-2 text-[11px] text-muted-foreground\">{subtitle}</p>\n ) : null}\n\n <div className={bodyClass}>\n {showError ? <p className=\"text-xs text-red-600\">{error}</p> : null}\n\n <div className=\"grid grid-cols-1 gap-3 md:grid-cols-2\">\n <label className=\"block space-y-1 text-xs\">\n <span className=\"font-medium\">Stone size (mm)</span>\n <Input\n type=\"number\"\n min={0}\n className=\"h-8 text-xs\"\n value={safe.stoneSizeMm}\n onChange={(e) => setNum('stoneSizeMm', e.target.value)}\n disabled={disabled}\n />\n </label>\n <label className=\"flex items-center gap-2 pt-6 text-xs\">\n <Checkbox\n checked={safe.hydronephrosis}\n onCheckedChange={(c) => update({ ...safe, hydronephrosis: c === true })}\n disabled={disabled}\n />\n Hydronephrosis on imaging\n </label>\n <label className=\"block space-y-1 text-xs\">\n <span className=\"font-medium\">Prostate volume (cc)</span>\n <Input\n type=\"number\"\n min={0}\n step={0.1}\n className=\"h-8 text-xs\"\n value={safe.prostateVolumeCc}\n onChange={(e) => setNum('prostateVolumeCc', e.target.value)}\n disabled={disabled}\n />\n </label>\n <label className=\"block space-y-1 text-xs\">\n <span className=\"font-medium\">PSA (ng/mL)</span>\n <Input\n type=\"number\"\n min={0}\n step={0.01}\n className=\"h-8 text-xs\"\n value={safe.psaNgMl}\n onChange={(e) => setNum('psaNgMl', e.target.value)}\n disabled={disabled}\n />\n </label>\n <label className=\"block space-y-1 text-xs md:col-span-2\">\n <span className=\"font-medium\">Uroflow Qmax (mL/s)</span>\n <Input\n type=\"number\"\n min={0}\n step={0.1}\n className=\"h-8 text-xs\"\n value={safe.uroflowQmaxMlSec}\n onChange={(e) => setNum('uroflowQmaxMlSec', e.target.value)}\n disabled={disabled}\n />\n </label>\n </div>\n\n <div className=\"space-y-2 border-t border-muted-foreground/20 pt-3\">\n <p className=\"text-xs font-semibold text-slate-800\">Risk stratification</p>\n <div className=\"grid grid-cols-1 gap-2 sm:grid-cols-2\">\n {RISK_ROWS.map((r) => (\n <label key={r.key} className=\"flex items-center gap-2 text-xs\">\n <Checkbox\n checked={safe.risk[r.key]}\n onCheckedChange={() => toggleRisk(r.key)}\n disabled={disabled}\n />\n {r.label}\n </label>\n ))}\n </div>\n </div>\n </div>\n </div>\n );\n};\n"]}
1
+ {"version":3,"sources":["../src/ui/widgets/UrologyPathwayWidget.tsx"],"names":["useField","useForm","useMemo","normalizeUrologyPathway","getThemeConfig","jsxs","Fragment","jsx","FieldRequiredIndicator","Label","cn","Input","Checkbox"],"mappings":"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","file":"UrologyPathwayWidget-YPYIX43Z.cjs","sourcesContent":["import React, { useMemo } from 'react';\nimport { useField } from '../../react/useField';\nimport { useForm } from '../../react/useForm';\nimport { Label } from '../shadcn/label';\nimport { Input } from '../shadcn/input';\nimport { Checkbox } from '../shadcn/checkbox';\nimport { cn } from '../../core/utils';\nimport { FieldRequiredIndicator } from '../../react/fieldStyle';\nimport { getThemeConfig } from '../themes';\nimport type { UrologyPathwayRisk, UrologyPathwayValue } from '../../core/urologyPathway';\nimport { normalizeUrologyPathway } from '../../core/urologyPathway';\n\nconst RISK_ROWS: { key: keyof UrologyPathwayRisk; label: string }[] = [\n { key: 'ckd', label: 'Chronic kidney disease' },\n { key: 'diabetes', label: 'Diabetes' },\n { key: 'anticoagulants', label: 'Anticoagulants' },\n { key: 'activeInfection', label: 'Active infection' },\n];\n\nexport const UrologyPathwayWidget: 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(() => normalizeUrologyPathway(value), [value]);\n\n const update = (next: UrologyPathwayValue) => {\n setValue(next);\n setTouched();\n };\n\n const setNum = (key: keyof Pick<UrologyPathwayValue, 'stoneSizeMm' | 'prostateVolumeCc' | 'psaNgMl' | 'uroflowQmaxMlSec'>, raw: string) => {\n const n = Number(raw);\n const v = Number.isFinite(n) && n >= 0 ? n : 0;\n if (key === 'stoneSizeMm') {\n update({ ...safe, stoneSizeMm: Math.round(v) });\n return;\n }\n update({ ...safe, [key]: v });\n };\n\n const toggleRisk = (key: keyof UrologyPathwayRisk) => {\n update({\n ...safe,\n risk: { ...safe.risk, [key]: !safe.risk[key] },\n });\n };\n\n if (!fieldDef) return null;\n\n const theme = getThemeConfig('textarea', fieldDef.theme);\n const wrapperClass =\n theme?.wrapperClassName ?? 'rounded-md overflow-hidden flex flex-col border border-[#D0D0D0]';\n const labelClass = theme?.labelClassName;\n\n const subtitle =\n fieldDef.meta && typeof fieldDef.meta === 'object' && fieldDef.meta !== null\n ? String((fieldDef.meta as { subtitle?: unknown }).subtitle ?? '')\n : '';\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-4 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 {subtitle ? (\n <p className=\"px-3 pt-2 text-[11px] text-muted-foreground\">{subtitle}</p>\n ) : null}\n\n <div className={bodyClass}>\n {showError ? <p className=\"text-xs text-red-600\">{error}</p> : null}\n\n <div className=\"grid grid-cols-1 gap-3 md:grid-cols-2\">\n <label className=\"block space-y-1 text-xs\">\n <span className=\"font-medium\">Stone size (mm)</span>\n <Input\n type=\"number\"\n min={0}\n className=\"h-8 text-xs\"\n value={safe.stoneSizeMm}\n onChange={(e) => setNum('stoneSizeMm', e.target.value)}\n disabled={disabled}\n />\n </label>\n <label className=\"flex items-center gap-2 pt-6 text-xs\">\n <Checkbox\n checked={safe.hydronephrosis}\n onCheckedChange={(c) => update({ ...safe, hydronephrosis: c === true })}\n disabled={disabled}\n />\n Hydronephrosis on imaging\n </label>\n <label className=\"block space-y-1 text-xs\">\n <span className=\"font-medium\">Prostate volume (cc)</span>\n <Input\n type=\"number\"\n min={0}\n step={0.1}\n className=\"h-8 text-xs\"\n value={safe.prostateVolumeCc}\n onChange={(e) => setNum('prostateVolumeCc', e.target.value)}\n disabled={disabled}\n />\n </label>\n <label className=\"block space-y-1 text-xs\">\n <span className=\"font-medium\">PSA (ng/mL)</span>\n <Input\n type=\"number\"\n min={0}\n step={0.01}\n className=\"h-8 text-xs\"\n value={safe.psaNgMl}\n onChange={(e) => setNum('psaNgMl', e.target.value)}\n disabled={disabled}\n />\n </label>\n <label className=\"block space-y-1 text-xs md:col-span-2\">\n <span className=\"font-medium\">Uroflow Qmax (mL/s)</span>\n <Input\n type=\"number\"\n min={0}\n step={0.1}\n className=\"h-8 text-xs\"\n value={safe.uroflowQmaxMlSec}\n onChange={(e) => setNum('uroflowQmaxMlSec', e.target.value)}\n disabled={disabled}\n />\n </label>\n </div>\n\n <div className=\"space-y-2 border-t border-muted-foreground/20 pt-3\">\n <p className=\"text-xs font-semibold text-slate-800\">Risk stratification</p>\n <div className=\"grid grid-cols-1 gap-2 sm:grid-cols-2\">\n {RISK_ROWS.map((r) => (\n <label key={r.key} className=\"flex items-center gap-2 text-xs\">\n <Checkbox\n checked={safe.risk[r.key]}\n onCheckedChange={() => toggleRisk(r.key)}\n disabled={disabled}\n />\n {r.label}\n </label>\n ))}\n </div>\n </div>\n </div>\n </div>\n );\n};\n"]}
@@ -2,11 +2,11 @@ import { Checkbox } from './chunk-GNZWSVTB.mjs';
2
2
  import { Textarea } from './chunk-4BAKQIPJ.mjs';
3
3
  import { getThemeConfig } from './chunk-Y7TIWH4I.mjs';
4
4
  import { FieldRequiredIndicator } from './chunk-WYVXXEZI.mjs';
5
- import { useForm } from './chunk-T3UHPMFX.mjs';
5
+ import { useForm } from './chunk-BKZXISZH.mjs';
6
6
  import { Input } from './chunk-VNFBUAZD.mjs';
7
7
  import { Select, SelectTrigger, SelectValue, SelectContent, SelectItem } from './chunk-AZHTIUOL.mjs';
8
8
  import { Button } from './chunk-GXXWMHAA.mjs';
9
- import { useField, useFormStore, normalizeUrologySmartHistory, urologyIpssSevenTotal, urologyIpssBand, formatUrologySmartHistoryToSymptomsNarrative } from './chunk-2BGJZ44Q.mjs';
9
+ import { useField, useFormStore, normalizeUrologySmartHistory, urologyIpssSevenTotal, urologyIpssBand, formatUrologySmartHistoryToSymptomsNarrative } from './chunk-HKEUAERY.mjs';
10
10
  import { Label } from './chunk-HEFZA2AH.mjs';
11
11
  import { cn } from './chunk-VPU66PI6.mjs';
12
12
  import { useMemo, useState, useEffect } from 'react';
@@ -465,5 +465,5 @@ var UrologySmartHistoryWidget = ({ fieldId }) => {
465
465
  };
466
466
 
467
467
  export { UrologySmartHistoryWidget };
468
- //# sourceMappingURL=UrologySmartHistoryWidget-BDKRFBYN.mjs.map
469
- //# sourceMappingURL=UrologySmartHistoryWidget-BDKRFBYN.mjs.map
468
+ //# sourceMappingURL=UrologySmartHistoryWidget-ET6CU36D.mjs.map
469
+ //# sourceMappingURL=UrologySmartHistoryWidget-ET6CU36D.mjs.map