@eka-care/medical-records-ui 1.0.51 → 1.0.55
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-DQF55MG3.js → OriginalRecordPanel-PR35G6KV.js} +25 -147
- package/dist/OriginalRecordPanel-PR35G6KV.js.map +1 -0
- package/dist/{OriginalRecordPanel-FBSPPGVL.mjs → OriginalRecordPanel-QYGV744W.mjs} +7 -129
- package/dist/OriginalRecordPanel-QYGV744W.mjs.map +1 -0
- package/dist/SmartUploadModal-5SITEKEJ.mjs +9 -0
- package/dist/SmartUploadModal-RHGZPTB3.js +9 -0
- package/dist/{SmartUploadModal-TI6I4ZM3.js.map → SmartUploadModal-RHGZPTB3.js.map} +1 -1
- package/dist/VitalHistoryPanel-76GSKJPJ.mjs +10 -0
- package/dist/VitalHistoryPanel-7GT3GZEJ.js +10 -0
- package/dist/{VitalHistoryPanel-V6NJE5JI.js.map → VitalHistoryPanel-7GT3GZEJ.js.map} +1 -1
- package/dist/chunk-22QQK3VR.mjs +96 -0
- package/dist/chunk-22QQK3VR.mjs.map +1 -0
- package/dist/{chunk-EOMQQSZU.mjs → chunk-3J6XMPXB.mjs} +2 -2
- package/dist/{chunk-QK7VGCUW.js → chunk-636WE5XC.js} +14 -14
- package/dist/{chunk-QK7VGCUW.js.map → chunk-636WE5XC.js.map} +1 -1
- package/dist/{chunk-MI2JSHXL.mjs → chunk-7AO6M347.mjs} +9 -9
- package/dist/chunk-7AO6M347.mjs.map +1 -0
- package/dist/{chunk-TFR7PUDT.mjs → chunk-IIAX5R33.mjs} +3 -3
- package/dist/{chunk-3VRMKZ4H.mjs → chunk-NZNI6YJ5.mjs} +66 -1
- package/dist/chunk-NZNI6YJ5.mjs.map +1 -0
- package/dist/{chunk-PN7IJ5MG.js → chunk-QGGLSO4W.js} +84 -19
- package/dist/chunk-QGGLSO4W.js.map +1 -0
- package/dist/chunk-QYUEKKMV.js +96 -0
- package/dist/chunk-QYUEKKMV.js.map +1 -0
- package/dist/{chunk-WUON6OEN.js → chunk-STQYPHI3.js} +16 -16
- package/dist/chunk-STQYPHI3.js.map +1 -0
- package/dist/{chunk-GDLEVEWR.js → chunk-WXCGQDIL.js} +21 -21
- package/dist/{chunk-GDLEVEWR.js.map → chunk-WXCGQDIL.js.map} +1 -1
- package/dist/index.css +35 -5
- package/dist/index.css.map +1 -1
- package/dist/index.d.mts +28 -1
- package/dist/index.d.ts +28 -1
- package/dist/index.js +370 -174
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +345 -149
- package/dist/index.mjs.map +1 -1
- package/dist/styles.css +35 -5
- package/dist/styles.css.map +1 -1
- package/dist/widgets-GSEIOGU4.js +43 -0
- package/dist/{widgets-3PAKTLR5.js.map → widgets-GSEIOGU4.js.map} +1 -1
- package/dist/{widgets-QTQJHVAY.mjs → widgets-RJVE37HS.mjs} +2 -2
- package/package.json +1 -1
- package/dist/OriginalRecordPanel-DQF55MG3.js.map +0 -1
- package/dist/OriginalRecordPanel-FBSPPGVL.mjs.map +0 -1
- package/dist/SmartUploadModal-RFFYDGAF.mjs +0 -9
- package/dist/SmartUploadModal-TI6I4ZM3.js +0 -9
- package/dist/VitalHistoryPanel-KXYWVG55.mjs +0 -10
- package/dist/VitalHistoryPanel-V6NJE5JI.js +0 -10
- package/dist/chunk-3VRMKZ4H.mjs.map +0 -1
- package/dist/chunk-LSDWS36C.mjs +0 -49
- package/dist/chunk-LSDWS36C.mjs.map +0 -1
- package/dist/chunk-MI2JSHXL.mjs.map +0 -1
- package/dist/chunk-PN7IJ5MG.js.map +0 -1
- package/dist/chunk-QXXC4RX4.js +0 -49
- package/dist/chunk-QXXC4RX4.js.map +0 -1
- package/dist/chunk-WUON6OEN.js.map +0 -1
- package/dist/widgets-3PAKTLR5.js +0 -43
- /package/dist/{SmartUploadModal-RFFYDGAF.mjs.map → SmartUploadModal-5SITEKEJ.mjs.map} +0 -0
- /package/dist/{VitalHistoryPanel-KXYWVG55.mjs.map → VitalHistoryPanel-76GSKJPJ.mjs.map} +0 -0
- /package/dist/{chunk-EOMQQSZU.mjs.map → chunk-3J6XMPXB.mjs.map} +0 -0
- /package/dist/{chunk-TFR7PUDT.mjs.map → chunk-IIAX5R33.mjs.map} +0 -0
- /package/dist/{widgets-QTQJHVAY.mjs.map → widgets-RJVE37HS.mjs.map} +0 -0
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var _chunkQYUEKKMVjs = require('./chunk-QYUEKKMV.js');
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
var
|
|
11
|
+
var _chunkSTQYPHI3js = require('./chunk-STQYPHI3.js');
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
|
|
@@ -16,7 +16,7 @@ var _chunkWUON6OENjs = require('./chunk-WUON6OEN.js');
|
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
var
|
|
19
|
+
var _chunkQGGLSO4Wjs = require('./chunk-QGGLSO4W.js');
|
|
20
20
|
|
|
21
21
|
// src/views/components/shared/OriginalRecordPanel.tsx
|
|
22
22
|
var _react = require('react');
|
|
@@ -40,12 +40,12 @@ function OriginalRecordPanel({
|
|
|
40
40
|
caseId,
|
|
41
41
|
onBack
|
|
42
42
|
}) {
|
|
43
|
-
const { store } =
|
|
43
|
+
const { store } = _chunkQGGLSO4Wjs.useSdk.call(void 0, );
|
|
44
44
|
const record = _zustand.useStore.call(void 0, store, (s) => s.records.byId[recordId]);
|
|
45
45
|
const recordsById = _zustand.useStore.call(void 0, store, (s) => s.records.byId);
|
|
46
|
-
const preview =
|
|
47
|
-
const { replaceOriginal, onCopyToNote, onCopyVitalsToNote, hasCopyToNote, onToast } =
|
|
48
|
-
const { status: vitalsStatus, table } =
|
|
46
|
+
const preview = _chunkSTQYPHI3js.useRecordPreview.call(void 0, recordId);
|
|
47
|
+
const { replaceOriginal, onCopyToNote, onCopyVitalsToNote, hasCopyToNote, onToast } = _chunkSTQYPHI3js.useSmartRecordsActions.call(void 0, );
|
|
48
|
+
const { status: vitalsStatus, table } = _chunkSTQYPHI3js.useRecordPanelTable.call(void 0,
|
|
49
49
|
_optionalChain([record, 'optionalAccess', _3 => _3.isSmart]) ? recordId : null
|
|
50
50
|
);
|
|
51
51
|
const [smartPanelOpen, setSmartPanelOpen] = _react.useState.call(void 0, true);
|
|
@@ -148,7 +148,7 @@ function OriginalRecordPanel({
|
|
|
148
148
|
void onCopyToNote(
|
|
149
149
|
text,
|
|
150
150
|
rect ? { x: rect.left + rect.width / 2, y: rect.bottom } : void 0,
|
|
151
|
-
|
|
151
|
+
_chunkQYUEKKMVjs.toVitalNoteRows.call(void 0, selectedRows)
|
|
152
152
|
);
|
|
153
153
|
}
|
|
154
154
|
}, [filteredRows, srSelected, onCopyVitalsToNote, onCopyToNote]);
|
|
@@ -187,131 +187,9 @@ function OriginalRecordPanel({
|
|
|
187
187
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ChevronLeft, { size: 16, "aria-hidden": true }),
|
|
188
188
|
"Back"
|
|
189
189
|
] }),
|
|
190
|
-
|
|
191
|
-
/* @__PURE__ */ _jsxruntime.
|
|
192
|
-
|
|
193
|
-
{
|
|
194
|
-
className: `mr-orig__nav-pill${dropdownOpen ? " mr-orig__nav-pill--open" : ""}`,
|
|
195
|
-
role: "button",
|
|
196
|
-
tabIndex: 0,
|
|
197
|
-
onClick: () => setDropdownOpen((v) => !v),
|
|
198
|
-
onKeyDown: (e) => {
|
|
199
|
-
if (e.key === "Enter" || e.key === " ") {
|
|
200
|
-
e.preventDefault();
|
|
201
|
-
setDropdownOpen((v) => !v);
|
|
202
|
-
}
|
|
203
|
-
},
|
|
204
|
-
children: [
|
|
205
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
206
|
-
"button",
|
|
207
|
-
{
|
|
208
|
-
type: "button",
|
|
209
|
-
className: "mr-orig__nav-chevron",
|
|
210
|
-
onClick: (e) => {
|
|
211
|
-
e.stopPropagation();
|
|
212
|
-
goPrev();
|
|
213
|
-
},
|
|
214
|
-
"aria-label": "Previous record",
|
|
215
|
-
disabled: currentIndex <= 0,
|
|
216
|
-
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ChevronLeft, { size: 14, "aria-hidden": true })
|
|
217
|
-
}
|
|
218
|
-
),
|
|
219
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "mr-orig__nav-text", children: [
|
|
220
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "mr-orig__nav-title", children: _nullishCoalesce(_optionalChain([record, 'optionalAccess', _19 => _19.title]), () => ( "Record")) }),
|
|
221
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "mr-orig__nav-counter", children: [
|
|
222
|
-
currentIndex + 1,
|
|
223
|
-
" of ",
|
|
224
|
-
total
|
|
225
|
-
] })
|
|
226
|
-
] }),
|
|
227
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
228
|
-
"button",
|
|
229
|
-
{
|
|
230
|
-
type: "button",
|
|
231
|
-
className: "mr-orig__nav-chevron",
|
|
232
|
-
onClick: (e) => {
|
|
233
|
-
e.stopPropagation();
|
|
234
|
-
goNext();
|
|
235
|
-
},
|
|
236
|
-
"aria-label": "Next record",
|
|
237
|
-
disabled: currentIndex >= total - 1,
|
|
238
|
-
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ChevronRight, { size: 14, "aria-hidden": true })
|
|
239
|
-
}
|
|
240
|
-
)
|
|
241
|
-
]
|
|
242
|
-
}
|
|
243
|
-
),
|
|
244
|
-
dropdownOpen && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "mr-orig__dropdown", children: [
|
|
245
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "mr-orig__dropdown-eyebrow", children: [
|
|
246
|
-
total,
|
|
247
|
-
" RECORD",
|
|
248
|
-
total !== 1 ? "S" : "",
|
|
249
|
-
" ",
|
|
250
|
-
isUngrouped ? "WITH NO CARE CONTEXT" : "FOUND IN THIS ENCOUNTER"
|
|
251
|
-
] }),
|
|
252
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mr-orig__dropdown-list", children: caseRecords.map((r) => {
|
|
253
|
-
const isActive = r.id === recordId;
|
|
254
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
255
|
-
"button",
|
|
256
|
-
{
|
|
257
|
-
type: "button",
|
|
258
|
-
className: `mr-orig__dropdown-item${isActive ? " mr-orig__dropdown-item--active" : ""}`,
|
|
259
|
-
onClick: () => goTo(r),
|
|
260
|
-
children: [
|
|
261
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "mr-orig__dropdown-icon", children: [
|
|
262
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.File, { size: 16, "aria-hidden": true }),
|
|
263
|
-
r.isSmart && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
264
|
-
_chunkQXXC4RX4js.SmartSparkles_default,
|
|
265
|
-
{
|
|
266
|
-
className: "mr-orig__dropdown-smart-dot",
|
|
267
|
-
"aria-label": "Smart report"
|
|
268
|
-
}
|
|
269
|
-
)
|
|
270
|
-
] }),
|
|
271
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "mr-orig__dropdown-info", children: [
|
|
272
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "mr-orig__dropdown-title-row", children: [
|
|
273
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "mr-orig__dropdown-title", children: r.title }),
|
|
274
|
-
r.isSmart && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "mr-orig__dropdown-smart-badge", children: [
|
|
275
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQXXC4RX4js.SmartSparkles_default, { "aria-hidden": true }),
|
|
276
|
-
"Smart Report"
|
|
277
|
-
] }),
|
|
278
|
-
_optionalChain([r, 'access', _20 => _20.fileType, 'optionalAccess', _21 => _21.toUpperCase, 'call', _22 => _22()]) === "HTML" && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "mr-tag-chip mr-tag-chip--html", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "mr-tag-chip__label", children: "HTML" }) })
|
|
279
|
-
] }),
|
|
280
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "mr-orig__dropdown-meta", children: [
|
|
281
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: _chunkPN7IJ5MGjs.epochToDisplay.call(void 0, r.createdAtEpoch) }),
|
|
282
|
-
r.isSmart && r.totalVitals > 0 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
283
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "mr-orig__dropdown-dot", children: "\xB7" }),
|
|
284
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { children: [
|
|
285
|
-
r.totalVitals,
|
|
286
|
-
" vitals"
|
|
287
|
-
] })
|
|
288
|
-
] }),
|
|
289
|
-
r.isSmart && r.outOfRangeVitals > 0 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
290
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "mr-orig__dropdown-dot", children: "\xB7" }),
|
|
291
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "mr-orig__dropdown-oor", children: [
|
|
292
|
-
r.outOfRangeVitals,
|
|
293
|
-
" out of range"
|
|
294
|
-
] })
|
|
295
|
-
] })
|
|
296
|
-
] })
|
|
297
|
-
] }),
|
|
298
|
-
isActive && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
299
|
-
_lucidereact.Check,
|
|
300
|
-
{
|
|
301
|
-
size: 14,
|
|
302
|
-
className: "mr-orig__dropdown-check",
|
|
303
|
-
"aria-hidden": true
|
|
304
|
-
}
|
|
305
|
-
)
|
|
306
|
-
]
|
|
307
|
-
},
|
|
308
|
-
r.id
|
|
309
|
-
);
|
|
310
|
-
}) })
|
|
311
|
-
] })
|
|
312
|
-
] }) : record ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "mr-sv__panel-info", children: [
|
|
313
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPN7IJ5MGjs.Typography, { variant: "label", as: "span", className: "mr-sv__panel-name", children: record.title }),
|
|
314
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPN7IJ5MGjs.Typography, { variant: "hint", as: "span", className: "mr-sv__panel-meta-text", children: _chunkPN7IJ5MGjs.epochToDisplay.call(void 0, record.createdAtEpoch) })
|
|
190
|
+
record ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "mr-sv__panel-info", children: [
|
|
191
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQGGLSO4Wjs.Typography, { variant: "label", as: "span", className: "mr-sv__panel-name", children: record.title }),
|
|
192
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQGGLSO4Wjs.Typography, { variant: "hint", as: "span", className: "mr-sv__panel-meta-text", children: _chunkQGGLSO4Wjs.epochToDisplay.call(void 0, record.createdAtEpoch) })
|
|
315
193
|
] }) : null,
|
|
316
194
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "mr-orig__header-actions", children: [
|
|
317
195
|
preview.isHtml && hasCopyToNote && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
@@ -329,7 +207,7 @@ function OriginalRecordPanel({
|
|
|
329
207
|
}
|
|
330
208
|
),
|
|
331
209
|
hasPreview && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
332
|
-
|
|
210
|
+
_chunkQGGLSO4Wjs.IconButton,
|
|
333
211
|
{
|
|
334
212
|
icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ExternalLink, { size: 16, "aria-hidden": true }),
|
|
335
213
|
label: "Open in new tab",
|
|
@@ -358,8 +236,8 @@ function OriginalRecordPanel({
|
|
|
358
236
|
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.LoaderCircle, { size: 44, className: "mr-sv__loading-spinner", "aria-hidden": true })
|
|
359
237
|
}
|
|
360
238
|
),
|
|
361
|
-
preview.status === "error" && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
362
|
-
preview.status === "loaded" && preview.files.length === 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
239
|
+
preview.status === "error" && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQGGLSO4Wjs.Typography, { variant: "muted", className: "mr-sv__panel-empty", children: "Failed to load document preview." }),
|
|
240
|
+
preview.status === "loaded" && preview.files.length === 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQGGLSO4Wjs.Typography, { variant: "muted", className: "mr-sv__panel-empty", children: "No preview available for this record." }),
|
|
363
241
|
hasPreview && !isSmart && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
364
242
|
"div",
|
|
365
243
|
{
|
|
@@ -369,7 +247,7 @@ function OriginalRecordPanel({
|
|
|
369
247
|
DocumentViewer,
|
|
370
248
|
{
|
|
371
249
|
files: preview.files,
|
|
372
|
-
title: _nullishCoalesce(_optionalChain([record, 'optionalAccess',
|
|
250
|
+
title: _nullishCoalesce(_optionalChain([record, 'optionalAccess', _19 => _19.title]), () => ( "")),
|
|
373
251
|
isHtml: preview.isHtml
|
|
374
252
|
}
|
|
375
253
|
) })
|
|
@@ -380,7 +258,7 @@ function OriginalRecordPanel({
|
|
|
380
258
|
DocumentViewer,
|
|
381
259
|
{
|
|
382
260
|
files: preview.files,
|
|
383
|
-
title: _nullishCoalesce(_optionalChain([record, 'optionalAccess',
|
|
261
|
+
title: _nullishCoalesce(_optionalChain([record, 'optionalAccess', _20 => _20.title]), () => ( "")),
|
|
384
262
|
isHtml: preview.isHtml
|
|
385
263
|
}
|
|
386
264
|
) }) }),
|
|
@@ -388,7 +266,7 @@ function OriginalRecordPanel({
|
|
|
388
266
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "mr-orig__smart-hdr", children: [
|
|
389
267
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "mr-orig__smart-title-row", children: [
|
|
390
268
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "mr-orig__smart-title", children: "Smart Report" }),
|
|
391
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
269
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQYUEKKMVjs.SmartSparkles_default, { className: "mr-orig__smart-title-icon", "aria-hidden": true })
|
|
392
270
|
] }),
|
|
393
271
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
394
272
|
"button",
|
|
@@ -403,7 +281,7 @@ function OriginalRecordPanel({
|
|
|
403
281
|
)
|
|
404
282
|
] }),
|
|
405
283
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
406
|
-
|
|
284
|
+
_chunkQGGLSO4Wjs.SearchInput_default,
|
|
407
285
|
{
|
|
408
286
|
className: "mr-orig__smart-search",
|
|
409
287
|
iconSize: 16,
|
|
@@ -442,7 +320,7 @@ function OriginalRecordPanel({
|
|
|
442
320
|
"aria-hidden": true
|
|
443
321
|
}
|
|
444
322
|
) }),
|
|
445
|
-
vitalsStatus === "loaded" && filteredRows.length === 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
323
|
+
vitalsStatus === "loaded" && filteredRows.length === 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQGGLSO4Wjs.Typography, { variant: "muted", className: "mr-orig__smart-empty", children: "No vitals match." }),
|
|
446
324
|
vitalsStatus === "loaded" && filteredRows.map((row, idx) => {
|
|
447
325
|
const cell = row.cells[0];
|
|
448
326
|
const isOor = row.latestStatus === "high" || row.latestStatus === "low";
|
|
@@ -557,7 +435,7 @@ function OriginalRecordPanel({
|
|
|
557
435
|
}
|
|
558
436
|
)
|
|
559
437
|
] })
|
|
560
|
-
] }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mr-orig__smart-side mr-orig__smart-side--collapsed", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
438
|
+
] }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mr-orig__smart-side mr-orig__smart-side--collapsed", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQGGLSO4Wjs.Tooltip, { content: "Show smart report", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
561
439
|
"button",
|
|
562
440
|
{
|
|
563
441
|
type: "button",
|
|
@@ -565,7 +443,7 @@ function OriginalRecordPanel({
|
|
|
565
443
|
"aria-label": "Expand smart report panel",
|
|
566
444
|
"aria-expanded": false,
|
|
567
445
|
onClick: () => setSmartPanelOpen(true),
|
|
568
|
-
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "mr-orig__smart-collapsed-icon-wrap", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
446
|
+
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "mr-orig__smart-collapsed-icon-wrap", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQYUEKKMVjs.SmartSparkles_default, { className: "mr-orig__smart-collapsed-icon", "aria-hidden": true }) })
|
|
569
447
|
}
|
|
570
448
|
) }) })
|
|
571
449
|
] })
|
|
@@ -575,10 +453,10 @@ function OriginalRecordPanel({
|
|
|
575
453
|
] });
|
|
576
454
|
}
|
|
577
455
|
function VitalReadingsExpanded({ vitalName, ekaId }) {
|
|
578
|
-
const { data: trendData, status } =
|
|
456
|
+
const { data: trendData, status } = _chunkSTQYPHI3js.useParameterTrend.call(void 0, ekaId);
|
|
579
457
|
const readings = _react.useMemo.call(void 0, () => {
|
|
580
458
|
const trend = trendData;
|
|
581
|
-
if (!_optionalChain([trend, 'optionalAccess',
|
|
459
|
+
if (!_optionalChain([trend, 'optionalAccess', _21 => _21.vitals_info, 'optionalAccess', _22 => _22.length])) return [];
|
|
582
460
|
return [...trend.vitals_info].sort((a, b) => (_nullishCoalesce(b.date, () => ( 0))) - (_nullishCoalesce(a.date, () => ( 0)))).slice(0, 3).map((info) => {
|
|
583
461
|
const dr = (_nullishCoalesce(info.display_result, () => ( ""))).toLowerCase();
|
|
584
462
|
const isOor = dr.includes("high") || dr.includes("above") || dr.includes("abnormal_high") || dr.includes("low") || dr.includes("below") || dr.includes("abnormal_low");
|
|
@@ -593,7 +471,7 @@ function VitalReadingsExpanded({ vitalName, ekaId }) {
|
|
|
593
471
|
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 }) });
|
|
594
472
|
}
|
|
595
473
|
if (status === "error" || !readings.length) {
|
|
596
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mr-orig__vital-readings", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
474
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mr-orig__vital-readings", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQGGLSO4Wjs.Typography, { variant: "muted", className: "mr-orig__vital-readings-empty", children: "No readings available" }) });
|
|
597
475
|
}
|
|
598
476
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "mr-orig__vital-readings", children: [
|
|
599
477
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "mr-orig__vital-readings-title", children: [
|
|
@@ -609,4 +487,4 @@ function VitalReadingsExpanded({ vitalName, ekaId }) {
|
|
|
609
487
|
|
|
610
488
|
|
|
611
489
|
exports.OriginalRecordPanel = OriginalRecordPanel;
|
|
612
|
-
//# sourceMappingURL=OriginalRecordPanel-
|
|
490
|
+
//# sourceMappingURL=OriginalRecordPanel-PR35G6KV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/medical-records-ui/medical-records-ui/dist/OriginalRecordPanel-PR35G6KV.js","../src/views/components/shared/OriginalRecordPanel.tsx"],"names":[],"mappings":"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","file":"/home/runner/work/medical-records-ui/medical-records-ui/dist/OriginalRecordPanel-PR35G6KV.js","sourcesContent":[null,"\"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 { toVitalNoteRows } 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(\n (r): r is RecordItem =>\n r != null &&\n (caseId === \"__ungrouped__\" ? r.cases.length === 0 : r.cases.includes(caseId)),\n )\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 const isUngrouped = caseId === \"__ungrouped__\";\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 toVitalNoteRows(selectedRows),\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 {/* Prev/next record carousel + dropdown — temporarily disabled, will re-enable later.\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\" : \"\"}{\" \"}\n {isUngrouped ? \"WITH NO CARE CONTEXT\" : \"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 {r.fileType?.toUpperCase() === \"HTML\" && (\n <span className=\"mr-tag-chip mr-tag-chip--html\">\n <span className=\"mr-tag-chip__label\">HTML</span>\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 </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 */}\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\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 || \"\").replace(/['‘’]/g, \" \"),\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"]}
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
import {
|
|
3
3
|
SmartSparkles_default,
|
|
4
4
|
toVitalNoteRows
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-22QQK3VR.mjs";
|
|
6
6
|
import {
|
|
7
7
|
useParameterTrend,
|
|
8
8
|
useRecordPanelTable,
|
|
9
9
|
useRecordPreview,
|
|
10
10
|
useSmartRecordsActions
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-7AO6M347.mjs";
|
|
12
12
|
import {
|
|
13
13
|
IconButton,
|
|
14
14
|
SearchInput_default,
|
|
@@ -16,13 +16,13 @@ import {
|
|
|
16
16
|
Typography,
|
|
17
17
|
epochToDisplay,
|
|
18
18
|
useSdk
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-NZNI6YJ5.mjs";
|
|
20
20
|
|
|
21
21
|
// src/views/components/shared/OriginalRecordPanel.tsx
|
|
22
22
|
import { lazy, Suspense, useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
23
|
-
import { ChevronLeft, ChevronRight, ChevronDown, ExternalLink, Check,
|
|
23
|
+
import { ChevronLeft, ChevronRight, ChevronDown, ExternalLink, Check, LoaderCircle } from "lucide-react";
|
|
24
24
|
import { useStore } from "zustand";
|
|
25
|
-
import {
|
|
25
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
26
26
|
var DocumentViewer = lazy(
|
|
27
27
|
() => import("./DocumentViewer-5AXKL75U.mjs").then((m) => ({
|
|
28
28
|
default: m.DocumentViewer
|
|
@@ -187,129 +187,7 @@ function OriginalRecordPanel({
|
|
|
187
187
|
/* @__PURE__ */ jsx(ChevronLeft, { size: 16, "aria-hidden": true }),
|
|
188
188
|
"Back"
|
|
189
189
|
] }),
|
|
190
|
-
|
|
191
|
-
/* @__PURE__ */ jsxs(
|
|
192
|
-
"div",
|
|
193
|
-
{
|
|
194
|
-
className: `mr-orig__nav-pill${dropdownOpen ? " mr-orig__nav-pill--open" : ""}`,
|
|
195
|
-
role: "button",
|
|
196
|
-
tabIndex: 0,
|
|
197
|
-
onClick: () => setDropdownOpen((v) => !v),
|
|
198
|
-
onKeyDown: (e) => {
|
|
199
|
-
if (e.key === "Enter" || e.key === " ") {
|
|
200
|
-
e.preventDefault();
|
|
201
|
-
setDropdownOpen((v) => !v);
|
|
202
|
-
}
|
|
203
|
-
},
|
|
204
|
-
children: [
|
|
205
|
-
/* @__PURE__ */ jsx(
|
|
206
|
-
"button",
|
|
207
|
-
{
|
|
208
|
-
type: "button",
|
|
209
|
-
className: "mr-orig__nav-chevron",
|
|
210
|
-
onClick: (e) => {
|
|
211
|
-
e.stopPropagation();
|
|
212
|
-
goPrev();
|
|
213
|
-
},
|
|
214
|
-
"aria-label": "Previous record",
|
|
215
|
-
disabled: currentIndex <= 0,
|
|
216
|
-
children: /* @__PURE__ */ jsx(ChevronLeft, { size: 14, "aria-hidden": true })
|
|
217
|
-
}
|
|
218
|
-
),
|
|
219
|
-
/* @__PURE__ */ jsxs("div", { className: "mr-orig__nav-text", children: [
|
|
220
|
-
/* @__PURE__ */ jsx("span", { className: "mr-orig__nav-title", children: record?.title ?? "Record" }),
|
|
221
|
-
/* @__PURE__ */ jsxs("span", { className: "mr-orig__nav-counter", children: [
|
|
222
|
-
currentIndex + 1,
|
|
223
|
-
" of ",
|
|
224
|
-
total
|
|
225
|
-
] })
|
|
226
|
-
] }),
|
|
227
|
-
/* @__PURE__ */ jsx(
|
|
228
|
-
"button",
|
|
229
|
-
{
|
|
230
|
-
type: "button",
|
|
231
|
-
className: "mr-orig__nav-chevron",
|
|
232
|
-
onClick: (e) => {
|
|
233
|
-
e.stopPropagation();
|
|
234
|
-
goNext();
|
|
235
|
-
},
|
|
236
|
-
"aria-label": "Next record",
|
|
237
|
-
disabled: currentIndex >= total - 1,
|
|
238
|
-
children: /* @__PURE__ */ jsx(ChevronRight, { size: 14, "aria-hidden": true })
|
|
239
|
-
}
|
|
240
|
-
)
|
|
241
|
-
]
|
|
242
|
-
}
|
|
243
|
-
),
|
|
244
|
-
dropdownOpen && /* @__PURE__ */ jsxs("div", { className: "mr-orig__dropdown", children: [
|
|
245
|
-
/* @__PURE__ */ jsxs("div", { className: "mr-orig__dropdown-eyebrow", children: [
|
|
246
|
-
total,
|
|
247
|
-
" RECORD",
|
|
248
|
-
total !== 1 ? "S" : "",
|
|
249
|
-
" ",
|
|
250
|
-
isUngrouped ? "WITH NO CARE CONTEXT" : "FOUND IN THIS ENCOUNTER"
|
|
251
|
-
] }),
|
|
252
|
-
/* @__PURE__ */ jsx("div", { className: "mr-orig__dropdown-list", children: caseRecords.map((r) => {
|
|
253
|
-
const isActive = r.id === recordId;
|
|
254
|
-
return /* @__PURE__ */ jsxs(
|
|
255
|
-
"button",
|
|
256
|
-
{
|
|
257
|
-
type: "button",
|
|
258
|
-
className: `mr-orig__dropdown-item${isActive ? " mr-orig__dropdown-item--active" : ""}`,
|
|
259
|
-
onClick: () => goTo(r),
|
|
260
|
-
children: [
|
|
261
|
-
/* @__PURE__ */ jsxs("div", { className: "mr-orig__dropdown-icon", children: [
|
|
262
|
-
/* @__PURE__ */ jsx(File, { size: 16, "aria-hidden": true }),
|
|
263
|
-
r.isSmart && /* @__PURE__ */ jsx(
|
|
264
|
-
SmartSparkles_default,
|
|
265
|
-
{
|
|
266
|
-
className: "mr-orig__dropdown-smart-dot",
|
|
267
|
-
"aria-label": "Smart report"
|
|
268
|
-
}
|
|
269
|
-
)
|
|
270
|
-
] }),
|
|
271
|
-
/* @__PURE__ */ jsxs("div", { className: "mr-orig__dropdown-info", children: [
|
|
272
|
-
/* @__PURE__ */ jsxs("div", { className: "mr-orig__dropdown-title-row", children: [
|
|
273
|
-
/* @__PURE__ */ jsx("span", { className: "mr-orig__dropdown-title", children: r.title }),
|
|
274
|
-
r.isSmart && /* @__PURE__ */ jsxs("span", { className: "mr-orig__dropdown-smart-badge", children: [
|
|
275
|
-
/* @__PURE__ */ jsx(SmartSparkles_default, { "aria-hidden": true }),
|
|
276
|
-
"Smart Report"
|
|
277
|
-
] }),
|
|
278
|
-
r.fileType?.toUpperCase() === "HTML" && /* @__PURE__ */ jsx("span", { className: "mr-tag-chip mr-tag-chip--html", children: /* @__PURE__ */ jsx("span", { className: "mr-tag-chip__label", children: "HTML" }) })
|
|
279
|
-
] }),
|
|
280
|
-
/* @__PURE__ */ jsxs("div", { className: "mr-orig__dropdown-meta", children: [
|
|
281
|
-
/* @__PURE__ */ jsx("span", { children: epochToDisplay(r.createdAtEpoch) }),
|
|
282
|
-
r.isSmart && r.totalVitals > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
283
|
-
/* @__PURE__ */ jsx("span", { className: "mr-orig__dropdown-dot", children: "\xB7" }),
|
|
284
|
-
/* @__PURE__ */ jsxs("span", { children: [
|
|
285
|
-
r.totalVitals,
|
|
286
|
-
" vitals"
|
|
287
|
-
] })
|
|
288
|
-
] }),
|
|
289
|
-
r.isSmart && r.outOfRangeVitals > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
290
|
-
/* @__PURE__ */ jsx("span", { className: "mr-orig__dropdown-dot", children: "\xB7" }),
|
|
291
|
-
/* @__PURE__ */ jsxs("span", { className: "mr-orig__dropdown-oor", children: [
|
|
292
|
-
r.outOfRangeVitals,
|
|
293
|
-
" out of range"
|
|
294
|
-
] })
|
|
295
|
-
] })
|
|
296
|
-
] })
|
|
297
|
-
] }),
|
|
298
|
-
isActive && /* @__PURE__ */ jsx(
|
|
299
|
-
Check,
|
|
300
|
-
{
|
|
301
|
-
size: 14,
|
|
302
|
-
className: "mr-orig__dropdown-check",
|
|
303
|
-
"aria-hidden": true
|
|
304
|
-
}
|
|
305
|
-
)
|
|
306
|
-
]
|
|
307
|
-
},
|
|
308
|
-
r.id
|
|
309
|
-
);
|
|
310
|
-
}) })
|
|
311
|
-
] })
|
|
312
|
-
] }) : record ? /* @__PURE__ */ jsxs("div", { className: "mr-sv__panel-info", children: [
|
|
190
|
+
record ? /* @__PURE__ */ jsxs("div", { className: "mr-sv__panel-info", children: [
|
|
313
191
|
/* @__PURE__ */ jsx(Typography, { variant: "label", as: "span", className: "mr-sv__panel-name", children: record.title }),
|
|
314
192
|
/* @__PURE__ */ jsx(Typography, { variant: "hint", as: "span", className: "mr-sv__panel-meta-text", children: epochToDisplay(record.createdAtEpoch) })
|
|
315
193
|
] }) : null,
|
|
@@ -609,4 +487,4 @@ function VitalReadingsExpanded({ vitalName, ekaId }) {
|
|
|
609
487
|
export {
|
|
610
488
|
OriginalRecordPanel
|
|
611
489
|
};
|
|
612
|
-
//# sourceMappingURL=OriginalRecordPanel-
|
|
490
|
+
//# sourceMappingURL=OriginalRecordPanel-QYGV744W.mjs.map
|