@eka-care/medical-records-ui 1.0.37 → 1.0.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{OriginalRecordPanel-3TXU4RSU.mjs → OriginalRecordPanel-CVRKPYKT.mjs} +46 -44
- package/dist/OriginalRecordPanel-CVRKPYKT.mjs.map +1 -0
- package/dist/{OriginalRecordPanel-YQ2LGVFU.js → OriginalRecordPanel-NSQMZFMV.js} +64 -62
- package/dist/OriginalRecordPanel-NSQMZFMV.js.map +1 -0
- package/dist/SmartUploadModal-ALIJ3RLP.mjs +9 -0
- package/dist/SmartUploadModal-WNG252SR.js +9 -0
- package/dist/{SmartUploadModal-DOEIOLQU.js.map → SmartUploadModal-WNG252SR.js.map} +1 -1
- package/dist/VitalHistoryPanel-BWNSQYGJ.mjs +10 -0
- package/dist/VitalHistoryPanel-COG2QEMQ.js +10 -0
- package/dist/{VitalHistoryPanel-WKBIR2RD.js.map → VitalHistoryPanel-COG2QEMQ.js.map} +1 -1
- package/dist/{chunk-5TQ6OPAQ.mjs → chunk-4RV67VS2.mjs} +47 -73
- package/dist/chunk-4RV67VS2.mjs.map +1 -0
- package/dist/{chunk-LUH7D3K7.mjs → chunk-6DJNAJYX.mjs} +124 -8
- package/dist/chunk-6DJNAJYX.mjs.map +1 -0
- package/dist/{chunk-57BG7LVP.js → chunk-6HMB6X7X.js} +3 -2
- package/dist/chunk-6HMB6X7X.js.map +1 -0
- package/dist/{chunk-4MEMDAB5.mjs → chunk-6Q22OJIY.mjs} +3 -2
- package/dist/chunk-6Q22OJIY.mjs.map +1 -0
- package/dist/chunk-A6OYP7CY.mjs +40 -0
- package/dist/chunk-A6OYP7CY.mjs.map +1 -0
- package/dist/{chunk-3P36QOHC.mjs → chunk-CUB3CD2F.mjs} +2 -2
- package/dist/{chunk-ESURVA6B.js → chunk-KRJUK644.js} +21 -21
- package/dist/{chunk-ESURVA6B.js.map → chunk-KRJUK644.js.map} +1 -1
- package/dist/chunk-LV7EI4MZ.js +40 -0
- package/dist/chunk-LV7EI4MZ.js.map +1 -0
- package/dist/{chunk-VBMKRSTX.js → chunk-QSHHTVRB.js} +57 -83
- package/dist/chunk-QSHHTVRB.js.map +1 -0
- package/dist/{chunk-YT6OD4YU.js → chunk-VCLXS52U.js} +129 -13
- package/dist/chunk-VCLXS52U.js.map +1 -0
- package/dist/index.css +91 -41
- package/dist/index.css.map +1 -1
- package/dist/index.js +155 -148
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +77 -70
- package/dist/index.mjs.map +1 -1
- package/dist/styles.css +91 -41
- package/dist/styles.css.map +1 -1
- package/dist/widgets-FMDKF5F3.js +43 -0
- package/dist/{widgets-DYR6LERQ.js.map → widgets-FMDKF5F3.js.map} +1 -1
- package/dist/{widgets-KNUDQAKD.mjs → widgets-W4GSPSJ5.mjs} +2 -2
- package/package.json +1 -1
- package/dist/OriginalRecordPanel-3TXU4RSU.mjs.map +0 -1
- package/dist/OriginalRecordPanel-YQ2LGVFU.js.map +0 -1
- package/dist/SmartUploadModal-DOEIOLQU.js +0 -9
- package/dist/SmartUploadModal-SMDIOE3L.mjs +0 -9
- package/dist/VitalHistoryPanel-WI44AXJU.mjs +0 -10
- package/dist/VitalHistoryPanel-WKBIR2RD.js +0 -10
- package/dist/chunk-4MEMDAB5.mjs.map +0 -1
- package/dist/chunk-57BG7LVP.js.map +0 -1
- package/dist/chunk-5TQ6OPAQ.mjs.map +0 -1
- package/dist/chunk-GKREOUK2.js +0 -158
- package/dist/chunk-GKREOUK2.js.map +0 -1
- package/dist/chunk-LUH7D3K7.mjs.map +0 -1
- package/dist/chunk-MRQMRFWX.mjs +0 -158
- package/dist/chunk-MRQMRFWX.mjs.map +0 -1
- package/dist/chunk-VBMKRSTX.js.map +0 -1
- package/dist/chunk-YT6OD4YU.js.map +0 -1
- package/dist/widgets-DYR6LERQ.js +0 -43
- /package/dist/{SmartUploadModal-SMDIOE3L.mjs.map → SmartUploadModal-ALIJ3RLP.mjs.map} +0 -0
- /package/dist/{VitalHistoryPanel-WI44AXJU.mjs.map → VitalHistoryPanel-BWNSQYGJ.mjs.map} +0 -0
- /package/dist/{chunk-3P36QOHC.mjs.map → chunk-CUB3CD2F.mjs.map} +0 -0
- /package/dist/{widgets-KNUDQAKD.mjs.map → widgets-W4GSPSJ5.mjs.map} +0 -0
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
|
-
SmartSparkles_default
|
|
4
|
-
|
|
5
|
-
} from "./chunk-MRQMRFWX.mjs";
|
|
3
|
+
SmartSparkles_default
|
|
4
|
+
} from "./chunk-A6OYP7CY.mjs";
|
|
6
5
|
import {
|
|
7
6
|
useParameterTrend,
|
|
7
|
+
useRecordPanelTable,
|
|
8
8
|
useRecordPreview,
|
|
9
9
|
useSmartRecordsActions
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-6DJNAJYX.mjs";
|
|
11
11
|
import {
|
|
12
12
|
IconButton,
|
|
13
13
|
SearchInput_default,
|
|
14
|
+
Tooltip,
|
|
14
15
|
Typography,
|
|
15
16
|
epochToDisplay,
|
|
16
17
|
useSdk
|
|
17
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-6Q22OJIY.mjs";
|
|
18
19
|
|
|
19
20
|
// src/views/components/shared/OriginalRecordPanel.tsx
|
|
20
21
|
import { lazy, Suspense, useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
@@ -42,7 +43,7 @@ function OriginalRecordPanel({
|
|
|
42
43
|
const record = useStore(store, (s) => s.records.byId[recordId]);
|
|
43
44
|
const recordsById = useStore(store, (s) => s.records.byId);
|
|
44
45
|
const preview = useRecordPreview(recordId);
|
|
45
|
-
const { replaceOriginal, onCopyToNote, onCopyVitalsToNote, hasCopyToNote } = useSmartRecordsActions();
|
|
46
|
+
const { replaceOriginal, onCopyToNote, onCopyVitalsToNote, hasCopyToNote, onToast } = useSmartRecordsActions();
|
|
46
47
|
const { status: vitalsStatus, table } = useRecordPanelTable(
|
|
47
48
|
record?.isSmart ? recordId : null
|
|
48
49
|
);
|
|
@@ -167,24 +168,20 @@ function OriginalRecordPanel({
|
|
|
167
168
|
rect ? { x: rect.left, y: rect.bottom } : void 0
|
|
168
169
|
);
|
|
169
170
|
}
|
|
171
|
+
} catch {
|
|
172
|
+
onToast?.("Failed to copy document text", "error");
|
|
170
173
|
} finally {
|
|
171
174
|
setIsHtmlCopying(false);
|
|
172
175
|
}
|
|
173
|
-
}, [preview.files, onCopyVitalsToNote, onCopyToNote]);
|
|
176
|
+
}, [preview.files, onCopyVitalsToNote, onCopyToNote, onToast]);
|
|
174
177
|
const isSmart = record?.isSmart ?? false;
|
|
175
178
|
const hasPreview = preview.status === "loaded" && preview.files.length > 0;
|
|
176
179
|
return /* @__PURE__ */ jsxs("div", { className: "mr-sv__panel", children: [
|
|
177
180
|
/* @__PURE__ */ jsxs("div", { className: "mr-sv__panel-header", children: [
|
|
178
|
-
/* @__PURE__ */
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
label: "Back",
|
|
183
|
-
variant: "ghost",
|
|
184
|
-
size: "sm",
|
|
185
|
-
onClick: onBack
|
|
186
|
-
}
|
|
187
|
-
),
|
|
181
|
+
/* @__PURE__ */ jsxs("button", { type: "button", className: "mr-sv__back-btn", onClick: onBack, children: [
|
|
182
|
+
/* @__PURE__ */ jsx(ChevronLeft, { size: 16, "aria-hidden": true }),
|
|
183
|
+
"Back"
|
|
184
|
+
] }),
|
|
188
185
|
showNavPicker ? /* @__PURE__ */ jsxs("div", { className: "mr-orig__nav-wrap", ref: dropdownRef, children: [
|
|
189
186
|
/* @__PURE__ */ jsxs(
|
|
190
187
|
"div",
|
|
@@ -310,18 +307,6 @@ function OriginalRecordPanel({
|
|
|
310
307
|
/* @__PURE__ */ jsx(Typography, { variant: "hint", as: "span", className: "mr-sv__panel-meta-text", children: epochToDisplay(record.createdAtEpoch) })
|
|
311
308
|
] }) : null,
|
|
312
309
|
/* @__PURE__ */ jsxs("div", { className: "mr-orig__header-actions", children: [
|
|
313
|
-
isSmart && !smartPanelOpen && /* @__PURE__ */ jsxs(
|
|
314
|
-
"button",
|
|
315
|
-
{
|
|
316
|
-
type: "button",
|
|
317
|
-
className: "mr-orig__show-smart-btn",
|
|
318
|
-
onClick: () => setSmartPanelOpen(true),
|
|
319
|
-
children: [
|
|
320
|
-
/* @__PURE__ */ jsx(SmartSparkles_default, { "aria-hidden": true }),
|
|
321
|
-
"Smart Report"
|
|
322
|
-
]
|
|
323
|
-
}
|
|
324
|
-
),
|
|
325
310
|
preview.isHtml && hasCopyToNote && /* @__PURE__ */ jsxs(
|
|
326
311
|
"button",
|
|
327
312
|
{
|
|
@@ -392,17 +377,21 @@ function OriginalRecordPanel({
|
|
|
392
377
|
isHtml: preview.isHtml
|
|
393
378
|
}
|
|
394
379
|
) }) }),
|
|
395
|
-
smartPanelOpen
|
|
380
|
+
smartPanelOpen ? /* @__PURE__ */ jsxs("div", { className: "mr-orig__smart-side", children: [
|
|
396
381
|
/* @__PURE__ */ jsxs("div", { className: "mr-orig__smart-hdr", children: [
|
|
397
|
-
/* @__PURE__ */
|
|
382
|
+
/* @__PURE__ */ jsxs("span", { className: "mr-orig__smart-title-row", children: [
|
|
383
|
+
/* @__PURE__ */ jsx("span", { className: "mr-orig__smart-title", children: "Smart Report" }),
|
|
384
|
+
/* @__PURE__ */ jsx(SmartSparkles_default, { className: "mr-orig__smart-title-icon", "aria-hidden": true })
|
|
385
|
+
] }),
|
|
398
386
|
/* @__PURE__ */ jsx(
|
|
399
387
|
"button",
|
|
400
388
|
{
|
|
401
389
|
type: "button",
|
|
402
|
-
className: "mr-
|
|
390
|
+
className: "mr-sv__sidebar-collapse-btn mr-orig__smart-expanded-btn",
|
|
403
391
|
"aria-label": "Collapse smart report panel",
|
|
392
|
+
"aria-expanded": true,
|
|
404
393
|
onClick: () => setSmartPanelOpen(false),
|
|
405
|
-
children: /* @__PURE__ */ jsx(ChevronRight, { size:
|
|
394
|
+
children: /* @__PURE__ */ jsx(ChevronRight, { size: 14, "aria-hidden": true })
|
|
406
395
|
}
|
|
407
396
|
)
|
|
408
397
|
] }),
|
|
@@ -542,7 +531,7 @@ function OriginalRecordPanel({
|
|
|
542
531
|
children: srAllSelected && /* @__PURE__ */ jsx(Check, { size: 10, strokeWidth: 3 })
|
|
543
532
|
}
|
|
544
533
|
),
|
|
545
|
-
/* @__PURE__ */ jsx("span", { className: "mr-cc-table__footer-label", children: "Select all" }),
|
|
534
|
+
/* @__PURE__ */ jsx("span", { className: "mr-cc-table__footer-label", onClick: toggleSrAll, children: "Select all" }),
|
|
546
535
|
/* @__PURE__ */ jsxs("span", { className: "mr-cc-table__footer-count", children: [
|
|
547
536
|
srSelected.size,
|
|
548
537
|
" of ",
|
|
@@ -561,7 +550,17 @@ function OriginalRecordPanel({
|
|
|
561
550
|
}
|
|
562
551
|
)
|
|
563
552
|
] })
|
|
564
|
-
] })
|
|
553
|
+
] }) : /* @__PURE__ */ jsx("div", { className: "mr-orig__smart-side mr-orig__smart-side--collapsed", children: /* @__PURE__ */ jsx(Tooltip, { content: "Show smart report", children: /* @__PURE__ */ jsx(
|
|
554
|
+
"button",
|
|
555
|
+
{
|
|
556
|
+
type: "button",
|
|
557
|
+
className: "mr-sv__sidebar-collapse-btn mr-orig__smart-collapsed-btn",
|
|
558
|
+
"aria-label": "Expand smart report panel",
|
|
559
|
+
"aria-expanded": false,
|
|
560
|
+
onClick: () => setSmartPanelOpen(true),
|
|
561
|
+
children: /* @__PURE__ */ jsx("span", { className: "mr-orig__smart-collapsed-icon-wrap", children: /* @__PURE__ */ jsx(SmartSparkles_default, { className: "mr-orig__smart-collapsed-icon", "aria-hidden": true }) })
|
|
562
|
+
}
|
|
563
|
+
) }) })
|
|
565
564
|
] })
|
|
566
565
|
]
|
|
567
566
|
}
|
|
@@ -569,17 +568,20 @@ function OriginalRecordPanel({
|
|
|
569
568
|
] });
|
|
570
569
|
}
|
|
571
570
|
function VitalReadingsExpanded({ vitalName, ekaId }) {
|
|
572
|
-
const { store } = useSdk();
|
|
573
|
-
const recordsById = useStore(store, (s) => s.records.byId);
|
|
574
571
|
const { data: trendData, status } = useParameterTrend(ekaId);
|
|
575
572
|
const readings = useMemo(() => {
|
|
576
573
|
const trend = trendData;
|
|
577
574
|
if (!trend?.vitals_info?.length) return [];
|
|
578
|
-
return [...trend.vitals_info].sort((a, b) => (b.date ?? 0) - (a.date ?? 0)).slice(0, 3).map((info) =>
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
575
|
+
return [...trend.vitals_info].sort((a, b) => (b.date ?? 0) - (a.date ?? 0)).slice(0, 3).map((info) => {
|
|
576
|
+
const dr = (info.display_result ?? "").toLowerCase();
|
|
577
|
+
const isOor = dr.includes("high") || dr.includes("above") || dr.includes("abnormal_high") || dr.includes("low") || dr.includes("below") || dr.includes("abnormal_low");
|
|
578
|
+
return {
|
|
579
|
+
value: info.val != null ? String(info.val) : info.val_string ?? "\u2014",
|
|
580
|
+
date: info.display_time || "",
|
|
581
|
+
isOor
|
|
582
|
+
};
|
|
583
|
+
});
|
|
584
|
+
}, [trendData]);
|
|
583
585
|
if (status === "loading") {
|
|
584
586
|
return /* @__PURE__ */ jsx("div", { className: "mr-orig__vital-readings mr-orig__vital-readings--loading", children: /* @__PURE__ */ jsx(LoaderCircle, { size: 16, className: "mr-sv__loading-spinner", "aria-hidden": true }) });
|
|
585
587
|
}
|
|
@@ -592,7 +594,7 @@ function VitalReadingsExpanded({ vitalName, ekaId }) {
|
|
|
592
594
|
vitalName.toUpperCase()
|
|
593
595
|
] }),
|
|
594
596
|
/* @__PURE__ */ jsx("div", { className: "mr-orig__vital-readings-grid", children: readings.map((r, i) => /* @__PURE__ */ jsxs("div", { className: "mr-orig__vital-reading-item", children: [
|
|
595
|
-
/* @__PURE__ */ jsx("span", { className: "mr-orig__vital-reading-value"
|
|
597
|
+
/* @__PURE__ */ jsx("span", { className: `mr-orig__vital-reading-value${r.isOor ? " mr-orig__vital-reading-value--oor" : ""}`, children: r.value }),
|
|
596
598
|
/* @__PURE__ */ jsx("span", { className: "mr-orig__vital-reading-date", children: r.date })
|
|
597
599
|
] }, i)) })
|
|
598
600
|
] });
|
|
@@ -600,4 +602,4 @@ function VitalReadingsExpanded({ vitalName, ekaId }) {
|
|
|
600
602
|
export {
|
|
601
603
|
OriginalRecordPanel
|
|
602
604
|
};
|
|
603
|
-
//# sourceMappingURL=OriginalRecordPanel-
|
|
605
|
+
//# sourceMappingURL=OriginalRecordPanel-CVRKPYKT.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/views/components/shared/OriginalRecordPanel.tsx"],"sourcesContent":["\"use client\";\n\nimport { lazy, Suspense, useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { ChevronLeft, ChevronRight, ChevronDown, ExternalLink, Check, File, LoaderCircle } from \"lucide-react\";\nimport { useStore } from \"zustand\";\nimport { useSdk } from \"../../../connection/useSdk\";\nimport { useRecordPreview } from \"../../../connection/useRecordPreview\";\nimport { useRecordPanelTable } from \"../../hooks/care-panel/useRecordPanelTable\";\nimport { useParameterTrend } from \"../../hooks/care-panel/useParameterTrend\";\nimport { epochToDisplay } from \"../../../helpers/formatters\";\nimport type { ParameterTrendResponse } from \"@eka-care/medical-records-ts-sdk\";\nimport { useSmartRecordsActions } from \"../../context/SmartRecordsActionsContext\";\nimport { IconButton, Typography, SearchInput, Tooltip } from \"widgets\";\nimport type { RecordItem } from \"../../../helpers\";\nimport type { PanelRow } from \"../../../helpers/vitalsPanel\";\nimport SmartSparkles from \"icons/SmartSparkles\";\n\nconst DocumentViewer = lazy(() =>\n import(\"../../RecordPreview/DocumentViewer\").then((m) => ({\n default: m.DocumentViewer,\n })),\n);\n\ninterface OriginalRecordPanelProps {\n recordId: string;\n caseId?: string;\n onBack: () => void;\n}\n\ntype SrTab = \"all\" | \"oor\" | \"none\";\n\nfunction buildVitalsText(rows: PanelRow[]): string {\n return rows\n .map((r) => {\n const cell = r.cells[0];\n const ref = cell?.refRange ? ` (Ref: ${cell.refRange})` : \"\";\n return `${r.name}: ${cell?.value ?? \"—\"} ${r.unit}${ref}`;\n })\n .join(\"\\n\");\n}\n\nexport function OriginalRecordPanel({\n recordId,\n caseId,\n onBack,\n}: OriginalRecordPanelProps) {\n const { store } = useSdk();\n const record = useStore(store, (s) => s.records.byId[recordId]);\n const recordsById = useStore(store, (s) => s.records.byId);\n const preview = useRecordPreview(recordId);\n const { replaceOriginal, onCopyToNote, onCopyVitalsToNote, hasCopyToNote, onToast } =\n useSmartRecordsActions();\n\n // Smart report vitals (only fetched when record.isSmart)\n const { status: vitalsStatus, table } = useRecordPanelTable(\n record?.isSmart ? recordId : null,\n );\n const [smartPanelOpen, setSmartPanelOpen] = useState(true);\n const [srSearch, setSrSearch] = useState(\"\");\n const [srTab, setSrTab] = useState<SrTab>(\"all\");\n const [expandedVital, setExpandedVital] = useState<string | null>(null);\n const toggleExpand = useCallback((key: string) => {\n setExpandedVital((prev) => (prev === key ? null : key));\n }, []);\n const [srSelected, setSrSelected] = useState<Set<string>>(new Set());\n const srCopyBtnRef = useRef<HTMLButtonElement>(null);\n\n // Dropdown state\n const [dropdownOpen, setDropdownOpen] = useState(false);\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!dropdownOpen) return;\n const handler = (e: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(e.target as Node)) {\n setDropdownOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", handler);\n return () => document.removeEventListener(\"mousedown\", handler);\n }, [dropdownOpen]);\n\n const caseRecords = useMemo<RecordItem[]>(() => {\n if (!caseId) return [];\n return Object.values(recordsById)\n .filter((r): r is RecordItem => r != null && r.cases.includes(caseId))\n .sort((a, b) => b.createdAtEpoch - a.createdAtEpoch);\n }, [recordsById, caseId]);\n\n const currentIndex = caseRecords.findIndex((r) => r.id === recordId);\n const total = caseRecords.length;\n\n const goTo = useCallback(\n (r: RecordItem) => {\n setDropdownOpen(false);\n replaceOriginal(r.id, caseId);\n },\n [replaceOriginal, caseId],\n );\n\n const goPrev = useCallback(() => {\n if (currentIndex > 0) goTo(caseRecords[currentIndex - 1]);\n }, [currentIndex, caseRecords, goTo]);\n\n const goNext = useCallback(() => {\n if (currentIndex < total - 1) goTo(caseRecords[currentIndex + 1]);\n }, [currentIndex, total, caseRecords, goTo]);\n\n const showNavPicker = caseId && total > 0;\n\n // Smart report vitals filtering\n const allRows = table.rows;\n const oorRows = useMemo(\n () => allRows.filter((r) => r.latestStatus === \"high\" || r.latestStatus === \"low\"),\n [allRows],\n );\n const noInterpRows = useMemo(\n () => allRows.filter((r) => r.latestStatus === \"unknown\"),\n [allRows],\n );\n\n const baseRows = srTab === \"oor\" ? oorRows : srTab === \"none\" ? noInterpRows : allRows;\n\n const filteredRows = useMemo(() => {\n if (!srSearch) return baseRows;\n const q = srSearch.toLowerCase();\n return baseRows.filter((r) => r.name.toLowerCase().includes(q));\n }, [baseRows, srSearch]);\n\n const tabCounts = useMemo(() => {\n if (!srSearch) return { all: allRows.length, oor: oorRows.length, none: noInterpRows.length };\n const q = srSearch.toLowerCase();\n return {\n all: allRows.filter((r) => r.name.toLowerCase().includes(q)).length,\n oor: oorRows.filter((r) => r.name.toLowerCase().includes(q)).length,\n none: noInterpRows.filter((r) => r.name.toLowerCase().includes(q)).length,\n };\n }, [srSearch, allRows, oorRows, noInterpRows]);\n\n useEffect(() => {\n setSrSelected(new Set());\n }, [srTab, srSearch]);\n\n useEffect(() => {\n if (srTab === \"oor\" && oorRows.length === 0) setSrTab(\"all\");\n if (srTab === \"none\" && noInterpRows.length === 0) setSrTab(\"all\");\n }, [srTab, oorRows.length, noInterpRows.length]);\n\n const srAllSelected =\n filteredRows.length > 0 && filteredRows.every((r) => srSelected.has(r.key));\n const srSomeSelected = srSelected.size > 0;\n\n const toggleSrRow = useCallback((key: string) => {\n setSrSelected((prev) => {\n const next = new Set(prev);\n next.has(key) ? next.delete(key) : next.add(key);\n return next;\n });\n }, []);\n\n const toggleSrAll = useCallback(() => {\n setSrSelected(\n srAllSelected ? new Set() : new Set(filteredRows.map((r) => r.key)),\n );\n }, [srAllSelected, filteredRows]);\n\n const handleSrCopyToNote = useCallback(() => {\n const selectedRows = filteredRows.filter((r) => srSelected.has(r.key));\n if (!selectedRows.length) return;\n const text = buildVitalsText(selectedRows);\n if (onCopyVitalsToNote) {\n void onCopyVitalsToNote(text);\n } else if (onCopyToNote) {\n const rect = srCopyBtnRef.current?.getBoundingClientRect();\n void onCopyToNote(\n text,\n rect ? { x: rect.left + rect.width / 2, y: rect.bottom } : undefined,\n );\n }\n }, [filteredRows, srSelected, onCopyVitalsToNote, onCopyToNote]);\n\n const htmlCopyBtnRef = useRef<HTMLButtonElement>(null);\n const [isHtmlCopying, setIsHtmlCopying] = useState(false);\n\n const handleHtmlCopyToNote = useCallback(async () => {\n const url = preview.files[0]?.url;\n if (!url) return;\n setIsHtmlCopying(true);\n try {\n const res = await fetch(url);\n const html = await res.text();\n const doc = new DOMParser().parseFromString(html, \"text/html\");\n const text = doc.body.textContent?.trim() ?? \"\";\n if (!text) return;\n if (onCopyVitalsToNote) {\n void onCopyVitalsToNote(text);\n } else if (onCopyToNote) {\n const rect = htmlCopyBtnRef.current?.getBoundingClientRect();\n void onCopyToNote(\n text,\n rect ? { x: rect.left, y: rect.bottom } : undefined,\n );\n }\n } catch {\n onToast?.(\"Failed to copy document text\", \"error\");\n } finally {\n setIsHtmlCopying(false);\n }\n }, [preview.files, onCopyVitalsToNote, onCopyToNote, onToast]);\n\n const isSmart = record?.isSmart ?? false;\n const hasPreview = preview.status === \"loaded\" && preview.files.length > 0;\n\n return (\n <div className=\"mr-sv__panel\">\n <div className=\"mr-sv__panel-header\">\n <button type=\"button\" className=\"mr-sv__back-btn\" onClick={onBack}>\n <ChevronLeft size={16} aria-hidden />\n Back\n </button>\n\n {showNavPicker ? (\n <div className=\"mr-orig__nav-wrap\" ref={dropdownRef}>\n <div\n className={`mr-orig__nav-pill${dropdownOpen ? \" mr-orig__nav-pill--open\" : \"\"}`}\n role=\"button\"\n tabIndex={0}\n onClick={() => setDropdownOpen((v) => !v)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n setDropdownOpen((v) => !v);\n }\n }}\n >\n <button\n type=\"button\"\n className=\"mr-orig__nav-chevron\"\n onClick={(e) => { e.stopPropagation(); goPrev(); }}\n aria-label=\"Previous record\"\n disabled={currentIndex <= 0}\n >\n <ChevronLeft size={14} aria-hidden />\n </button>\n <div className=\"mr-orig__nav-text\">\n <span className=\"mr-orig__nav-title\">{record?.title ?? \"Record\"}</span>\n <span className=\"mr-orig__nav-counter\">\n {currentIndex + 1} of {total}\n </span>\n </div>\n <button\n type=\"button\"\n className=\"mr-orig__nav-chevron\"\n onClick={(e) => { e.stopPropagation(); goNext(); }}\n aria-label=\"Next record\"\n disabled={currentIndex >= total - 1}\n >\n <ChevronRight size={14} aria-hidden />\n </button>\n </div>\n\n {dropdownOpen && (\n <div className=\"mr-orig__dropdown\">\n <div className=\"mr-orig__dropdown-eyebrow\">\n {total} RECORD{total !== 1 ? \"S\" : \"\"} FOUND IN THIS ENCOUNTER\n </div>\n <div className=\"mr-orig__dropdown-list\">\n {caseRecords.map((r) => {\n const isActive = r.id === recordId;\n return (\n <button\n key={r.id}\n type=\"button\"\n className={`mr-orig__dropdown-item${isActive ? \" mr-orig__dropdown-item--active\" : \"\"}`}\n onClick={() => goTo(r)}\n >\n <div className=\"mr-orig__dropdown-icon\">\n <File size={16} aria-hidden />\n {r.isSmart && (\n <SmartSparkles\n className=\"mr-orig__dropdown-smart-dot\"\n aria-label=\"Smart report\"\n />\n )}\n </div>\n <div className=\"mr-orig__dropdown-info\">\n <div className=\"mr-orig__dropdown-title-row\">\n <span className=\"mr-orig__dropdown-title\">{r.title}</span>\n {r.isSmart && (\n <span className=\"mr-orig__dropdown-smart-badge\">\n <SmartSparkles aria-hidden />\n Smart Report\n </span>\n )}\n </div>\n <div className=\"mr-orig__dropdown-meta\">\n <span>{epochToDisplay(r.createdAtEpoch)}</span>\n {r.isSmart && r.totalVitals > 0 && (\n <>\n <span className=\"mr-orig__dropdown-dot\">·</span>\n <span>{r.totalVitals} vitals</span>\n </>\n )}\n {r.isSmart && r.outOfRangeVitals > 0 && (\n <>\n <span className=\"mr-orig__dropdown-dot\">·</span>\n <span className=\"mr-orig__dropdown-oor\">\n {r.outOfRangeVitals} out of range\n </span>\n </>\n )}\n </div>\n </div>\n {isActive && (\n <Check\n size={14}\n className=\"mr-orig__dropdown-check\"\n aria-hidden\n />\n )}\n </button>\n );\n })}\n </div>\n </div>\n )}\n </div>\n ) : record ? (\n <div className=\"mr-sv__panel-info\">\n <Typography variant=\"label\" as=\"span\" className=\"mr-sv__panel-name\">\n {record.title}\n </Typography>\n <Typography variant=\"hint\" as=\"span\" className=\"mr-sv__panel-meta-text\">\n {epochToDisplay(record.createdAtEpoch)}\n </Typography>\n </div>\n ) : null}\n\n <div className=\"mr-orig__header-actions\">\n {preview.isHtml && hasCopyToNote && (\n <button\n ref={htmlCopyBtnRef}\n type=\"button\"\n className=\"mr-orig__html-copy-btn\"\n onClick={handleHtmlCopyToNote}\n disabled={isHtmlCopying}\n >\n {isHtmlCopying && <LoaderCircle size={12} className=\"mr-sv__loading-spinner\" aria-hidden />}\n Copy to note\n </button>\n )}\n {hasPreview && (\n <IconButton\n icon={<ExternalLink size={16} aria-hidden />}\n label=\"Open in new tab\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() =>\n window.open(preview.files[0].url, \"_blank\", \"noopener,noreferrer\")\n }\n />\n )}\n </div>\n </div>\n\n <div\n className=\"mr-sv__panel-body\"\n style={{ flex: 1, display: \"flex\", flexDirection: \"column\", overflow: \"hidden\" }}\n >\n {preview.status === \"loading\" && (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: \"100%\",\n }}\n >\n <LoaderCircle size={44} className=\"mr-sv__loading-spinner\" aria-hidden />\n </div>\n )}\n {preview.status === \"error\" && (\n <Typography variant=\"muted\" className=\"mr-sv__panel-empty\">\n Failed to load document preview.\n </Typography>\n )}\n {preview.status === \"loaded\" && preview.files.length === 0 && (\n <Typography variant=\"muted\" className=\"mr-sv__panel-empty\">\n No preview available for this record.\n </Typography>\n )}\n\n {/* Non-smart: full-width PDF */}\n {hasPreview && !isSmart && (\n <div\n className=\"mr-record-preview__body\"\n style={{ flex: 1, display: \"flex\", overflow: \"hidden\" }}\n >\n <Suspense fallback={null}>\n <DocumentViewer\n files={preview.files}\n title={record?.title ?? \"\"}\n isHtml={preview.isHtml}\n />\n </Suspense>\n </div>\n )}\n\n {/* Smart: split view — PDF left, smart report panel right */}\n {hasPreview && isSmart && (\n <div className=\"mr-orig__split\">\n <div className=\"mr-orig__pdf-side\">\n <Suspense fallback={null}>\n <DocumentViewer\n files={preview.files}\n title={record?.title ?? \"\"}\n isHtml={preview.isHtml}\n />\n </Suspense>\n </div>\n\n {smartPanelOpen ? (\n <div className=\"mr-orig__smart-side\">\n {/* Header */}\n <div className=\"mr-orig__smart-hdr\">\n <span className=\"mr-orig__smart-title-row\">\n <span className=\"mr-orig__smart-title\">Smart Report</span>\n <SmartSparkles className=\"mr-orig__smart-title-icon\" aria-hidden />\n </span>\n <button\n type=\"button\"\n className=\"mr-sv__sidebar-collapse-btn mr-orig__smart-expanded-btn\"\n aria-label=\"Collapse smart report panel\"\n aria-expanded={true}\n onClick={() => setSmartPanelOpen(false)}\n >\n <ChevronRight size={14} aria-hidden />\n </button>\n </div>\n\n {/* Search */}\n <SearchInput\n className=\"mr-orig__smart-search\"\n iconSize={16}\n placeholder=\"Search vitals\"\n value={srSearch}\n onChange={setSrSearch}\n />\n\n {/* Filter tabs — only when at least one sub-category has data */}\n {(oorRows.length > 0 || noInterpRows.length > 0) && (\n <div className=\"mr-orig__smart-tabs-wrap\">\n <div className=\"mr-orig__smart-tabs\">\n {([\"all\", \"oor\", \"none\"] as SrTab[]).map((tab) => {\n if (tab === \"oor\" && oorRows.length === 0) return null;\n if (tab === \"none\" && noInterpRows.length === 0) return null;\n const count =\n tab === \"all\"\n ? tabCounts.all\n : tab === \"oor\"\n ? tabCounts.oor\n : tabCounts.none;\n const label =\n tab === \"all\"\n ? \"All\"\n : tab === \"oor\"\n ? \"Out of range\"\n : \"No interpretation\";\n return (\n <button\n key={tab}\n type=\"button\"\n className={`mr-orig__smart-tab${srTab === tab ? \" mr-orig__smart-tab--active\" : \"\"}`}\n onClick={() => setSrTab(tab)}\n >\n {label} ({count})\n </button>\n );\n })}\n </div>\n </div>\n )}\n\n {/* Vital list */}\n <div className=\"mr-orig__smart-list\">\n {vitalsStatus === \"loading\" && (\n <div className=\"mr-orig__smart-loading\">\n <LoaderCircle\n size={20}\n className=\"mr-sv__loading-spinner\"\n aria-hidden\n />\n </div>\n )}\n {vitalsStatus === \"loaded\" && filteredRows.length === 0 && (\n <Typography variant=\"muted\" className=\"mr-orig__smart-empty\">\n No vitals match.\n </Typography>\n )}\n {vitalsStatus === \"loaded\" &&\n filteredRows.map((row, idx) => {\n const cell = row.cells[0];\n const isOor =\n row.latestStatus === \"high\" || row.latestStatus === \"low\";\n const isSelected = srSelected.has(row.key);\n const isLast = idx === filteredRows.length - 1;\n return (\n <div\n key={row.key}\n className={`mr-orig__vital-item${isLast ? \" mr-orig__vital-item--last\" : \"\"}`}\n >\n <div\n className={`mr-orig__vital-row mr-orig__vital-row--selectable${isSelected ? \" mr-orig__vital-row--selected\" : \"\"}`}\n onClick={() => toggleSrRow(row.key)}\n >\n <span\n className={`mr-sv__checkbox mr-cc-table__row-check${isSelected ? \" mr-sv__checkbox--checked\" : \"\"}`}\n role=\"checkbox\"\n aria-checked={isSelected}\n tabIndex={0}\n onClick={(e) => {\n e.stopPropagation();\n toggleSrRow(row.key);\n }}\n onKeyDown={(e) => {\n if (e.key === \" \" || e.key === \"Enter\") {\n e.preventDefault();\n e.stopPropagation();\n toggleSrRow(row.key);\n }\n }}\n >\n {isSelected && <Check size={10} strokeWidth={3} />}\n </span>\n <div className=\"mr-orig__vital-info\">\n <span className=\"mr-orig__vital-name\">{row.name}</span>\n {row.refRange && (\n <span className=\"mr-orig__vital-ref\">\n Ref {row.refRange}\n </span>\n )}\n </div>\n {cell && (\n <div className=\"mr-orig__vital-value\">\n <span\n className={`mr-orig__vital-val${isOor ? \" mr-orig__vital-val--oor\" : \"\"}`}\n >\n {cell.value}\n </span>\n {cell.unit && (\n <span className=\"mr-orig__vital-unit\">{cell.unit}</span>\n )}\n </div>\n )}\n {row.ekaId && (\n <button\n type=\"button\"\n className={`mr-orig__vital-expand-btn${expandedVital === row.key ? \" mr-orig__vital-expand-btn--open\" : \"\"}`}\n onClick={(e) => { e.stopPropagation(); toggleExpand(row.key); }}\n aria-label={expandedVital === row.key ? \"Collapse readings\" : \"Show latest readings\"}\n >\n <ChevronDown size={13} aria-hidden />\n </button>\n )}\n </div>\n {expandedVital === row.key && row.ekaId && (\n <VitalReadingsExpanded vitalName={row.name} ekaId={row.ekaId} />\n )}\n </div>\n );\n })}\n </div>\n\n {/* Footer */}\n <div className=\"mr-cc-table__footer\">\n <span\n className={`mr-sv__checkbox mr-cc-table__footer-check${srAllSelected ? \" mr-sv__checkbox--checked\" : \"\"}`}\n role=\"checkbox\"\n aria-checked={srAllSelected}\n tabIndex={0}\n onClick={toggleSrAll}\n onKeyDown={(e) => {\n if (e.key === \" \" || e.key === \"Enter\") {\n e.preventDefault();\n toggleSrAll();\n }\n }}\n >\n {srAllSelected && <Check size={10} strokeWidth={3} />}\n </span>\n <span className=\"mr-cc-table__footer-label\" onClick={toggleSrAll}>Select all</span>\n <span className=\"mr-cc-table__footer-count\">\n {srSelected.size} of {filteredRows.length} selected\n </span>\n <button\n ref={srCopyBtnRef}\n type=\"button\"\n className=\"mr-cc-table__copy-note-btn\"\n disabled={!srSomeSelected || !hasCopyToNote}\n onClick={handleSrCopyToNote}\n >\n Copy to note\n </button>\n </div>\n </div>\n ) : (\n <div className=\"mr-orig__smart-side mr-orig__smart-side--collapsed\">\n <Tooltip content=\"Show smart report\">\n <button\n type=\"button\"\n className=\"mr-sv__sidebar-collapse-btn mr-orig__smart-collapsed-btn\"\n aria-label=\"Expand smart report panel\"\n aria-expanded={false}\n onClick={() => setSmartPanelOpen(true)}\n >\n <span className=\"mr-orig__smart-collapsed-icon-wrap\">\n <SmartSparkles className=\"mr-orig__smart-collapsed-icon\" aria-hidden />\n </span>\n </button>\n </Tooltip>\n </div>\n )}\n </div>\n )}\n </div>\n </div>\n );\n}\n\nfunction VitalReadingsExpanded({ vitalName, ekaId }: { vitalName: string; ekaId: string }) {\n const { data: trendData, status } = useParameterTrend(ekaId);\n\n const readings = useMemo(() => {\n const trend = trendData as ParameterTrendResponse | null;\n if (!trend?.vitals_info?.length) return [];\n return [...trend.vitals_info]\n .sort((a, b) => (b.date ?? 0) - (a.date ?? 0))\n .slice(0, 3)\n .map((info) => {\n const dr = (info.display_result ?? \"\").toLowerCase();\n const isOor = dr.includes(\"high\") || dr.includes(\"above\") || dr.includes(\"abnormal_high\") ||\n dr.includes(\"low\") || dr.includes(\"below\") || dr.includes(\"abnormal_low\");\n return {\n value: info.val != null ? String(info.val) : ((info as any).val_string ?? \"—\"),\n date: info.display_time || \"\",\n isOor,\n };\n });\n }, [trendData]);\n\n if (status === \"loading\") {\n return (\n <div className=\"mr-orig__vital-readings mr-orig__vital-readings--loading\">\n <LoaderCircle size={16} className=\"mr-sv__loading-spinner\" aria-hidden />\n </div>\n );\n }\n\n if (status === \"error\" || !readings.length) {\n return (\n <div className=\"mr-orig__vital-readings\">\n <Typography variant=\"muted\" className=\"mr-orig__vital-readings-empty\">\n No readings available\n </Typography>\n </div>\n );\n }\n\n return (\n <div className=\"mr-orig__vital-readings\">\n <div className=\"mr-orig__vital-readings-title\">\n LATEST READINGS FOR {vitalName.toUpperCase()}\n </div>\n <div className=\"mr-orig__vital-readings-grid\">\n {readings.map((r, i) => (\n <div key={i} className=\"mr-orig__vital-reading-item\">\n <span className={`mr-orig__vital-reading-value${r.isOor ? \" mr-orig__vital-reading-value--oor\" : \"\"}`}>{r.value}</span>\n <span className=\"mr-orig__vital-reading-date\">{r.date}</span>\n </div>\n ))}\n </div>\n </div>\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }"use client";
|
|
2
2
|
|
|
3
3
|
|
|
4
|
+
var _chunkLV7EI4MZjs = require('./chunk-LV7EI4MZ.js');
|
|
4
5
|
|
|
5
|
-
var _chunkGKREOUK2js = require('./chunk-GKREOUK2.js');
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _chunkVCLXS52Ujs = require('./chunk-VCLXS52U.js');
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
|
|
18
|
+
var _chunk6HMB6X7Xjs = require('./chunk-6HMB6X7X.js');
|
|
18
19
|
|
|
19
20
|
// src/views/components/shared/OriginalRecordPanel.tsx
|
|
20
21
|
var _react = require('react');
|
|
@@ -38,12 +39,12 @@ function OriginalRecordPanel({
|
|
|
38
39
|
caseId,
|
|
39
40
|
onBack
|
|
40
41
|
}) {
|
|
41
|
-
const { store } =
|
|
42
|
+
const { store } = _chunk6HMB6X7Xjs.useSdk.call(void 0, );
|
|
42
43
|
const record = _zustand.useStore.call(void 0, store, (s) => s.records.byId[recordId]);
|
|
43
44
|
const recordsById = _zustand.useStore.call(void 0, store, (s) => s.records.byId);
|
|
44
|
-
const preview =
|
|
45
|
-
const { replaceOriginal, onCopyToNote, onCopyVitalsToNote, hasCopyToNote } =
|
|
46
|
-
const { status: vitalsStatus, table } =
|
|
45
|
+
const preview = _chunkVCLXS52Ujs.useRecordPreview.call(void 0, recordId);
|
|
46
|
+
const { replaceOriginal, onCopyToNote, onCopyVitalsToNote, hasCopyToNote, onToast } = _chunkVCLXS52Ujs.useSmartRecordsActions.call(void 0, );
|
|
47
|
+
const { status: vitalsStatus, table } = _chunkVCLXS52Ujs.useRecordPanelTable.call(void 0,
|
|
47
48
|
_optionalChain([record, 'optionalAccess', _3 => _3.isSmart]) ? recordId : null
|
|
48
49
|
);
|
|
49
50
|
const [smartPanelOpen, setSmartPanelOpen] = _react.useState.call(void 0, true);
|
|
@@ -167,24 +168,20 @@ function OriginalRecordPanel({
|
|
|
167
168
|
rect ? { x: rect.left, y: rect.bottom } : void 0
|
|
168
169
|
);
|
|
169
170
|
}
|
|
171
|
+
} catch (e2) {
|
|
172
|
+
_optionalChain([onToast, 'optionalCall', _17 => _17("Failed to copy document text", "error")]);
|
|
170
173
|
} finally {
|
|
171
174
|
setIsHtmlCopying(false);
|
|
172
175
|
}
|
|
173
|
-
}, [preview.files, onCopyVitalsToNote, onCopyToNote]);
|
|
174
|
-
const isSmart = _nullishCoalesce(_optionalChain([record, 'optionalAccess',
|
|
176
|
+
}, [preview.files, onCopyVitalsToNote, onCopyToNote, onToast]);
|
|
177
|
+
const isSmart = _nullishCoalesce(_optionalChain([record, 'optionalAccess', _18 => _18.isSmart]), () => ( false));
|
|
175
178
|
const hasPreview = preview.status === "loaded" && preview.files.length > 0;
|
|
176
179
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "mr-sv__panel", children: [
|
|
177
180
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "mr-sv__panel-header", children: [
|
|
178
|
-
/* @__PURE__ */ _jsxruntime.
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
label: "Back",
|
|
183
|
-
variant: "ghost",
|
|
184
|
-
size: "sm",
|
|
185
|
-
onClick: onBack
|
|
186
|
-
}
|
|
187
|
-
),
|
|
181
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "button", { type: "button", className: "mr-sv__back-btn", onClick: onBack, children: [
|
|
182
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ChevronLeft, { size: 16, "aria-hidden": true }),
|
|
183
|
+
"Back"
|
|
184
|
+
] }),
|
|
188
185
|
showNavPicker ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "mr-orig__nav-wrap", ref: dropdownRef, children: [
|
|
189
186
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
190
187
|
"div",
|
|
@@ -215,7 +212,7 @@ function OriginalRecordPanel({
|
|
|
215
212
|
}
|
|
216
213
|
),
|
|
217
214
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "mr-orig__nav-text", children: [
|
|
218
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "mr-orig__nav-title", children: _nullishCoalesce(_optionalChain([record, 'optionalAccess',
|
|
215
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "mr-orig__nav-title", children: _nullishCoalesce(_optionalChain([record, 'optionalAccess', _19 => _19.title]), () => ( "Record")) }),
|
|
219
216
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "mr-orig__nav-counter", children: [
|
|
220
217
|
currentIndex + 1,
|
|
221
218
|
" of ",
|
|
@@ -258,7 +255,7 @@ function OriginalRecordPanel({
|
|
|
258
255
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "mr-orig__dropdown-icon", children: [
|
|
259
256
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.File, { size: 16, "aria-hidden": true }),
|
|
260
257
|
r.isSmart && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
261
|
-
|
|
258
|
+
_chunkLV7EI4MZjs.SmartSparkles_default,
|
|
262
259
|
{
|
|
263
260
|
className: "mr-orig__dropdown-smart-dot",
|
|
264
261
|
"aria-label": "Smart report"
|
|
@@ -269,12 +266,12 @@ function OriginalRecordPanel({
|
|
|
269
266
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "mr-orig__dropdown-title-row", children: [
|
|
270
267
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "mr-orig__dropdown-title", children: r.title }),
|
|
271
268
|
r.isSmart && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "mr-orig__dropdown-smart-badge", children: [
|
|
272
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
269
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLV7EI4MZjs.SmartSparkles_default, { "aria-hidden": true }),
|
|
273
270
|
"Smart Report"
|
|
274
271
|
] })
|
|
275
272
|
] }),
|
|
276
273
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "mr-orig__dropdown-meta", children: [
|
|
277
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children:
|
|
274
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: _chunk6HMB6X7Xjs.epochToDisplay.call(void 0, r.createdAtEpoch) }),
|
|
278
275
|
r.isSmart && r.totalVitals > 0 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
279
276
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "mr-orig__dropdown-dot", children: "\xB7" }),
|
|
280
277
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { children: [
|
|
@@ -306,22 +303,10 @@ function OriginalRecordPanel({
|
|
|
306
303
|
}) })
|
|
307
304
|
] })
|
|
308
305
|
] }) : record ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "mr-sv__panel-info", children: [
|
|
309
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
310
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
306
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6HMB6X7Xjs.Typography, { variant: "label", as: "span", className: "mr-sv__panel-name", children: record.title }),
|
|
307
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6HMB6X7Xjs.Typography, { variant: "hint", as: "span", className: "mr-sv__panel-meta-text", children: _chunk6HMB6X7Xjs.epochToDisplay.call(void 0, record.createdAtEpoch) })
|
|
311
308
|
] }) : null,
|
|
312
309
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "mr-orig__header-actions", children: [
|
|
313
|
-
isSmart && !smartPanelOpen && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
314
|
-
"button",
|
|
315
|
-
{
|
|
316
|
-
type: "button",
|
|
317
|
-
className: "mr-orig__show-smart-btn",
|
|
318
|
-
onClick: () => setSmartPanelOpen(true),
|
|
319
|
-
children: [
|
|
320
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGKREOUK2js.SmartSparkles_default, { "aria-hidden": true }),
|
|
321
|
-
"Smart Report"
|
|
322
|
-
]
|
|
323
|
-
}
|
|
324
|
-
),
|
|
325
310
|
preview.isHtml && hasCopyToNote && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
326
311
|
"button",
|
|
327
312
|
{
|
|
@@ -337,7 +322,7 @@ function OriginalRecordPanel({
|
|
|
337
322
|
}
|
|
338
323
|
),
|
|
339
324
|
hasPreview && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
340
|
-
|
|
325
|
+
_chunk6HMB6X7Xjs.IconButton,
|
|
341
326
|
{
|
|
342
327
|
icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ExternalLink, { size: 16, "aria-hidden": true }),
|
|
343
328
|
label: "Open in new tab",
|
|
@@ -366,8 +351,8 @@ function OriginalRecordPanel({
|
|
|
366
351
|
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.LoaderCircle, { size: 44, className: "mr-sv__loading-spinner", "aria-hidden": true })
|
|
367
352
|
}
|
|
368
353
|
),
|
|
369
|
-
preview.status === "error" && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
370
|
-
preview.status === "loaded" && preview.files.length === 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
354
|
+
preview.status === "error" && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6HMB6X7Xjs.Typography, { variant: "muted", className: "mr-sv__panel-empty", children: "Failed to load document preview." }),
|
|
355
|
+
preview.status === "loaded" && preview.files.length === 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6HMB6X7Xjs.Typography, { variant: "muted", className: "mr-sv__panel-empty", children: "No preview available for this record." }),
|
|
371
356
|
hasPreview && !isSmart && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
372
357
|
"div",
|
|
373
358
|
{
|
|
@@ -377,7 +362,7 @@ function OriginalRecordPanel({
|
|
|
377
362
|
DocumentViewer,
|
|
378
363
|
{
|
|
379
364
|
files: preview.files,
|
|
380
|
-
title: _nullishCoalesce(_optionalChain([record, 'optionalAccess',
|
|
365
|
+
title: _nullishCoalesce(_optionalChain([record, 'optionalAccess', _20 => _20.title]), () => ( "")),
|
|
381
366
|
isHtml: preview.isHtml
|
|
382
367
|
}
|
|
383
368
|
) })
|
|
@@ -388,26 +373,30 @@ function OriginalRecordPanel({
|
|
|
388
373
|
DocumentViewer,
|
|
389
374
|
{
|
|
390
375
|
files: preview.files,
|
|
391
|
-
title: _nullishCoalesce(_optionalChain([record, 'optionalAccess',
|
|
376
|
+
title: _nullishCoalesce(_optionalChain([record, 'optionalAccess', _21 => _21.title]), () => ( "")),
|
|
392
377
|
isHtml: preview.isHtml
|
|
393
378
|
}
|
|
394
379
|
) }) }),
|
|
395
|
-
smartPanelOpen
|
|
380
|
+
smartPanelOpen ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "mr-orig__smart-side", children: [
|
|
396
381
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "mr-orig__smart-hdr", children: [
|
|
397
|
-
/* @__PURE__ */ _jsxruntime.
|
|
382
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "mr-orig__smart-title-row", children: [
|
|
383
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "mr-orig__smart-title", children: "Smart Report" }),
|
|
384
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLV7EI4MZjs.SmartSparkles_default, { className: "mr-orig__smart-title-icon", "aria-hidden": true })
|
|
385
|
+
] }),
|
|
398
386
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
399
387
|
"button",
|
|
400
388
|
{
|
|
401
389
|
type: "button",
|
|
402
|
-
className: "mr-
|
|
390
|
+
className: "mr-sv__sidebar-collapse-btn mr-orig__smart-expanded-btn",
|
|
403
391
|
"aria-label": "Collapse smart report panel",
|
|
392
|
+
"aria-expanded": true,
|
|
404
393
|
onClick: () => setSmartPanelOpen(false),
|
|
405
|
-
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ChevronRight, { size:
|
|
394
|
+
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ChevronRight, { size: 14, "aria-hidden": true })
|
|
406
395
|
}
|
|
407
396
|
)
|
|
408
397
|
] }),
|
|
409
398
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
410
|
-
|
|
399
|
+
_chunk6HMB6X7Xjs.SearchInput_default,
|
|
411
400
|
{
|
|
412
401
|
className: "mr-orig__smart-search",
|
|
413
402
|
iconSize: 16,
|
|
@@ -446,7 +435,7 @@ function OriginalRecordPanel({
|
|
|
446
435
|
"aria-hidden": true
|
|
447
436
|
}
|
|
448
437
|
) }),
|
|
449
|
-
vitalsStatus === "loaded" && filteredRows.length === 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
438
|
+
vitalsStatus === "loaded" && filteredRows.length === 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6HMB6X7Xjs.Typography, { variant: "muted", className: "mr-orig__smart-empty", children: "No vitals match." }),
|
|
450
439
|
vitalsStatus === "loaded" && filteredRows.map((row, idx) => {
|
|
451
440
|
const cell = row.cells[0];
|
|
452
441
|
const isOor = row.latestStatus === "high" || row.latestStatus === "low";
|
|
@@ -542,7 +531,7 @@ function OriginalRecordPanel({
|
|
|
542
531
|
children: srAllSelected && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Check, { size: 10, strokeWidth: 3 })
|
|
543
532
|
}
|
|
544
533
|
),
|
|
545
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "mr-cc-table__footer-label", children: "Select all" }),
|
|
534
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "mr-cc-table__footer-label", onClick: toggleSrAll, children: "Select all" }),
|
|
546
535
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "mr-cc-table__footer-count", children: [
|
|
547
536
|
srSelected.size,
|
|
548
537
|
" of ",
|
|
@@ -561,7 +550,17 @@ function OriginalRecordPanel({
|
|
|
561
550
|
}
|
|
562
551
|
)
|
|
563
552
|
] })
|
|
564
|
-
] })
|
|
553
|
+
] }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mr-orig__smart-side mr-orig__smart-side--collapsed", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6HMB6X7Xjs.Tooltip, { content: "Show smart report", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
554
|
+
"button",
|
|
555
|
+
{
|
|
556
|
+
type: "button",
|
|
557
|
+
className: "mr-sv__sidebar-collapse-btn mr-orig__smart-collapsed-btn",
|
|
558
|
+
"aria-label": "Expand smart report panel",
|
|
559
|
+
"aria-expanded": false,
|
|
560
|
+
onClick: () => setSmartPanelOpen(true),
|
|
561
|
+
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "mr-orig__smart-collapsed-icon-wrap", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLV7EI4MZjs.SmartSparkles_default, { className: "mr-orig__smart-collapsed-icon", "aria-hidden": true }) })
|
|
562
|
+
}
|
|
563
|
+
) }) })
|
|
565
564
|
] })
|
|
566
565
|
]
|
|
567
566
|
}
|
|
@@ -569,22 +568,25 @@ function OriginalRecordPanel({
|
|
|
569
568
|
] });
|
|
570
569
|
}
|
|
571
570
|
function VitalReadingsExpanded({ vitalName, ekaId }) {
|
|
572
|
-
const {
|
|
573
|
-
const recordsById = _zustand.useStore.call(void 0, store, (s) => s.records.byId);
|
|
574
|
-
const { data: trendData, status } = _chunkYT6OD4YUjs.useParameterTrend.call(void 0, ekaId);
|
|
571
|
+
const { data: trendData, status } = _chunkVCLXS52Ujs.useParameterTrend.call(void 0, ekaId);
|
|
575
572
|
const readings = _react.useMemo.call(void 0, () => {
|
|
576
573
|
const trend = trendData;
|
|
577
|
-
if (!_optionalChain([trend, 'optionalAccess',
|
|
578
|
-
return [...trend.vitals_info].sort((a, b) => (_nullishCoalesce(b.date, () => ( 0))) - (_nullishCoalesce(a.date, () => ( 0)))).slice(0, 3).map((info) =>
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
574
|
+
if (!_optionalChain([trend, 'optionalAccess', _22 => _22.vitals_info, 'optionalAccess', _23 => _23.length])) return [];
|
|
575
|
+
return [...trend.vitals_info].sort((a, b) => (_nullishCoalesce(b.date, () => ( 0))) - (_nullishCoalesce(a.date, () => ( 0)))).slice(0, 3).map((info) => {
|
|
576
|
+
const dr = (_nullishCoalesce(info.display_result, () => ( ""))).toLowerCase();
|
|
577
|
+
const isOor = dr.includes("high") || dr.includes("above") || dr.includes("abnormal_high") || dr.includes("low") || dr.includes("below") || dr.includes("abnormal_low");
|
|
578
|
+
return {
|
|
579
|
+
value: info.val != null ? String(info.val) : _nullishCoalesce(info.val_string, () => ( "\u2014")),
|
|
580
|
+
date: info.display_time || "",
|
|
581
|
+
isOor
|
|
582
|
+
};
|
|
583
|
+
});
|
|
584
|
+
}, [trendData]);
|
|
583
585
|
if (status === "loading") {
|
|
584
586
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mr-orig__vital-readings mr-orig__vital-readings--loading", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.LoaderCircle, { size: 16, className: "mr-sv__loading-spinner", "aria-hidden": true }) });
|
|
585
587
|
}
|
|
586
588
|
if (status === "error" || !readings.length) {
|
|
587
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mr-orig__vital-readings", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
589
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mr-orig__vital-readings", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6HMB6X7Xjs.Typography, { variant: "muted", className: "mr-orig__vital-readings-empty", children: "No readings available" }) });
|
|
588
590
|
}
|
|
589
591
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "mr-orig__vital-readings", children: [
|
|
590
592
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "mr-orig__vital-readings-title", children: [
|
|
@@ -592,7 +594,7 @@ function VitalReadingsExpanded({ vitalName, ekaId }) {
|
|
|
592
594
|
vitalName.toUpperCase()
|
|
593
595
|
] }),
|
|
594
596
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mr-orig__vital-readings-grid", children: readings.map((r, i) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "mr-orig__vital-reading-item", children: [
|
|
595
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "mr-orig__vital-reading-value"
|
|
597
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: `mr-orig__vital-reading-value${r.isOor ? " mr-orig__vital-reading-value--oor" : ""}`, children: r.value }),
|
|
596
598
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "mr-orig__vital-reading-date", children: r.date })
|
|
597
599
|
] }, i)) })
|
|
598
600
|
] });
|
|
@@ -600,4 +602,4 @@ function VitalReadingsExpanded({ vitalName, ekaId }) {
|
|
|
600
602
|
|
|
601
603
|
|
|
602
604
|
exports.OriginalRecordPanel = OriginalRecordPanel;
|
|
603
|
-
//# sourceMappingURL=OriginalRecordPanel-
|
|
605
|
+
//# sourceMappingURL=OriginalRecordPanel-NSQMZFMV.js.map
|