formanitor 0.2.0 → 0.2.1
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.
- package/dist/{AddInvestigationWidget-TQUKTGAW.mjs → AddInvestigationWidget-7UGZQYI5.mjs} +3 -3
- package/dist/{AddInvestigationWidget-TQUKTGAW.mjs.map → AddInvestigationWidget-7UGZQYI5.mjs.map} +1 -1
- package/dist/{AddInvestigationWidget-G7NPTSFY.cjs → AddInvestigationWidget-RY62UCPM.cjs} +7 -7
- package/dist/{AddInvestigationWidget-G7NPTSFY.cjs.map → AddInvestigationWidget-RY62UCPM.cjs.map} +1 -1
- package/dist/{AddMedicationWidget-I5UIT3WG.mjs → AddMedicationWidget-UG26VMUX.mjs} +3 -3
- package/dist/{AddMedicationWidget-I5UIT3WG.mjs.map → AddMedicationWidget-UG26VMUX.mjs.map} +1 -1
- package/dist/{AddMedicationWidget-26RHKIA6.cjs → AddMedicationWidget-WPI32WAP.cjs} +6 -6
- package/dist/{AddMedicationWidget-26RHKIA6.cjs.map → AddMedicationWidget-WPI32WAP.cjs.map} +1 -1
- package/dist/{AddProcedureWidget-B6OUF3BM.cjs → AddProcedureWidget-SF6MTRBV.cjs} +6 -6
- package/dist/{AddProcedureWidget-B6OUF3BM.cjs.map → AddProcedureWidget-SF6MTRBV.cjs.map} +1 -1
- package/dist/{AddProcedureWidget-NB46COB6.mjs → AddProcedureWidget-SQJUKKMK.mjs} +3 -3
- package/dist/{AddProcedureWidget-NB46COB6.mjs.map → AddProcedureWidget-SQJUKKMK.mjs.map} +1 -1
- package/dist/{BiometryIolWorkupWidget-TCU4MMVI.cjs → BiometryIolWorkupWidget-I5AJOYB2.cjs} +6 -6
- package/dist/{BiometryIolWorkupWidget-TCU4MMVI.cjs.map → BiometryIolWorkupWidget-I5AJOYB2.cjs.map} +1 -1
- package/dist/{BiometryIolWorkupWidget-F7HRYMOJ.mjs → BiometryIolWorkupWidget-NL2M7ZAA.mjs} +4 -4
- package/dist/{BiometryIolWorkupWidget-F7HRYMOJ.mjs.map → BiometryIolWorkupWidget-NL2M7ZAA.mjs.map} +1 -1
- package/dist/{DateTimeWidget-72YUK7PX.cjs → DateTimeWidget-DIDVF2EB.cjs} +6 -6
- package/dist/{DateTimeWidget-72YUK7PX.cjs.map → DateTimeWidget-DIDVF2EB.cjs.map} +1 -1
- package/dist/{DateTimeWidget-WKQIEQSA.mjs → DateTimeWidget-LFBB6HOP.mjs} +4 -4
- package/dist/{DateTimeWidget-WKQIEQSA.mjs.map → DateTimeWidget-LFBB6HOP.mjs.map} +1 -1
- package/dist/{DateWidget-K2TVTZ7Z.mjs → DateWidget-4ND5TKP2.mjs} +4 -4
- package/dist/{DateWidget-K2TVTZ7Z.mjs.map → DateWidget-4ND5TKP2.mjs.map} +1 -1
- package/dist/{DateWidget-SYDMSGWO.cjs → DateWidget-BCVR5GDK.cjs} +6 -6
- package/dist/{DateWidget-SYDMSGWO.cjs.map → DateWidget-BCVR5GDK.cjs.map} +1 -1
- package/dist/{DiagnosisTextareaWidget-UKWLE2SQ.cjs → DiagnosisTextareaWidget-E7OQRUMX.cjs} +7 -7
- package/dist/{DiagnosisTextareaWidget-UKWLE2SQ.cjs.map → DiagnosisTextareaWidget-E7OQRUMX.cjs.map} +1 -1
- package/dist/{DiagnosisTextareaWidget-RD65PGDY.mjs → DiagnosisTextareaWidget-MAOXCXEZ.mjs} +4 -4
- package/dist/{DiagnosisTextareaWidget-RD65PGDY.mjs.map → DiagnosisTextareaWidget-MAOXCXEZ.mjs.map} +1 -1
- package/dist/{DifferentialDiagnosisWidget-ZGFXP2BH.cjs → DifferentialDiagnosisWidget-ANALLNKL.cjs} +4 -4
- package/dist/{DifferentialDiagnosisWidget-ZGFXP2BH.cjs.map → DifferentialDiagnosisWidget-ANALLNKL.cjs.map} +1 -1
- package/dist/{DifferentialDiagnosisWidget-FENJP245.mjs → DifferentialDiagnosisWidget-LCY2SA2I.mjs} +3 -3
- package/dist/{DifferentialDiagnosisWidget-FENJP245.mjs.map → DifferentialDiagnosisWidget-LCY2SA2I.mjs.map} +1 -1
- package/dist/{DischargeMedicationOrdersWidget-26ALTGJM.mjs → DischargeMedicationOrdersWidget-GYT35W7J.mjs} +4 -4
- package/dist/{DischargeMedicationOrdersWidget-26ALTGJM.mjs.map → DischargeMedicationOrdersWidget-GYT35W7J.mjs.map} +1 -1
- package/dist/{DischargeMedicationOrdersWidget-B4CJQ3QS.cjs → DischargeMedicationOrdersWidget-ILWNZ7VM.cjs} +7 -7
- package/dist/{DischargeMedicationOrdersWidget-B4CJQ3QS.cjs.map → DischargeMedicationOrdersWidget-ILWNZ7VM.cjs.map} +1 -1
- package/dist/{EditableTable-LPAYCK36.mjs → EditableTable-TGCVUBLO.mjs} +3 -3
- package/dist/{EditableTable-LPAYCK36.mjs.map → EditableTable-TGCVUBLO.mjs.map} +1 -1
- package/dist/{EditableTable-YB4IC3ZK.cjs → EditableTable-VCUNJZEX.cjs} +4 -4
- package/dist/{EditableTable-YB4IC3ZK.cjs.map → EditableTable-VCUNJZEX.cjs.map} +1 -1
- package/dist/{FollowupWidget-NJ4QDBOG.mjs → FollowupWidget-F6FRZO4T.mjs} +3 -3
- package/dist/{FollowupWidget-NJ4QDBOG.mjs.map → FollowupWidget-F6FRZO4T.mjs.map} +1 -1
- package/dist/{FollowupWidget-EEKOI2TW.cjs → FollowupWidget-NBTOV2ML.cjs} +4 -4
- package/dist/{FollowupWidget-EEKOI2TW.cjs.map → FollowupWidget-NBTOV2ML.cjs.map} +1 -1
- package/dist/{FunctionalImpairmentScoreWidget-HAAPCMIS.cjs → FunctionalImpairmentScoreWidget-5V5SNLTF.cjs} +6 -6
- package/dist/{FunctionalImpairmentScoreWidget-HAAPCMIS.cjs.map → FunctionalImpairmentScoreWidget-5V5SNLTF.cjs.map} +1 -1
- package/dist/{FunctionalImpairmentScoreWidget-ZNLKKBYN.mjs → FunctionalImpairmentScoreWidget-QKIZE7KT.mjs} +4 -4
- package/dist/{FunctionalImpairmentScoreWidget-ZNLKKBYN.mjs.map → FunctionalImpairmentScoreWidget-QKIZE7KT.mjs.map} +1 -1
- package/dist/{GsExaminationWidget-EX6C3EF5.cjs → GsExaminationWidget-57SL4BCI.cjs} +10 -10
- package/dist/{GsExaminationWidget-EX6C3EF5.cjs.map → GsExaminationWidget-57SL4BCI.cjs.map} +1 -1
- package/dist/{GsExaminationWidget-MEIUHRQQ.mjs → GsExaminationWidget-J4VABGY6.mjs} +4 -4
- package/dist/{GsExaminationWidget-MEIUHRQQ.mjs.map → GsExaminationWidget-J4VABGY6.mjs.map} +1 -1
- package/dist/{GsGradingWidget-4UPOEYNL.mjs → GsGradingWidget-3WTLIP33.mjs} +4 -4
- package/dist/{GsGradingWidget-4UPOEYNL.mjs.map → GsGradingWidget-3WTLIP33.mjs.map} +1 -1
- package/dist/{GsGradingWidget-IV3UF63W.cjs → GsGradingWidget-CIXE36HF.cjs} +12 -12
- package/dist/{GsGradingWidget-IV3UF63W.cjs.map → GsGradingWidget-CIXE36HF.cjs.map} +1 -1
- package/dist/{GsSmartHistoryWidget-7QNJZEI4.cjs → GsSmartHistoryWidget-6Q2IIGDG.cjs} +12 -12
- package/dist/{GsSmartHistoryWidget-7QNJZEI4.cjs.map → GsSmartHistoryWidget-6Q2IIGDG.cjs.map} +1 -1
- package/dist/{GsSmartHistoryWidget-LGN7W2AV.mjs → GsSmartHistoryWidget-IOGZ6GNS.mjs} +4 -4
- package/dist/{GsSmartHistoryWidget-LGN7W2AV.mjs.map → GsSmartHistoryWidget-IOGZ6GNS.mjs.map} +1 -1
- package/dist/{HiddenVitalsWidget-AMH32HT2.cjs → HiddenVitalsWidget-HBK7PBPR.cjs} +6 -6
- package/dist/{HiddenVitalsWidget-AMH32HT2.cjs.map → HiddenVitalsWidget-HBK7PBPR.cjs.map} +1 -1
- package/dist/{HiddenVitalsWidget-W23IFSEF.mjs → HiddenVitalsWidget-JH3NRZLM.mjs} +4 -4
- package/dist/{HiddenVitalsWidget-W23IFSEF.mjs.map → HiddenVitalsWidget-JH3NRZLM.mjs.map} +1 -1
- package/dist/{LensAssessmentWidget-SJ6YUTSN.mjs → LensAssessmentWidget-7WMULFS2.mjs} +4 -4
- package/dist/{LensAssessmentWidget-SJ6YUTSN.mjs.map → LensAssessmentWidget-7WMULFS2.mjs.map} +1 -1
- package/dist/{LensAssessmentWidget-LSHBUTT5.cjs → LensAssessmentWidget-GSOOD7BX.cjs} +6 -6
- package/dist/{LensAssessmentWidget-LSHBUTT5.cjs.map → LensAssessmentWidget-GSOOD7BX.cjs.map} +1 -1
- package/dist/{MarMedicationOrdersWidget-ZKZLSZRN.cjs → MarMedicationOrdersWidget-3E6GFOR6.cjs} +7 -7
- package/dist/{MarMedicationOrdersWidget-ZKZLSZRN.cjs.map → MarMedicationOrdersWidget-3E6GFOR6.cjs.map} +1 -1
- package/dist/{MarMedicationOrdersWidget-IKMAFPRG.mjs → MarMedicationOrdersWidget-QZUVSEB5.mjs} +4 -4
- package/dist/{MarMedicationOrdersWidget-IKMAFPRG.mjs.map → MarMedicationOrdersWidget-QZUVSEB5.mjs.map} +1 -1
- package/dist/{OBGExaminationWidget-SMFZ2WCL.cjs → OBGExaminationWidget-F2ZNSP2M.cjs} +11 -11
- package/dist/{OBGExaminationWidget-SMFZ2WCL.cjs.map → OBGExaminationWidget-F2ZNSP2M.cjs.map} +1 -1
- package/dist/{OBGExaminationWidget-BK4ERETW.mjs → OBGExaminationWidget-POVLALMA.mjs} +4 -4
- package/dist/{OBGExaminationWidget-BK4ERETW.mjs.map → OBGExaminationWidget-POVLALMA.mjs.map} +1 -1
- package/dist/{OBGPathwayWidget-U5BCAESB.mjs → OBGPathwayWidget-CGT7Q4T2.mjs} +5 -5
- package/dist/{OBGPathwayWidget-U5BCAESB.mjs.map → OBGPathwayWidget-CGT7Q4T2.mjs.map} +1 -1
- package/dist/{OBGPathwayWidget-5YTUDBEH.cjs → OBGPathwayWidget-WCIQENMO.cjs} +17 -17
- package/dist/{OBGPathwayWidget-5YTUDBEH.cjs.map → OBGPathwayWidget-WCIQENMO.cjs.map} +1 -1
- package/dist/{ObstetricHistoryWidget-WD572Q7H.mjs → ObstetricHistoryWidget-EGVLL4X2.mjs} +4 -4
- package/dist/{ObstetricHistoryWidget-WD572Q7H.mjs.map → ObstetricHistoryWidget-EGVLL4X2.mjs.map} +1 -1
- package/dist/{ObstetricHistoryWidget-GC63CB3U.cjs → ObstetricHistoryWidget-XU6R7IPP.cjs} +12 -12
- package/dist/{ObstetricHistoryWidget-GC63CB3U.cjs.map → ObstetricHistoryWidget-XU6R7IPP.cjs.map} +1 -1
- package/dist/{OphthalDiagnosisWidget-Y3AHD6AG.mjs → OphthalDiagnosisWidget-G5RCC2QZ.mjs} +3 -3
- package/dist/{OphthalDiagnosisWidget-Y3AHD6AG.mjs.map → OphthalDiagnosisWidget-G5RCC2QZ.mjs.map} +1 -1
- package/dist/{OphthalDiagnosisWidget-QXFK446I.cjs → OphthalDiagnosisWidget-OQPTHJ7E.cjs} +4 -4
- package/dist/{OphthalDiagnosisWidget-QXFK446I.cjs.map → OphthalDiagnosisWidget-OQPTHJ7E.cjs.map} +1 -1
- package/dist/{OphthalmologyWidget-U2HQMZ4J.cjs → OphthalmologyWidget-I3BKWOI2.cjs} +4 -4
- package/dist/{OphthalmologyWidget-U2HQMZ4J.cjs.map → OphthalmologyWidget-I3BKWOI2.cjs.map} +1 -1
- package/dist/{OphthalmologyWidget-CRQMN5QU.mjs → OphthalmologyWidget-RG2AI6WA.mjs} +3 -3
- package/dist/{OphthalmologyWidget-CRQMN5QU.mjs.map → OphthalmologyWidget-RG2AI6WA.mjs.map} +1 -1
- package/dist/{OrthopedicExamWidget-PAOIVU6Z.mjs → OrthopedicExamWidget-BBZP6NVT.mjs} +4 -4
- package/dist/{OrthopedicExamWidget-PAOIVU6Z.mjs.map → OrthopedicExamWidget-BBZP6NVT.mjs.map} +1 -1
- package/dist/{OrthopedicExamWidget-LP7VN3W5.cjs → OrthopedicExamWidget-M4KKU5RC.cjs} +6 -6
- package/dist/{OrthopedicExamWidget-LP7VN3W5.cjs.map → OrthopedicExamWidget-M4KKU5RC.cjs.map} +1 -1
- package/dist/{PainScaleFlagsWidget-MRMQ7HPJ.mjs → PainScaleFlagsWidget-E576R6QB.mjs} +4 -4
- package/dist/{PainScaleFlagsWidget-MRMQ7HPJ.mjs.map → PainScaleFlagsWidget-E576R6QB.mjs.map} +1 -1
- package/dist/{PainScaleFlagsWidget-IBNGVVHD.cjs → PainScaleFlagsWidget-QHGESXNE.cjs} +8 -8
- package/dist/{PainScaleFlagsWidget-IBNGVVHD.cjs.map → PainScaleFlagsWidget-QHGESXNE.cjs.map} +1 -1
- package/dist/{ReferralWidget-PDNEKHFO.cjs → ReferralWidget-J2PWYFDT.cjs} +7 -7
- package/dist/{ReferralWidget-PDNEKHFO.cjs.map → ReferralWidget-J2PWYFDT.cjs.map} +1 -1
- package/dist/{ReferralWidget-IYTS32TS.mjs → ReferralWidget-UPYWEO5R.mjs} +4 -4
- package/dist/{ReferralWidget-IYTS32TS.mjs.map → ReferralWidget-UPYWEO5R.mjs.map} +1 -1
- package/dist/RichTextWidget-BBCNJPMH.mjs +11 -0
- package/dist/{RichTextWidget-5OOJ2LJN.mjs.map → RichTextWidget-BBCNJPMH.mjs.map} +1 -1
- package/dist/{RichTextWidget-XWLOHKLE.cjs → RichTextWidget-CRQHNVJR.cjs} +7 -7
- package/dist/{RichTextWidget-XWLOHKLE.cjs.map → RichTextWidget-CRQHNVJR.cjs.map} +1 -1
- package/dist/SmartTextarea-DKWV4R6H.cjs +19 -0
- package/dist/{SmartTextarea-L7Q4CORK.cjs.map → SmartTextarea-DKWV4R6H.cjs.map} +1 -1
- package/dist/SmartTextarea-ZTQIW6O2.mjs +10 -0
- package/dist/{SmartTextarea-ZCXGMZLG.mjs.map → SmartTextarea-ZTQIW6O2.mjs.map} +1 -1
- package/dist/{SuggestionTextareaWidget-RN5LZYFC.mjs → SuggestionTextareaWidget-22NR3JWM.mjs} +7 -7
- package/dist/{SuggestionTextareaWidget-RN5LZYFC.mjs.map → SuggestionTextareaWidget-22NR3JWM.mjs.map} +1 -1
- package/dist/{SuggestionTextareaWidget-2TEITBPF.cjs → SuggestionTextareaWidget-WCTPWW2E.cjs} +18 -18
- package/dist/{SuggestionTextareaWidget-2TEITBPF.cjs.map → SuggestionTextareaWidget-WCTPWW2E.cjs.map} +1 -1
- package/dist/{SurgicalRiskFlagsWidget-JCSL3GWS.cjs → SurgicalRiskFlagsWidget-Q5FTWB3M.cjs} +6 -6
- package/dist/{SurgicalRiskFlagsWidget-JCSL3GWS.cjs.map → SurgicalRiskFlagsWidget-Q5FTWB3M.cjs.map} +1 -1
- package/dist/{SurgicalRiskFlagsWidget-DBICX4MB.mjs → SurgicalRiskFlagsWidget-WCAHZKKG.mjs} +4 -4
- package/dist/{SurgicalRiskFlagsWidget-DBICX4MB.mjs.map → SurgicalRiskFlagsWidget-WCAHZKKG.mjs.map} +1 -1
- package/dist/{UrologyExaminationWidget-74L3IN2X.cjs → UrologyExaminationWidget-JYUGZ5CG.cjs} +12 -12
- package/dist/{UrologyExaminationWidget-74L3IN2X.cjs.map → UrologyExaminationWidget-JYUGZ5CG.cjs.map} +1 -1
- package/dist/{UrologyExaminationWidget-IQEBP6CI.mjs → UrologyExaminationWidget-QDTD3FJX.mjs} +4 -4
- package/dist/{UrologyExaminationWidget-IQEBP6CI.mjs.map → UrologyExaminationWidget-QDTD3FJX.mjs.map} +1 -1
- package/dist/{UrologyPathwayWidget-S4QY6RD6.mjs → UrologyPathwayWidget-QTFKUIM7.mjs} +4 -4
- package/dist/{UrologyPathwayWidget-S4QY6RD6.mjs.map → UrologyPathwayWidget-QTFKUIM7.mjs.map} +1 -1
- package/dist/{UrologyPathwayWidget-UJY5EW2G.cjs → UrologyPathwayWidget-TXZQNGP4.cjs} +7 -7
- package/dist/{UrologyPathwayWidget-UJY5EW2G.cjs.map → UrologyPathwayWidget-TXZQNGP4.cjs.map} +1 -1
- package/dist/{UrologySmartHistoryWidget-XKZF63BV.cjs → UrologySmartHistoryWidget-53NATEO3.cjs} +15 -15
- package/dist/{UrologySmartHistoryWidget-XKZF63BV.cjs.map → UrologySmartHistoryWidget-53NATEO3.cjs.map} +1 -1
- package/dist/{UrologySmartHistoryWidget-NFTHHK6A.mjs → UrologySmartHistoryWidget-PBU4QXQJ.mjs} +4 -4
- package/dist/{UrologySmartHistoryWidget-NFTHHK6A.mjs.map → UrologySmartHistoryWidget-PBU4QXQJ.mjs.map} +1 -1
- package/dist/{VitalsWidget-MBYDGC7U.mjs → VitalsWidget-BRFUKGNO.mjs} +3 -3
- package/dist/{VitalsWidget-MBYDGC7U.mjs.map → VitalsWidget-BRFUKGNO.mjs.map} +1 -1
- package/dist/{VitalsWidget-44UWQGIF.cjs → VitalsWidget-PDCYXNBM.cjs} +5 -5
- package/dist/{VitalsWidget-44UWQGIF.cjs.map → VitalsWidget-PDCYXNBM.cjs.map} +1 -1
- package/dist/{chunk-AZVJU7NZ.mjs → chunk-3KRDT7TX.mjs} +5 -5
- package/dist/{chunk-AZVJU7NZ.mjs.map → chunk-3KRDT7TX.mjs.map} +1 -1
- package/dist/{chunk-ZSOIQVB3.mjs → chunk-5I2RC47Y.mjs} +3 -3
- package/dist/{chunk-ZSOIQVB3.mjs.map → chunk-5I2RC47Y.mjs.map} +1 -1
- package/dist/{chunk-KPGTPJDH.cjs → chunk-6YX37XBM.cjs} +4 -4
- package/dist/{chunk-KPGTPJDH.cjs.map → chunk-6YX37XBM.cjs.map} +1 -1
- package/dist/{chunk-XR2ZM654.mjs → chunk-7L2JOWGA.mjs} +3 -3
- package/dist/{chunk-XR2ZM654.mjs.map → chunk-7L2JOWGA.mjs.map} +1 -1
- package/dist/{chunk-FZEEWRW3.cjs → chunk-BOBX45NY.cjs} +5 -5
- package/dist/{chunk-FZEEWRW3.cjs.map → chunk-BOBX45NY.cjs.map} +1 -1
- package/dist/{chunk-JNVSA77L.cjs → chunk-GPU5P3FB.cjs} +7 -7
- package/dist/{chunk-JNVSA77L.cjs.map → chunk-GPU5P3FB.cjs.map} +1 -1
- package/dist/{chunk-NJJTIL3U.cjs → chunk-I7TJVWYV.cjs} +6 -6
- package/dist/{chunk-NJJTIL3U.cjs.map → chunk-I7TJVWYV.cjs.map} +1 -1
- package/dist/{chunk-CTW65YW2.cjs → chunk-L4CIIT4U.cjs} +9 -9
- package/dist/{chunk-CTW65YW2.cjs.map → chunk-L4CIIT4U.cjs.map} +1 -1
- package/dist/{chunk-DE7VZVKR.cjs → chunk-MQ2JV7HL.cjs} +11 -11
- package/dist/{chunk-DE7VZVKR.cjs.map → chunk-MQ2JV7HL.cjs.map} +1 -1
- package/dist/{chunk-IDSBJOFY.cjs → chunk-SHQHDSA4.cjs} +76 -2
- package/dist/chunk-SHQHDSA4.cjs.map +1 -0
- package/dist/{chunk-YYPMIUDW.mjs → chunk-ULMK3TUI.mjs} +3 -3
- package/dist/{chunk-YYPMIUDW.mjs.map → chunk-ULMK3TUI.mjs.map} +1 -1
- package/dist/{chunk-GFDE2KZC.mjs → chunk-VZT5YNCD.mjs} +4 -4
- package/dist/{chunk-GFDE2KZC.mjs.map → chunk-VZT5YNCD.mjs.map} +1 -1
- package/dist/{chunk-MIUUO4CI.mjs → chunk-YHNI5NIX.mjs} +5 -5
- package/dist/{chunk-MIUUO4CI.mjs.map → chunk-YHNI5NIX.mjs.map} +1 -1
- package/dist/{chunk-ZGPHTPAN.mjs → chunk-ZTT5XJR7.mjs} +73 -3
- package/dist/chunk-ZTT5XJR7.mjs.map +1 -0
- package/dist/index.cjs +596 -125
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +64 -6
- package/dist/index.d.ts +64 -6
- package/dist/index.mjs +544 -74
- package/dist/index.mjs.map +1 -1
- package/dist/read-only-table.d.cts +1 -1
- package/dist/read-only-table.d.ts +1 -1
- package/dist/rich-text.cjs +5 -5
- package/dist/rich-text.mjs +4 -4
- package/dist/smart.cjs +5 -5
- package/dist/smart.d.cts +1 -1
- package/dist/smart.d.ts +1 -1
- package/dist/smart.mjs +3 -3
- package/dist/{types-D0iYXUOo.d.cts → types-CYtJk8H9.d.cts} +49 -3
- package/dist/{types-D0iYXUOo.d.ts → types-CYtJk8H9.d.ts} +49 -3
- package/package.json +1 -1
- package/dist/RichTextWidget-5OOJ2LJN.mjs +0 -11
- package/dist/SmartTextarea-L7Q4CORK.cjs +0 -19
- package/dist/SmartTextarea-ZCXGMZLG.mjs +0 -10
- package/dist/chunk-IDSBJOFY.cjs.map +0 -1
- package/dist/chunk-ZGPHTPAN.mjs.map +0 -1
|
@@ -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-
|
|
4
|
+
import { useForm } from './chunk-7L2JOWGA.mjs';
|
|
5
5
|
import { Input } from './chunk-VNFBUAZD.mjs';
|
|
6
|
-
import { useField, normalizeUrologyPathway } from './chunk-
|
|
6
|
+
import { useField, normalizeUrologyPathway } from './chunk-ZTT5XJR7.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-
|
|
153
|
-
//# sourceMappingURL=UrologyPathwayWidget-
|
|
152
|
+
//# sourceMappingURL=UrologyPathwayWidget-QTFKUIM7.mjs.map
|
|
153
|
+
//# sourceMappingURL=UrologyPathwayWidget-QTFKUIM7.mjs.map
|
package/dist/{UrologyPathwayWidget-S4QY6RD6.mjs.map → UrologyPathwayWidget-QTFKUIM7.mjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ui/widgets/UrologyPathwayWidget.tsx"],"names":[],"mappings":"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","file":"UrologyPathwayWidget-S4QY6RD6.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-QTFKUIM7.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
|
|
6
|
+
var chunk6YX37XBM_cjs = require('./chunk-6YX37XBM.cjs');
|
|
7
7
|
var chunkTJHG5WHX_cjs = require('./chunk-TJHG5WHX.cjs');
|
|
8
|
-
var
|
|
8
|
+
var chunkSHQHDSA4_cjs = require('./chunk-SHQHDSA4.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 } =
|
|
22
|
-
const { state } =
|
|
21
|
+
const { fieldDef, value, setValue, setTouched, error, touched, disabled } = chunkSHQHDSA4_cjs.useField(fieldId);
|
|
22
|
+
const { state } = chunk6YX37XBM_cjs.useForm();
|
|
23
23
|
const showError = !!error && (touched || state.submitAttempted);
|
|
24
|
-
const safe = react.useMemo(() =>
|
|
24
|
+
const safe = react.useMemo(() => chunkSHQHDSA4_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-
|
|
155
|
-
//# sourceMappingURL=UrologyPathwayWidget-
|
|
154
|
+
//# sourceMappingURL=UrologyPathwayWidget-TXZQNGP4.cjs.map
|
|
155
|
+
//# sourceMappingURL=UrologyPathwayWidget-TXZQNGP4.cjs.map
|
package/dist/{UrologyPathwayWidget-UJY5EW2G.cjs.map → UrologyPathwayWidget-TXZQNGP4.cjs.map}
RENAMED
|
@@ -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-UJY5EW2G.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-TXZQNGP4.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"]}
|
package/dist/{UrologySmartHistoryWidget-XKZF63BV.cjs → UrologySmartHistoryWidget-53NATEO3.cjs}
RENAMED
|
@@ -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
|
|
7
|
+
var chunk6YX37XBM_cjs = require('./chunk-6YX37XBM.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
|
|
11
|
+
var chunkSHQHDSA4_cjs = require('./chunk-SHQHDSA4.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');
|
|
@@ -78,13 +78,13 @@ function Panel({
|
|
|
78
78
|
] });
|
|
79
79
|
}
|
|
80
80
|
var UrologySmartHistoryWidget = ({ fieldId }) => {
|
|
81
|
-
const { fieldDef, value, setValue, setTouched, error, touched, disabled } =
|
|
82
|
-
const hopcField =
|
|
83
|
-
const syndromeField =
|
|
84
|
-
const { state } =
|
|
85
|
-
const store =
|
|
81
|
+
const { fieldDef, value, setValue, setTouched, error, touched, disabled } = chunkSHQHDSA4_cjs.useField(fieldId);
|
|
82
|
+
const hopcField = chunkSHQHDSA4_cjs.useField(SYMPTOMS_FIELD);
|
|
83
|
+
const syndromeField = chunkSHQHDSA4_cjs.useField(ACTIVE_SYNDROME_FIELD);
|
|
84
|
+
const { state } = chunk6YX37XBM_cjs.useForm();
|
|
85
|
+
const store = chunkSHQHDSA4_cjs.useFormStore();
|
|
86
86
|
const showError = !!error && (touched || state.submitAttempted);
|
|
87
|
-
const safe = react.useMemo(() =>
|
|
87
|
+
const safe = react.useMemo(() => chunkSHQHDSA4_cjs.normalizeUrologySmartHistory(value), [value]);
|
|
88
88
|
const chips = react.useMemo(() => chipList(state), [state]);
|
|
89
89
|
const rawSyndrome = syndromeField.value ?? state.values[ACTIVE_SYNDROME_FIELD];
|
|
90
90
|
const syndrome = typeof rawSyndrome === "string" && rawSyndrome !== "" && rawSyndrome !== "none" ? rawSyndrome : "none";
|
|
@@ -96,8 +96,8 @@ var UrologySmartHistoryWidget = ({ fieldId }) => {
|
|
|
96
96
|
setValue(next);
|
|
97
97
|
setTouched();
|
|
98
98
|
};
|
|
99
|
-
const ipssTotal =
|
|
100
|
-
const ipssBandLabel =
|
|
99
|
+
const ipssTotal = chunkSHQHDSA4_cjs.urologyIpssSevenTotal(safe.ipss);
|
|
100
|
+
const ipssBandLabel = chunkSHQHDSA4_cjs.urologyIpssBand(ipssTotal);
|
|
101
101
|
const bandClass = ipssBandLabel === "Severe" ? "bg-red-500/15 text-red-700" : ipssBandLabel === "Moderate" ? "bg-amber-500/15 text-amber-800" : "bg-emerald-500/15 text-emerald-800";
|
|
102
102
|
const setSocrates = (key, v) => {
|
|
103
103
|
if (key === "severity") {
|
|
@@ -114,7 +114,7 @@ var UrologySmartHistoryWidget = ({ fieldId }) => {
|
|
|
114
114
|
const [hopcNarrativeLocked, setHopcNarrativeLocked] = react.useState(false);
|
|
115
115
|
react.useEffect(() => {
|
|
116
116
|
if (hopcNarrativeLocked || disabled) return;
|
|
117
|
-
const next =
|
|
117
|
+
const next = chunkSHQHDSA4_cjs.formatUrologySmartHistoryToSymptomsNarrative(chunkSHQHDSA4_cjs.normalizeUrologySmartHistory(value), {
|
|
118
118
|
showPain,
|
|
119
119
|
showLUTS,
|
|
120
120
|
showHaem,
|
|
@@ -434,8 +434,8 @@ var UrologySmartHistoryWidget = ({ fieldId }) => {
|
|
|
434
434
|
onClick: () => {
|
|
435
435
|
setHopcNarrativeLocked(false);
|
|
436
436
|
hopcField.setValue(
|
|
437
|
-
|
|
438
|
-
|
|
437
|
+
chunkSHQHDSA4_cjs.formatUrologySmartHistoryToSymptomsNarrative(
|
|
438
|
+
chunkSHQHDSA4_cjs.normalizeUrologySmartHistory(value),
|
|
439
439
|
{ showPain, showLUTS, showHaem, showSex }
|
|
440
440
|
)
|
|
441
441
|
);
|
|
@@ -467,5 +467,5 @@ var UrologySmartHistoryWidget = ({ fieldId }) => {
|
|
|
467
467
|
};
|
|
468
468
|
|
|
469
469
|
exports.UrologySmartHistoryWidget = UrologySmartHistoryWidget;
|
|
470
|
-
//# sourceMappingURL=UrologySmartHistoryWidget-
|
|
471
|
-
//# sourceMappingURL=UrologySmartHistoryWidget-
|
|
470
|
+
//# sourceMappingURL=UrologySmartHistoryWidget-53NATEO3.cjs.map
|
|
471
|
+
//# sourceMappingURL=UrologySmartHistoryWidget-53NATEO3.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ui/widgets/UrologySmartHistoryWidget.tsx"],"names":["jsxs","jsx","useField","useForm","useFormStore","useMemo","normalizeUrologySmartHistory","urologyIpssSevenTotal","urologyIpssBand","useState","useEffect","formatUrologySmartHistoryToSymptomsNarrative","getThemeConfig","Fragment","FieldRequiredIndicator","Label","cn","Input","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","Checkbox","Button","Textarea"],"mappings":"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","file":"UrologySmartHistoryWidget-XKZF63BV.cjs","sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\nimport { useField } from '../../react/useField';\nimport { useForm } from '../../react/useForm';\nimport { useFormStore } from '../../react/FormProvider';\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 { UrologySmartHistoryValue } from '../../core/urologyPathway';\nimport {\n formatUrologySmartHistoryToSymptomsNarrative,\n normalizeUrologySmartHistory,\n urologyIpssBand,\n urologyIpssSevenTotal,\n} from '../../core/urologyPathway';\n\nconst CHIEF_CHIPS_FIELD = 'chief_complaints_chips';\nconst ACTIVE_SYNDROME_FIELD = 'uro_active_syndrome';\nconst CHIEF_TEXT_FIELD = 'chief_complaints';\nconst SYMPTOMS_FIELD = 'symptoms';\nconst DIAGNOSIS_FIELD = 'diagnosis';\nconst URO_DURATION_FIELD = 'uro_chief_duration';\nconst URO_ONSET_FIELD = 'uro_chief_onset';\nconst URO_PROGRESSION_FIELD = 'uro_chief_progression';\n\nconst SYNDROME_LABELS: Record<string, string> = {\n luts: 'LUTS / BPH',\n stone: 'Urolithiasis (stone)',\n haematuria: 'Haematuria',\n scrotal: 'Scrotal swelling',\n retention: 'Acute retention',\n ed_infertility: 'ED / Infertility',\n uti: 'UTI / infection',\n};\n\nfunction chipList(state: { values: Record<string, unknown> }): string[] {\n const raw = state.values[CHIEF_CHIPS_FIELD];\n return Array.isArray(raw) ? raw.filter((x): x is string => typeof x === 'string') : [];\n}\n\nfunction str(x: unknown): string {\n return typeof x === 'string' ? x : '';\n}\n\n/** Embedded chief fields often use `value: \"none\"` for \"—\"; do not merge that into `chief_complaints`. */\nfunction chiefOptionalFieldDisplay(x: unknown): string {\n const s = str(x).trim();\n if (!s || s.toLowerCase() === 'none') return '';\n return s;\n}\n\nfunction nonEmptyLines(lines: Array<string | undefined | null>): string[] {\n return lines.map((s) => (s ?? '').trim()).filter(Boolean);\n}\n\nconst IPSS_LABELS: Record<keyof UrologySmartHistoryValue['ipss'], string> = {\n incomplete: 'Incomplete emptying',\n frequency: 'Frequency (<2h)',\n intermittency: 'Intermittency',\n urgency: 'Urgency',\n weakStream: 'Weak stream',\n straining: 'Straining',\n nocturia: 'Nocturia (×/night)',\n};\n\nconst SOCRATES_KEYS = [\n 'site',\n 'onset',\n 'character',\n 'radiation',\n 'associated',\n 'timing',\n 'exacerbating',\n] as const;\n\nfunction Panel({\n title,\n right,\n children,\n}: {\n title: string;\n right?: React.ReactNode;\n children: React.ReactNode;\n}) {\n return (\n <div className=\"overflow-hidden rounded-md border border-[#D0D0D0] bg-white\">\n <div className=\"flex items-center justify-between border-b border-[#D0D0D0] bg-[#FEE8EC]/50 px-3 py-1.5\">\n <span className=\"text-xs font-semibold text-slate-700\">{title}</span>\n {right}\n </div>\n <div className=\"p-3\">{children}</div>\n </div>\n );\n}\n\nexport const UrologySmartHistoryWidget: React.FC<{ fieldId: string }> = ({ fieldId }) => {\n const { fieldDef, value, setValue, setTouched, error, touched, disabled } = useField(fieldId);\n const hopcField = useField(SYMPTOMS_FIELD);\n const syndromeField = useField(ACTIVE_SYNDROME_FIELD);\n const { state } = useForm();\n const store = useFormStore();\n const showError = !!error && (touched || state.submitAttempted);\n\n const safe = useMemo(() => normalizeUrologySmartHistory(value), [value]);\n const chips = useMemo(() => chipList(state), [state]);\n\n const rawSyndrome = syndromeField.value ?? state.values[ACTIVE_SYNDROME_FIELD];\n const syndrome =\n typeof rawSyndrome === 'string' && rawSyndrome !== '' && rawSyndrome !== 'none'\n ? rawSyndrome\n : 'none';\n\n const showPain =\n chips.includes('pain abdomen flank') ||\n chips.includes('scrotal swelling pain') ||\n syndrome === 'stone' ||\n syndrome === 'scrotal';\n\n const showLUTS =\n syndrome === 'luts' ||\n syndrome === 'retention' ||\n chips.includes('frequency urgency') ||\n chips.includes('poor stream') ||\n chips.includes('acute retention');\n\n const showHaem = syndrome === 'haematuria' || chips.includes('haematuria');\n\n const showSex =\n syndrome === 'ed_infertility' ||\n chips.includes('erectile dysfunction') ||\n chips.includes('infertility concern');\n\n const update = (next: UrologySmartHistoryValue) => {\n setValue(next);\n setTouched();\n };\n\n const ipssTotal = urologyIpssSevenTotal(safe.ipss);\n const ipssBandLabel = urologyIpssBand(ipssTotal);\n const bandClass =\n ipssBandLabel === 'Severe'\n ? 'bg-red-500/15 text-red-700'\n : ipssBandLabel === 'Moderate'\n ? 'bg-amber-500/15 text-amber-800'\n : 'bg-emerald-500/15 text-emerald-800';\n\n const setSocrates = (key: (typeof SOCRATES_KEYS)[number] | 'severity', v: string | number) => {\n if (key === 'severity') {\n const n = typeof v === 'number' ? v : Number(v);\n const sev = Number.isFinite(n) ? Math.min(10, Math.max(0, Math.round(n))) : 0;\n update({ ...safe, socrates: { ...safe.socrates, severity: sev } });\n return;\n }\n update({ ...safe, socrates: { ...safe.socrates, [key]: String(v) } });\n };\n\n const setIpss = (key: keyof UrologySmartHistoryValue['ipss'], v: number) => {\n update({ ...safe, ipss: { ...safe.ipss, [key]: v } });\n };\n\n const [hopcNarrativeLocked, setHopcNarrativeLocked] = useState(false);\n\n useEffect(() => {\n if (hopcNarrativeLocked || disabled) return;\n const next = formatUrologySmartHistoryToSymptomsNarrative(normalizeUrologySmartHistory(value), {\n showPain,\n showLUTS,\n showHaem,\n showSex,\n });\n hopcField.setValue(next);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value, hopcNarrativeLocked, showPain, showLUTS, showHaem, showSex, disabled]);\n\n useEffect(() => {\n if (disabled) return;\n const label = syndrome && syndrome !== 'none' ? SYNDROME_LABELS[syndrome] ?? syndrome : '';\n const prev = store.getFieldState(DIAGNOSIS_FIELD)?.value;\n const prevText = typeof prev === 'string' ? prev : '';\n\n const syndromeLabels = new Set(Object.values(SYNDROME_LABELS));\n const keptLines = prevText\n .split('\\n')\n .map((l) => l.trim())\n .filter(Boolean)\n .filter((l) => !syndromeLabels.has(l));\n\n const nextLines = label ? [...keptLines, label] : keptLines;\n const next = nextLines.join('\\n');\n if (prevText.trim() === next.trim()) return;\n store.setValues({ [DIAGNOSIS_FIELD]: next }, { touch: false });\n }, [disabled, store, syndrome]);\n\n useEffect(() => {\n if (disabled) return;\n const duration = chiefOptionalFieldDisplay(state.values[URO_DURATION_FIELD]);\n const onset = chiefOptionalFieldDisplay(state.values[URO_ONSET_FIELD]);\n const progression = chiefOptionalFieldDisplay(state.values[URO_PROGRESSION_FIELD]);\n\n const prev = store.getFieldState(CHIEF_TEXT_FIELD)?.value;\n const prevText = typeof prev === 'string' ? prev : '';\n\n // `chief_complaints` is a chip-driven suggestion textarea (comma-separated tokens).\n // Keep it comma-delimited so chip toggling keeps working.\n const kept = prevText\n .split(',')\n .map((t) => t.trim())\n .filter(Boolean)\n .filter((t) => {\n const lower = t.toLowerCase();\n return (\n !lower.startsWith('duration:') &&\n !lower.startsWith('onset:') &&\n !lower.startsWith('progression:')\n );\n });\n\n const extra = nonEmptyLines([\n duration ? `Duration: ${duration}` : '',\n onset ? `Onset: ${onset}` : '',\n progression ? `Progression: ${progression}` : '',\n ]);\n\n const next = [...kept, ...extra].join(', ').trim();\n if (prevText.trim() === next.trim()) return;\n store.setValues({ [CHIEF_TEXT_FIELD]: next }, { touch: false });\n }, [\n disabled,\n state.values[URO_DURATION_FIELD],\n state.values[URO_ONSET_FIELD],\n state.values[URO_PROGRESSION_FIELD],\n store,\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 <p className=\"text-[11px] text-muted-foreground\">\n Panels follow chief complaint chips and active syndrome (Clearsight SmartHistoryUro).\n </p>\n\n {showPain ? (\n <Panel title=\"SOCRATES — Pain (flank / suprapubic / testicular)\">\n <div className=\"grid grid-cols-2 gap-2 md:grid-cols-4\">\n {SOCRATES_KEYS.map((k) => (\n <div key={k} className=\"space-y-1\">\n <span className=\"text-[10px] font-medium uppercase tracking-wide text-muted-foreground\">\n {k}\n </span>\n <Input\n className=\"h-8 text-xs\"\n value={safe.socrates[k]}\n onChange={(e) => setSocrates(k, e.target.value)}\n placeholder={\n k === 'radiation'\n ? 'e.g. groin → ureteric'\n : k === 'character'\n ? 'colicky / dull'\n : ''\n }\n disabled={disabled}\n />\n </div>\n ))}\n <div className=\"space-y-1\">\n <span className=\"text-[10px] font-medium uppercase tracking-wide text-muted-foreground\">\n Severity 0–10\n </span>\n <Input\n type=\"number\"\n min={0}\n max={10}\n className=\"h-8 text-xs\"\n value={safe.socrates.severity}\n onChange={(e) => setSocrates('severity', e.target.value)}\n disabled={disabled}\n />\n </div>\n </div>\n </Panel>\n ) : null}\n\n {showLUTS ? (\n <Panel\n title=\"IPSS — International Prostate Symptom Score\"\n right={\n <span className={`rounded-full px-2 py-0.5 text-[10px] font-medium ${bandClass}`}>\n {ipssTotal}/35 — {ipssBandLabel}\n </span>\n }\n >\n <div className=\"grid grid-cols-2 gap-2 md:grid-cols-4\">\n {(Object.keys(IPSS_LABELS) as Array<keyof UrologySmartHistoryValue['ipss']>).map((k) => (\n <div key={k} className=\"space-y-1\">\n <span className=\"text-[10px] uppercase tracking-wide text-muted-foreground\">\n {IPSS_LABELS[k]}\n </span>\n <Select\n value={String(safe.ipss[k])}\n onValueChange={(val) => setIpss(k, Number(val))}\n disabled={disabled}\n >\n <SelectTrigger className=\"h-8 text-xs\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {[0, 1, 2, 3, 4, 5].map((n) => (\n <SelectItem key={n} value={String(n)}>\n {n}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n ))}\n <div className=\"space-y-1\">\n <span className=\"text-[10px] uppercase tracking-wide text-muted-foreground\">\n QoL (0–6)\n </span>\n <Select\n value={String(safe.ipssQoL)}\n onValueChange={(val) =>\n update({ ...safe, ipssQoL: Math.min(6, Math.max(0, Number(val))) })\n }\n disabled={disabled}\n >\n <SelectTrigger className=\"h-8 text-xs\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {[0, 1, 2, 3, 4, 5, 6].map((n) => (\n <SelectItem key={n} value={String(n)}>\n {n}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n </div>\n <p className=\"mt-2 text-[10px] text-muted-foreground\">\n Bands: 0–7 mild · 8–19 moderate · 20–35 severe.{' '}\n <span className=\"font-semibold text-foreground\">IPSS ≥ 20 → consider surgical intervention.</span>\n </p>\n </Panel>\n ) : null}\n\n {showHaem ? (\n <Panel title=\"Haematuria profile\">\n <div className=\"grid grid-cols-2 gap-3 text-xs md:grid-cols-4\">\n <label className=\"flex items-center gap-2\">\n <Checkbox\n checked={safe.haematuria.present}\n onCheckedChange={(c) =>\n update({\n ...safe,\n haematuria: { ...safe.haematuria, present: c === true },\n })\n }\n disabled={disabled}\n />\n Present\n </label>\n <label className=\"flex flex-col gap-1\">\n <span className=\"font-medium\">Timing</span>\n <Select\n value={safe.haematuria.timing || 'none'}\n onValueChange={(val) =>\n update({\n ...safe,\n haematuria: { ...safe.haematuria, timing: val === 'none' ? '' : val },\n })\n }\n disabled={disabled}\n >\n <SelectTrigger className=\"h-8 text-xs\">\n <SelectValue placeholder=\"—\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"none\">—</SelectItem>\n <SelectItem value=\"Initial\">Initial</SelectItem>\n <SelectItem value=\"Terminal\">Terminal</SelectItem>\n <SelectItem value=\"Total\">Total</SelectItem>\n </SelectContent>\n </Select>\n </label>\n <label className=\"flex items-center gap-2\">\n <Checkbox\n checked={safe.haematuria.painful}\n onCheckedChange={(c) =>\n update({ ...safe, haematuria: { ...safe.haematuria, painful: c === true } })\n }\n disabled={disabled}\n />\n Painful\n </label>\n <label className=\"flex items-center gap-2\">\n <Checkbox\n checked={safe.haematuria.clots}\n onCheckedChange={(c) =>\n update({ ...safe, haematuria: { ...safe.haematuria, clots: c === true } })\n }\n disabled={disabled}\n />\n Clots\n </label>\n </div>\n <p className=\"mt-2 text-[10px] text-red-600\">\n Painless haematuria = malignancy until proven otherwise.\n </p>\n </Panel>\n ) : null}\n\n {showSex ? (\n <Panel title=\"Sexual & reproductive history\">\n <div className=\"grid grid-cols-2 gap-3 text-xs md:grid-cols-4\">\n <label className=\"flex flex-col gap-1\">\n <span className=\"font-medium\">Erectile function</span>\n <Select\n value={safe.sexual.erectile || 'none'}\n onValueChange={(val) =>\n update({\n ...safe,\n sexual: { ...safe.sexual, erectile: val === 'none' ? '' : val },\n })\n }\n disabled={disabled}\n >\n <SelectTrigger className=\"h-8 text-xs\">\n <SelectValue placeholder=\"—\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"none\">—</SelectItem>\n <SelectItem value=\"Normal\">Normal</SelectItem>\n <SelectItem value=\"Mild\">Mild</SelectItem>\n <SelectItem value=\"Moderate\">Moderate</SelectItem>\n <SelectItem value=\"Severe\">Severe</SelectItem>\n </SelectContent>\n </Select>\n </label>\n <label className=\"flex flex-col gap-1\">\n <span className=\"font-medium\">Libido</span>\n <Select\n value={safe.sexual.libido || 'none'}\n onValueChange={(val) =>\n update({\n ...safe,\n sexual: { ...safe.sexual, libido: val === 'none' ? '' : val },\n })\n }\n disabled={disabled}\n >\n <SelectTrigger className=\"h-8 text-xs\">\n <SelectValue placeholder=\"—\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"none\">—</SelectItem>\n <SelectItem value=\"Normal\">Normal</SelectItem>\n <SelectItem value=\"Reduced\">Reduced</SelectItem>\n </SelectContent>\n </Select>\n </label>\n <label className=\"flex flex-col gap-1\">\n <span className=\"font-medium\">Ejaculation</span>\n <Select\n value={safe.sexual.ejaculation || 'none'}\n onValueChange={(val) =>\n update({\n ...safe,\n sexual: { ...safe.sexual, ejaculation: val === 'none' ? '' : val },\n })\n }\n disabled={disabled}\n >\n <SelectTrigger className=\"h-8 text-xs\">\n <SelectValue placeholder=\"—\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"none\">—</SelectItem>\n <SelectItem value=\"Normal\">Normal</SelectItem>\n <SelectItem value=\"Premature\">Premature</SelectItem>\n <SelectItem value=\"Retrograde\">Retrograde</SelectItem>\n <SelectItem value=\"Anejaculation\">Anejaculation</SelectItem>\n </SelectContent>\n </Select>\n </label>\n <label className=\"flex flex-col gap-1\">\n <span className=\"font-medium\">Infertility (months)</span>\n <Input\n type=\"number\"\n min={0}\n className=\"h-8 text-xs\"\n value={safe.sexual.infertilityMonths}\n onChange={(e) =>\n update({\n ...safe,\n sexual: {\n ...safe.sexual,\n infertilityMonths: Math.max(0, Math.round(Number(e.target.value)) || 0),\n },\n })\n }\n disabled={disabled}\n />\n </label>\n </div>\n </Panel>\n ) : null}\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 {hopcField.fieldDef?.label ?? 'History of presenting complaint'}\n </Label>\n <div className=\"flex items-center gap-2\">\n {hopcNarrativeLocked ? (\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 {hopcNarrativeLocked ? (\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n className=\"h-7 shrink-0 px-2 text-xs\"\n disabled={disabled || hopcField.disabled}\n onClick={() => {\n setHopcNarrativeLocked(false);\n hopcField.setValue(\n formatUrologySmartHistoryToSymptomsNarrative(\n normalizeUrologySmartHistory(value),\n { showPain, showLUTS, showHaem, showSex },\n ),\n );\n }}\n >\n Regenerate\n </Button>\n ) : null}\n </div>\n </div>\n {hopcNarrativeLocked ? (\n <p className=\"text-[10px] text-muted-foreground\">\n Edit this box anytime. Use Regenerate to replace with fresh text from the structured fields.\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 chief complaints + smart history…\"\n value={\n typeof hopcField.value === 'string'\n ? hopcField.value\n : hopcField.value == null\n ? ''\n : String(hopcField.value)\n }\n onChange={(e) => {\n setHopcNarrativeLocked(true);\n hopcField.setValue(e.target.value);\n hopcField.setTouched();\n }}\n disabled={disabled || hopcField.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/UrologySmartHistoryWidget.tsx"],"names":["jsxs","jsx","useField","useForm","useFormStore","useMemo","normalizeUrologySmartHistory","urologyIpssSevenTotal","urologyIpssBand","useState","useEffect","formatUrologySmartHistoryToSymptomsNarrative","getThemeConfig","Fragment","FieldRequiredIndicator","Label","cn","Input","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","Checkbox","Button","Textarea"],"mappings":"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","file":"UrologySmartHistoryWidget-53NATEO3.cjs","sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\nimport { useField } from '../../react/useField';\nimport { useForm } from '../../react/useForm';\nimport { useFormStore } from '../../react/FormProvider';\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 { UrologySmartHistoryValue } from '../../core/urologyPathway';\nimport {\n formatUrologySmartHistoryToSymptomsNarrative,\n normalizeUrologySmartHistory,\n urologyIpssBand,\n urologyIpssSevenTotal,\n} from '../../core/urologyPathway';\n\nconst CHIEF_CHIPS_FIELD = 'chief_complaints_chips';\nconst ACTIVE_SYNDROME_FIELD = 'uro_active_syndrome';\nconst CHIEF_TEXT_FIELD = 'chief_complaints';\nconst SYMPTOMS_FIELD = 'symptoms';\nconst DIAGNOSIS_FIELD = 'diagnosis';\nconst URO_DURATION_FIELD = 'uro_chief_duration';\nconst URO_ONSET_FIELD = 'uro_chief_onset';\nconst URO_PROGRESSION_FIELD = 'uro_chief_progression';\n\nconst SYNDROME_LABELS: Record<string, string> = {\n luts: 'LUTS / BPH',\n stone: 'Urolithiasis (stone)',\n haematuria: 'Haematuria',\n scrotal: 'Scrotal swelling',\n retention: 'Acute retention',\n ed_infertility: 'ED / Infertility',\n uti: 'UTI / infection',\n};\n\nfunction chipList(state: { values: Record<string, unknown> }): string[] {\n const raw = state.values[CHIEF_CHIPS_FIELD];\n return Array.isArray(raw) ? raw.filter((x): x is string => typeof x === 'string') : [];\n}\n\nfunction str(x: unknown): string {\n return typeof x === 'string' ? x : '';\n}\n\n/** Embedded chief fields often use `value: \"none\"` for \"—\"; do not merge that into `chief_complaints`. */\nfunction chiefOptionalFieldDisplay(x: unknown): string {\n const s = str(x).trim();\n if (!s || s.toLowerCase() === 'none') return '';\n return s;\n}\n\nfunction nonEmptyLines(lines: Array<string | undefined | null>): string[] {\n return lines.map((s) => (s ?? '').trim()).filter(Boolean);\n}\n\nconst IPSS_LABELS: Record<keyof UrologySmartHistoryValue['ipss'], string> = {\n incomplete: 'Incomplete emptying',\n frequency: 'Frequency (<2h)',\n intermittency: 'Intermittency',\n urgency: 'Urgency',\n weakStream: 'Weak stream',\n straining: 'Straining',\n nocturia: 'Nocturia (×/night)',\n};\n\nconst SOCRATES_KEYS = [\n 'site',\n 'onset',\n 'character',\n 'radiation',\n 'associated',\n 'timing',\n 'exacerbating',\n] as const;\n\nfunction Panel({\n title,\n right,\n children,\n}: {\n title: string;\n right?: React.ReactNode;\n children: React.ReactNode;\n}) {\n return (\n <div className=\"overflow-hidden rounded-md border border-[#D0D0D0] bg-white\">\n <div className=\"flex items-center justify-between border-b border-[#D0D0D0] bg-[#FEE8EC]/50 px-3 py-1.5\">\n <span className=\"text-xs font-semibold text-slate-700\">{title}</span>\n {right}\n </div>\n <div className=\"p-3\">{children}</div>\n </div>\n );\n}\n\nexport const UrologySmartHistoryWidget: React.FC<{ fieldId: string }> = ({ fieldId }) => {\n const { fieldDef, value, setValue, setTouched, error, touched, disabled } = useField(fieldId);\n const hopcField = useField(SYMPTOMS_FIELD);\n const syndromeField = useField(ACTIVE_SYNDROME_FIELD);\n const { state } = useForm();\n const store = useFormStore();\n const showError = !!error && (touched || state.submitAttempted);\n\n const safe = useMemo(() => normalizeUrologySmartHistory(value), [value]);\n const chips = useMemo(() => chipList(state), [state]);\n\n const rawSyndrome = syndromeField.value ?? state.values[ACTIVE_SYNDROME_FIELD];\n const syndrome =\n typeof rawSyndrome === 'string' && rawSyndrome !== '' && rawSyndrome !== 'none'\n ? rawSyndrome\n : 'none';\n\n const showPain =\n chips.includes('pain abdomen flank') ||\n chips.includes('scrotal swelling pain') ||\n syndrome === 'stone' ||\n syndrome === 'scrotal';\n\n const showLUTS =\n syndrome === 'luts' ||\n syndrome === 'retention' ||\n chips.includes('frequency urgency') ||\n chips.includes('poor stream') ||\n chips.includes('acute retention');\n\n const showHaem = syndrome === 'haematuria' || chips.includes('haematuria');\n\n const showSex =\n syndrome === 'ed_infertility' ||\n chips.includes('erectile dysfunction') ||\n chips.includes('infertility concern');\n\n const update = (next: UrologySmartHistoryValue) => {\n setValue(next);\n setTouched();\n };\n\n const ipssTotal = urologyIpssSevenTotal(safe.ipss);\n const ipssBandLabel = urologyIpssBand(ipssTotal);\n const bandClass =\n ipssBandLabel === 'Severe'\n ? 'bg-red-500/15 text-red-700'\n : ipssBandLabel === 'Moderate'\n ? 'bg-amber-500/15 text-amber-800'\n : 'bg-emerald-500/15 text-emerald-800';\n\n const setSocrates = (key: (typeof SOCRATES_KEYS)[number] | 'severity', v: string | number) => {\n if (key === 'severity') {\n const n = typeof v === 'number' ? v : Number(v);\n const sev = Number.isFinite(n) ? Math.min(10, Math.max(0, Math.round(n))) : 0;\n update({ ...safe, socrates: { ...safe.socrates, severity: sev } });\n return;\n }\n update({ ...safe, socrates: { ...safe.socrates, [key]: String(v) } });\n };\n\n const setIpss = (key: keyof UrologySmartHistoryValue['ipss'], v: number) => {\n update({ ...safe, ipss: { ...safe.ipss, [key]: v } });\n };\n\n const [hopcNarrativeLocked, setHopcNarrativeLocked] = useState(false);\n\n useEffect(() => {\n if (hopcNarrativeLocked || disabled) return;\n const next = formatUrologySmartHistoryToSymptomsNarrative(normalizeUrologySmartHistory(value), {\n showPain,\n showLUTS,\n showHaem,\n showSex,\n });\n hopcField.setValue(next);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value, hopcNarrativeLocked, showPain, showLUTS, showHaem, showSex, disabled]);\n\n useEffect(() => {\n if (disabled) return;\n const label = syndrome && syndrome !== 'none' ? SYNDROME_LABELS[syndrome] ?? syndrome : '';\n const prev = store.getFieldState(DIAGNOSIS_FIELD)?.value;\n const prevText = typeof prev === 'string' ? prev : '';\n\n const syndromeLabels = new Set(Object.values(SYNDROME_LABELS));\n const keptLines = prevText\n .split('\\n')\n .map((l) => l.trim())\n .filter(Boolean)\n .filter((l) => !syndromeLabels.has(l));\n\n const nextLines = label ? [...keptLines, label] : keptLines;\n const next = nextLines.join('\\n');\n if (prevText.trim() === next.trim()) return;\n store.setValues({ [DIAGNOSIS_FIELD]: next }, { touch: false });\n }, [disabled, store, syndrome]);\n\n useEffect(() => {\n if (disabled) return;\n const duration = chiefOptionalFieldDisplay(state.values[URO_DURATION_FIELD]);\n const onset = chiefOptionalFieldDisplay(state.values[URO_ONSET_FIELD]);\n const progression = chiefOptionalFieldDisplay(state.values[URO_PROGRESSION_FIELD]);\n\n const prev = store.getFieldState(CHIEF_TEXT_FIELD)?.value;\n const prevText = typeof prev === 'string' ? prev : '';\n\n // `chief_complaints` is a chip-driven suggestion textarea (comma-separated tokens).\n // Keep it comma-delimited so chip toggling keeps working.\n const kept = prevText\n .split(',')\n .map((t) => t.trim())\n .filter(Boolean)\n .filter((t) => {\n const lower = t.toLowerCase();\n return (\n !lower.startsWith('duration:') &&\n !lower.startsWith('onset:') &&\n !lower.startsWith('progression:')\n );\n });\n\n const extra = nonEmptyLines([\n duration ? `Duration: ${duration}` : '',\n onset ? `Onset: ${onset}` : '',\n progression ? `Progression: ${progression}` : '',\n ]);\n\n const next = [...kept, ...extra].join(', ').trim();\n if (prevText.trim() === next.trim()) return;\n store.setValues({ [CHIEF_TEXT_FIELD]: next }, { touch: false });\n }, [\n disabled,\n state.values[URO_DURATION_FIELD],\n state.values[URO_ONSET_FIELD],\n state.values[URO_PROGRESSION_FIELD],\n store,\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 <p className=\"text-[11px] text-muted-foreground\">\n Panels follow chief complaint chips and active syndrome (Clearsight SmartHistoryUro).\n </p>\n\n {showPain ? (\n <Panel title=\"SOCRATES — Pain (flank / suprapubic / testicular)\">\n <div className=\"grid grid-cols-2 gap-2 md:grid-cols-4\">\n {SOCRATES_KEYS.map((k) => (\n <div key={k} className=\"space-y-1\">\n <span className=\"text-[10px] font-medium uppercase tracking-wide text-muted-foreground\">\n {k}\n </span>\n <Input\n className=\"h-8 text-xs\"\n value={safe.socrates[k]}\n onChange={(e) => setSocrates(k, e.target.value)}\n placeholder={\n k === 'radiation'\n ? 'e.g. groin → ureteric'\n : k === 'character'\n ? 'colicky / dull'\n : ''\n }\n disabled={disabled}\n />\n </div>\n ))}\n <div className=\"space-y-1\">\n <span className=\"text-[10px] font-medium uppercase tracking-wide text-muted-foreground\">\n Severity 0–10\n </span>\n <Input\n type=\"number\"\n min={0}\n max={10}\n className=\"h-8 text-xs\"\n value={safe.socrates.severity}\n onChange={(e) => setSocrates('severity', e.target.value)}\n disabled={disabled}\n />\n </div>\n </div>\n </Panel>\n ) : null}\n\n {showLUTS ? (\n <Panel\n title=\"IPSS — International Prostate Symptom Score\"\n right={\n <span className={`rounded-full px-2 py-0.5 text-[10px] font-medium ${bandClass}`}>\n {ipssTotal}/35 — {ipssBandLabel}\n </span>\n }\n >\n <div className=\"grid grid-cols-2 gap-2 md:grid-cols-4\">\n {(Object.keys(IPSS_LABELS) as Array<keyof UrologySmartHistoryValue['ipss']>).map((k) => (\n <div key={k} className=\"space-y-1\">\n <span className=\"text-[10px] uppercase tracking-wide text-muted-foreground\">\n {IPSS_LABELS[k]}\n </span>\n <Select\n value={String(safe.ipss[k])}\n onValueChange={(val) => setIpss(k, Number(val))}\n disabled={disabled}\n >\n <SelectTrigger className=\"h-8 text-xs\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {[0, 1, 2, 3, 4, 5].map((n) => (\n <SelectItem key={n} value={String(n)}>\n {n}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n ))}\n <div className=\"space-y-1\">\n <span className=\"text-[10px] uppercase tracking-wide text-muted-foreground\">\n QoL (0–6)\n </span>\n <Select\n value={String(safe.ipssQoL)}\n onValueChange={(val) =>\n update({ ...safe, ipssQoL: Math.min(6, Math.max(0, Number(val))) })\n }\n disabled={disabled}\n >\n <SelectTrigger className=\"h-8 text-xs\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {[0, 1, 2, 3, 4, 5, 6].map((n) => (\n <SelectItem key={n} value={String(n)}>\n {n}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n </div>\n <p className=\"mt-2 text-[10px] text-muted-foreground\">\n Bands: 0–7 mild · 8–19 moderate · 20–35 severe.{' '}\n <span className=\"font-semibold text-foreground\">IPSS ≥ 20 → consider surgical intervention.</span>\n </p>\n </Panel>\n ) : null}\n\n {showHaem ? (\n <Panel title=\"Haematuria profile\">\n <div className=\"grid grid-cols-2 gap-3 text-xs md:grid-cols-4\">\n <label className=\"flex items-center gap-2\">\n <Checkbox\n checked={safe.haematuria.present}\n onCheckedChange={(c) =>\n update({\n ...safe,\n haematuria: { ...safe.haematuria, present: c === true },\n })\n }\n disabled={disabled}\n />\n Present\n </label>\n <label className=\"flex flex-col gap-1\">\n <span className=\"font-medium\">Timing</span>\n <Select\n value={safe.haematuria.timing || 'none'}\n onValueChange={(val) =>\n update({\n ...safe,\n haematuria: { ...safe.haematuria, timing: val === 'none' ? '' : val },\n })\n }\n disabled={disabled}\n >\n <SelectTrigger className=\"h-8 text-xs\">\n <SelectValue placeholder=\"—\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"none\">—</SelectItem>\n <SelectItem value=\"Initial\">Initial</SelectItem>\n <SelectItem value=\"Terminal\">Terminal</SelectItem>\n <SelectItem value=\"Total\">Total</SelectItem>\n </SelectContent>\n </Select>\n </label>\n <label className=\"flex items-center gap-2\">\n <Checkbox\n checked={safe.haematuria.painful}\n onCheckedChange={(c) =>\n update({ ...safe, haematuria: { ...safe.haematuria, painful: c === true } })\n }\n disabled={disabled}\n />\n Painful\n </label>\n <label className=\"flex items-center gap-2\">\n <Checkbox\n checked={safe.haematuria.clots}\n onCheckedChange={(c) =>\n update({ ...safe, haematuria: { ...safe.haematuria, clots: c === true } })\n }\n disabled={disabled}\n />\n Clots\n </label>\n </div>\n <p className=\"mt-2 text-[10px] text-red-600\">\n Painless haematuria = malignancy until proven otherwise.\n </p>\n </Panel>\n ) : null}\n\n {showSex ? (\n <Panel title=\"Sexual & reproductive history\">\n <div className=\"grid grid-cols-2 gap-3 text-xs md:grid-cols-4\">\n <label className=\"flex flex-col gap-1\">\n <span className=\"font-medium\">Erectile function</span>\n <Select\n value={safe.sexual.erectile || 'none'}\n onValueChange={(val) =>\n update({\n ...safe,\n sexual: { ...safe.sexual, erectile: val === 'none' ? '' : val },\n })\n }\n disabled={disabled}\n >\n <SelectTrigger className=\"h-8 text-xs\">\n <SelectValue placeholder=\"—\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"none\">—</SelectItem>\n <SelectItem value=\"Normal\">Normal</SelectItem>\n <SelectItem value=\"Mild\">Mild</SelectItem>\n <SelectItem value=\"Moderate\">Moderate</SelectItem>\n <SelectItem value=\"Severe\">Severe</SelectItem>\n </SelectContent>\n </Select>\n </label>\n <label className=\"flex flex-col gap-1\">\n <span className=\"font-medium\">Libido</span>\n <Select\n value={safe.sexual.libido || 'none'}\n onValueChange={(val) =>\n update({\n ...safe,\n sexual: { ...safe.sexual, libido: val === 'none' ? '' : val },\n })\n }\n disabled={disabled}\n >\n <SelectTrigger className=\"h-8 text-xs\">\n <SelectValue placeholder=\"—\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"none\">—</SelectItem>\n <SelectItem value=\"Normal\">Normal</SelectItem>\n <SelectItem value=\"Reduced\">Reduced</SelectItem>\n </SelectContent>\n </Select>\n </label>\n <label className=\"flex flex-col gap-1\">\n <span className=\"font-medium\">Ejaculation</span>\n <Select\n value={safe.sexual.ejaculation || 'none'}\n onValueChange={(val) =>\n update({\n ...safe,\n sexual: { ...safe.sexual, ejaculation: val === 'none' ? '' : val },\n })\n }\n disabled={disabled}\n >\n <SelectTrigger className=\"h-8 text-xs\">\n <SelectValue placeholder=\"—\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"none\">—</SelectItem>\n <SelectItem value=\"Normal\">Normal</SelectItem>\n <SelectItem value=\"Premature\">Premature</SelectItem>\n <SelectItem value=\"Retrograde\">Retrograde</SelectItem>\n <SelectItem value=\"Anejaculation\">Anejaculation</SelectItem>\n </SelectContent>\n </Select>\n </label>\n <label className=\"flex flex-col gap-1\">\n <span className=\"font-medium\">Infertility (months)</span>\n <Input\n type=\"number\"\n min={0}\n className=\"h-8 text-xs\"\n value={safe.sexual.infertilityMonths}\n onChange={(e) =>\n update({\n ...safe,\n sexual: {\n ...safe.sexual,\n infertilityMonths: Math.max(0, Math.round(Number(e.target.value)) || 0),\n },\n })\n }\n disabled={disabled}\n />\n </label>\n </div>\n </Panel>\n ) : null}\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 {hopcField.fieldDef?.label ?? 'History of presenting complaint'}\n </Label>\n <div className=\"flex items-center gap-2\">\n {hopcNarrativeLocked ? (\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 {hopcNarrativeLocked ? (\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n className=\"h-7 shrink-0 px-2 text-xs\"\n disabled={disabled || hopcField.disabled}\n onClick={() => {\n setHopcNarrativeLocked(false);\n hopcField.setValue(\n formatUrologySmartHistoryToSymptomsNarrative(\n normalizeUrologySmartHistory(value),\n { showPain, showLUTS, showHaem, showSex },\n ),\n );\n }}\n >\n Regenerate\n </Button>\n ) : null}\n </div>\n </div>\n {hopcNarrativeLocked ? (\n <p className=\"text-[10px] text-muted-foreground\">\n Edit this box anytime. Use Regenerate to replace with fresh text from the structured fields.\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 chief complaints + smart history…\"\n value={\n typeof hopcField.value === 'string'\n ? hopcField.value\n : hopcField.value == null\n ? ''\n : String(hopcField.value)\n }\n onChange={(e) => {\n setHopcNarrativeLocked(true);\n hopcField.setValue(e.target.value);\n hopcField.setTouched();\n }}\n disabled={disabled || hopcField.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"]}
|
package/dist/{UrologySmartHistoryWidget-NFTHHK6A.mjs → UrologySmartHistoryWidget-PBU4QXQJ.mjs}
RENAMED
|
@@ -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-
|
|
5
|
+
import { useForm } from './chunk-7L2JOWGA.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-
|
|
9
|
+
import { useField, useFormStore, normalizeUrologySmartHistory, urologyIpssSevenTotal, urologyIpssBand, formatUrologySmartHistoryToSymptomsNarrative } from './chunk-ZTT5XJR7.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-
|
|
469
|
-
//# sourceMappingURL=UrologySmartHistoryWidget-
|
|
468
|
+
//# sourceMappingURL=UrologySmartHistoryWidget-PBU4QXQJ.mjs.map
|
|
469
|
+
//# sourceMappingURL=UrologySmartHistoryWidget-PBU4QXQJ.mjs.map
|