formanitor 0.2.2 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/dist/BpeChartWidget-HATASHAC.mjs +7 -0
  2. package/dist/BpeChartWidget-HATASHAC.mjs.map +1 -0
  3. package/dist/BpeChartWidget-VZRH7M7L.cjs +28 -0
  4. package/dist/BpeChartWidget-VZRH7M7L.cjs.map +1 -0
  5. package/dist/{DateTimeWidget-3AUBZYYK.mjs → DateTimeWidget-KRX4O6OD.mjs} +5 -4
  6. package/dist/DateTimeWidget-KRX4O6OD.mjs.map +1 -0
  7. package/dist/{DateTimeWidget-OS7ER5F6.cjs → DateTimeWidget-RJ7SATVA.cjs} +6 -5
  8. package/dist/DateTimeWidget-RJ7SATVA.cjs.map +1 -0
  9. package/dist/{DateWidget-KCTE6N5G.mjs → DateWidget-JEKDKPNS.mjs} +4 -3
  10. package/dist/DateWidget-JEKDKPNS.mjs.map +1 -0
  11. package/dist/{DateWidget-UNLX544Z.cjs → DateWidget-T7IQUWEA.cjs} +8 -7
  12. package/dist/DateWidget-T7IQUWEA.cjs.map +1 -0
  13. package/dist/DentalChartWidget-LYLOFWZU.cjs +21 -0
  14. package/dist/DentalChartWidget-LYLOFWZU.cjs.map +1 -0
  15. package/dist/DentalChartWidget-P2YPKAMO.mjs +8 -0
  16. package/dist/DentalChartWidget-P2YPKAMO.mjs.map +1 -0
  17. package/dist/{EditableTable-VQ72UEFF.cjs → EditableTable-OW5LC6OC.cjs} +6 -5
  18. package/dist/EditableTable-OW5LC6OC.cjs.map +1 -0
  19. package/dist/{EditableTable-XFCPKSUY.mjs → EditableTable-VZ66IXYI.mjs} +5 -4
  20. package/dist/EditableTable-VZ66IXYI.mjs.map +1 -0
  21. package/dist/ExtraOralExamWidget-JVKJ4ZWC.mjs +438 -0
  22. package/dist/ExtraOralExamWidget-JVKJ4ZWC.mjs.map +1 -0
  23. package/dist/ExtraOralExamWidget-ZIOSKMIO.cjs +440 -0
  24. package/dist/ExtraOralExamWidget-ZIOSKMIO.cjs.map +1 -0
  25. package/dist/{FollowupWidget-MAYTHM2E.cjs → FollowupWidget-2STSJSDY.cjs} +8 -7
  26. package/dist/FollowupWidget-2STSJSDY.cjs.map +1 -0
  27. package/dist/{FollowupWidget-BFZ6P2JE.mjs → FollowupWidget-GCGPWZVY.mjs} +4 -3
  28. package/dist/FollowupWidget-GCGPWZVY.mjs.map +1 -0
  29. package/dist/{OBGPathwayWidget-X67XKRIH.mjs → OBGPathwayWidget-QJNWUIEM.mjs} +4 -3
  30. package/dist/OBGPathwayWidget-QJNWUIEM.mjs.map +1 -0
  31. package/dist/{OBGPathwayWidget-XGN3HEWS.cjs → OBGPathwayWidget-YRU36UL7.cjs} +13 -12
  32. package/dist/OBGPathwayWidget-YRU36UL7.cjs.map +1 -0
  33. package/dist/{ObstetricHistoryWidget-Z4VAXH3E.mjs → ObstetricHistoryWidget-EW6JLNQ7.mjs} +4 -3
  34. package/dist/ObstetricHistoryWidget-EW6JLNQ7.mjs.map +1 -0
  35. package/dist/{ObstetricHistoryWidget-RP7NY4PV.cjs → ObstetricHistoryWidget-OOWCVFRB.cjs} +10 -9
  36. package/dist/ObstetricHistoryWidget-OOWCVFRB.cjs.map +1 -0
  37. package/dist/PregnancyStatusWidget-QTTVFBOE.cjs +96 -0
  38. package/dist/PregnancyStatusWidget-QTTVFBOE.cjs.map +1 -0
  39. package/dist/PregnancyStatusWidget-U2BEJGBJ.mjs +94 -0
  40. package/dist/PregnancyStatusWidget-U2BEJGBJ.mjs.map +1 -0
  41. package/dist/{SuggestionTextareaWidget-DY6M5JPO.cjs → SuggestionTextareaWidget-FWRZ46MV.cjs} +5 -5
  42. package/dist/{SuggestionTextareaWidget-DY6M5JPO.cjs.map → SuggestionTextareaWidget-FWRZ46MV.cjs.map} +1 -1
  43. package/dist/{SuggestionTextareaWidget-GQTWCFBG.mjs → SuggestionTextareaWidget-UNL3FZRI.mjs} +3 -3
  44. package/dist/{SuggestionTextareaWidget-GQTWCFBG.mjs.map → SuggestionTextareaWidget-UNL3FZRI.mjs.map} +1 -1
  45. package/dist/TreatmentPlanWidget-665HLKYV.mjs +317 -0
  46. package/dist/TreatmentPlanWidget-665HLKYV.mjs.map +1 -0
  47. package/dist/TreatmentPlanWidget-TATWSPLY.cjs +319 -0
  48. package/dist/TreatmentPlanWidget-TATWSPLY.cjs.map +1 -0
  49. package/dist/{chunk-4PMNVBJD.mjs → chunk-2OMQV2ZB.mjs} +4 -3
  50. package/dist/chunk-2OMQV2ZB.mjs.map +1 -0
  51. package/dist/chunk-5RT3S67O.cjs +30 -0
  52. package/dist/chunk-5RT3S67O.cjs.map +1 -0
  53. package/dist/chunk-6YUVILN5.mjs +42 -0
  54. package/dist/chunk-6YUVILN5.mjs.map +1 -0
  55. package/dist/{chunk-YEFM2ERQ.cjs → chunk-7OQFO6TM.cjs} +8 -7
  56. package/dist/chunk-7OQFO6TM.cjs.map +1 -0
  57. package/dist/chunk-BBD3Y37O.cjs +220 -0
  58. package/dist/chunk-BBD3Y37O.cjs.map +1 -0
  59. package/dist/chunk-EJ7MKHER.mjs +45 -0
  60. package/dist/chunk-EJ7MKHER.mjs.map +1 -0
  61. package/dist/{chunk-XN2QLBLT.mjs → chunk-G6Y4UJPN.mjs} +5 -4
  62. package/dist/chunk-G6Y4UJPN.mjs.map +1 -0
  63. package/dist/{chunk-AZSAPO2V.cjs → chunk-HXY3IX3G.cjs} +3 -44
  64. package/dist/chunk-HXY3IX3G.cjs.map +1 -0
  65. package/dist/{chunk-BMNY7F6H.mjs → chunk-JM7WNDNT.mjs} +4 -21
  66. package/dist/chunk-JM7WNDNT.mjs.map +1 -0
  67. package/dist/chunk-MQHZ7HD2.mjs +215 -0
  68. package/dist/chunk-MQHZ7HD2.mjs.map +1 -0
  69. package/dist/{chunk-ML47UEDU.cjs → chunk-O4FSJPU3.cjs} +2 -27
  70. package/dist/chunk-O4FSJPU3.cjs.map +1 -0
  71. package/dist/chunk-Q66LXMRR.mjs +28 -0
  72. package/dist/chunk-Q66LXMRR.mjs.map +1 -0
  73. package/dist/chunk-RILRMRXB.cjs +50 -0
  74. package/dist/chunk-RILRMRXB.cjs.map +1 -0
  75. package/dist/chunk-SQ2KNAUD.cjs +64 -0
  76. package/dist/chunk-SQ2KNAUD.cjs.map +1 -0
  77. package/dist/{chunk-TVFUWRTE.cjs → chunk-TCQQUJCL.cjs} +5 -4
  78. package/dist/chunk-TCQQUJCL.cjs.map +1 -0
  79. package/dist/chunk-UKSP3B3W.mjs +600 -0
  80. package/dist/chunk-UKSP3B3W.mjs.map +1 -0
  81. package/dist/chunk-X4AJCTON.cjs +607 -0
  82. package/dist/chunk-X4AJCTON.cjs.map +1 -0
  83. package/dist/chunk-ZZX3IG2T.mjs +25 -0
  84. package/dist/chunk-ZZX3IG2T.mjs.map +1 -0
  85. package/dist/index.cjs +107 -47
  86. package/dist/index.cjs.map +1 -1
  87. package/dist/index.d.cts +69 -3
  88. package/dist/index.d.ts +69 -3
  89. package/dist/index.mjs +73 -43
  90. package/dist/index.mjs.map +1 -1
  91. package/dist/read-only-table.d.cts +1 -1
  92. package/dist/read-only-table.d.ts +1 -1
  93. package/dist/smart.d.cts +1 -1
  94. package/dist/smart.d.ts +1 -1
  95. package/dist/{types-CYtJk8H9.d.ts → types-BbOnd5IN.d.cts} +53 -3
  96. package/dist/{types-CYtJk8H9.d.cts → types-BbOnd5IN.d.ts} +53 -3
  97. package/package.json +1 -1
  98. package/dist/DateTimeWidget-3AUBZYYK.mjs.map +0 -1
  99. package/dist/DateTimeWidget-OS7ER5F6.cjs.map +0 -1
  100. package/dist/DateWidget-KCTE6N5G.mjs.map +0 -1
  101. package/dist/DateWidget-UNLX544Z.cjs.map +0 -1
  102. package/dist/EditableTable-VQ72UEFF.cjs.map +0 -1
  103. package/dist/EditableTable-XFCPKSUY.mjs.map +0 -1
  104. package/dist/FollowupWidget-BFZ6P2JE.mjs.map +0 -1
  105. package/dist/FollowupWidget-MAYTHM2E.cjs.map +0 -1
  106. package/dist/OBGPathwayWidget-X67XKRIH.mjs.map +0 -1
  107. package/dist/OBGPathwayWidget-XGN3HEWS.cjs.map +0 -1
  108. package/dist/ObstetricHistoryWidget-RP7NY4PV.cjs.map +0 -1
  109. package/dist/ObstetricHistoryWidget-Z4VAXH3E.mjs.map +0 -1
  110. package/dist/chunk-4HDMR2LX.mjs +0 -69
  111. package/dist/chunk-4HDMR2LX.mjs.map +0 -1
  112. package/dist/chunk-4PMNVBJD.mjs.map +0 -1
  113. package/dist/chunk-AZSAPO2V.cjs.map +0 -1
  114. package/dist/chunk-BMNY7F6H.mjs.map +0 -1
  115. package/dist/chunk-ML47UEDU.cjs.map +0 -1
  116. package/dist/chunk-TVFUWRTE.cjs.map +0 -1
  117. package/dist/chunk-XN2QLBLT.mjs.map +0 -1
  118. package/dist/chunk-YEFM2ERQ.cjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ui/widgets/AntenatalPanels.tsx","../src/ui/widgets/ObstetricHistoryWidget.tsx"],"names":["useRef","useEffect","useState","useMemo","jsxs","jsx"],"mappings":"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","file":"ObstetricHistoryWidget-EW6JLNQ7.mjs","sourcesContent":["import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { useField } from '../../react/useField';\nimport { Input } from '../shadcn/input';\nimport { Checkbox } from '../shadcn/checkbox';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '../shadcn/select';\nimport {\n normalizeObgPathway,\n type ObgAntenatal,\n type ObgPathwayValue,\n} from '../../core/obgPathway';\nimport { ChipRow, Panel } from './_obgPanels';\nimport { useObgSymptomsSync } from './_obgSymptomsSync';\n\nconst OBG_PATHWAY_FIELD = 'obg_pathway';\n\n/**\n * Antenatal-specific panels (current pregnancy, symptoms, examination,\n * investigations) that live on the `obg_pathway` field but render under the\n * Obstetric-history widget when the antenatal zone is active. Designed to be\n * embedded into ObstetricHistoryWidget so that pregnancy-related capture lives\n * in one visual block.\n *\n * The component mirrors the antenatal subtree of `obg_pathway` into local\n * state so inputs update immediately on keystroke, even though `useField`'s\n * external-store subscription can lag re-renders for sibling components in\n * React 18 concurrent mode. Writes flow through to the form store on the same\n * tick.\n */\nexport const AntenatalPanels: React.FC = () => {\n const pathwayField = useField(OBG_PATHWAY_FIELD);\n const { writeSymptoms } = useObgSymptomsSync();\n\n // If the form has no obg_pathway field (non-OBG templates), render nothing.\n const hasField = !!pathwayField.fieldDef;\n\n const safe = useMemo<ObgPathwayValue>(\n () => normalizeObgPathway(pathwayField.value),\n [pathwayField.value],\n );\n\n // Local mirror of the antenatal subtree. Inputs read from this; writes both\n // update local state (for an instant re-render) and the form store.\n const [ant, setAnt] = useState<ObgAntenatal>(() => safe.antenatal);\n\n // Track the last antenatal we wrote to the store so we can ignore the\n // resulting \"echo\" snapshot from the subscription and only resync local\n // state when the antenatal subtree changes from outside (AI prefill, reset,\n // chip toggle that only changes zones, …).\n const lastWrittenRef = useRef<ObgAntenatal>(safe.antenatal);\n\n useEffect(() => {\n if (safe.antenatal === lastWrittenRef.current) return;\n if (JSON.stringify(safe.antenatal) === JSON.stringify(lastWrittenRef.current)) return;\n setAnt(safe.antenatal);\n lastWrittenRef.current = safe.antenatal;\n }, [safe.antenatal]);\n\n if (!hasField) return null;\n if (!safe.zones.includes('antenatal')) return null;\n\n const disabled = pathwayField.disabled;\n\n const commit = (nextAnt: ObgAntenatal) => {\n // Build `prev` from local `ant` (always up-to-date with our last commit)\n // rather than `safe` (which can lag if the field-store subscription hasn't\n // propagated yet). This keeps the prev/next prose check correct across\n // rapid keystrokes so HOPC stays in sync without ever mis-classifying our\n // own previous auto-write as user-typed prose.\n const prev: ObgPathwayValue = { ...safe, antenatal: ant };\n const nextPathway: ObgPathwayValue = { ...safe, antenatal: nextAnt };\n setAnt(nextAnt);\n lastWrittenRef.current = nextAnt;\n pathwayField.setValue(nextPathway);\n pathwayField.setTouched();\n writeSymptoms(prev, nextPathway);\n };\n\n const a = ant;\n const setAntenatal = (patch: Partial<ObgAntenatal>) => commit({ ...a, ...patch });\n const setAntenatalSymptom = (key: keyof ObgAntenatal['symptoms']) =>\n commit({ ...a, symptoms: { ...a.symptoms, [key]: !a.symptoms[key] } });\n const setAntenatalExam = (patch: Partial<ObgAntenatal['exam']>) =>\n commit({ ...a, exam: { ...a.exam, ...patch } });\n const setAntenatalInv = (patch: Partial<ObgAntenatal['investigations']>) =>\n commit({ ...a, investigations: { ...a.investigations, ...patch } });\n\n return (\n <div className=\"space-y-3 text-xs\">\n <Panel title=\"Current pregnancy details\">\n <div className=\"grid grid-cols-2 gap-3 md:grid-cols-4\">\n <label className=\"space-y-1\">\n <span className=\"block font-medium\">Gravida</span>\n <Input\n type=\"number\"\n min={0}\n className=\"h-8 text-xs\"\n value={a.gravida}\n onChange={(e) => setAntenatal({ gravida: Number(e.target.value) || 0 })}\n disabled={disabled}\n />\n </label>\n <div className=\"space-y-1\">\n <span className=\"block font-medium\">GA (LMP) — w / d</span>\n <div className=\"flex items-center gap-1\">\n <Input\n type=\"number\"\n min={0}\n max={45}\n className=\"h-8 text-xs\"\n value={a.gaWeeksLmp}\n onChange={(e) => setAntenatal({ gaWeeksLmp: Number(e.target.value) || 0 })}\n disabled={disabled}\n />\n <span className=\"text-[10px] text-muted-foreground\">w</span>\n <Input\n type=\"number\"\n min={0}\n max={6}\n className=\"h-8 text-xs\"\n value={a.gaDaysLmp}\n onChange={(e) => setAntenatal({ gaDaysLmp: Number(e.target.value) || 0 })}\n disabled={disabled}\n />\n <span className=\"text-[10px] text-muted-foreground\">d</span>\n </div>\n </div>\n <div className=\"space-y-1\">\n <span className=\"block font-medium\">GA (USG) — w / d</span>\n <div className=\"flex items-center gap-1\">\n <Input\n type=\"number\"\n min={0}\n max={45}\n className=\"h-8 text-xs\"\n value={a.gaWeeksUsg}\n onChange={(e) => setAntenatal({ gaWeeksUsg: Number(e.target.value) || 0 })}\n disabled={disabled}\n />\n <span className=\"text-[10px] text-muted-foreground\">w</span>\n <Input\n type=\"number\"\n min={0}\n max={6}\n className=\"h-8 text-xs\"\n value={a.gaDaysUsg}\n onChange={(e) => setAntenatal({ gaDaysUsg: Number(e.target.value) || 0 })}\n disabled={disabled}\n />\n <span className=\"text-[10px] text-muted-foreground\">d</span>\n </div>\n </div>\n <label className=\"space-y-1\">\n <span className=\"block font-medium\">EDD</span>\n <Input\n type=\"date\"\n className=\"h-8 text-xs\"\n value={a.edd}\n onChange={(e) => setAntenatal({ edd: e.target.value })}\n disabled={disabled}\n />\n </label>\n <label className=\"space-y-1 md:col-span-2\">\n <span className=\"block font-medium\">Risk category</span>\n <Select\n value={a.riskCategory === '' ? 'none' : a.riskCategory}\n onValueChange={(v) =>\n setAntenatal({\n riskCategory: v === 'none' ? '' : (v as typeof a.riskCategory),\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=\"Low\">Low</SelectItem>\n <SelectItem value=\"High\">High</SelectItem>\n </SelectContent>\n </Select>\n </label>\n </div>\n </Panel>\n\n <Panel title=\"Antenatal symptoms\">\n <ChipRow\n options={[\n { key: 'nauseaVomiting', label: 'Nausea / vomiting' },\n { key: 'bleedingPV', label: 'Bleeding PV' },\n { key: 'painAbdomen', label: 'Pain abdomen' },\n { key: 'decreasedFetalMovements', label: 'Decreased fetal movements' },\n ]}\n selected={a.symptoms as unknown as Record<string, boolean>}\n onToggle={(k) => setAntenatalSymptom(k as keyof typeof a.symptoms)}\n disabled={disabled}\n />\n </Panel>\n\n <Panel title=\"Antenatal examination\">\n <div className=\"grid grid-cols-2 gap-3 md:grid-cols-4\">\n <label className=\"space-y-1\">\n <span className=\"block font-medium\">Weight (kg)</span>\n <Input\n type=\"number\"\n className=\"h-8 text-xs\"\n value={a.exam.weightKg}\n onChange={(e) => setAntenatalExam({ weightKg: Number(e.target.value) || 0 })}\n disabled={disabled}\n />\n </label>\n <label className=\"space-y-1\">\n <span className=\"block font-medium\">Height (cm)</span>\n <Input\n type=\"number\"\n className=\"h-8 text-xs\"\n value={a.exam.heightCm}\n onChange={(e) => setAntenatalExam({ heightCm: Number(e.target.value) || 0 })}\n disabled={disabled}\n />\n </label>\n <label className=\"space-y-1\">\n <span className=\"block font-medium\">BMI</span>\n <Input\n type=\"number\"\n step={0.1}\n className=\"h-8 text-xs\"\n value={a.exam.bmi}\n onChange={(e) => setAntenatalExam({ bmi: Number(e.target.value) || 0 })}\n disabled={disabled}\n />\n </label>\n <label className=\"space-y-1\">\n <span className=\"block font-medium\">BP</span>\n <Input\n placeholder=\"e.g. 120/80\"\n className=\"h-8 text-xs\"\n value={a.exam.bp}\n onChange={(e) => setAntenatalExam({ bp: e.target.value })}\n disabled={disabled}\n />\n </label>\n\n <label className=\"flex items-end gap-2 pb-1\">\n <Checkbox\n checked={a.exam.pallor}\n onCheckedChange={(c) => setAntenatalExam({ pallor: c === true })}\n disabled={disabled}\n />\n <span>Pallor</span>\n </label>\n <label className=\"flex items-end gap-2 pb-1\">\n <Checkbox\n checked={a.exam.oedema}\n onCheckedChange={(c) => setAntenatalExam({ oedema: c === true })}\n disabled={disabled}\n />\n <span>Oedema</span>\n </label>\n <label className=\"space-y-1\">\n <span className=\"block font-medium\">Fundal height (cm)</span>\n <Input\n type=\"number\"\n className=\"h-8 text-xs\"\n value={a.exam.fundalHeightCm}\n onChange={(e) =>\n setAntenatalExam({ fundalHeightCm: Number(e.target.value) || 0 })\n }\n disabled={disabled}\n />\n </label>\n <label className=\"space-y-1\">\n <span className=\"block font-medium\">FHR (bpm)</span>\n <Input\n type=\"number\"\n className=\"h-8 text-xs\"\n value={a.exam.fhrBpm}\n onChange={(e) => setAntenatalExam({ fhrBpm: Number(e.target.value) || 0 })}\n disabled={disabled}\n />\n </label>\n <label className=\"space-y-1\">\n <span className=\"block font-medium\">Presentation</span>\n <Select\n value={a.exam.presentation === '' ? 'none' : a.exam.presentation}\n onValueChange={(v) =>\n setAntenatalExam({\n presentation: v === 'none' ? '' : (v as typeof a.exam.presentation),\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=\"Cephalic\">Cephalic</SelectItem>\n <SelectItem value=\"Breech\">Breech</SelectItem>\n <SelectItem value=\"Other\">Other</SelectItem>\n </SelectContent>\n </Select>\n </label>\n <label className=\"space-y-1\">\n <span className=\"block font-medium\">Lie</span>\n <Select\n value={a.exam.lie === '' ? 'none' : a.exam.lie}\n onValueChange={(v) =>\n setAntenatalExam({ lie: v === 'none' ? '' : (v as typeof a.exam.lie) })\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=\"Longitudinal\">Longitudinal</SelectItem>\n <SelectItem value=\"Transverse\">Transverse</SelectItem>\n <SelectItem value=\"Oblique\">Oblique</SelectItem>\n </SelectContent>\n </Select>\n </label>\n </div>\n </Panel>\n\n <Panel title=\"Investigations tracker\">\n <div className=\"grid grid-cols-2 gap-3 md:grid-cols-3\">\n <label className=\"space-y-1\">\n <span className=\"block font-medium\">Blood Group / Rh</span>\n <Input\n className=\"h-8 text-xs\"\n placeholder=\"e.g. O+ve\"\n value={a.investigations.bloodGroup}\n onChange={(e) => setAntenatalInv({ bloodGroup: e.target.value })}\n disabled={disabled}\n />\n </label>\n {(\n [\n { key: 'cbc', label: 'CBC' },\n { key: 'tsh', label: 'TSH' },\n { key: 'rbsOgtt', label: 'RBS / OGTT' },\n { key: 'serology', label: 'HIV / HBsAg / VDRL' },\n { key: 'urine', label: 'Urine routine' },\n ] as const\n ).map((row) => (\n <label key={row.key} className=\"space-y-1\">\n <span className=\"block font-medium\">{row.label}</span>\n <Select\n value={a.investigations[row.key] === '' ? 'none' : a.investigations[row.key]}\n onValueChange={(v) =>\n setAntenatalInv({\n [row.key]: v === 'none' ? '' : v,\n } as Partial<typeof a.investigations>)\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=\"Done\">Done</SelectItem>\n <SelectItem value=\"Pending\">Pending</SelectItem>\n <SelectItem value=\"Abnormal\">Abnormal</SelectItem>\n </SelectContent>\n </Select>\n </label>\n ))}\n <label className=\"space-y-1\">\n <span className=\"block font-medium\">USG</span>\n <Select\n value={a.investigations.usg === '' ? 'none' : a.investigations.usg}\n onValueChange={(v) =>\n setAntenatalInv({\n usg: (v === 'none' ? '' : v) as typeof a.investigations.usg,\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=\"Dating\">Dating</SelectItem>\n <SelectItem value=\"NT\">NT</SelectItem>\n <SelectItem value=\"Anomaly\">Anomaly</SelectItem>\n <SelectItem value=\"Growth\">Growth</SelectItem>\n <SelectItem value=\"Pending\">Pending</SelectItem>\n </SelectContent>\n </Select>\n </label>\n </div>\n </Panel>\n </div>\n );\n};\n","import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { useField } from '../../react/useField';\nimport { Card, CardContent, CardHeader, CardTitle } from '../shadcn/card';\nimport { Input } from '../shadcn/input';\nimport { Label } from '../shadcn/label';\nimport { Textarea } from '../shadcn/textarea';\nimport { cn } from '../../core/utils';\nimport { AntenatalPanels } from './AntenatalPanels';\n\ntype BasedOn = 'lmp' | 'usg';\ntype OutcomeType = '' | 'delivery' | 'cesarean' | 'abortion' | 'miscarriage' | 'stillbirth';\ntype PregnancyStatus = 'not_pregnant' | 'pregnant' | 'unknown';\ntype Dysmenorrhea = 0 | 1 | 2 | 3;\n\ntype GestationalAge = {\n weeks: number;\n days: number;\n totalDays: number;\n basedOn: BasedOn;\n};\n\ntype Outcome = {\n type: OutcomeType;\n date: string; // yyyy-mm-dd (or '' while incomplete)\n notes: string;\n is_final: boolean;\n};\n\ntype StoredMenstrual = {\n menarche_age: number;\n cycle_length: number;\n flow_days: number;\n cycle_regular: boolean;\n dysmenorrhea: Dysmenorrhea;\n};\n\ntype StoredObgHistory = {\n gpal: { G: number; P: number; A: number; L: number };\n lmp: string | null; // yyyy-mm-dd\n /** @deprecated Use `pregnancy_status`. Kept for backward compatibility (true === 'pregnant'). */\n is_pregnant: boolean;\n pregnancy_status: PregnancyStatus;\n edd: { lmp: string | null; usg: string | null; primary: BasedOn } | null;\n gestationalAge: GestationalAge | null;\n trimester: 1 | 2 | 3 | null;\n complications: string | null;\n outcome: Outcome | null;\n menstrual: StoredMenstrual;\n};\n\ntype Draft = {\n gpal: { G: number; P: number; A: number; L: number };\n lmp: string; // '' or yyyy-mm-dd\n pregnancy_status: PregnancyStatus;\n eddUSG: string; // '' or yyyy-mm-dd\n primaryEDD: BasedOn;\n complications: string;\n outcome: Outcome | null;\n menstrual: StoredMenstrual;\n};\n\nconst DEFAULT_MENSTRUAL: StoredMenstrual = {\n menarche_age: 13,\n cycle_length: 28,\n flow_days: 4,\n cycle_regular: true,\n dysmenorrhea: 0,\n};\n\nconst DEFAULT_DRAFT: Draft = {\n gpal: { G: 0, P: 0, A: 0, L: 0 },\n lmp: '',\n pregnancy_status: 'not_pregnant',\n eddUSG: '',\n primaryEDD: 'lmp',\n complications: '',\n outcome: null,\n menstrual: { ...DEFAULT_MENSTRUAL },\n};\n\nfunction pad2(n: number): string {\n return String(n).padStart(2, '0');\n}\n\nfunction formatDdMmYyyy(iso: string): string {\n // expects yyyy-mm-dd\n const [y, m, d] = iso.split('-');\n if (!y || !m || !d) return iso;\n return `${pad2(Number(d))}/${pad2(Number(m))}/${y}`;\n}\n\nfunction todayIso(): string {\n const d = new Date();\n const y = d.getFullYear();\n const m = pad2(d.getMonth() + 1);\n const day = pad2(d.getDate());\n return `${y}-${m}-${day}`;\n}\n\nfunction isValidIsoDate(val: string): boolean {\n if (!/^\\d{4}-\\d{2}-\\d{2}$/.test(val)) return false;\n const dt = new Date(`${val}T00:00:00.000Z`);\n return !Number.isNaN(dt.getTime());\n}\n\nfunction safeJsonParse(val: string): any | null {\n try {\n return JSON.parse(val);\n } catch {\n return null;\n }\n}\n\nfunction clampInt(val: number, min: number, max: number): number {\n if (!Number.isFinite(val)) return min;\n return Math.max(min, Math.min(max, Math.trunc(val)));\n}\n\nfunction clampDysmenorrhea(val: unknown): Dysmenorrhea {\n const n = Math.round(Number(val));\n if (!Number.isFinite(n)) return 0;\n if (n <= 0) return 0;\n if (n >= 3) return 3;\n return n as 1 | 2;\n}\n\nfunction isPregnancyStatus(x: unknown): x is PregnancyStatus {\n return x === 'not_pregnant' || x === 'pregnant' || x === 'unknown';\n}\n\nfunction normalizeMenstrual(raw: unknown): StoredMenstrual {\n if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {\n return { ...DEFAULT_MENSTRUAL };\n }\n const o = raw as Record<string, unknown>;\n const num = (v: unknown, fb: number) => {\n const n = Number(v);\n return Number.isFinite(n) ? n : fb;\n };\n return {\n menarche_age: num(o.menarche_age, DEFAULT_MENSTRUAL.menarche_age),\n cycle_length: num(o.cycle_length, DEFAULT_MENSTRUAL.cycle_length),\n flow_days: num(o.flow_days, DEFAULT_MENSTRUAL.flow_days),\n cycle_regular:\n typeof o.cycle_regular === 'boolean' ? o.cycle_regular : DEFAULT_MENSTRUAL.cycle_regular,\n dysmenorrhea: clampDysmenorrhea(o.dysmenorrhea),\n };\n}\n\nfunction parseLegacyString(input: string): Partial<Draft> {\n const result: Partial<Draft> = {};\n const gpalMatch = input.match(/G(\\d+)\\s*P(\\d+)\\s*A(\\d+)\\s*L(\\d+)/i);\n if (gpalMatch) {\n const [, g, p, a, l] = gpalMatch;\n result.gpal = {\n G: clampInt(Number(g), 0, 20),\n P: clampInt(Number(p), 0, 20),\n A: clampInt(Number(a), 0, 20),\n L: clampInt(Number(l), 0, 20),\n };\n }\n\n const lmpMatch = input.match(/LMP:\\s*([^\\n]+)/i);\n if (lmpMatch?.[1]) result.lmp = lmpMatch[1].trim();\n\n const eddUsgMatch = input.match(/EDD\\s*\\(USG\\):\\s*([^\\n]+)/i);\n if (eddUsgMatch?.[1]) result.eddUSG = eddUsgMatch[1].trim();\n\n const primaryMatch = input.match(/Primary\\s*EDD:\\s*(lmp|usg)/i);\n if (primaryMatch?.[1]) result.primaryEDD = primaryMatch[1].toLowerCase() as BasedOn;\n\n const compMatch = input.match(/Complications:\\s*([^\\n]+)/i);\n if (compMatch?.[1]) result.complications = compMatch[1].trim();\n\n return result;\n}\n\nfunction normalizeToDraft(value: unknown): { draft: Draft; isNewEntry: boolean } {\n if (!value) return { draft: { ...DEFAULT_DRAFT }, isNewEntry: true };\n\n let parsed: any = value;\n if (typeof value === 'string') {\n const json = safeJsonParse(value);\n parsed = json ?? value;\n }\n\n const resolvePregnancyStatus = (o: any): PregnancyStatus => {\n if (isPregnancyStatus(o?.pregnancy_status)) return o.pregnancy_status;\n if (typeof o?.is_pregnant === 'boolean') return o.is_pregnant ? 'pregnant' : 'not_pregnant';\n return 'not_pregnant';\n };\n\n // New JSON format: has gpal object\n if (parsed && typeof parsed === 'object' && !Array.isArray(parsed) && 'gpal' in parsed && parsed.gpal && typeof parsed.gpal === 'object') {\n const gpal = parsed.gpal ?? {};\n const edd = parsed.edd ?? null;\n const eddUSG = (edd && typeof edd === 'object' ? edd.usg : undefined) ?? parsed.eddUSG ?? '';\n const primaryEDD = (edd && typeof edd === 'object' ? edd.primary : undefined) ?? parsed.primaryEDD ?? 'lmp';\n const lmp = parsed.lmp ?? '';\n const complications = parsed.complications ?? '';\n const outcome = parsed.outcome ?? null;\n return {\n isNewEntry: false,\n draft: {\n gpal: {\n G: clampInt(Number(gpal.G ?? 0), 0, 20),\n P: clampInt(Number(gpal.P ?? 0), 0, 20),\n A: clampInt(Number(gpal.A ?? 0), 0, 20),\n L: clampInt(Number(gpal.L ?? 0), 0, 20),\n },\n lmp: typeof lmp === 'string' ? lmp : '',\n pregnancy_status: resolvePregnancyStatus(parsed),\n eddUSG: typeof eddUSG === 'string' ? eddUSG : '',\n primaryEDD: primaryEDD === 'usg' ? 'usg' : 'lmp',\n complications: typeof complications === 'string' ? complications : '',\n outcome: outcome && typeof outcome === 'object'\n ? {\n type: (outcome.type ?? '') as OutcomeType,\n date: typeof outcome.date === 'string' ? outcome.date : '',\n notes: typeof outcome.notes === 'string' ? outcome.notes : '',\n is_final: !!outcome.is_final,\n }\n : null,\n menstrual: normalizeMenstrual(parsed.menstrual),\n },\n };\n }\n\n // Legacy flat JSON object\n if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {\n const gpalFromFlat = {\n G: clampInt(Number((parsed as any).G ?? (parsed as any).g ?? 0), 0, 20),\n P: clampInt(Number((parsed as any).P ?? (parsed as any).p ?? 0), 0, 20),\n A: clampInt(Number((parsed as any).A ?? (parsed as any).a ?? 0), 0, 20),\n L: clampInt(Number((parsed as any).L ?? (parsed as any).l ?? 0), 0, 20),\n };\n return {\n isNewEntry: false,\n draft: {\n ...DEFAULT_DRAFT,\n gpal: gpalFromFlat,\n lmp: typeof (parsed as any).lmp === 'string' ? (parsed as any).lmp : '',\n eddUSG: typeof (parsed as any).eddUSG === 'string' ? (parsed as any).eddUSG : '',\n primaryEDD: (parsed as any).primaryEDD === 'usg' ? 'usg' : 'lmp',\n complications: typeof (parsed as any).complications === 'string' ? (parsed as any).complications : '',\n outcome: (parsed as any).outcome && typeof (parsed as any).outcome === 'object'\n ? {\n type: ((parsed as any).outcome.type ?? '') as OutcomeType,\n date: typeof (parsed as any).outcome.date === 'string' ? (parsed as any).outcome.date : '',\n notes: typeof (parsed as any).outcome.notes === 'string' ? (parsed as any).outcome.notes : '',\n is_final: !!(parsed as any).outcome.is_final,\n }\n : null,\n pregnancy_status: resolvePregnancyStatus(parsed),\n menstrual: normalizeMenstrual((parsed as any).menstrual),\n },\n };\n }\n\n // Legacy human-readable string\n if (typeof parsed === 'string') {\n const legacy = parseLegacyString(parsed);\n return { isNewEntry: false, draft: { ...DEFAULT_DRAFT, ...legacy } as Draft };\n }\n\n return { draft: { ...DEFAULT_DRAFT }, isNewEntry: true };\n}\n\nfunction computeEddFromLmp(lmpIso: string): string | null {\n if (!isValidIsoDate(lmpIso)) return null;\n const base = new Date(`${lmpIso}T00:00:00.000Z`);\n base.setUTCDate(base.getUTCDate() + 280);\n const y = base.getUTCFullYear();\n const m = pad2(base.getUTCMonth() + 1);\n const d = pad2(base.getUTCDate());\n return `${y}-${m}-${d}`;\n}\n\nfunction diffDaysUtc(fromIso: string, toIso: string): number | null {\n if (!isValidIsoDate(fromIso) || !isValidIsoDate(toIso)) return null;\n const a = new Date(`${fromIso}T00:00:00.000Z`).getTime();\n const b = new Date(`${toIso}T00:00:00.000Z`).getTime();\n return Math.floor((b - a) / (1000 * 60 * 60 * 24));\n}\n\nfunction computeGestationalAgeFromLmp(lmpIso: string, today: string): GestationalAge | null {\n const days = diffDaysUtc(lmpIso, today);\n if (days == null || days < 0) return null;\n const weeks = Math.floor(days / 7);\n const rem = days % 7;\n return { weeks, days: rem, totalDays: days, basedOn: 'lmp' };\n}\n\nfunction computeGestationalAgeFromUsgEdd(eddUsgIso: string, today: string): GestationalAge | null {\n const daysToEdd = diffDaysUtc(today, eddUsgIso);\n if (daysToEdd == null) return null;\n const daysElapsed = 280 - daysToEdd;\n if (daysElapsed < 0) return null;\n const weeks = Math.floor(daysElapsed / 7);\n const rem = daysElapsed % 7;\n return { weeks, days: rem, totalDays: daysElapsed, basedOn: 'usg' };\n}\n\nfunction computeTrimester(ga: GestationalAge | null): 1 | 2 | 3 | null {\n if (!ga) return null;\n if (ga.weeks < 13) return 1;\n if (ga.weeks < 27) return 2;\n if (ga.weeks < 42) return 3;\n return null;\n}\n\nfunction buildStored(draft: Draft, today: string): StoredObgHistory {\n const lmpIso = isValidIsoDate(draft.lmp) ? draft.lmp : null;\n const eddUsgIso = isValidIsoDate(draft.eddUSG) ? draft.eddUSG : null;\n\n if (draft.pregnancy_status !== 'pregnant') {\n return {\n gpal: draft.gpal,\n lmp: lmpIso,\n is_pregnant: false,\n pregnancy_status: draft.pregnancy_status,\n edd: null,\n gestationalAge: null,\n trimester: null,\n complications: draft.complications.trim() ? draft.complications : null,\n outcome: draft.outcome,\n menstrual: { ...draft.menstrual },\n };\n }\n\n const eddFromLmp = lmpIso ? computeEddFromLmp(lmpIso) : null;\n const gaFromLmp = lmpIso ? computeGestationalAgeFromLmp(lmpIso, today) : null;\n const gaFromUsg = eddUsgIso ? computeGestationalAgeFromUsgEdd(eddUsgIso, today) : null;\n\n const primary = draft.primaryEDD;\n const gaPrimary = primary === 'usg' && gaFromUsg ? gaFromUsg : gaFromLmp ? gaFromLmp : null;\n\n return {\n gpal: draft.gpal,\n lmp: lmpIso,\n is_pregnant: true,\n pregnancy_status: 'pregnant',\n edd: { lmp: eddFromLmp, usg: eddUsgIso, primary },\n gestationalAge: gaPrimary,\n trimester: computeTrimester(gaPrimary),\n complications: draft.complications.trim() ? draft.complications : null,\n outcome: draft.outcome,\n menstrual: { ...draft.menstrual },\n };\n}\n\nfunction stripGpalSuffix(label: string): string {\n return label.replace(/\\s*\\(G-P-A-L\\)\\s*$/i, '').trim();\n}\n\nfunction useDebouncedCommit(commit: (next: Draft) => void, delayMs: number) {\n const timeoutRef = useRef<number | null>(null);\n const latestCommit = useRef(commit);\n latestCommit.current = commit;\n\n useEffect(() => {\n return () => {\n if (timeoutRef.current != null) window.clearTimeout(timeoutRef.current);\n };\n }, []);\n\n return (next: Draft) => {\n if (timeoutRef.current != null) window.clearTimeout(timeoutRef.current);\n timeoutRef.current = window.setTimeout(() => latestCommit.current(next), delayMs);\n };\n}\n\nexport const ObstetricHistoryWidget: React.FC<{ fieldId: string }> = ({ fieldId }) => {\n const { fieldDef, value, setValue, disabled } = useField(fieldId);\n\n const [{ draft, isNewEntry }, setDraftState] = useState(() => normalizeToDraft(value));\n const [lmpError, setLmpError] = useState<string | null>(null);\n const [primaryEddError, setPrimaryEddError] = useState<string | null>(null);\n const [activeGpalKey, setActiveGpalKey] = useState<keyof Draft['gpal'] | null>(null);\n\n const refs = {\n G: useRef<HTMLInputElement | null>(null),\n P: useRef<HTMLInputElement | null>(null),\n A: useRef<HTMLInputElement | null>(null),\n L: useRef<HTMLInputElement | null>(null),\n } as const;\n\n const today = useMemo(() => todayIso(), []);\n\n // Keep local draft in sync with external updates (AI, reset, initial load).\n useEffect(() => {\n const next = normalizeToDraft(value);\n const currStr = JSON.stringify(buildStored(draft, today));\n const nextStr = JSON.stringify(buildStored(next.draft, today));\n if (currStr !== nextStr) setDraftState(next);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n const commitImmediate = (nextDraft: Draft) => {\n const stored = buildStored(nextDraft, today);\n setValue(JSON.stringify(stored));\n };\n const commitDebounced = useDebouncedCommit(commitImmediate, 500);\n\n const storedComputed = useMemo(() => buildStored(draft, today), [draft, today]);\n\n const isPregnant = draft.pregnancy_status === 'pregnant';\n const rightPanelEnabled = isPregnant && (!!storedComputed.lmp || !!(storedComputed.edd?.usg));\n const headerLabel = fieldDef?.label ? stripGpalSuffix(fieldDef.label) : 'Obstetric History';\n\n const setDraft = (updater: (prev: Draft) => Draft, persist: 'debounce' | 'immediate') => {\n setDraftState((prev) => {\n const nextDraft = updater(prev.draft);\n const nextState = { ...prev, draft: nextDraft };\n if (persist === 'immediate') commitImmediate(nextDraft);\n else commitDebounced(nextDraft);\n return nextState;\n });\n };\n\n const sanitizeGpalInput = (raw: string): number => {\n const digits = raw.replace(/[^\\d]/g, '').slice(0, 2);\n if (!digits) return 0;\n return clampInt(Number(digits), 0, 20);\n };\n\n const handleGpalChange = (key: keyof Draft['gpal'], raw: string) => {\n const prevWasEmpty = draft.gpal[key] === 0 && (activeGpalKey === key);\n const val = sanitizeGpalInput(raw);\n setDraft((prev) => ({ ...prev, gpal: { ...prev.gpal, [key]: val } }), 'debounce');\n\n const digitsOnly = raw.replace(/[^\\d]/g, '');\n const shouldAutoTab = digitsOnly.length === 1 && (prevWasEmpty || String(draft.gpal[key]).length >= 1);\n if (shouldAutoTab) {\n const order: (keyof Draft['gpal'])[] = ['G', 'P', 'A', 'L'];\n const idx = order.indexOf(key);\n const nextKey = order[idx + 1];\n if (nextKey) refs[nextKey].current?.focus();\n }\n };\n\n const handleLmpChange = (nextIso: string) => {\n setPrimaryEddError(null);\n if (nextIso && nextIso > today) {\n setLmpError('LMP cannot be in the future');\n return;\n }\n setLmpError(null);\n setDraft((prev) => ({ ...prev, lmp: nextIso }), 'debounce');\n };\n\n const handlePregStatus = (status: PregnancyStatus) => {\n setLmpError(null);\n setPrimaryEddError(null);\n setDraft((prev) => ({ ...prev, pregnancy_status: status }), 'immediate');\n };\n\n const setMenstrualPatch = (patch: Partial<StoredMenstrual>) => {\n setDraft((prev) => ({ ...prev, menstrual: { ...prev.menstrual, ...patch } }), 'debounce');\n };\n\n const handleEddUsgChange = (nextIso: string) => {\n setPrimaryEddError(null);\n setDraft((prev) => ({ ...prev, eddUSG: nextIso }), 'debounce');\n };\n\n const handlePrimaryEdd = (next: BasedOn) => {\n if (next === 'usg' && !isValidIsoDate(draft.eddUSG)) {\n setPrimaryEddError('Please enter EDD from USG first');\n return;\n }\n setPrimaryEddError(null);\n setDraft((prev) => ({ ...prev, primaryEDD: next }), 'immediate');\n };\n\n const ensureOutcome = () => {\n if (draft.outcome) return;\n setDraft(\n (prev) => ({\n ...prev,\n outcome: { type: '', date: '', notes: '', is_final: false },\n }),\n 'immediate'\n );\n };\n\n const clearOutcome = () => {\n setDraft((prev) => ({ ...prev, outcome: null }), 'immediate');\n };\n\n const updateOutcomeImmediate = (updater: (o: Outcome) => Outcome) => {\n setDraft(\n (prev) => {\n const o = prev.outcome ?? { type: '', date: '', notes: '', is_final: false };\n return { ...prev, outcome: updater(o) };\n },\n 'immediate'\n );\n };\n\n const updateOutcomeNotesDebounced = (notes: string) => {\n setDraft(\n (prev) => {\n const o = prev.outcome ?? { type: '', date: '', notes: '', is_final: false };\n return { ...prev, outcome: { ...o, notes } };\n },\n 'debounce'\n );\n };\n\n return (\n <Card className={cn('w-full', disabled && 'opacity-70 pointer-events-none')}>\n <CardHeader className=\"pb-3\">\n <CardTitle className=\"text-base font-semibold\">{headerLabel}</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n {isNewEntry && (\n <div className=\"rounded-md border border-blue-200 bg-blue-50 px-3 py-2 text-xs text-blue-900\">\n No previous maternity episode found. Please fill obstetric details to start tracking.\n </div>\n )}\n\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4 items-start\">\n {/* Left panel */}\n <div className=\"space-y-4\">\n <div className=\"rounded-lg border bg-white p-4\">\n <div className=\"text-xs font-medium text-muted-foreground mb-2\">G-P-A-L</div>\n <div className=\"grid grid-cols-4 gap-3\">\n {(['G', 'P', 'A', 'L'] as const).map((k) => (\n <div key={k} className=\"space-y-1\">\n <Label htmlFor={`${fieldId}-gpal-${k}`} className=\"text-[11px] text-muted-foreground\">\n {k}\n </Label>\n <Input\n ref={refs[k]}\n id={`${fieldId}-gpal-${k}`}\n inputMode=\"numeric\"\n pattern=\"\\d*\"\n maxLength={2}\n value={String(draft.gpal[k] ?? 0)}\n onFocus={() => {\n setActiveGpalKey(k);\n const el = refs[k].current;\n if (el) el.select();\n }}\n onChange={(e) => handleGpalChange(k, e.target.value)}\n onKeyDown={(e) => {\n const allowed = ['Backspace', 'Delete', 'ArrowLeft', 'ArrowRight', 'Tab', 'Home', 'End'];\n if (allowed.includes(e.key)) return;\n if (/^\\d$/.test(e.key)) return;\n e.preventDefault();\n }}\n className=\"text-center text-base\"\n />\n </div>\n ))}\n </div>\n </div>\n\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-3\">\n <div className=\"space-y-2 rounded-lg border bg-white p-4\">\n <Label htmlFor={`${fieldId}-lmp`} className={cn('text-sm', lmpError && 'text-red-600')}>\n Last Menstrual Period (LMP)\n </Label>\n <Input\n id={`${fieldId}-lmp`}\n type=\"date\"\n max={today}\n value={draft.lmp}\n onChange={(e) => handleLmpChange(e.target.value)}\n className={cn(lmpError && 'border-red-500')}\n />\n {lmpError && <p className=\"text-xs text-red-600\">{lmpError}</p>}\n </div>\n\n <div className=\"space-y-2 rounded-lg border bg-white p-4 min-w-0\">\n <div className=\"text-sm font-medium\">Pregnancy Status</div>\n <div className=\"flex min-w-0 flex-wrap gap-2\">\n <button\n type=\"button\"\n onClick={() => handlePregStatus('not_pregnant')}\n className={cn(\n 'shrink-0 rounded-full border px-3 py-1.5 text-[11px] font-medium transition-colors',\n draft.pregnancy_status === 'not_pregnant'\n ? 'border-green-600 bg-green-600 text-white'\n : 'border-slate-300 bg-white text-slate-700 hover:bg-slate-50',\n )}\n >\n Not Pregnant\n </button>\n <button\n type=\"button\"\n onClick={() => handlePregStatus('pregnant')}\n className={cn(\n 'shrink-0 rounded-full border px-3 py-1.5 text-[11px] font-medium transition-colors',\n draft.pregnancy_status === 'pregnant'\n ? 'border-green-600 bg-green-600 text-white'\n : 'border-slate-300 bg-white text-slate-700 hover:bg-slate-50',\n )}\n >\n Pregnant\n </button>\n <button\n type=\"button\"\n onClick={() => handlePregStatus('unknown')}\n className={cn(\n 'shrink-0 rounded-full border px-3 py-1.5 text-[11px] font-medium transition-colors',\n draft.pregnancy_status === 'unknown'\n ? 'border-amber-500 bg-amber-500 text-white'\n : 'border-slate-300 bg-white text-slate-700 hover:bg-slate-50',\n )}\n >\n Unknown\n </button>\n </div>\n </div>\n </div>\n\n <div className=\"rounded-lg border bg-white p-4\">\n <div className=\"text-xs font-medium text-muted-foreground mb-3\">Menstrual</div>\n <div className=\"grid grid-cols-2 gap-3 sm:grid-cols-4\">\n <label className=\"space-y-1\">\n <Label htmlFor={`${fieldId}-menarche`} className=\"text-[11px] text-muted-foreground\">\n Menarche (age)\n </Label>\n <Input\n id={`${fieldId}-menarche`}\n type=\"number\"\n min={5}\n max={25}\n value={draft.menstrual.menarche_age}\n onChange={(e) => setMenstrualPatch({ menarche_age: Number(e.target.value) || 0 })}\n />\n </label>\n <label className=\"space-y-1\">\n <Label htmlFor={`${fieldId}-cycle-length`} className=\"text-[11px] text-muted-foreground\">\n Cycle (days)\n </Label>\n <Input\n id={`${fieldId}-cycle-length`}\n type=\"number\"\n min={0}\n max={120}\n value={draft.menstrual.cycle_length}\n onChange={(e) => setMenstrualPatch({ cycle_length: Number(e.target.value) || 0 })}\n />\n </label>\n <label className=\"space-y-1\">\n <Label htmlFor={`${fieldId}-flow-days`} className=\"text-[11px] text-muted-foreground\">\n Flow (days)\n </Label>\n <Input\n id={`${fieldId}-flow-days`}\n type=\"number\"\n min={0}\n max={30}\n value={draft.menstrual.flow_days}\n onChange={(e) => setMenstrualPatch({ flow_days: Number(e.target.value) || 0 })}\n />\n </label>\n <label className=\"space-y-1\">\n <Label className=\"text-[11px] text-muted-foreground\">Dysmenorrhea</Label>\n <select\n className=\"h-9 w-full rounded-md border border-input bg-background px-2 text-sm\"\n value={String(draft.menstrual.dysmenorrhea)}\n onChange={(e) =>\n setMenstrualPatch({\n dysmenorrhea: clampDysmenorrhea(Number(e.target.value)),\n })\n }\n >\n <option value=\"0\">0 — none</option>\n <option value=\"1\">1 — mild</option>\n <option value=\"2\">2 — moderate</option>\n <option value=\"3\">3 — severe</option>\n </select>\n </label>\n </div>\n <label className=\"mt-3 flex items-center gap-2 text-sm\">\n <input\n type=\"checkbox\"\n checked={draft.menstrual.cycle_regular}\n onChange={(e) => setMenstrualPatch({ cycle_regular: e.target.checked })}\n />\n Regular cycle\n </label>\n </div>\n\n <div className=\"space-y-2 rounded-lg border bg-white p-4\">\n <Label htmlFor={`${fieldId}-complications`} className=\"text-sm\">\n Previous Pregnancy Complications\n </Label>\n <Textarea\n id={`${fieldId}-complications`}\n placeholder=\"e.g. Pre-eclampsia, Gestational diabetes, C-section, etc.\"\n value={draft.complications}\n onChange={(e) => setDraft((prev) => ({ ...prev, complications: e.target.value }), 'debounce')}\n className=\"min-h-[140px]\"\n />\n </div>\n </div>\n\n {/* Right panel */}\n <div className=\"rounded-lg border bg-white p-4 min-h-[260px]\">\n {!isPregnant && (\n <div className=\"h-full flex items-center justify-center text-center text-sm text-muted-foreground px-6 py-10\">\n {draft.pregnancy_status === 'unknown'\n ? 'Pregnancy status unknown — confirm with UPT/USG to enable gestational age and EDD.'\n : 'Only for \"Pregnant Women\" and enter LMP to calculate gestational age and EDD'}\n </div>\n )}\n\n {isPregnant && !rightPanelEnabled && (\n <div className=\"h-full flex items-center justify-center text-center text-sm text-muted-foreground px-6 py-10\">\n Enter LMP and/or EDD (USG) to enable gestational age and EDD calculations.\n </div>\n )}\n\n {isPregnant && rightPanelEnabled && (\n <div className=\"space-y-4\">\n <div className=\"rounded-lg border p-4\">\n <div className=\"flex items-center justify-between\">\n <div className=\"text-sm font-semibold text-blue-700\">Expected Delivery Date (EDD)</div>\n {storedComputed.gestationalAge?.basedOn && (\n <span className=\"rounded-full bg-blue-100 px-2 py-1 text-[11px] text-blue-700\">\n Based on {storedComputed.gestationalAge.basedOn.toUpperCase()}\n </span>\n )}\n </div>\n <div className=\"mt-3\">\n <div className=\"text-xs text-muted-foreground\">Gestational Age:</div>\n <div className=\"text-lg font-semibold\">\n {storedComputed.gestationalAge\n ? `${storedComputed.gestationalAge.weeks} weeks ${storedComputed.gestationalAge.days} days`\n : '—'}\n </div>\n <div className=\"text-xs text-muted-foreground mt-1\">\n {storedComputed.trimester ? `Trimester ${storedComputed.trimester}` : 'Trimester —'}\n </div>\n </div>\n </div>\n\n <div className=\"space-y-2\">\n <div className=\"text-xs text-muted-foreground\">EDD (from LMP):</div>\n <div className=\"rounded-md border bg-muted/20 px-3 py-2 text-sm font-semibold\">\n {storedComputed.edd?.lmp ? formatDdMmYyyy(storedComputed.edd.lmp) : '—'}\n </div>\n </div>\n\n <div className=\"space-y-2\">\n <Label htmlFor={`${fieldId}-edd-usg`} className=\"text-sm\">\n EDD (from USG):\n </Label>\n <Input\n id={`${fieldId}-edd-usg`}\n type=\"date\"\n value={draft.eddUSG}\n onChange={(e) => handleEddUsgChange(e.target.value)}\n />\n </div>\n\n <div className=\"space-y-2\">\n <div className=\"text-sm font-medium\">Primary EDD:</div>\n <div className=\"flex gap-2\">\n <button\n type=\"button\"\n onClick={() => handlePrimaryEdd('lmp')}\n className={cn(\n 'flex-1 rounded-md border px-3 py-2 text-sm',\n draft.primaryEDD === 'lmp' ? 'bg-blue-600 text-white border-blue-600' : 'bg-white'\n )}\n >\n LMP\n </button>\n <button\n type=\"button\"\n onClick={() => handlePrimaryEdd('usg')}\n className={cn(\n 'flex-1 rounded-md border px-3 py-2 text-sm',\n draft.primaryEDD === 'usg' ? 'bg-blue-600 text-white border-blue-600' : 'bg-white'\n )}\n >\n USG\n </button>\n </div>\n {primaryEddError && <p className=\"text-xs text-red-600\">{primaryEddError}</p>}\n </div>\n </div>\n )}\n </div>\n </div>\n\n {/* Antenatal panels (full width of the card) */}\n <AntenatalPanels />\n\n {/* Outcome section */}\n <div className=\"rounded-lg border bg-yellow-50/60 p-4\">\n <div className=\"flex items-center justify-between\">\n <div className=\"text-sm font-semibold\">\n Pregnancy Outcome (Optional - To Close Episode)\n </div>\n {draft.outcome && (\n <button type=\"button\" className=\"text-sm text-red-600 hover:underline\" onClick={clearOutcome}>\n Clear\n </button>\n )}\n </div>\n\n {!draft.outcome && (\n <button\n type=\"button\"\n onClick={ensureOutcome}\n className=\"mt-3 w-full rounded-md border border-yellow-300 bg-yellow-100 px-3 py-2 text-sm font-medium\"\n >\n + Add Pregnancy Outcome\n </button>\n )}\n\n {draft.outcome && (\n <div className=\"mt-4 space-y-3\">\n <div className=\"space-y-2\">\n <Label className=\"text-sm\">\n Outcome Type <span className=\"text-red-500\">*</span>\n </Label>\n <select\n className=\"w-full rounded-md border px-3 py-2 text-sm bg-white\"\n value={draft.outcome.type}\n onChange={(e) => updateOutcomeImmediate((o) => ({ ...o, type: e.target.value as OutcomeType }))}\n >\n <option value=\"\">Select outcome...</option>\n <option value=\"delivery\">Normal Delivery</option>\n <option value=\"cesarean\">Cesarean Section</option>\n <option value=\"abortion\">Abortion</option>\n <option value=\"miscarriage\">Miscarriage</option>\n <option value=\"stillbirth\">Stillbirth</option>\n </select>\n </div>\n\n <div className=\"space-y-2\">\n <Label htmlFor={`${fieldId}-outcome-date`} className=\"text-sm\">\n Date <span className=\"text-red-500\">*</span>\n </Label>\n <Input\n id={`${fieldId}-outcome-date`}\n type=\"date\"\n max={today}\n value={draft.outcome.date}\n onChange={(e) => updateOutcomeImmediate((o) => ({ ...o, date: e.target.value }))}\n />\n {draft.outcome.date && (\n <p className=\"text-xs text-muted-foreground\">\n Selected: {formatDdMmYyyy(draft.outcome.date)}\n </p>\n )}\n </div>\n\n <div className=\"space-y-2\">\n <Label htmlFor={`${fieldId}-outcome-notes`} className=\"text-sm\">\n Notes\n </Label>\n <Textarea\n id={`${fieldId}-outcome-notes`}\n placeholder=\"e.g. Normal vaginal delivery, healthy baby boy, 3.2kg\"\n value={draft.outcome.notes}\n onChange={(e) => updateOutcomeNotesDebounced(e.target.value)}\n className=\"min-h-[90px]\"\n />\n </div>\n\n <div className=\"rounded-md border bg-white p-3\">\n <label className=\"flex items-center gap-2 text-sm\">\n <input\n type=\"checkbox\"\n checked={!!draft.outcome.is_final}\n onChange={(e) => updateOutcomeImmediate((o) => ({ ...o, is_final: e.target.checked }))}\n />\n Close this pregnancy episode\n </label>\n {draft.outcome.is_final && (\n <div className=\"mt-3 rounded-md border border-red-300 bg-red-50 px-3 py-2 text-xs text-red-800\">\n Checking this will mark the pregnancy as completed and is intended to close the maternity episode.\n </div>\n )}\n </div>\n </div>\n )}\n </div>\n </CardContent>\n </Card>\n );\n};\n\n"]}
@@ -1,6 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var chunkML47UEDU_cjs = require('./chunk-ML47UEDU.cjs');
3
+ var chunk5RT3S67O_cjs = require('./chunk-5RT3S67O.cjs');
4
+ var chunkO4FSJPU3_cjs = require('./chunk-O4FSJPU3.cjs');
4
5
  var chunkJE6VXRWW_cjs = require('./chunk-JE6VXRWW.cjs');
5
6
  var chunkQKJ7BQSR_cjs = require('./chunk-QKJ7BQSR.cjs');
6
7
  var chunkPZBJYPWW_cjs = require('./chunk-PZBJYPWW.cjs');
@@ -16,7 +17,7 @@ var jsxRuntime = require('react/jsx-runtime');
16
17
  var OBG_PATHWAY_FIELD = "obg_pathway";
17
18
  var AntenatalPanels = () => {
18
19
  const pathwayField = chunkTB33A4PD_cjs.useField(OBG_PATHWAY_FIELD);
19
- const { writeSymptoms } = chunkML47UEDU_cjs.useObgSymptomsSync();
20
+ const { writeSymptoms } = chunk5RT3S67O_cjs.useObgSymptomsSync();
20
21
  const hasField = !!pathwayField.fieldDef;
21
22
  const safe = react.useMemo(
22
23
  () => chunkQKJ7BQSR_cjs.normalizeObgPathway(pathwayField.value),
@@ -48,7 +49,7 @@ var AntenatalPanels = () => {
48
49
  const setAntenatalExam = (patch) => commit({ ...a, exam: { ...a.exam, ...patch } });
49
50
  const setAntenatalInv = (patch) => commit({ ...a, investigations: { ...a.investigations, ...patch } });
50
51
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3 text-xs", children: [
51
- /* @__PURE__ */ jsxRuntime.jsx(chunkML47UEDU_cjs.Panel, { title: "Current pregnancy details", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-3 md:grid-cols-4", children: [
52
+ /* @__PURE__ */ jsxRuntime.jsx(chunkO4FSJPU3_cjs.Panel, { title: "Current pregnancy details", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-3 md:grid-cols-4", children: [
52
53
  /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "space-y-1", children: [
53
54
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block font-medium", children: "Gravida" }),
54
55
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -160,8 +161,8 @@ var AntenatalPanels = () => {
160
161
  )
161
162
  ] })
162
163
  ] }) }),
163
- /* @__PURE__ */ jsxRuntime.jsx(chunkML47UEDU_cjs.Panel, { title: "Antenatal symptoms", children: /* @__PURE__ */ jsxRuntime.jsx(
164
- chunkML47UEDU_cjs.ChipRow,
164
+ /* @__PURE__ */ jsxRuntime.jsx(chunkO4FSJPU3_cjs.Panel, { title: "Antenatal symptoms", children: /* @__PURE__ */ jsxRuntime.jsx(
165
+ chunkO4FSJPU3_cjs.ChipRow,
165
166
  {
166
167
  options: [
167
168
  { key: "nauseaVomiting", label: "Nausea / vomiting" },
@@ -174,7 +175,7 @@ var AntenatalPanels = () => {
174
175
  disabled
175
176
  }
176
177
  ) }),
177
- /* @__PURE__ */ jsxRuntime.jsx(chunkML47UEDU_cjs.Panel, { title: "Antenatal examination", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-3 md:grid-cols-4", children: [
178
+ /* @__PURE__ */ jsxRuntime.jsx(chunkO4FSJPU3_cjs.Panel, { title: "Antenatal examination", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-3 md:grid-cols-4", children: [
178
179
  /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "space-y-1", children: [
179
180
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block font-medium", children: "Weight (kg)" }),
180
181
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -319,7 +320,7 @@ var AntenatalPanels = () => {
319
320
  )
320
321
  ] })
321
322
  ] }) }),
322
- /* @__PURE__ */ jsxRuntime.jsx(chunkML47UEDU_cjs.Panel, { title: "Investigations tracker", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-3 md:grid-cols-3", children: [
323
+ /* @__PURE__ */ jsxRuntime.jsx(chunkO4FSJPU3_cjs.Panel, { title: "Investigations tracker", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-3 md:grid-cols-3", children: [
323
324
  /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "space-y-1", children: [
324
325
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block font-medium", children: "Blood Group / Rh" }),
325
326
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -1111,5 +1112,5 @@ var ObstetricHistoryWidget = ({ fieldId }) => {
1111
1112
  };
1112
1113
 
1113
1114
  exports.ObstetricHistoryWidget = ObstetricHistoryWidget;
1114
- //# sourceMappingURL=ObstetricHistoryWidget-RP7NY4PV.cjs.map
1115
- //# sourceMappingURL=ObstetricHistoryWidget-RP7NY4PV.cjs.map
1115
+ //# sourceMappingURL=ObstetricHistoryWidget-OOWCVFRB.cjs.map
1116
+ //# sourceMappingURL=ObstetricHistoryWidget-OOWCVFRB.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ui/widgets/AntenatalPanels.tsx","../src/ui/widgets/ObstetricHistoryWidget.tsx"],"names":["useField","useObgSymptomsSync","useMemo","normalizeObgPathway","useState","useRef","useEffect","jsxs","jsx","Panel","Input","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","ChipRow","Checkbox","Card","cn","CardHeader","CardTitle","CardContent","Label","Textarea"],"mappings":"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","file":"ObstetricHistoryWidget-OOWCVFRB.cjs","sourcesContent":["import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { useField } from '../../react/useField';\nimport { Input } from '../shadcn/input';\nimport { Checkbox } from '../shadcn/checkbox';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '../shadcn/select';\nimport {\n normalizeObgPathway,\n type ObgAntenatal,\n type ObgPathwayValue,\n} from '../../core/obgPathway';\nimport { ChipRow, Panel } from './_obgPanels';\nimport { useObgSymptomsSync } from './_obgSymptomsSync';\n\nconst OBG_PATHWAY_FIELD = 'obg_pathway';\n\n/**\n * Antenatal-specific panels (current pregnancy, symptoms, examination,\n * investigations) that live on the `obg_pathway` field but render under the\n * Obstetric-history widget when the antenatal zone is active. Designed to be\n * embedded into ObstetricHistoryWidget so that pregnancy-related capture lives\n * in one visual block.\n *\n * The component mirrors the antenatal subtree of `obg_pathway` into local\n * state so inputs update immediately on keystroke, even though `useField`'s\n * external-store subscription can lag re-renders for sibling components in\n * React 18 concurrent mode. Writes flow through to the form store on the same\n * tick.\n */\nexport const AntenatalPanels: React.FC = () => {\n const pathwayField = useField(OBG_PATHWAY_FIELD);\n const { writeSymptoms } = useObgSymptomsSync();\n\n // If the form has no obg_pathway field (non-OBG templates), render nothing.\n const hasField = !!pathwayField.fieldDef;\n\n const safe = useMemo<ObgPathwayValue>(\n () => normalizeObgPathway(pathwayField.value),\n [pathwayField.value],\n );\n\n // Local mirror of the antenatal subtree. Inputs read from this; writes both\n // update local state (for an instant re-render) and the form store.\n const [ant, setAnt] = useState<ObgAntenatal>(() => safe.antenatal);\n\n // Track the last antenatal we wrote to the store so we can ignore the\n // resulting \"echo\" snapshot from the subscription and only resync local\n // state when the antenatal subtree changes from outside (AI prefill, reset,\n // chip toggle that only changes zones, …).\n const lastWrittenRef = useRef<ObgAntenatal>(safe.antenatal);\n\n useEffect(() => {\n if (safe.antenatal === lastWrittenRef.current) return;\n if (JSON.stringify(safe.antenatal) === JSON.stringify(lastWrittenRef.current)) return;\n setAnt(safe.antenatal);\n lastWrittenRef.current = safe.antenatal;\n }, [safe.antenatal]);\n\n if (!hasField) return null;\n if (!safe.zones.includes('antenatal')) return null;\n\n const disabled = pathwayField.disabled;\n\n const commit = (nextAnt: ObgAntenatal) => {\n // Build `prev` from local `ant` (always up-to-date with our last commit)\n // rather than `safe` (which can lag if the field-store subscription hasn't\n // propagated yet). This keeps the prev/next prose check correct across\n // rapid keystrokes so HOPC stays in sync without ever mis-classifying our\n // own previous auto-write as user-typed prose.\n const prev: ObgPathwayValue = { ...safe, antenatal: ant };\n const nextPathway: ObgPathwayValue = { ...safe, antenatal: nextAnt };\n setAnt(nextAnt);\n lastWrittenRef.current = nextAnt;\n pathwayField.setValue(nextPathway);\n pathwayField.setTouched();\n writeSymptoms(prev, nextPathway);\n };\n\n const a = ant;\n const setAntenatal = (patch: Partial<ObgAntenatal>) => commit({ ...a, ...patch });\n const setAntenatalSymptom = (key: keyof ObgAntenatal['symptoms']) =>\n commit({ ...a, symptoms: { ...a.symptoms, [key]: !a.symptoms[key] } });\n const setAntenatalExam = (patch: Partial<ObgAntenatal['exam']>) =>\n commit({ ...a, exam: { ...a.exam, ...patch } });\n const setAntenatalInv = (patch: Partial<ObgAntenatal['investigations']>) =>\n commit({ ...a, investigations: { ...a.investigations, ...patch } });\n\n return (\n <div className=\"space-y-3 text-xs\">\n <Panel title=\"Current pregnancy details\">\n <div className=\"grid grid-cols-2 gap-3 md:grid-cols-4\">\n <label className=\"space-y-1\">\n <span className=\"block font-medium\">Gravida</span>\n <Input\n type=\"number\"\n min={0}\n className=\"h-8 text-xs\"\n value={a.gravida}\n onChange={(e) => setAntenatal({ gravida: Number(e.target.value) || 0 })}\n disabled={disabled}\n />\n </label>\n <div className=\"space-y-1\">\n <span className=\"block font-medium\">GA (LMP) — w / d</span>\n <div className=\"flex items-center gap-1\">\n <Input\n type=\"number\"\n min={0}\n max={45}\n className=\"h-8 text-xs\"\n value={a.gaWeeksLmp}\n onChange={(e) => setAntenatal({ gaWeeksLmp: Number(e.target.value) || 0 })}\n disabled={disabled}\n />\n <span className=\"text-[10px] text-muted-foreground\">w</span>\n <Input\n type=\"number\"\n min={0}\n max={6}\n className=\"h-8 text-xs\"\n value={a.gaDaysLmp}\n onChange={(e) => setAntenatal({ gaDaysLmp: Number(e.target.value) || 0 })}\n disabled={disabled}\n />\n <span className=\"text-[10px] text-muted-foreground\">d</span>\n </div>\n </div>\n <div className=\"space-y-1\">\n <span className=\"block font-medium\">GA (USG) — w / d</span>\n <div className=\"flex items-center gap-1\">\n <Input\n type=\"number\"\n min={0}\n max={45}\n className=\"h-8 text-xs\"\n value={a.gaWeeksUsg}\n onChange={(e) => setAntenatal({ gaWeeksUsg: Number(e.target.value) || 0 })}\n disabled={disabled}\n />\n <span className=\"text-[10px] text-muted-foreground\">w</span>\n <Input\n type=\"number\"\n min={0}\n max={6}\n className=\"h-8 text-xs\"\n value={a.gaDaysUsg}\n onChange={(e) => setAntenatal({ gaDaysUsg: Number(e.target.value) || 0 })}\n disabled={disabled}\n />\n <span className=\"text-[10px] text-muted-foreground\">d</span>\n </div>\n </div>\n <label className=\"space-y-1\">\n <span className=\"block font-medium\">EDD</span>\n <Input\n type=\"date\"\n className=\"h-8 text-xs\"\n value={a.edd}\n onChange={(e) => setAntenatal({ edd: e.target.value })}\n disabled={disabled}\n />\n </label>\n <label className=\"space-y-1 md:col-span-2\">\n <span className=\"block font-medium\">Risk category</span>\n <Select\n value={a.riskCategory === '' ? 'none' : a.riskCategory}\n onValueChange={(v) =>\n setAntenatal({\n riskCategory: v === 'none' ? '' : (v as typeof a.riskCategory),\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=\"Low\">Low</SelectItem>\n <SelectItem value=\"High\">High</SelectItem>\n </SelectContent>\n </Select>\n </label>\n </div>\n </Panel>\n\n <Panel title=\"Antenatal symptoms\">\n <ChipRow\n options={[\n { key: 'nauseaVomiting', label: 'Nausea / vomiting' },\n { key: 'bleedingPV', label: 'Bleeding PV' },\n { key: 'painAbdomen', label: 'Pain abdomen' },\n { key: 'decreasedFetalMovements', label: 'Decreased fetal movements' },\n ]}\n selected={a.symptoms as unknown as Record<string, boolean>}\n onToggle={(k) => setAntenatalSymptom(k as keyof typeof a.symptoms)}\n disabled={disabled}\n />\n </Panel>\n\n <Panel title=\"Antenatal examination\">\n <div className=\"grid grid-cols-2 gap-3 md:grid-cols-4\">\n <label className=\"space-y-1\">\n <span className=\"block font-medium\">Weight (kg)</span>\n <Input\n type=\"number\"\n className=\"h-8 text-xs\"\n value={a.exam.weightKg}\n onChange={(e) => setAntenatalExam({ weightKg: Number(e.target.value) || 0 })}\n disabled={disabled}\n />\n </label>\n <label className=\"space-y-1\">\n <span className=\"block font-medium\">Height (cm)</span>\n <Input\n type=\"number\"\n className=\"h-8 text-xs\"\n value={a.exam.heightCm}\n onChange={(e) => setAntenatalExam({ heightCm: Number(e.target.value) || 0 })}\n disabled={disabled}\n />\n </label>\n <label className=\"space-y-1\">\n <span className=\"block font-medium\">BMI</span>\n <Input\n type=\"number\"\n step={0.1}\n className=\"h-8 text-xs\"\n value={a.exam.bmi}\n onChange={(e) => setAntenatalExam({ bmi: Number(e.target.value) || 0 })}\n disabled={disabled}\n />\n </label>\n <label className=\"space-y-1\">\n <span className=\"block font-medium\">BP</span>\n <Input\n placeholder=\"e.g. 120/80\"\n className=\"h-8 text-xs\"\n value={a.exam.bp}\n onChange={(e) => setAntenatalExam({ bp: e.target.value })}\n disabled={disabled}\n />\n </label>\n\n <label className=\"flex items-end gap-2 pb-1\">\n <Checkbox\n checked={a.exam.pallor}\n onCheckedChange={(c) => setAntenatalExam({ pallor: c === true })}\n disabled={disabled}\n />\n <span>Pallor</span>\n </label>\n <label className=\"flex items-end gap-2 pb-1\">\n <Checkbox\n checked={a.exam.oedema}\n onCheckedChange={(c) => setAntenatalExam({ oedema: c === true })}\n disabled={disabled}\n />\n <span>Oedema</span>\n </label>\n <label className=\"space-y-1\">\n <span className=\"block font-medium\">Fundal height (cm)</span>\n <Input\n type=\"number\"\n className=\"h-8 text-xs\"\n value={a.exam.fundalHeightCm}\n onChange={(e) =>\n setAntenatalExam({ fundalHeightCm: Number(e.target.value) || 0 })\n }\n disabled={disabled}\n />\n </label>\n <label className=\"space-y-1\">\n <span className=\"block font-medium\">FHR (bpm)</span>\n <Input\n type=\"number\"\n className=\"h-8 text-xs\"\n value={a.exam.fhrBpm}\n onChange={(e) => setAntenatalExam({ fhrBpm: Number(e.target.value) || 0 })}\n disabled={disabled}\n />\n </label>\n <label className=\"space-y-1\">\n <span className=\"block font-medium\">Presentation</span>\n <Select\n value={a.exam.presentation === '' ? 'none' : a.exam.presentation}\n onValueChange={(v) =>\n setAntenatalExam({\n presentation: v === 'none' ? '' : (v as typeof a.exam.presentation),\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=\"Cephalic\">Cephalic</SelectItem>\n <SelectItem value=\"Breech\">Breech</SelectItem>\n <SelectItem value=\"Other\">Other</SelectItem>\n </SelectContent>\n </Select>\n </label>\n <label className=\"space-y-1\">\n <span className=\"block font-medium\">Lie</span>\n <Select\n value={a.exam.lie === '' ? 'none' : a.exam.lie}\n onValueChange={(v) =>\n setAntenatalExam({ lie: v === 'none' ? '' : (v as typeof a.exam.lie) })\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=\"Longitudinal\">Longitudinal</SelectItem>\n <SelectItem value=\"Transverse\">Transverse</SelectItem>\n <SelectItem value=\"Oblique\">Oblique</SelectItem>\n </SelectContent>\n </Select>\n </label>\n </div>\n </Panel>\n\n <Panel title=\"Investigations tracker\">\n <div className=\"grid grid-cols-2 gap-3 md:grid-cols-3\">\n <label className=\"space-y-1\">\n <span className=\"block font-medium\">Blood Group / Rh</span>\n <Input\n className=\"h-8 text-xs\"\n placeholder=\"e.g. O+ve\"\n value={a.investigations.bloodGroup}\n onChange={(e) => setAntenatalInv({ bloodGroup: e.target.value })}\n disabled={disabled}\n />\n </label>\n {(\n [\n { key: 'cbc', label: 'CBC' },\n { key: 'tsh', label: 'TSH' },\n { key: 'rbsOgtt', label: 'RBS / OGTT' },\n { key: 'serology', label: 'HIV / HBsAg / VDRL' },\n { key: 'urine', label: 'Urine routine' },\n ] as const\n ).map((row) => (\n <label key={row.key} className=\"space-y-1\">\n <span className=\"block font-medium\">{row.label}</span>\n <Select\n value={a.investigations[row.key] === '' ? 'none' : a.investigations[row.key]}\n onValueChange={(v) =>\n setAntenatalInv({\n [row.key]: v === 'none' ? '' : v,\n } as Partial<typeof a.investigations>)\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=\"Done\">Done</SelectItem>\n <SelectItem value=\"Pending\">Pending</SelectItem>\n <SelectItem value=\"Abnormal\">Abnormal</SelectItem>\n </SelectContent>\n </Select>\n </label>\n ))}\n <label className=\"space-y-1\">\n <span className=\"block font-medium\">USG</span>\n <Select\n value={a.investigations.usg === '' ? 'none' : a.investigations.usg}\n onValueChange={(v) =>\n setAntenatalInv({\n usg: (v === 'none' ? '' : v) as typeof a.investigations.usg,\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=\"Dating\">Dating</SelectItem>\n <SelectItem value=\"NT\">NT</SelectItem>\n <SelectItem value=\"Anomaly\">Anomaly</SelectItem>\n <SelectItem value=\"Growth\">Growth</SelectItem>\n <SelectItem value=\"Pending\">Pending</SelectItem>\n </SelectContent>\n </Select>\n </label>\n </div>\n </Panel>\n </div>\n );\n};\n","import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { useField } from '../../react/useField';\nimport { Card, CardContent, CardHeader, CardTitle } from '../shadcn/card';\nimport { Input } from '../shadcn/input';\nimport { Label } from '../shadcn/label';\nimport { Textarea } from '../shadcn/textarea';\nimport { cn } from '../../core/utils';\nimport { AntenatalPanels } from './AntenatalPanels';\n\ntype BasedOn = 'lmp' | 'usg';\ntype OutcomeType = '' | 'delivery' | 'cesarean' | 'abortion' | 'miscarriage' | 'stillbirth';\ntype PregnancyStatus = 'not_pregnant' | 'pregnant' | 'unknown';\ntype Dysmenorrhea = 0 | 1 | 2 | 3;\n\ntype GestationalAge = {\n weeks: number;\n days: number;\n totalDays: number;\n basedOn: BasedOn;\n};\n\ntype Outcome = {\n type: OutcomeType;\n date: string; // yyyy-mm-dd (or '' while incomplete)\n notes: string;\n is_final: boolean;\n};\n\ntype StoredMenstrual = {\n menarche_age: number;\n cycle_length: number;\n flow_days: number;\n cycle_regular: boolean;\n dysmenorrhea: Dysmenorrhea;\n};\n\ntype StoredObgHistory = {\n gpal: { G: number; P: number; A: number; L: number };\n lmp: string | null; // yyyy-mm-dd\n /** @deprecated Use `pregnancy_status`. Kept for backward compatibility (true === 'pregnant'). */\n is_pregnant: boolean;\n pregnancy_status: PregnancyStatus;\n edd: { lmp: string | null; usg: string | null; primary: BasedOn } | null;\n gestationalAge: GestationalAge | null;\n trimester: 1 | 2 | 3 | null;\n complications: string | null;\n outcome: Outcome | null;\n menstrual: StoredMenstrual;\n};\n\ntype Draft = {\n gpal: { G: number; P: number; A: number; L: number };\n lmp: string; // '' or yyyy-mm-dd\n pregnancy_status: PregnancyStatus;\n eddUSG: string; // '' or yyyy-mm-dd\n primaryEDD: BasedOn;\n complications: string;\n outcome: Outcome | null;\n menstrual: StoredMenstrual;\n};\n\nconst DEFAULT_MENSTRUAL: StoredMenstrual = {\n menarche_age: 13,\n cycle_length: 28,\n flow_days: 4,\n cycle_regular: true,\n dysmenorrhea: 0,\n};\n\nconst DEFAULT_DRAFT: Draft = {\n gpal: { G: 0, P: 0, A: 0, L: 0 },\n lmp: '',\n pregnancy_status: 'not_pregnant',\n eddUSG: '',\n primaryEDD: 'lmp',\n complications: '',\n outcome: null,\n menstrual: { ...DEFAULT_MENSTRUAL },\n};\n\nfunction pad2(n: number): string {\n return String(n).padStart(2, '0');\n}\n\nfunction formatDdMmYyyy(iso: string): string {\n // expects yyyy-mm-dd\n const [y, m, d] = iso.split('-');\n if (!y || !m || !d) return iso;\n return `${pad2(Number(d))}/${pad2(Number(m))}/${y}`;\n}\n\nfunction todayIso(): string {\n const d = new Date();\n const y = d.getFullYear();\n const m = pad2(d.getMonth() + 1);\n const day = pad2(d.getDate());\n return `${y}-${m}-${day}`;\n}\n\nfunction isValidIsoDate(val: string): boolean {\n if (!/^\\d{4}-\\d{2}-\\d{2}$/.test(val)) return false;\n const dt = new Date(`${val}T00:00:00.000Z`);\n return !Number.isNaN(dt.getTime());\n}\n\nfunction safeJsonParse(val: string): any | null {\n try {\n return JSON.parse(val);\n } catch {\n return null;\n }\n}\n\nfunction clampInt(val: number, min: number, max: number): number {\n if (!Number.isFinite(val)) return min;\n return Math.max(min, Math.min(max, Math.trunc(val)));\n}\n\nfunction clampDysmenorrhea(val: unknown): Dysmenorrhea {\n const n = Math.round(Number(val));\n if (!Number.isFinite(n)) return 0;\n if (n <= 0) return 0;\n if (n >= 3) return 3;\n return n as 1 | 2;\n}\n\nfunction isPregnancyStatus(x: unknown): x is PregnancyStatus {\n return x === 'not_pregnant' || x === 'pregnant' || x === 'unknown';\n}\n\nfunction normalizeMenstrual(raw: unknown): StoredMenstrual {\n if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {\n return { ...DEFAULT_MENSTRUAL };\n }\n const o = raw as Record<string, unknown>;\n const num = (v: unknown, fb: number) => {\n const n = Number(v);\n return Number.isFinite(n) ? n : fb;\n };\n return {\n menarche_age: num(o.menarche_age, DEFAULT_MENSTRUAL.menarche_age),\n cycle_length: num(o.cycle_length, DEFAULT_MENSTRUAL.cycle_length),\n flow_days: num(o.flow_days, DEFAULT_MENSTRUAL.flow_days),\n cycle_regular:\n typeof o.cycle_regular === 'boolean' ? o.cycle_regular : DEFAULT_MENSTRUAL.cycle_regular,\n dysmenorrhea: clampDysmenorrhea(o.dysmenorrhea),\n };\n}\n\nfunction parseLegacyString(input: string): Partial<Draft> {\n const result: Partial<Draft> = {};\n const gpalMatch = input.match(/G(\\d+)\\s*P(\\d+)\\s*A(\\d+)\\s*L(\\d+)/i);\n if (gpalMatch) {\n const [, g, p, a, l] = gpalMatch;\n result.gpal = {\n G: clampInt(Number(g), 0, 20),\n P: clampInt(Number(p), 0, 20),\n A: clampInt(Number(a), 0, 20),\n L: clampInt(Number(l), 0, 20),\n };\n }\n\n const lmpMatch = input.match(/LMP:\\s*([^\\n]+)/i);\n if (lmpMatch?.[1]) result.lmp = lmpMatch[1].trim();\n\n const eddUsgMatch = input.match(/EDD\\s*\\(USG\\):\\s*([^\\n]+)/i);\n if (eddUsgMatch?.[1]) result.eddUSG = eddUsgMatch[1].trim();\n\n const primaryMatch = input.match(/Primary\\s*EDD:\\s*(lmp|usg)/i);\n if (primaryMatch?.[1]) result.primaryEDD = primaryMatch[1].toLowerCase() as BasedOn;\n\n const compMatch = input.match(/Complications:\\s*([^\\n]+)/i);\n if (compMatch?.[1]) result.complications = compMatch[1].trim();\n\n return result;\n}\n\nfunction normalizeToDraft(value: unknown): { draft: Draft; isNewEntry: boolean } {\n if (!value) return { draft: { ...DEFAULT_DRAFT }, isNewEntry: true };\n\n let parsed: any = value;\n if (typeof value === 'string') {\n const json = safeJsonParse(value);\n parsed = json ?? value;\n }\n\n const resolvePregnancyStatus = (o: any): PregnancyStatus => {\n if (isPregnancyStatus(o?.pregnancy_status)) return o.pregnancy_status;\n if (typeof o?.is_pregnant === 'boolean') return o.is_pregnant ? 'pregnant' : 'not_pregnant';\n return 'not_pregnant';\n };\n\n // New JSON format: has gpal object\n if (parsed && typeof parsed === 'object' && !Array.isArray(parsed) && 'gpal' in parsed && parsed.gpal && typeof parsed.gpal === 'object') {\n const gpal = parsed.gpal ?? {};\n const edd = parsed.edd ?? null;\n const eddUSG = (edd && typeof edd === 'object' ? edd.usg : undefined) ?? parsed.eddUSG ?? '';\n const primaryEDD = (edd && typeof edd === 'object' ? edd.primary : undefined) ?? parsed.primaryEDD ?? 'lmp';\n const lmp = parsed.lmp ?? '';\n const complications = parsed.complications ?? '';\n const outcome = parsed.outcome ?? null;\n return {\n isNewEntry: false,\n draft: {\n gpal: {\n G: clampInt(Number(gpal.G ?? 0), 0, 20),\n P: clampInt(Number(gpal.P ?? 0), 0, 20),\n A: clampInt(Number(gpal.A ?? 0), 0, 20),\n L: clampInt(Number(gpal.L ?? 0), 0, 20),\n },\n lmp: typeof lmp === 'string' ? lmp : '',\n pregnancy_status: resolvePregnancyStatus(parsed),\n eddUSG: typeof eddUSG === 'string' ? eddUSG : '',\n primaryEDD: primaryEDD === 'usg' ? 'usg' : 'lmp',\n complications: typeof complications === 'string' ? complications : '',\n outcome: outcome && typeof outcome === 'object'\n ? {\n type: (outcome.type ?? '') as OutcomeType,\n date: typeof outcome.date === 'string' ? outcome.date : '',\n notes: typeof outcome.notes === 'string' ? outcome.notes : '',\n is_final: !!outcome.is_final,\n }\n : null,\n menstrual: normalizeMenstrual(parsed.menstrual),\n },\n };\n }\n\n // Legacy flat JSON object\n if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {\n const gpalFromFlat = {\n G: clampInt(Number((parsed as any).G ?? (parsed as any).g ?? 0), 0, 20),\n P: clampInt(Number((parsed as any).P ?? (parsed as any).p ?? 0), 0, 20),\n A: clampInt(Number((parsed as any).A ?? (parsed as any).a ?? 0), 0, 20),\n L: clampInt(Number((parsed as any).L ?? (parsed as any).l ?? 0), 0, 20),\n };\n return {\n isNewEntry: false,\n draft: {\n ...DEFAULT_DRAFT,\n gpal: gpalFromFlat,\n lmp: typeof (parsed as any).lmp === 'string' ? (parsed as any).lmp : '',\n eddUSG: typeof (parsed as any).eddUSG === 'string' ? (parsed as any).eddUSG : '',\n primaryEDD: (parsed as any).primaryEDD === 'usg' ? 'usg' : 'lmp',\n complications: typeof (parsed as any).complications === 'string' ? (parsed as any).complications : '',\n outcome: (parsed as any).outcome && typeof (parsed as any).outcome === 'object'\n ? {\n type: ((parsed as any).outcome.type ?? '') as OutcomeType,\n date: typeof (parsed as any).outcome.date === 'string' ? (parsed as any).outcome.date : '',\n notes: typeof (parsed as any).outcome.notes === 'string' ? (parsed as any).outcome.notes : '',\n is_final: !!(parsed as any).outcome.is_final,\n }\n : null,\n pregnancy_status: resolvePregnancyStatus(parsed),\n menstrual: normalizeMenstrual((parsed as any).menstrual),\n },\n };\n }\n\n // Legacy human-readable string\n if (typeof parsed === 'string') {\n const legacy = parseLegacyString(parsed);\n return { isNewEntry: false, draft: { ...DEFAULT_DRAFT, ...legacy } as Draft };\n }\n\n return { draft: { ...DEFAULT_DRAFT }, isNewEntry: true };\n}\n\nfunction computeEddFromLmp(lmpIso: string): string | null {\n if (!isValidIsoDate(lmpIso)) return null;\n const base = new Date(`${lmpIso}T00:00:00.000Z`);\n base.setUTCDate(base.getUTCDate() + 280);\n const y = base.getUTCFullYear();\n const m = pad2(base.getUTCMonth() + 1);\n const d = pad2(base.getUTCDate());\n return `${y}-${m}-${d}`;\n}\n\nfunction diffDaysUtc(fromIso: string, toIso: string): number | null {\n if (!isValidIsoDate(fromIso) || !isValidIsoDate(toIso)) return null;\n const a = new Date(`${fromIso}T00:00:00.000Z`).getTime();\n const b = new Date(`${toIso}T00:00:00.000Z`).getTime();\n return Math.floor((b - a) / (1000 * 60 * 60 * 24));\n}\n\nfunction computeGestationalAgeFromLmp(lmpIso: string, today: string): GestationalAge | null {\n const days = diffDaysUtc(lmpIso, today);\n if (days == null || days < 0) return null;\n const weeks = Math.floor(days / 7);\n const rem = days % 7;\n return { weeks, days: rem, totalDays: days, basedOn: 'lmp' };\n}\n\nfunction computeGestationalAgeFromUsgEdd(eddUsgIso: string, today: string): GestationalAge | null {\n const daysToEdd = diffDaysUtc(today, eddUsgIso);\n if (daysToEdd == null) return null;\n const daysElapsed = 280 - daysToEdd;\n if (daysElapsed < 0) return null;\n const weeks = Math.floor(daysElapsed / 7);\n const rem = daysElapsed % 7;\n return { weeks, days: rem, totalDays: daysElapsed, basedOn: 'usg' };\n}\n\nfunction computeTrimester(ga: GestationalAge | null): 1 | 2 | 3 | null {\n if (!ga) return null;\n if (ga.weeks < 13) return 1;\n if (ga.weeks < 27) return 2;\n if (ga.weeks < 42) return 3;\n return null;\n}\n\nfunction buildStored(draft: Draft, today: string): StoredObgHistory {\n const lmpIso = isValidIsoDate(draft.lmp) ? draft.lmp : null;\n const eddUsgIso = isValidIsoDate(draft.eddUSG) ? draft.eddUSG : null;\n\n if (draft.pregnancy_status !== 'pregnant') {\n return {\n gpal: draft.gpal,\n lmp: lmpIso,\n is_pregnant: false,\n pregnancy_status: draft.pregnancy_status,\n edd: null,\n gestationalAge: null,\n trimester: null,\n complications: draft.complications.trim() ? draft.complications : null,\n outcome: draft.outcome,\n menstrual: { ...draft.menstrual },\n };\n }\n\n const eddFromLmp = lmpIso ? computeEddFromLmp(lmpIso) : null;\n const gaFromLmp = lmpIso ? computeGestationalAgeFromLmp(lmpIso, today) : null;\n const gaFromUsg = eddUsgIso ? computeGestationalAgeFromUsgEdd(eddUsgIso, today) : null;\n\n const primary = draft.primaryEDD;\n const gaPrimary = primary === 'usg' && gaFromUsg ? gaFromUsg : gaFromLmp ? gaFromLmp : null;\n\n return {\n gpal: draft.gpal,\n lmp: lmpIso,\n is_pregnant: true,\n pregnancy_status: 'pregnant',\n edd: { lmp: eddFromLmp, usg: eddUsgIso, primary },\n gestationalAge: gaPrimary,\n trimester: computeTrimester(gaPrimary),\n complications: draft.complications.trim() ? draft.complications : null,\n outcome: draft.outcome,\n menstrual: { ...draft.menstrual },\n };\n}\n\nfunction stripGpalSuffix(label: string): string {\n return label.replace(/\\s*\\(G-P-A-L\\)\\s*$/i, '').trim();\n}\n\nfunction useDebouncedCommit(commit: (next: Draft) => void, delayMs: number) {\n const timeoutRef = useRef<number | null>(null);\n const latestCommit = useRef(commit);\n latestCommit.current = commit;\n\n useEffect(() => {\n return () => {\n if (timeoutRef.current != null) window.clearTimeout(timeoutRef.current);\n };\n }, []);\n\n return (next: Draft) => {\n if (timeoutRef.current != null) window.clearTimeout(timeoutRef.current);\n timeoutRef.current = window.setTimeout(() => latestCommit.current(next), delayMs);\n };\n}\n\nexport const ObstetricHistoryWidget: React.FC<{ fieldId: string }> = ({ fieldId }) => {\n const { fieldDef, value, setValue, disabled } = useField(fieldId);\n\n const [{ draft, isNewEntry }, setDraftState] = useState(() => normalizeToDraft(value));\n const [lmpError, setLmpError] = useState<string | null>(null);\n const [primaryEddError, setPrimaryEddError] = useState<string | null>(null);\n const [activeGpalKey, setActiveGpalKey] = useState<keyof Draft['gpal'] | null>(null);\n\n const refs = {\n G: useRef<HTMLInputElement | null>(null),\n P: useRef<HTMLInputElement | null>(null),\n A: useRef<HTMLInputElement | null>(null),\n L: useRef<HTMLInputElement | null>(null),\n } as const;\n\n const today = useMemo(() => todayIso(), []);\n\n // Keep local draft in sync with external updates (AI, reset, initial load).\n useEffect(() => {\n const next = normalizeToDraft(value);\n const currStr = JSON.stringify(buildStored(draft, today));\n const nextStr = JSON.stringify(buildStored(next.draft, today));\n if (currStr !== nextStr) setDraftState(next);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n const commitImmediate = (nextDraft: Draft) => {\n const stored = buildStored(nextDraft, today);\n setValue(JSON.stringify(stored));\n };\n const commitDebounced = useDebouncedCommit(commitImmediate, 500);\n\n const storedComputed = useMemo(() => buildStored(draft, today), [draft, today]);\n\n const isPregnant = draft.pregnancy_status === 'pregnant';\n const rightPanelEnabled = isPregnant && (!!storedComputed.lmp || !!(storedComputed.edd?.usg));\n const headerLabel = fieldDef?.label ? stripGpalSuffix(fieldDef.label) : 'Obstetric History';\n\n const setDraft = (updater: (prev: Draft) => Draft, persist: 'debounce' | 'immediate') => {\n setDraftState((prev) => {\n const nextDraft = updater(prev.draft);\n const nextState = { ...prev, draft: nextDraft };\n if (persist === 'immediate') commitImmediate(nextDraft);\n else commitDebounced(nextDraft);\n return nextState;\n });\n };\n\n const sanitizeGpalInput = (raw: string): number => {\n const digits = raw.replace(/[^\\d]/g, '').slice(0, 2);\n if (!digits) return 0;\n return clampInt(Number(digits), 0, 20);\n };\n\n const handleGpalChange = (key: keyof Draft['gpal'], raw: string) => {\n const prevWasEmpty = draft.gpal[key] === 0 && (activeGpalKey === key);\n const val = sanitizeGpalInput(raw);\n setDraft((prev) => ({ ...prev, gpal: { ...prev.gpal, [key]: val } }), 'debounce');\n\n const digitsOnly = raw.replace(/[^\\d]/g, '');\n const shouldAutoTab = digitsOnly.length === 1 && (prevWasEmpty || String(draft.gpal[key]).length >= 1);\n if (shouldAutoTab) {\n const order: (keyof Draft['gpal'])[] = ['G', 'P', 'A', 'L'];\n const idx = order.indexOf(key);\n const nextKey = order[idx + 1];\n if (nextKey) refs[nextKey].current?.focus();\n }\n };\n\n const handleLmpChange = (nextIso: string) => {\n setPrimaryEddError(null);\n if (nextIso && nextIso > today) {\n setLmpError('LMP cannot be in the future');\n return;\n }\n setLmpError(null);\n setDraft((prev) => ({ ...prev, lmp: nextIso }), 'debounce');\n };\n\n const handlePregStatus = (status: PregnancyStatus) => {\n setLmpError(null);\n setPrimaryEddError(null);\n setDraft((prev) => ({ ...prev, pregnancy_status: status }), 'immediate');\n };\n\n const setMenstrualPatch = (patch: Partial<StoredMenstrual>) => {\n setDraft((prev) => ({ ...prev, menstrual: { ...prev.menstrual, ...patch } }), 'debounce');\n };\n\n const handleEddUsgChange = (nextIso: string) => {\n setPrimaryEddError(null);\n setDraft((prev) => ({ ...prev, eddUSG: nextIso }), 'debounce');\n };\n\n const handlePrimaryEdd = (next: BasedOn) => {\n if (next === 'usg' && !isValidIsoDate(draft.eddUSG)) {\n setPrimaryEddError('Please enter EDD from USG first');\n return;\n }\n setPrimaryEddError(null);\n setDraft((prev) => ({ ...prev, primaryEDD: next }), 'immediate');\n };\n\n const ensureOutcome = () => {\n if (draft.outcome) return;\n setDraft(\n (prev) => ({\n ...prev,\n outcome: { type: '', date: '', notes: '', is_final: false },\n }),\n 'immediate'\n );\n };\n\n const clearOutcome = () => {\n setDraft((prev) => ({ ...prev, outcome: null }), 'immediate');\n };\n\n const updateOutcomeImmediate = (updater: (o: Outcome) => Outcome) => {\n setDraft(\n (prev) => {\n const o = prev.outcome ?? { type: '', date: '', notes: '', is_final: false };\n return { ...prev, outcome: updater(o) };\n },\n 'immediate'\n );\n };\n\n const updateOutcomeNotesDebounced = (notes: string) => {\n setDraft(\n (prev) => {\n const o = prev.outcome ?? { type: '', date: '', notes: '', is_final: false };\n return { ...prev, outcome: { ...o, notes } };\n },\n 'debounce'\n );\n };\n\n return (\n <Card className={cn('w-full', disabled && 'opacity-70 pointer-events-none')}>\n <CardHeader className=\"pb-3\">\n <CardTitle className=\"text-base font-semibold\">{headerLabel}</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n {isNewEntry && (\n <div className=\"rounded-md border border-blue-200 bg-blue-50 px-3 py-2 text-xs text-blue-900\">\n No previous maternity episode found. Please fill obstetric details to start tracking.\n </div>\n )}\n\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4 items-start\">\n {/* Left panel */}\n <div className=\"space-y-4\">\n <div className=\"rounded-lg border bg-white p-4\">\n <div className=\"text-xs font-medium text-muted-foreground mb-2\">G-P-A-L</div>\n <div className=\"grid grid-cols-4 gap-3\">\n {(['G', 'P', 'A', 'L'] as const).map((k) => (\n <div key={k} className=\"space-y-1\">\n <Label htmlFor={`${fieldId}-gpal-${k}`} className=\"text-[11px] text-muted-foreground\">\n {k}\n </Label>\n <Input\n ref={refs[k]}\n id={`${fieldId}-gpal-${k}`}\n inputMode=\"numeric\"\n pattern=\"\\d*\"\n maxLength={2}\n value={String(draft.gpal[k] ?? 0)}\n onFocus={() => {\n setActiveGpalKey(k);\n const el = refs[k].current;\n if (el) el.select();\n }}\n onChange={(e) => handleGpalChange(k, e.target.value)}\n onKeyDown={(e) => {\n const allowed = ['Backspace', 'Delete', 'ArrowLeft', 'ArrowRight', 'Tab', 'Home', 'End'];\n if (allowed.includes(e.key)) return;\n if (/^\\d$/.test(e.key)) return;\n e.preventDefault();\n }}\n className=\"text-center text-base\"\n />\n </div>\n ))}\n </div>\n </div>\n\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-3\">\n <div className=\"space-y-2 rounded-lg border bg-white p-4\">\n <Label htmlFor={`${fieldId}-lmp`} className={cn('text-sm', lmpError && 'text-red-600')}>\n Last Menstrual Period (LMP)\n </Label>\n <Input\n id={`${fieldId}-lmp`}\n type=\"date\"\n max={today}\n value={draft.lmp}\n onChange={(e) => handleLmpChange(e.target.value)}\n className={cn(lmpError && 'border-red-500')}\n />\n {lmpError && <p className=\"text-xs text-red-600\">{lmpError}</p>}\n </div>\n\n <div className=\"space-y-2 rounded-lg border bg-white p-4 min-w-0\">\n <div className=\"text-sm font-medium\">Pregnancy Status</div>\n <div className=\"flex min-w-0 flex-wrap gap-2\">\n <button\n type=\"button\"\n onClick={() => handlePregStatus('not_pregnant')}\n className={cn(\n 'shrink-0 rounded-full border px-3 py-1.5 text-[11px] font-medium transition-colors',\n draft.pregnancy_status === 'not_pregnant'\n ? 'border-green-600 bg-green-600 text-white'\n : 'border-slate-300 bg-white text-slate-700 hover:bg-slate-50',\n )}\n >\n Not Pregnant\n </button>\n <button\n type=\"button\"\n onClick={() => handlePregStatus('pregnant')}\n className={cn(\n 'shrink-0 rounded-full border px-3 py-1.5 text-[11px] font-medium transition-colors',\n draft.pregnancy_status === 'pregnant'\n ? 'border-green-600 bg-green-600 text-white'\n : 'border-slate-300 bg-white text-slate-700 hover:bg-slate-50',\n )}\n >\n Pregnant\n </button>\n <button\n type=\"button\"\n onClick={() => handlePregStatus('unknown')}\n className={cn(\n 'shrink-0 rounded-full border px-3 py-1.5 text-[11px] font-medium transition-colors',\n draft.pregnancy_status === 'unknown'\n ? 'border-amber-500 bg-amber-500 text-white'\n : 'border-slate-300 bg-white text-slate-700 hover:bg-slate-50',\n )}\n >\n Unknown\n </button>\n </div>\n </div>\n </div>\n\n <div className=\"rounded-lg border bg-white p-4\">\n <div className=\"text-xs font-medium text-muted-foreground mb-3\">Menstrual</div>\n <div className=\"grid grid-cols-2 gap-3 sm:grid-cols-4\">\n <label className=\"space-y-1\">\n <Label htmlFor={`${fieldId}-menarche`} className=\"text-[11px] text-muted-foreground\">\n Menarche (age)\n </Label>\n <Input\n id={`${fieldId}-menarche`}\n type=\"number\"\n min={5}\n max={25}\n value={draft.menstrual.menarche_age}\n onChange={(e) => setMenstrualPatch({ menarche_age: Number(e.target.value) || 0 })}\n />\n </label>\n <label className=\"space-y-1\">\n <Label htmlFor={`${fieldId}-cycle-length`} className=\"text-[11px] text-muted-foreground\">\n Cycle (days)\n </Label>\n <Input\n id={`${fieldId}-cycle-length`}\n type=\"number\"\n min={0}\n max={120}\n value={draft.menstrual.cycle_length}\n onChange={(e) => setMenstrualPatch({ cycle_length: Number(e.target.value) || 0 })}\n />\n </label>\n <label className=\"space-y-1\">\n <Label htmlFor={`${fieldId}-flow-days`} className=\"text-[11px] text-muted-foreground\">\n Flow (days)\n </Label>\n <Input\n id={`${fieldId}-flow-days`}\n type=\"number\"\n min={0}\n max={30}\n value={draft.menstrual.flow_days}\n onChange={(e) => setMenstrualPatch({ flow_days: Number(e.target.value) || 0 })}\n />\n </label>\n <label className=\"space-y-1\">\n <Label className=\"text-[11px] text-muted-foreground\">Dysmenorrhea</Label>\n <select\n className=\"h-9 w-full rounded-md border border-input bg-background px-2 text-sm\"\n value={String(draft.menstrual.dysmenorrhea)}\n onChange={(e) =>\n setMenstrualPatch({\n dysmenorrhea: clampDysmenorrhea(Number(e.target.value)),\n })\n }\n >\n <option value=\"0\">0 — none</option>\n <option value=\"1\">1 — mild</option>\n <option value=\"2\">2 — moderate</option>\n <option value=\"3\">3 — severe</option>\n </select>\n </label>\n </div>\n <label className=\"mt-3 flex items-center gap-2 text-sm\">\n <input\n type=\"checkbox\"\n checked={draft.menstrual.cycle_regular}\n onChange={(e) => setMenstrualPatch({ cycle_regular: e.target.checked })}\n />\n Regular cycle\n </label>\n </div>\n\n <div className=\"space-y-2 rounded-lg border bg-white p-4\">\n <Label htmlFor={`${fieldId}-complications`} className=\"text-sm\">\n Previous Pregnancy Complications\n </Label>\n <Textarea\n id={`${fieldId}-complications`}\n placeholder=\"e.g. Pre-eclampsia, Gestational diabetes, C-section, etc.\"\n value={draft.complications}\n onChange={(e) => setDraft((prev) => ({ ...prev, complications: e.target.value }), 'debounce')}\n className=\"min-h-[140px]\"\n />\n </div>\n </div>\n\n {/* Right panel */}\n <div className=\"rounded-lg border bg-white p-4 min-h-[260px]\">\n {!isPregnant && (\n <div className=\"h-full flex items-center justify-center text-center text-sm text-muted-foreground px-6 py-10\">\n {draft.pregnancy_status === 'unknown'\n ? 'Pregnancy status unknown — confirm with UPT/USG to enable gestational age and EDD.'\n : 'Only for \"Pregnant Women\" and enter LMP to calculate gestational age and EDD'}\n </div>\n )}\n\n {isPregnant && !rightPanelEnabled && (\n <div className=\"h-full flex items-center justify-center text-center text-sm text-muted-foreground px-6 py-10\">\n Enter LMP and/or EDD (USG) to enable gestational age and EDD calculations.\n </div>\n )}\n\n {isPregnant && rightPanelEnabled && (\n <div className=\"space-y-4\">\n <div className=\"rounded-lg border p-4\">\n <div className=\"flex items-center justify-between\">\n <div className=\"text-sm font-semibold text-blue-700\">Expected Delivery Date (EDD)</div>\n {storedComputed.gestationalAge?.basedOn && (\n <span className=\"rounded-full bg-blue-100 px-2 py-1 text-[11px] text-blue-700\">\n Based on {storedComputed.gestationalAge.basedOn.toUpperCase()}\n </span>\n )}\n </div>\n <div className=\"mt-3\">\n <div className=\"text-xs text-muted-foreground\">Gestational Age:</div>\n <div className=\"text-lg font-semibold\">\n {storedComputed.gestationalAge\n ? `${storedComputed.gestationalAge.weeks} weeks ${storedComputed.gestationalAge.days} days`\n : '—'}\n </div>\n <div className=\"text-xs text-muted-foreground mt-1\">\n {storedComputed.trimester ? `Trimester ${storedComputed.trimester}` : 'Trimester —'}\n </div>\n </div>\n </div>\n\n <div className=\"space-y-2\">\n <div className=\"text-xs text-muted-foreground\">EDD (from LMP):</div>\n <div className=\"rounded-md border bg-muted/20 px-3 py-2 text-sm font-semibold\">\n {storedComputed.edd?.lmp ? formatDdMmYyyy(storedComputed.edd.lmp) : '—'}\n </div>\n </div>\n\n <div className=\"space-y-2\">\n <Label htmlFor={`${fieldId}-edd-usg`} className=\"text-sm\">\n EDD (from USG):\n </Label>\n <Input\n id={`${fieldId}-edd-usg`}\n type=\"date\"\n value={draft.eddUSG}\n onChange={(e) => handleEddUsgChange(e.target.value)}\n />\n </div>\n\n <div className=\"space-y-2\">\n <div className=\"text-sm font-medium\">Primary EDD:</div>\n <div className=\"flex gap-2\">\n <button\n type=\"button\"\n onClick={() => handlePrimaryEdd('lmp')}\n className={cn(\n 'flex-1 rounded-md border px-3 py-2 text-sm',\n draft.primaryEDD === 'lmp' ? 'bg-blue-600 text-white border-blue-600' : 'bg-white'\n )}\n >\n LMP\n </button>\n <button\n type=\"button\"\n onClick={() => handlePrimaryEdd('usg')}\n className={cn(\n 'flex-1 rounded-md border px-3 py-2 text-sm',\n draft.primaryEDD === 'usg' ? 'bg-blue-600 text-white border-blue-600' : 'bg-white'\n )}\n >\n USG\n </button>\n </div>\n {primaryEddError && <p className=\"text-xs text-red-600\">{primaryEddError}</p>}\n </div>\n </div>\n )}\n </div>\n </div>\n\n {/* Antenatal panels (full width of the card) */}\n <AntenatalPanels />\n\n {/* Outcome section */}\n <div className=\"rounded-lg border bg-yellow-50/60 p-4\">\n <div className=\"flex items-center justify-between\">\n <div className=\"text-sm font-semibold\">\n Pregnancy Outcome (Optional - To Close Episode)\n </div>\n {draft.outcome && (\n <button type=\"button\" className=\"text-sm text-red-600 hover:underline\" onClick={clearOutcome}>\n Clear\n </button>\n )}\n </div>\n\n {!draft.outcome && (\n <button\n type=\"button\"\n onClick={ensureOutcome}\n className=\"mt-3 w-full rounded-md border border-yellow-300 bg-yellow-100 px-3 py-2 text-sm font-medium\"\n >\n + Add Pregnancy Outcome\n </button>\n )}\n\n {draft.outcome && (\n <div className=\"mt-4 space-y-3\">\n <div className=\"space-y-2\">\n <Label className=\"text-sm\">\n Outcome Type <span className=\"text-red-500\">*</span>\n </Label>\n <select\n className=\"w-full rounded-md border px-3 py-2 text-sm bg-white\"\n value={draft.outcome.type}\n onChange={(e) => updateOutcomeImmediate((o) => ({ ...o, type: e.target.value as OutcomeType }))}\n >\n <option value=\"\">Select outcome...</option>\n <option value=\"delivery\">Normal Delivery</option>\n <option value=\"cesarean\">Cesarean Section</option>\n <option value=\"abortion\">Abortion</option>\n <option value=\"miscarriage\">Miscarriage</option>\n <option value=\"stillbirth\">Stillbirth</option>\n </select>\n </div>\n\n <div className=\"space-y-2\">\n <Label htmlFor={`${fieldId}-outcome-date`} className=\"text-sm\">\n Date <span className=\"text-red-500\">*</span>\n </Label>\n <Input\n id={`${fieldId}-outcome-date`}\n type=\"date\"\n max={today}\n value={draft.outcome.date}\n onChange={(e) => updateOutcomeImmediate((o) => ({ ...o, date: e.target.value }))}\n />\n {draft.outcome.date && (\n <p className=\"text-xs text-muted-foreground\">\n Selected: {formatDdMmYyyy(draft.outcome.date)}\n </p>\n )}\n </div>\n\n <div className=\"space-y-2\">\n <Label htmlFor={`${fieldId}-outcome-notes`} className=\"text-sm\">\n Notes\n </Label>\n <Textarea\n id={`${fieldId}-outcome-notes`}\n placeholder=\"e.g. Normal vaginal delivery, healthy baby boy, 3.2kg\"\n value={draft.outcome.notes}\n onChange={(e) => updateOutcomeNotesDebounced(e.target.value)}\n className=\"min-h-[90px]\"\n />\n </div>\n\n <div className=\"rounded-md border bg-white p-3\">\n <label className=\"flex items-center gap-2 text-sm\">\n <input\n type=\"checkbox\"\n checked={!!draft.outcome.is_final}\n onChange={(e) => updateOutcomeImmediate((o) => ({ ...o, is_final: e.target.checked }))}\n />\n Close this pregnancy episode\n </label>\n {draft.outcome.is_final && (\n <div className=\"mt-3 rounded-md border border-red-300 bg-red-50 px-3 py-2 text-xs text-red-800\">\n Checking this will mark the pregnancy as completed and is intended to close the maternity episode.\n </div>\n )}\n </div>\n </div>\n )}\n </div>\n </CardContent>\n </Card>\n );\n};\n\n"]}