@mindbill/react 0.33.0 → 0.35.0
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/README.md +23 -0
- package/dist/index.d.ts +103 -4
- package/dist/index.js +1021 -484
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
// src/index.tsx
|
|
4
4
|
import "@mindbill/embed";
|
|
5
|
-
import { createElement, useEffect as
|
|
5
|
+
import { createElement, useEffect as useEffect9, useRef as useRef6 } from "react";
|
|
6
6
|
|
|
7
7
|
// src/appearance.ts
|
|
8
8
|
var mindBillThemePresets = {
|
|
@@ -1315,6 +1315,17 @@ function formatSendRouteFax(raw) {
|
|
|
1315
1315
|
if (ten.length === 10) return `(${ten.slice(0, 3)}) ${ten.slice(3, 6)}-${ten.slice(6)}`;
|
|
1316
1316
|
return raw.trim();
|
|
1317
1317
|
}
|
|
1318
|
+
function formatSendRouteFaxInput(raw) {
|
|
1319
|
+
const trimmed = raw.trimStart();
|
|
1320
|
+
if (trimmed.startsWith("+")) return raw;
|
|
1321
|
+
const all = trimmed.replace(/\D/g, "");
|
|
1322
|
+
const digits = all.length === 11 && all.startsWith("1") ? all.slice(1) : all;
|
|
1323
|
+
if (digits.length > 10 || all.length === 11 && !all.startsWith("1") || all.length > 11) return raw;
|
|
1324
|
+
if (digits.length === 0) return "";
|
|
1325
|
+
if (digits.length <= 3) return `(${digits}`;
|
|
1326
|
+
if (digits.length <= 6) return `(${digits.slice(0, 3)}) ${digits.slice(3)}`;
|
|
1327
|
+
return `(${digits.slice(0, 3)}) ${digits.slice(3, 6)}-${digits.slice(6)}`;
|
|
1328
|
+
}
|
|
1318
1329
|
var css = `
|
|
1319
1330
|
.mbrd-overlay{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:20px;background:rgba(15,30,40,.45)}
|
|
1320
1331
|
.mbrd{display:grid;gap:16px;width:min(560px,100%);max-height:min(86vh,860px);overflow:auto;overscroll-behavior:contain;padding:24px;border:1px solid var(--mb-border);border-radius:var(--mb-radius);background:var(--mb-surface);color:var(--mb-text);font-family:var(--mb-font);font-size:15px;box-shadow:0 24px 60px rgba(17,38,49,.28)}
|
|
@@ -1451,6 +1462,8 @@ function SendRouteDialog({
|
|
|
1451
1462
|
const [faxMode, setFaxMode] = useState3(onFileFax ? "onfile" : "alt");
|
|
1452
1463
|
const [emailTo, setEmailTo] = useState3("");
|
|
1453
1464
|
const [subject, setSubject] = useState3("");
|
|
1465
|
+
const [message, setMessage] = useState3("");
|
|
1466
|
+
const [ccInput, setCcInput] = useState3("");
|
|
1454
1467
|
const [faxTo, setFaxTo] = useState3("");
|
|
1455
1468
|
const [attention, setAttention] = useState3("");
|
|
1456
1469
|
const [mailTo, setMailTo] = useState3(onFileMail);
|
|
@@ -1471,15 +1484,19 @@ function SendRouteDialog({
|
|
|
1471
1484
|
const effectiveFax = faxMode === "onfile" && onFileFax ? onFileFax : faxTo;
|
|
1472
1485
|
const faxDigits = effectiveFax.replace(/\D/g, "");
|
|
1473
1486
|
const emailValid = EMAIL_RE.test(effectiveEmail);
|
|
1487
|
+
const ccList = ccInput.split(/[,;]/).map((entry) => entry.trim()).filter(Boolean);
|
|
1488
|
+
const ccValid = ccList.every((entry) => EMAIL_RE.test(entry));
|
|
1474
1489
|
const faxValid = faxDigits.length >= 10;
|
|
1475
1490
|
const mailValid = mailTo.trim().length > 2;
|
|
1476
|
-
const confirmDisabled = submitting || disabled || route === "email" && !emailValid || route === "fax" && !faxValid || route === "mail" && !mailValid;
|
|
1491
|
+
const confirmDisabled = submitting || disabled || route === "email" && (!emailValid || !ccValid) || route === "fax" && !faxValid || route === "mail" && !mailValid;
|
|
1477
1492
|
const submission = useMemo2(() => {
|
|
1478
1493
|
if (route === "email") {
|
|
1479
1494
|
return {
|
|
1480
1495
|
route,
|
|
1481
1496
|
destination: { email: effectiveEmail },
|
|
1482
|
-
...subject.trim() ? { subject: subject.trim() } : {}
|
|
1497
|
+
...subject.trim() ? { subject: subject.trim() } : {},
|
|
1498
|
+
...message.trim() ? { note: message.trim() } : {},
|
|
1499
|
+
...ccList.length ? { cc: ccList } : {}
|
|
1483
1500
|
};
|
|
1484
1501
|
}
|
|
1485
1502
|
if (route === "fax") {
|
|
@@ -1493,7 +1510,7 @@ function SendRouteDialog({
|
|
|
1493
1510
|
return { route, destination: { mailingAddress: mailTo.trim() } };
|
|
1494
1511
|
}
|
|
1495
1512
|
return { route };
|
|
1496
|
-
}, [route, effectiveEmail, subject, effectiveFax, attention, mailTo]);
|
|
1513
|
+
}, [route, effectiveEmail, subject, message, ccInput, effectiveFax, attention, mailTo]);
|
|
1497
1514
|
return /* @__PURE__ */ jsxs3("div", { className: "mbrd-overlay", role: "presentation", onMouseDown: (event) => {
|
|
1498
1515
|
if (event.target === event.currentTarget && !submitting) onCancel();
|
|
1499
1516
|
}, children: [
|
|
@@ -1506,8 +1523,8 @@ function SendRouteDialog({
|
|
|
1506
1523
|
] }),
|
|
1507
1524
|
/* @__PURE__ */ jsx3("button", { className: "mbrd-close", type: "button", "aria-label": "Close", disabled: submitting, onClick: onCancel, children: "\xD7" })
|
|
1508
1525
|
] }),
|
|
1509
|
-
/* @__PURE__ */
|
|
1510
|
-
ebillOption ? /* @__PURE__ */ jsx3(
|
|
1526
|
+
/* @__PURE__ */ jsx3("div", { className: "mbrd-cards", role: "radiogroup", "aria-label": "Delivery method", children: (() => {
|
|
1527
|
+
const ebillCard = ebillOption ? /* @__PURE__ */ jsx3(
|
|
1511
1528
|
RouteCard,
|
|
1512
1529
|
{
|
|
1513
1530
|
selected: route === "ebill",
|
|
@@ -1521,9 +1538,10 @@ function SendRouteDialog({
|
|
|
1521
1538
|
recommendedRoute === "ebill" ? /* @__PURE__ */ jsx3("span", { className: "mbrd-badge", "data-tone": "auto", children: "Auto" }) : null
|
|
1522
1539
|
] }),
|
|
1523
1540
|
onSelect: () => setRoute("ebill")
|
|
1524
|
-
}
|
|
1525
|
-
|
|
1526
|
-
|
|
1541
|
+
},
|
|
1542
|
+
"ebill"
|
|
1543
|
+
) : null;
|
|
1544
|
+
const emailCard = /* @__PURE__ */ jsxs3(
|
|
1527
1545
|
RouteCard,
|
|
1528
1546
|
{
|
|
1529
1547
|
selected: route === "email",
|
|
@@ -1560,14 +1578,24 @@ function SendRouteDialog({
|
|
|
1560
1578
|
}
|
|
1561
1579
|
)
|
|
1562
1580
|
] }),
|
|
1581
|
+
/* @__PURE__ */ jsxs3("label", { className: "mbrd-field", children: [
|
|
1582
|
+
/* @__PURE__ */ jsx3("span", { className: "mbrd-label", children: "Cc \u2014 optional" }),
|
|
1583
|
+
/* @__PURE__ */ jsx3("input", { className: "mbrd-input", value: ccInput, placeholder: "adjuster@payer.com, supervisor@payer.com", onChange: (event) => setCcInput(event.target.value) }),
|
|
1584
|
+
!ccValid ? /* @__PURE__ */ jsx3("span", { className: "mbrd-error", children: "Each Cc entry must be a valid email address (separate with commas)." }) : null
|
|
1585
|
+
] }),
|
|
1563
1586
|
/* @__PURE__ */ jsxs3("label", { className: "mbrd-field", children: [
|
|
1564
1587
|
/* @__PURE__ */ jsx3("span", { className: "mbrd-label", children: "Email subject \u2014 optional" }),
|
|
1565
1588
|
/* @__PURE__ */ jsx3("input", { className: "mbrd-input", value: subject, maxLength: 255, onChange: (event) => setSubject(event.target.value) })
|
|
1589
|
+
] }),
|
|
1590
|
+
/* @__PURE__ */ jsxs3("label", { className: "mbrd-field", children: [
|
|
1591
|
+
/* @__PURE__ */ jsx3("span", { className: "mbrd-label", children: "Message \u2014 optional" }),
|
|
1592
|
+
/* @__PURE__ */ jsx3("textarea", { className: "mbrd-textarea", value: message, maxLength: 5e3, placeholder: "Added at the top of the email body, above the bill summary.", onChange: (event) => setMessage(event.target.value) })
|
|
1566
1593
|
] })
|
|
1567
1594
|
]
|
|
1568
|
-
}
|
|
1569
|
-
|
|
1570
|
-
|
|
1595
|
+
},
|
|
1596
|
+
"email"
|
|
1597
|
+
);
|
|
1598
|
+
const faxCard = /* @__PURE__ */ jsxs3(
|
|
1571
1599
|
RouteCard,
|
|
1572
1600
|
{
|
|
1573
1601
|
selected: route === "fax",
|
|
@@ -1598,7 +1626,7 @@ function SendRouteDialog({
|
|
|
1598
1626
|
"Alternative fax number ",
|
|
1599
1627
|
/* @__PURE__ */ jsx3("span", { className: "mbrd-star", children: "*" })
|
|
1600
1628
|
] }),
|
|
1601
|
-
/* @__PURE__ */ jsx3("input", { className: "mbrd-input", inputMode: "tel", value: faxTo, placeholder: "(000) 000-0000", onChange: (event) => setFaxTo(event.target.value) }),
|
|
1629
|
+
/* @__PURE__ */ jsx3("input", { className: "mbrd-input", inputMode: "tel", value: faxTo, placeholder: "(000) 000-0000", onChange: (event) => setFaxTo(formatSendRouteFaxInput(event.target.value)) }),
|
|
1602
1630
|
faxTo.trim() && faxTo.replace(/\D/g, "").length < 10 ? /* @__PURE__ */ jsx3("span", { className: "mbrd-error", children: "Enter a valid fax number (10 digits)." }) : null
|
|
1603
1631
|
] })
|
|
1604
1632
|
}
|
|
@@ -1610,9 +1638,10 @@ function SendRouteDialog({
|
|
|
1610
1638
|
/* @__PURE__ */ jsx3("span", { className: "mbrd-help", children: "Printed as ATTENTION on the fax cover sheet." })
|
|
1611
1639
|
] })
|
|
1612
1640
|
]
|
|
1613
|
-
}
|
|
1614
|
-
|
|
1615
|
-
|
|
1641
|
+
},
|
|
1642
|
+
"fax"
|
|
1643
|
+
);
|
|
1644
|
+
const mailCard = /* @__PURE__ */ jsx3(
|
|
1616
1645
|
RouteCard,
|
|
1617
1646
|
{
|
|
1618
1647
|
selected: route === "mail",
|
|
@@ -1629,9 +1658,18 @@ function SendRouteDialog({
|
|
|
1629
1658
|
!mailValid ? /* @__PURE__ */ jsx3("span", { className: "mbrd-error", children: "Enter a mailing address." }) : null,
|
|
1630
1659
|
/* @__PURE__ */ jsx3("span", { className: "mbrd-help", children: mailOption?.printAndMail ? mailOption.detail : "Sent as physical mail \u2014 printed and mailed to this address." })
|
|
1631
1660
|
] })
|
|
1632
|
-
}
|
|
1633
|
-
|
|
1634
|
-
|
|
1661
|
+
},
|
|
1662
|
+
"mail"
|
|
1663
|
+
);
|
|
1664
|
+
const cards = [];
|
|
1665
|
+
if (ebillCard) cards.push(ebillCard);
|
|
1666
|
+
if (onFileFax) cards.push(faxCard);
|
|
1667
|
+
if (onFileEmail) cards.push(emailCard);
|
|
1668
|
+
cards.push(mailCard);
|
|
1669
|
+
if (!onFileFax) cards.push(faxCard);
|
|
1670
|
+
if (!onFileEmail) cards.push(emailCard);
|
|
1671
|
+
return cards;
|
|
1672
|
+
})() }),
|
|
1635
1673
|
error ? /* @__PURE__ */ jsx3("div", { className: "mbrd-alert", role: "alert", children: error }) : null,
|
|
1636
1674
|
/* @__PURE__ */ jsxs3("div", { className: "mbrd-actions", children: [
|
|
1637
1675
|
/* @__PURE__ */ jsx3("button", { className: "mbrd-cancel", type: "button", disabled: submitting, onClick: onCancel, children: "Cancel" }),
|
|
@@ -3281,19 +3319,509 @@ function BillStatusAgingMatrix({
|
|
|
3281
3319
|
] });
|
|
3282
3320
|
}
|
|
3283
3321
|
|
|
3322
|
+
// src/bill-tasks-dashboard.tsx
|
|
3323
|
+
import {
|
|
3324
|
+
BILL_TASKS_AGING_BUCKETS
|
|
3325
|
+
} from "@mindbill/browser";
|
|
3326
|
+
import {
|
|
3327
|
+
BILL_TASKS_AGING_BUCKETS as BILL_TASKS_AGING_BUCKETS2,
|
|
3328
|
+
billTasksAgingBucketIndex,
|
|
3329
|
+
buildBillTasksDashboard
|
|
3330
|
+
} from "@mindbill/browser";
|
|
3331
|
+
import { Fragment as Fragment5, jsx as jsx7, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
3332
|
+
var TONES = {
|
|
3333
|
+
violet: "#7c53c3",
|
|
3334
|
+
red: "#cf4437",
|
|
3335
|
+
blue: "#2f7fd1",
|
|
3336
|
+
green: "#2c9a5b",
|
|
3337
|
+
amber: "#d9931f",
|
|
3338
|
+
neutral: "#8195a1"
|
|
3339
|
+
};
|
|
3340
|
+
var BUCKET_PILL_BASES = ["#2c9a5b", "#1f9aa8", "#dcbb28", "#e08a2e", "#d75d8a"];
|
|
3341
|
+
var css5 = `
|
|
3342
|
+
.mbtk{color:var(--mb-text);font-family:var(--mb-font);font-size:14px}.mbtk *{box-sizing:border-box}.mbtk h2,.mbtk p{margin:0}
|
|
3343
|
+
.mbtk-heading{margin-bottom:14px}.mbtk-heading h2{font-size:24px}
|
|
3344
|
+
.mbtk-toolbar{margin-bottom:14px}
|
|
3345
|
+
.mbtk-section{margin-bottom:16px;border:1.5px solid var(--mbtk-tone,var(--mb-border));border-radius:var(--mb-radius);background:var(--mb-surface);box-shadow:var(--mb-shadow);overflow:hidden}
|
|
3346
|
+
.mbtk-section.is-grand{border-color:var(--mb-border)}
|
|
3347
|
+
.mbtk-grid{display:grid;grid-template-columns:var(--mbtk-cols);gap:0 10px;align-items:center;padding:0 16px}
|
|
3348
|
+
.mbtk-head{padding:12px 16px;border-bottom:1px solid color-mix(in srgb,var(--mbtk-tone,var(--mb-border)) 22%,var(--mb-border))}
|
|
3349
|
+
.mbtk-title{display:flex;align-items:center;gap:9px;min-width:0}
|
|
3350
|
+
.mbtk-dot{flex:0 0 auto;width:11px;height:11px;border-radius:50%;background:var(--mbtk-tone,var(--mb-muted))}
|
|
3351
|
+
.mbtk-title-text{min-width:0}
|
|
3352
|
+
.mbtk-title-text strong{display:block;font-size:15.5px;line-height:1.3}
|
|
3353
|
+
.mbtk-basis{display:block;color:var(--mb-muted);font-size:12px;line-height:1.35}
|
|
3354
|
+
.mbtk-pill{justify-self:stretch;padding:5px 6px;border-radius:999px;background:color-mix(in srgb,var(--mbtk-pill) 20%,var(--mb-surface));color:color-mix(in srgb,var(--mbtk-pill) 62%,var(--mb-text));font-size:11px;font-weight:750;line-height:1.25;text-align:center;white-space:nowrap}
|
|
3355
|
+
.mbtk-colhead{justify-self:stretch;color:var(--mb-muted);font-size:11px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;text-align:center;white-space:nowrap}
|
|
3356
|
+
.mbtk-row{border-top:1px solid color-mix(in srgb,var(--mb-border) 60%,transparent);min-height:44px}
|
|
3357
|
+
.mbtk-row:first-of-type{border-top:0}
|
|
3358
|
+
.mbtk-rowlabel{color:var(--mb-muted);font-size:13px;line-height:1.35;padding:9px 0;overflow-wrap:anywhere}
|
|
3359
|
+
.mbtk-count{text-align:center;font-variant-numeric:tabular-nums}
|
|
3360
|
+
.mbtk-zero{color:var(--mb-muted)}
|
|
3361
|
+
.mbtk-link{border:0;background:none;padding:6px 8px;color:var(--mb-accent);font:inherit;font-weight:750;font-variant-numeric:tabular-nums;cursor:pointer;border-radius:6px}
|
|
3362
|
+
.mbtk-link:hover{text-decoration:underline;background:color-mix(in srgb,var(--mb-accent) 8%,transparent)}
|
|
3363
|
+
.mbtk-total{text-align:center}
|
|
3364
|
+
.mbtk-totals{background:var(--mb-soft);border-top:1px solid var(--mb-border);font-weight:760}
|
|
3365
|
+
.mbtk-totals .mbtk-rowlabel{color:var(--mb-text);font-weight:760}
|
|
3366
|
+
.mbtk-empty{padding:22px 16px;color:var(--mb-muted);text-align:center}
|
|
3367
|
+
.mbtk-grand .mbtk-rowlabel{color:var(--mb-text);font-size:14px;font-weight:800}
|
|
3368
|
+
.mbtk-grand{min-height:52px}
|
|
3369
|
+
.mbtk-footnote{margin-top:12px;color:var(--mb-muted);font-size:12.5px}
|
|
3370
|
+
@media(max-width:760px){.mbtk-pill,.mbtk-colhead,.mbtk-count{display:none}.mbtk-grid{grid-template-columns:minmax(0,1fr) auto}}
|
|
3371
|
+
`;
|
|
3372
|
+
function cellButton(key, count, className, label, onSelect) {
|
|
3373
|
+
if (count > 0 && onSelect) {
|
|
3374
|
+
return /* @__PURE__ */ jsx7("span", { className, children: /* @__PURE__ */ jsx7("button", { type: "button", className: "mbtk-link", "aria-label": label, onClick: onSelect, children: count }) }, key);
|
|
3375
|
+
}
|
|
3376
|
+
return /* @__PURE__ */ jsx7("span", { className: `${className}${count === 0 ? " mbtk-zero" : ""}`, children: count }, key);
|
|
3377
|
+
}
|
|
3378
|
+
function TaskRow({
|
|
3379
|
+
sectionId,
|
|
3380
|
+
row,
|
|
3381
|
+
buckets,
|
|
3382
|
+
onSelectCell
|
|
3383
|
+
}) {
|
|
3384
|
+
const allRefs = row.refs.flat();
|
|
3385
|
+
return /* @__PURE__ */ jsxs7("div", { className: "mbtk-grid mbtk-row", children: [
|
|
3386
|
+
/* @__PURE__ */ jsx7("span", { className: "mbtk-rowlabel", children: row.label }),
|
|
3387
|
+
buckets.map((bucket, index) => {
|
|
3388
|
+
const count = row.counts[index] ?? 0;
|
|
3389
|
+
return cellButton(
|
|
3390
|
+
bucket.id,
|
|
3391
|
+
count,
|
|
3392
|
+
"mbtk-count",
|
|
3393
|
+
`${row.label} \xB7 ${bucket.label}: ${count} tasks`,
|
|
3394
|
+
onSelectCell ? () => onSelectCell({ sectionId, rowId: row.id, bucketId: bucket.id, refs: row.refs[index] ?? [], count }) : null
|
|
3395
|
+
);
|
|
3396
|
+
}),
|
|
3397
|
+
cellButton(
|
|
3398
|
+
"task-total",
|
|
3399
|
+
row.total,
|
|
3400
|
+
"mbtk-total",
|
|
3401
|
+
`${row.label} \xB7 all ages: ${row.total} tasks`,
|
|
3402
|
+
onSelectCell ? () => onSelectCell({ sectionId, rowId: row.id, bucketId: null, refs: allRefs, count: row.total }) : null
|
|
3403
|
+
)
|
|
3404
|
+
] });
|
|
3405
|
+
}
|
|
3406
|
+
function SectionCard({
|
|
3407
|
+
section,
|
|
3408
|
+
buckets,
|
|
3409
|
+
emptyLabel,
|
|
3410
|
+
onSelectCell
|
|
3411
|
+
}) {
|
|
3412
|
+
return /* @__PURE__ */ jsxs7(
|
|
3413
|
+
"section",
|
|
3414
|
+
{
|
|
3415
|
+
className: "mbtk-section",
|
|
3416
|
+
style: { "--mbtk-tone": TONES[section.tone] },
|
|
3417
|
+
"aria-label": section.label,
|
|
3418
|
+
children: [
|
|
3419
|
+
/* @__PURE__ */ jsxs7("div", { className: "mbtk-grid mbtk-head", children: [
|
|
3420
|
+
/* @__PURE__ */ jsxs7("span", { className: "mbtk-title", children: [
|
|
3421
|
+
/* @__PURE__ */ jsx7("i", { className: "mbtk-dot", "aria-hidden": "true" }),
|
|
3422
|
+
/* @__PURE__ */ jsxs7("span", { className: "mbtk-title-text", children: [
|
|
3423
|
+
/* @__PURE__ */ jsx7("strong", { children: section.label }),
|
|
3424
|
+
/* @__PURE__ */ jsxs7("span", { className: "mbtk-basis", children: [
|
|
3425
|
+
"by ",
|
|
3426
|
+
section.agingBasisLabel
|
|
3427
|
+
] })
|
|
3428
|
+
] })
|
|
3429
|
+
] }),
|
|
3430
|
+
buckets.map((bucket, index) => /* @__PURE__ */ jsx7(
|
|
3431
|
+
"span",
|
|
3432
|
+
{
|
|
3433
|
+
className: "mbtk-pill",
|
|
3434
|
+
style: { "--mbtk-pill": BUCKET_PILL_BASES[index % BUCKET_PILL_BASES.length] },
|
|
3435
|
+
children: bucket.label
|
|
3436
|
+
},
|
|
3437
|
+
bucket.id
|
|
3438
|
+
)),
|
|
3439
|
+
/* @__PURE__ */ jsx7("span", { className: "mbtk-colhead", children: "Task Total" })
|
|
3440
|
+
] }),
|
|
3441
|
+
section.empty ? /* @__PURE__ */ jsx7("p", { className: "mbtk-empty", children: emptyLabel }) : /* @__PURE__ */ jsxs7(Fragment5, { children: [
|
|
3442
|
+
section.rows.map((row) => /* @__PURE__ */ jsx7(TaskRow, { sectionId: section.id, row, buckets, onSelectCell }, row.id)),
|
|
3443
|
+
/* @__PURE__ */ jsxs7("div", { className: "mbtk-grid mbtk-row mbtk-totals", children: [
|
|
3444
|
+
/* @__PURE__ */ jsx7("span", { className: "mbtk-rowlabel", children: "Total" }),
|
|
3445
|
+
buckets.map((bucket, index) => /* @__PURE__ */ jsx7("span", { className: "mbtk-count", children: section.totals[index] ?? 0 }, bucket.id)),
|
|
3446
|
+
/* @__PURE__ */ jsx7("span", { className: "mbtk-total", children: section.total })
|
|
3447
|
+
] })
|
|
3448
|
+
] })
|
|
3449
|
+
]
|
|
3450
|
+
}
|
|
3451
|
+
);
|
|
3452
|
+
}
|
|
3453
|
+
function BillTasksDashboard({
|
|
3454
|
+
data,
|
|
3455
|
+
buckets = BILL_TASKS_AGING_BUCKETS,
|
|
3456
|
+
heading,
|
|
3457
|
+
grandTotalLabel = "Bill Tasks Total",
|
|
3458
|
+
emptyLabel = "No Tasks",
|
|
3459
|
+
onSelectCell,
|
|
3460
|
+
toolbar,
|
|
3461
|
+
footnote,
|
|
3462
|
+
appearance,
|
|
3463
|
+
className = "",
|
|
3464
|
+
style
|
|
3465
|
+
}) {
|
|
3466
|
+
const columns = `minmax(150px,1.6fr) repeat(${buckets.length},minmax(84px,1fr)) minmax(84px,1fr)`;
|
|
3467
|
+
return /* @__PURE__ */ jsxs7(
|
|
3468
|
+
"div",
|
|
3469
|
+
{
|
|
3470
|
+
className: `mbtk ${className}`.trim(),
|
|
3471
|
+
style: { ...mindBillAppearanceStyle(appearance), "--mbtk-cols": columns, ...style },
|
|
3472
|
+
children: [
|
|
3473
|
+
/* @__PURE__ */ jsx7("style", { children: css5 }),
|
|
3474
|
+
heading ? /* @__PURE__ */ jsx7("div", { className: "mbtk-heading", children: typeof heading === "string" ? /* @__PURE__ */ jsx7("h2", { children: heading }) : heading }) : null,
|
|
3475
|
+
toolbar ? /* @__PURE__ */ jsx7("div", { className: "mbtk-toolbar", children: toolbar }) : null,
|
|
3476
|
+
data.sections.map((section) => /* @__PURE__ */ jsx7(
|
|
3477
|
+
SectionCard,
|
|
3478
|
+
{
|
|
3479
|
+
section,
|
|
3480
|
+
buckets,
|
|
3481
|
+
emptyLabel,
|
|
3482
|
+
onSelectCell
|
|
3483
|
+
},
|
|
3484
|
+
section.id
|
|
3485
|
+
)),
|
|
3486
|
+
/* @__PURE__ */ jsx7("section", { className: "mbtk-section is-grand", "aria-label": grandTotalLabel, children: /* @__PURE__ */ jsxs7("div", { className: "mbtk-grid mbtk-row mbtk-grand mbtk-totals", children: [
|
|
3487
|
+
/* @__PURE__ */ jsx7("span", { className: "mbtk-rowlabel", children: grandTotalLabel }),
|
|
3488
|
+
buckets.map((bucket, index) => /* @__PURE__ */ jsx7("span", { className: "mbtk-count", children: data.grandTotals[index] ?? 0 }, bucket.id)),
|
|
3489
|
+
/* @__PURE__ */ jsx7("span", { className: "mbtk-total", children: data.grandTotal })
|
|
3490
|
+
] }) }),
|
|
3491
|
+
footnote ? /* @__PURE__ */ jsx7("p", { className: "mbtk-footnote", children: footnote }) : null
|
|
3492
|
+
]
|
|
3493
|
+
}
|
|
3494
|
+
);
|
|
3495
|
+
}
|
|
3496
|
+
|
|
3497
|
+
// src/bill-submissions-ribbon.tsx
|
|
3498
|
+
import { Fragment as Fragment6, jsx as jsx8, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
3499
|
+
function billSubmissionsRibbonDeliveryLabel(summary) {
|
|
3500
|
+
if (/electronically sent/i.test(summary)) return "e-Bill (837)";
|
|
3501
|
+
if (/faxed/i.test(summary)) return "Fax";
|
|
3502
|
+
if (/emailed/i.test(summary)) return "Email";
|
|
3503
|
+
if (/mailed/i.test(summary)) return "Mail";
|
|
3504
|
+
return "Sent";
|
|
3505
|
+
}
|
|
3506
|
+
function ribbonDate(iso) {
|
|
3507
|
+
const parsed = new Date(iso);
|
|
3508
|
+
if (Number.isNaN(parsed.getTime())) return iso;
|
|
3509
|
+
return new Intl.DateTimeFormat("en-US", { month: "2-digit", day: "2-digit", year: "numeric" }).format(parsed);
|
|
3510
|
+
}
|
|
3511
|
+
function billSubmissionsRibbonFromHistory(history) {
|
|
3512
|
+
return history.filter((entry) => entry.kind === "submission").map((entry) => ({
|
|
3513
|
+
id: entry.id,
|
|
3514
|
+
label: entry.action,
|
|
3515
|
+
meta: [
|
|
3516
|
+
{ label: "Delivery", value: billSubmissionsRibbonDeliveryLabel(entry.summary) },
|
|
3517
|
+
{ label: "Sent", value: ribbonDate(entry.date) }
|
|
3518
|
+
]
|
|
3519
|
+
}));
|
|
3520
|
+
}
|
|
3521
|
+
var css6 = `
|
|
3522
|
+
.mbsr{display:flex;gap:10px;overflow-x:auto;padding-bottom:4px;color:var(--mb-text);font-family:var(--mb-font);font-size:13px}
|
|
3523
|
+
.mbsr *{box-sizing:border-box}
|
|
3524
|
+
.mbsr-chip{flex:0 0 auto;display:grid;gap:7px;min-width:180px;max-width:280px;padding:11px 13px;border:1px solid var(--mb-border);border-radius:var(--mb-control-radius);background:var(--mb-surface);color:inherit;font:inherit;text-align:left;text-decoration:none;cursor:pointer}
|
|
3525
|
+
.mbsr-chip:hover{border-color:var(--mb-accent)}
|
|
3526
|
+
.mbsr-chip[data-active=true]{border-color:var(--mb-accent);background:color-mix(in srgb,var(--mb-accent) 7%,var(--mb-surface));box-shadow:0 0 0 1px var(--mb-accent) inset}
|
|
3527
|
+
.mbsr-top{display:flex;align-items:center;gap:8px;min-width:0}
|
|
3528
|
+
.mbsr-label{font-size:13.5px;font-weight:760;line-height:1.3;overflow-wrap:anywhere}
|
|
3529
|
+
.mbsr-badge{flex:0 0 auto;padding:2px 8px;border:1px solid color-mix(in srgb,var(--mb-warning) 55%,var(--mb-border));border-radius:999px;background:color-mix(in srgb,var(--mb-warning) 12%,var(--mb-surface));font-size:11px;font-weight:700;white-space:nowrap}
|
|
3530
|
+
.mbsr-meta{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,auto);gap:2px 14px;justify-content:start}
|
|
3531
|
+
.mbsr-meta>span{display:grid;gap:1px;min-width:0}
|
|
3532
|
+
.mbsr-meta i{color:var(--mb-muted);font-size:10.5px;font-style:normal;font-weight:800;letter-spacing:.05em;text-transform:uppercase;white-space:nowrap}
|
|
3533
|
+
.mbsr-meta b{font-size:12.5px;font-weight:700;white-space:nowrap}
|
|
3534
|
+
`;
|
|
3535
|
+
function BillSubmissionsRibbon({
|
|
3536
|
+
items,
|
|
3537
|
+
onSelect,
|
|
3538
|
+
appearance,
|
|
3539
|
+
className = "",
|
|
3540
|
+
style
|
|
3541
|
+
}) {
|
|
3542
|
+
return /* @__PURE__ */ jsxs8(
|
|
3543
|
+
"div",
|
|
3544
|
+
{
|
|
3545
|
+
className: `mbsr ${className}`.trim(),
|
|
3546
|
+
style: mindBillAppearanceStyle(appearance, style),
|
|
3547
|
+
role: "list",
|
|
3548
|
+
"aria-label": "Bill submissions",
|
|
3549
|
+
children: [
|
|
3550
|
+
/* @__PURE__ */ jsx8("style", { children: css6 }),
|
|
3551
|
+
items.map((item) => {
|
|
3552
|
+
const content = /* @__PURE__ */ jsxs8(Fragment6, { children: [
|
|
3553
|
+
/* @__PURE__ */ jsxs8("span", { className: "mbsr-top", children: [
|
|
3554
|
+
/* @__PURE__ */ jsx8("span", { className: "mbsr-label", children: item.label }),
|
|
3555
|
+
item.badge ? /* @__PURE__ */ jsx8("span", { className: "mbsr-badge", children: item.badge }) : null
|
|
3556
|
+
] }),
|
|
3557
|
+
item.meta?.length ? /* @__PURE__ */ jsx8("span", { className: "mbsr-meta", children: item.meta.slice(0, 3).map((pair) => /* @__PURE__ */ jsxs8("span", { children: [
|
|
3558
|
+
/* @__PURE__ */ jsx8("i", { children: pair.label }),
|
|
3559
|
+
/* @__PURE__ */ jsx8("b", { children: pair.value })
|
|
3560
|
+
] }, pair.label)) }) : null
|
|
3561
|
+
] });
|
|
3562
|
+
return item.href ? /* @__PURE__ */ jsx8(
|
|
3563
|
+
"a",
|
|
3564
|
+
{
|
|
3565
|
+
className: "mbsr-chip",
|
|
3566
|
+
"data-active": Boolean(item.active),
|
|
3567
|
+
href: item.href,
|
|
3568
|
+
role: "listitem",
|
|
3569
|
+
onClick: () => onSelect?.(item),
|
|
3570
|
+
children: content
|
|
3571
|
+
},
|
|
3572
|
+
item.id
|
|
3573
|
+
) : /* @__PURE__ */ jsx8(
|
|
3574
|
+
"button",
|
|
3575
|
+
{
|
|
3576
|
+
type: "button",
|
|
3577
|
+
className: "mbsr-chip",
|
|
3578
|
+
"data-active": Boolean(item.active),
|
|
3579
|
+
role: "listitem",
|
|
3580
|
+
onClick: () => onSelect?.(item),
|
|
3581
|
+
children: content
|
|
3582
|
+
},
|
|
3583
|
+
item.id
|
|
3584
|
+
);
|
|
3585
|
+
})
|
|
3586
|
+
]
|
|
3587
|
+
}
|
|
3588
|
+
);
|
|
3589
|
+
}
|
|
3590
|
+
|
|
3591
|
+
// src/report-bill-status-dialog.tsx
|
|
3592
|
+
import { useEffect as useEffect5, useState as useState6 } from "react";
|
|
3593
|
+
import { jsx as jsx9, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
3594
|
+
var REPORT_BILL_STATUS_OPTIONS = [
|
|
3595
|
+
{
|
|
3596
|
+
id: "message_left",
|
|
3597
|
+
label: "Message Left Requesting Bill Payment Status",
|
|
3598
|
+
description: "Claims Administrator/Bill Review representative unavailable."
|
|
3599
|
+
},
|
|
3600
|
+
{
|
|
3601
|
+
id: "eor_pending",
|
|
3602
|
+
label: "Explanation of Review (EOR) Pending",
|
|
3603
|
+
description: "Claims Administrator/Bill Review reported the bill is still in process and an EOR has not been generated or sent."
|
|
3604
|
+
},
|
|
3605
|
+
{
|
|
3606
|
+
id: "eor_sent",
|
|
3607
|
+
label: "Explanation of Review (EOR) Sent",
|
|
3608
|
+
description: "Claims Administrator/Bill Review reported sending an EOR to the provider."
|
|
3609
|
+
},
|
|
3610
|
+
{
|
|
3611
|
+
id: "bill_not_on_file",
|
|
3612
|
+
label: "Bill Not On File",
|
|
3613
|
+
description: "Claims Administrator/Bill Review reported not receiving the bill."
|
|
3614
|
+
},
|
|
3615
|
+
{
|
|
3616
|
+
id: "forwarded",
|
|
3617
|
+
label: "Bill Forwarded to Different Payer / Network",
|
|
3618
|
+
description: "Claims Administrator/Bill Review reported forwarding the bill to a different payer."
|
|
3619
|
+
}
|
|
3620
|
+
];
|
|
3621
|
+
var css7 = `
|
|
3622
|
+
.mbbs-overlay{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:20px;background:rgba(15,30,40,.45)}
|
|
3623
|
+
.mbbs{display:grid;gap:18px;width:min(860px,100%);max-height:min(90vh,960px);overflow:auto;overscroll-behavior:contain;padding:24px;border:1px solid var(--mb-border);border-radius:var(--mb-radius);background:var(--mb-surface);color:var(--mb-text);font-family:var(--mb-font);font-size:14px;box-shadow:0 24px 60px rgba(17,38,49,.28)}
|
|
3624
|
+
.mbbs *{box-sizing:border-box}
|
|
3625
|
+
.mbbs-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
|
|
3626
|
+
.mbbs-title{margin:0;font-size:20px;font-weight:760}
|
|
3627
|
+
.mbbs-close{border:0;background:transparent;color:var(--mb-muted);font-size:22px;line-height:1;cursor:pointer}
|
|
3628
|
+
.mbbs-section h4{margin:0 0 4px;font-size:15px}
|
|
3629
|
+
.mbbs-copy{margin:0 0 10px;color:var(--mb-muted);font-size:13px}
|
|
3630
|
+
.mbbs-contacts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
|
|
3631
|
+
.mbbs-contact{border:1px solid var(--mb-border);border-left:4px solid var(--mb-accent);border-radius:var(--mb-control-radius);background:color-mix(in srgb,var(--mb-accent) 3%,var(--mb-surface));padding:12px 14px}
|
|
3632
|
+
.mbbs-contact h5{margin:0 0 6px;color:var(--mb-muted);font-size:11px;font-weight:800;letter-spacing:.07em;text-transform:uppercase}
|
|
3633
|
+
.mbbs-contact dl{display:grid;gap:4px;margin:0}
|
|
3634
|
+
.mbbs-contact dl>div{display:grid;grid-template-columns:130px minmax(0,1fr);gap:10px}
|
|
3635
|
+
.mbbs-contact dt{color:var(--mb-muted);font-size:12.5px}
|
|
3636
|
+
.mbbs-contact dd{margin:0;font-weight:700;overflow-wrap:anywhere}
|
|
3637
|
+
.mbbs-receipt{border:1px solid var(--mb-border);border-radius:var(--mb-control-radius);padding:10px}
|
|
3638
|
+
.mbbs-report{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:18px}
|
|
3639
|
+
.mbbs-options{display:grid;gap:8px;align-content:start}
|
|
3640
|
+
.mbbs-option{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;border:1px solid var(--mb-border);border-radius:var(--mb-control-radius);background:var(--mb-surface);cursor:pointer}
|
|
3641
|
+
.mbbs-option[data-selected=true]{border-color:var(--mb-accent);background:color-mix(in srgb,var(--mb-accent) 5%,var(--mb-surface))}
|
|
3642
|
+
.mbbs-option input{margin-top:3px;accent-color:var(--mb-accent)}
|
|
3643
|
+
.mbbs-option-label{display:block;font-weight:750;line-height:1.35}
|
|
3644
|
+
.mbbs-option-copy{display:block;margin-top:2px;color:var(--mb-muted);font-size:12.5px;line-height:1.4}
|
|
3645
|
+
.mbbs-fields{display:grid;gap:10px;align-content:start}
|
|
3646
|
+
.mbbs-field{display:grid;gap:5px;font-size:13px}
|
|
3647
|
+
.mbbs-label{font-weight:650}
|
|
3648
|
+
.mbbs-input,.mbbs-textarea{width:100%;padding:9px 11px;border:1px solid var(--mb-border);border-radius:calc(var(--mb-control-radius) - 2px);background:var(--mb-input);color:var(--mb-text);font:inherit;font-size:14px}
|
|
3649
|
+
.mbbs-textarea{resize:vertical;min-height:74px}
|
|
3650
|
+
.mbbs-input:focus,.mbbs-textarea:focus{outline:3px solid color-mix(in srgb,var(--mb-accent) 22%,transparent);border-color:var(--mb-accent)}
|
|
3651
|
+
.mbbs-alert{padding:10px 12px;border-radius:var(--mb-control-radius);background:color-mix(in srgb,var(--mb-danger) 10%,transparent);color:var(--mb-danger);font-size:13px}
|
|
3652
|
+
.mbbs-actions{display:flex;justify-content:flex-end;gap:10px}
|
|
3653
|
+
.mbbs-cancel{min-height:42px;padding:9px 16px;border:1px solid var(--mb-border);border-radius:var(--mb-control-radius);background:var(--mb-surface);color:var(--mb-text);font:inherit;font-weight:680;cursor:pointer}
|
|
3654
|
+
.mbbs-save{min-height:42px;min-width:130px;padding:9px 18px;border:0;border-radius:var(--mb-control-radius);background:var(--mb-accent);color:var(--mb-accent-contrast);font:inherit;font-weight:760;cursor:pointer}
|
|
3655
|
+
.mbbs-save:disabled,.mbbs-cancel:disabled{opacity:.6;cursor:not-allowed}
|
|
3656
|
+
@media(max-width:700px){.mbbs-contacts,.mbbs-report{grid-template-columns:1fr}}
|
|
3657
|
+
`;
|
|
3658
|
+
function ReportBillStatusDialog({
|
|
3659
|
+
title = "Report Bill Status",
|
|
3660
|
+
claimsAdmin,
|
|
3661
|
+
billReview,
|
|
3662
|
+
receipt,
|
|
3663
|
+
submitting = false,
|
|
3664
|
+
error = null,
|
|
3665
|
+
onCancel,
|
|
3666
|
+
onSave,
|
|
3667
|
+
appearance,
|
|
3668
|
+
className = "",
|
|
3669
|
+
style
|
|
3670
|
+
}) {
|
|
3671
|
+
const [status, setStatus] = useState6(null);
|
|
3672
|
+
const [company, setCompany] = useState6("");
|
|
3673
|
+
const [representativeName, setRepresentativeName] = useState6("");
|
|
3674
|
+
const [representativeRole, setRepresentativeRole] = useState6("");
|
|
3675
|
+
const [phone, setPhone] = useState6("");
|
|
3676
|
+
const [callReference, setCallReference] = useState6("");
|
|
3677
|
+
const [note, setNote] = useState6("");
|
|
3678
|
+
useEffect5(() => {
|
|
3679
|
+
const onKey = (event) => {
|
|
3680
|
+
if (event.key === "Escape" && !submitting) onCancel();
|
|
3681
|
+
};
|
|
3682
|
+
window.addEventListener("keydown", onKey);
|
|
3683
|
+
return () => window.removeEventListener("keydown", onKey);
|
|
3684
|
+
}, [onCancel, submitting]);
|
|
3685
|
+
const save = () => {
|
|
3686
|
+
if (!status) return;
|
|
3687
|
+
onSave({
|
|
3688
|
+
status,
|
|
3689
|
+
...company.trim() ? { company: company.trim() } : {},
|
|
3690
|
+
...representativeName.trim() ? { representativeName: representativeName.trim() } : {},
|
|
3691
|
+
...representativeRole.trim() ? { representativeRole: representativeRole.trim() } : {},
|
|
3692
|
+
...phone.trim() ? { phone: phone.trim() } : {},
|
|
3693
|
+
...callReference.trim() ? { callReference: callReference.trim() } : {},
|
|
3694
|
+
...note.trim() ? { note: note.trim() } : {}
|
|
3695
|
+
});
|
|
3696
|
+
};
|
|
3697
|
+
const field = (label, value, onChange) => /* @__PURE__ */ jsxs9("label", { className: "mbbs-field", children: [
|
|
3698
|
+
/* @__PURE__ */ jsx9("span", { className: "mbbs-label", children: label }),
|
|
3699
|
+
/* @__PURE__ */ jsx9("input", { className: "mbbs-input", value, disabled: submitting, onChange: (event) => onChange(event.target.value) })
|
|
3700
|
+
] }, label);
|
|
3701
|
+
return /* @__PURE__ */ jsxs9(
|
|
3702
|
+
"div",
|
|
3703
|
+
{
|
|
3704
|
+
className: "mbbs-overlay",
|
|
3705
|
+
role: "presentation",
|
|
3706
|
+
onMouseDown: (event) => {
|
|
3707
|
+
if (event.target === event.currentTarget && !submitting) onCancel();
|
|
3708
|
+
},
|
|
3709
|
+
children: [
|
|
3710
|
+
/* @__PURE__ */ jsx9("style", { children: css7 }),
|
|
3711
|
+
/* @__PURE__ */ jsxs9(
|
|
3712
|
+
"div",
|
|
3713
|
+
{
|
|
3714
|
+
className: `mbbs ${className}`.trim(),
|
|
3715
|
+
style: mindBillAppearanceStyle(appearance, style),
|
|
3716
|
+
role: "dialog",
|
|
3717
|
+
"aria-modal": "true",
|
|
3718
|
+
"aria-label": typeof title === "string" ? title : "Report Bill Status",
|
|
3719
|
+
children: [
|
|
3720
|
+
/* @__PURE__ */ jsxs9("div", { className: "mbbs-head", children: [
|
|
3721
|
+
/* @__PURE__ */ jsx9("h3", { className: "mbbs-title", children: title }),
|
|
3722
|
+
/* @__PURE__ */ jsx9("button", { className: "mbbs-close", type: "button", "aria-label": "Close", disabled: submitting, onClick: onCancel, children: "\xD7" })
|
|
3723
|
+
] }),
|
|
3724
|
+
claimsAdmin || billReview ? /* @__PURE__ */ jsxs9("div", { className: "mbbs-section", children: [
|
|
3725
|
+
/* @__PURE__ */ jsx9("h4", { children: "1. Call Claims Administrator or Bill Review" }),
|
|
3726
|
+
/* @__PURE__ */ jsx9("p", { className: "mbbs-copy", children: "Contact the payer to request the payment status of this bill." }),
|
|
3727
|
+
/* @__PURE__ */ jsxs9("div", { className: "mbbs-contacts", children: [
|
|
3728
|
+
claimsAdmin ? /* @__PURE__ */ jsxs9("div", { className: "mbbs-contact", children: [
|
|
3729
|
+
/* @__PURE__ */ jsx9("h5", { children: "Claims Admin" }),
|
|
3730
|
+
/* @__PURE__ */ jsxs9("dl", { children: [
|
|
3731
|
+
/* @__PURE__ */ jsxs9("div", { children: [
|
|
3732
|
+
/* @__PURE__ */ jsx9("dt", { children: "Name" }),
|
|
3733
|
+
/* @__PURE__ */ jsx9("dd", { children: claimsAdmin.name })
|
|
3734
|
+
] }),
|
|
3735
|
+
claimsAdmin.hoursOfOperation ? /* @__PURE__ */ jsxs9("div", { children: [
|
|
3736
|
+
/* @__PURE__ */ jsx9("dt", { children: "Hours of Operation" }),
|
|
3737
|
+
/* @__PURE__ */ jsx9("dd", { children: claimsAdmin.hoursOfOperation })
|
|
3738
|
+
] }) : null,
|
|
3739
|
+
(claimsAdmin.phones ?? []).map((entry) => /* @__PURE__ */ jsxs9("div", { children: [
|
|
3740
|
+
/* @__PURE__ */ jsx9("dt", { children: entry.label }),
|
|
3741
|
+
/* @__PURE__ */ jsx9("dd", { children: entry.value })
|
|
3742
|
+
] }, `${entry.label}-${entry.value}`))
|
|
3743
|
+
] })
|
|
3744
|
+
] }) : null,
|
|
3745
|
+
billReview ? /* @__PURE__ */ jsxs9("div", { className: "mbbs-contact", children: [
|
|
3746
|
+
/* @__PURE__ */ jsx9("h5", { children: "Bill Review" }),
|
|
3747
|
+
/* @__PURE__ */ jsxs9("dl", { children: [
|
|
3748
|
+
/* @__PURE__ */ jsxs9("div", { children: [
|
|
3749
|
+
/* @__PURE__ */ jsx9("dt", { children: "Name" }),
|
|
3750
|
+
/* @__PURE__ */ jsx9("dd", { children: billReview.name })
|
|
3751
|
+
] }),
|
|
3752
|
+
billReview.phone ? /* @__PURE__ */ jsxs9("div", { children: [
|
|
3753
|
+
/* @__PURE__ */ jsx9("dt", { children: "Phone" }),
|
|
3754
|
+
/* @__PURE__ */ jsx9("dd", { children: billReview.phone })
|
|
3755
|
+
] }) : null
|
|
3756
|
+
] })
|
|
3757
|
+
] }) : null
|
|
3758
|
+
] })
|
|
3759
|
+
] }) : null,
|
|
3760
|
+
receipt ? /* @__PURE__ */ jsxs9("div", { className: "mbbs-section", children: [
|
|
3761
|
+
/* @__PURE__ */ jsx9("h4", { children: "2. Review Bill Submission Receipt" }),
|
|
3762
|
+
/* @__PURE__ */ jsx9("p", { className: "mbbs-copy", children: "Reference the submission receipt below when the payer asks how and when the bill was sent." }),
|
|
3763
|
+
/* @__PURE__ */ jsx9("div", { className: "mbbs-receipt", children: receipt })
|
|
3764
|
+
] }) : null,
|
|
3765
|
+
/* @__PURE__ */ jsxs9("div", { className: "mbbs-section", children: [
|
|
3766
|
+
/* @__PURE__ */ jsx9("h4", { children: "3. Report Bill Payment Status" }),
|
|
3767
|
+
/* @__PURE__ */ jsx9("p", { className: "mbbs-copy", children: "Select the status reported by the payer, then record who provided it." }),
|
|
3768
|
+
/* @__PURE__ */ jsxs9("div", { className: "mbbs-report", children: [
|
|
3769
|
+
/* @__PURE__ */ jsx9("div", { className: "mbbs-options", role: "radiogroup", "aria-label": "Reported bill payment status", children: REPORT_BILL_STATUS_OPTIONS.map((option) => /* @__PURE__ */ jsxs9("label", { className: "mbbs-option", "data-selected": status === option.id, children: [
|
|
3770
|
+
/* @__PURE__ */ jsx9(
|
|
3771
|
+
"input",
|
|
3772
|
+
{
|
|
3773
|
+
type: "radio",
|
|
3774
|
+
name: "mbbs-status",
|
|
3775
|
+
value: option.id,
|
|
3776
|
+
checked: status === option.id,
|
|
3777
|
+
disabled: submitting,
|
|
3778
|
+
onChange: () => setStatus(option.id)
|
|
3779
|
+
}
|
|
3780
|
+
),
|
|
3781
|
+
/* @__PURE__ */ jsxs9("span", { children: [
|
|
3782
|
+
/* @__PURE__ */ jsx9("span", { className: "mbbs-option-label", children: option.label }),
|
|
3783
|
+
/* @__PURE__ */ jsx9("span", { className: "mbbs-option-copy", children: option.description })
|
|
3784
|
+
] })
|
|
3785
|
+
] }, option.id)) }),
|
|
3786
|
+
/* @__PURE__ */ jsxs9("div", { className: "mbbs-fields", children: [
|
|
3787
|
+
field("Company", company, setCompany),
|
|
3788
|
+
field("Name", representativeName, setRepresentativeName),
|
|
3789
|
+
field("Role", representativeRole, setRepresentativeRole),
|
|
3790
|
+
field("Phone Number", phone, setPhone),
|
|
3791
|
+
field("Call Reference Number", callReference, setCallReference),
|
|
3792
|
+
/* @__PURE__ */ jsxs9("label", { className: "mbbs-field", children: [
|
|
3793
|
+
/* @__PURE__ */ jsx9("span", { className: "mbbs-label", children: "Message Note" }),
|
|
3794
|
+
/* @__PURE__ */ jsx9("textarea", { className: "mbbs-textarea", value: note, disabled: submitting, onChange: (event) => setNote(event.target.value) })
|
|
3795
|
+
] })
|
|
3796
|
+
] })
|
|
3797
|
+
] })
|
|
3798
|
+
] }),
|
|
3799
|
+
error ? /* @__PURE__ */ jsx9("div", { className: "mbbs-alert", role: "alert", children: error }) : null,
|
|
3800
|
+
/* @__PURE__ */ jsxs9("div", { className: "mbbs-actions", children: [
|
|
3801
|
+
/* @__PURE__ */ jsx9("button", { className: "mbbs-cancel", type: "button", disabled: submitting, onClick: onCancel, children: "Cancel" }),
|
|
3802
|
+
/* @__PURE__ */ jsx9("button", { className: "mbbs-save", type: "button", disabled: submitting || !status, onClick: save, children: submitting ? "Saving\u2026" : "Save" })
|
|
3803
|
+
] })
|
|
3804
|
+
]
|
|
3805
|
+
}
|
|
3806
|
+
)
|
|
3807
|
+
]
|
|
3808
|
+
}
|
|
3809
|
+
);
|
|
3810
|
+
}
|
|
3811
|
+
|
|
3284
3812
|
// src/organization-onboarding.tsx
|
|
3285
|
-
import { useCallback as useCallback2, useEffect as
|
|
3813
|
+
import { useCallback as useCallback2, useEffect as useEffect6, useMemo as useMemo6, useRef as useRef3, useState as useState7 } from "react";
|
|
3286
3814
|
import {
|
|
3287
3815
|
createOrganizationClient
|
|
3288
3816
|
} from "@mindbill/browser";
|
|
3289
|
-
import { Fragment as
|
|
3817
|
+
import { Fragment as Fragment7, jsx as jsx10, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
3290
3818
|
var STEPS = [
|
|
3291
3819
|
{ id: "practice", label: "Practice & billing" },
|
|
3292
3820
|
{ id: "locations", label: "Locations" },
|
|
3293
3821
|
{ id: "w9", label: "W-9" },
|
|
3294
3822
|
{ id: "review", label: "Review" }
|
|
3295
3823
|
];
|
|
3296
|
-
var
|
|
3824
|
+
var css8 = `
|
|
3297
3825
|
.mbob{color:var(--mb-text);font-family:var(--mb-font);font-size:15px}.mbob *{box-sizing:border-box}.mbob h2,.mbob h3,.mbob p{margin:0}
|
|
3298
3826
|
.mbob-card{border:1px solid var(--mb-border);border-radius:var(--mb-radius);background:var(--mb-surface);box-shadow:var(--mb-shadow);padding:24px}
|
|
3299
3827
|
.mbob-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:18px}.mbob-head h2{font-size:22px}.mbob-copy{color:var(--mb-muted);margin-top:5px!important}
|
|
@@ -3357,16 +3885,16 @@ function OrganizationOnboarding({
|
|
|
3357
3885
|
}),
|
|
3358
3886
|
[sessionEndpoint, getSession, apiBaseUrl]
|
|
3359
3887
|
);
|
|
3360
|
-
const [profile, setProfile] =
|
|
3361
|
-
const [loadError, setLoadError] =
|
|
3362
|
-
const [step, setStep] =
|
|
3363
|
-
const [identity, setIdentity] =
|
|
3364
|
-
const [provider, setProvider] =
|
|
3365
|
-
const [locations, setLocations] =
|
|
3366
|
-
const [w9File, setW9File] =
|
|
3367
|
-
const [saving, setSaving] =
|
|
3368
|
-
const [error, setError] =
|
|
3369
|
-
const [savedStep, setSavedStep] =
|
|
3888
|
+
const [profile, setProfile] = useState7(null);
|
|
3889
|
+
const [loadError, setLoadError] = useState7(null);
|
|
3890
|
+
const [step, setStep] = useState7("practice");
|
|
3891
|
+
const [identity, setIdentity] = useState7({ name: "", legalName: "", taxId: "", npi: "", phone: "", email: "" });
|
|
3892
|
+
const [provider, setProvider] = useState7({ name: "", taxId: "", npi: "", billType: "Professional", phone: "", billingStreet: "", billingCity: "", billingState: "", billingZip: "" });
|
|
3893
|
+
const [locations, setLocations] = useState7([blankLocation()]);
|
|
3894
|
+
const [w9File, setW9File] = useState7(null);
|
|
3895
|
+
const [saving, setSaving] = useState7(false);
|
|
3896
|
+
const [error, setError] = useState7(null);
|
|
3897
|
+
const [savedStep, setSavedStep] = useState7({});
|
|
3370
3898
|
const completedFired = useRef3(false);
|
|
3371
3899
|
const adoptProfile = useCallback2((next) => {
|
|
3372
3900
|
setProfile(next);
|
|
@@ -3385,7 +3913,7 @@ function OrganizationOnboarding({
|
|
|
3385
3913
|
onCompleted?.(next);
|
|
3386
3914
|
}
|
|
3387
3915
|
}, [onCompleted]);
|
|
3388
|
-
|
|
3916
|
+
useEffect6(() => {
|
|
3389
3917
|
let alive = true;
|
|
3390
3918
|
client.getOrganization().then((next) => {
|
|
3391
3919
|
if (alive) {
|
|
@@ -3432,16 +3960,16 @@ function OrganizationOnboarding({
|
|
|
3432
3960
|
if (!w9File) throw new Error("Choose the practice W-9 PDF first.");
|
|
3433
3961
|
return client.saveW9({ filename: w9File.name, contentBase64: await fileToBase64(w9File) });
|
|
3434
3962
|
}, "w9");
|
|
3435
|
-
const field = (label, value, onChange, span = false, placeholder = "") => /* @__PURE__ */
|
|
3963
|
+
const field = (label, value, onChange, span = false, placeholder = "") => /* @__PURE__ */ jsxs10("label", { className: `mbob-field${span ? " mbob-span" : ""}`, children: [
|
|
3436
3964
|
label,
|
|
3437
|
-
/* @__PURE__ */
|
|
3965
|
+
/* @__PURE__ */ jsx10("input", { value, placeholder, onChange: (event) => onChange(event.target.value), disabled: saving })
|
|
3438
3966
|
] });
|
|
3439
3967
|
const setLocation = (index, patch) => setLocations((current) => current.map((item, itemIndex) => {
|
|
3440
3968
|
if (itemIndex !== index) return patch.isPrimary ? { ...item, isPrimary: false } : item;
|
|
3441
3969
|
return { ...item, ...patch };
|
|
3442
3970
|
}));
|
|
3443
|
-
const practiceSection = /* @__PURE__ */
|
|
3444
|
-
/* @__PURE__ */
|
|
3971
|
+
const practiceSection = /* @__PURE__ */ jsxs10("div", { children: [
|
|
3972
|
+
/* @__PURE__ */ jsxs10("div", { className: "mbob-grid", children: [
|
|
3445
3973
|
field("Practice name", identity.name, (name) => setIdentity((c) => ({ ...c, name }))),
|
|
3446
3974
|
field("Legal name", identity.legalName, (legalName) => setIdentity((c) => ({ ...c, legalName }))),
|
|
3447
3975
|
field("Tax ID (EIN)", identity.taxId, (taxId) => setIdentity((c) => ({ ...c, taxId })), false, "94-1234567"),
|
|
@@ -3449,8 +3977,8 @@ function OrganizationOnboarding({
|
|
|
3449
3977
|
field("Phone", identity.phone, (phone) => setIdentity((c) => ({ ...c, phone }))),
|
|
3450
3978
|
field("Email", identity.email, (email) => setIdentity((c) => ({ ...c, email })))
|
|
3451
3979
|
] }),
|
|
3452
|
-
/* @__PURE__ */
|
|
3453
|
-
/* @__PURE__ */
|
|
3980
|
+
/* @__PURE__ */ jsx10("h3", { className: "mbob-subhead", children: "Billing provider (pay-to)" }),
|
|
3981
|
+
/* @__PURE__ */ jsxs10("div", { className: "mbob-grid", children: [
|
|
3454
3982
|
field("Billing provider name", provider.name, (name) => setProvider((c) => ({ ...c, name }))),
|
|
3455
3983
|
field("Billing tax ID", provider.taxId, (taxId) => setProvider((c) => ({ ...c, taxId }))),
|
|
3456
3984
|
field("Billing NPI", provider.npi, (npi) => setProvider((c) => ({ ...c, npi }))),
|
|
@@ -3460,88 +3988,88 @@ function OrganizationOnboarding({
|
|
|
3460
3988
|
field("State", provider.billingState ?? "", (billingState) => setProvider((c) => ({ ...c, billingState: billingState.toUpperCase().slice(0, 2) }))),
|
|
3461
3989
|
field("ZIP", provider.billingZip ?? "", (billingZip) => setProvider((c) => ({ ...c, billingZip })))
|
|
3462
3990
|
] }),
|
|
3463
|
-
/* @__PURE__ */
|
|
3464
|
-
/* @__PURE__ */
|
|
3465
|
-
/* @__PURE__ */
|
|
3991
|
+
/* @__PURE__ */ jsxs10("div", { className: "mbob-actions", children: [
|
|
3992
|
+
/* @__PURE__ */ jsx10("span", { className: "mbob-status", children: savedStep["practice"] ? "Saved to MindBill." : "Saved once, used on every bill." }),
|
|
3993
|
+
/* @__PURE__ */ jsx10("button", { className: "mbob-save", type: "button", disabled: saving, onClick: savePractice, children: saving ? "Saving\u2026" : "Save practice" })
|
|
3466
3994
|
] })
|
|
3467
3995
|
] });
|
|
3468
|
-
const locationsSection = /* @__PURE__ */
|
|
3469
|
-
locations.map((location, index) => /* @__PURE__ */
|
|
3996
|
+
const locationsSection = /* @__PURE__ */ jsxs10("div", { children: [
|
|
3997
|
+
locations.map((location, index) => /* @__PURE__ */ jsxs10("div", { className: "mbob-loc", children: [
|
|
3470
3998
|
field("Name", location.name, (name) => setLocation(index, { name })),
|
|
3471
3999
|
field("Street", location.street, (street) => setLocation(index, { street })),
|
|
3472
4000
|
field("City", location.city, (city) => setLocation(index, { city })),
|
|
3473
4001
|
field("State", location.state, (state) => setLocation(index, { state: state.toUpperCase().slice(0, 2) })),
|
|
3474
4002
|
field("ZIP", location.zip, (zip) => setLocation(index, { zip })),
|
|
3475
|
-
/* @__PURE__ */
|
|
3476
|
-
/* @__PURE__ */
|
|
4003
|
+
/* @__PURE__ */ jsxs10("label", { className: "mbob-primary", children: [
|
|
4004
|
+
/* @__PURE__ */ jsx10("input", { type: "radio", name: "mbob-primary", checked: location.isPrimary === true, onChange: () => setLocation(index, { isPrimary: true }) }),
|
|
3477
4005
|
" Primary"
|
|
3478
4006
|
] }),
|
|
3479
|
-
/* @__PURE__ */
|
|
4007
|
+
/* @__PURE__ */ jsx10("button", { className: "mbob-remove", type: "button", "aria-label": "Remove location", onClick: () => setLocations((current) => current.filter((_, itemIndex) => itemIndex !== index)), children: "\xD7" })
|
|
3480
4008
|
] }, location.id ?? index)),
|
|
3481
|
-
/* @__PURE__ */
|
|
3482
|
-
/* @__PURE__ */
|
|
3483
|
-
/* @__PURE__ */
|
|
3484
|
-
/* @__PURE__ */
|
|
4009
|
+
/* @__PURE__ */ jsx10("button", { className: "mbob-add", type: "button", onClick: () => setLocations((current) => [...current, blankLocation()]), children: "+ Add location" }),
|
|
4010
|
+
/* @__PURE__ */ jsxs10("div", { className: "mbob-actions", children: [
|
|
4011
|
+
/* @__PURE__ */ jsx10("span", { className: "mbob-status", children: savedStep["locations"] ? "Saved to MindBill." : "Where evaluations happen." }),
|
|
4012
|
+
/* @__PURE__ */ jsx10("button", { className: "mbob-save", type: "button", disabled: saving, onClick: saveLocations, children: saving ? "Saving\u2026" : "Save locations" })
|
|
3485
4013
|
] })
|
|
3486
4014
|
] });
|
|
3487
|
-
const w9Section = /* @__PURE__ */
|
|
3488
|
-
profile?.w9 ? /* @__PURE__ */
|
|
3489
|
-
/* @__PURE__ */
|
|
3490
|
-
/* @__PURE__ */
|
|
3491
|
-
/* @__PURE__ */
|
|
4015
|
+
const w9Section = /* @__PURE__ */ jsxs10("div", { children: [
|
|
4016
|
+
profile?.w9 ? /* @__PURE__ */ jsxs10("div", { className: "mbob-w9-current", children: [
|
|
4017
|
+
/* @__PURE__ */ jsxs10("div", { children: [
|
|
4018
|
+
/* @__PURE__ */ jsx10("strong", { children: profile.w9.filename }),
|
|
4019
|
+
/* @__PURE__ */ jsxs10("span", { children: [
|
|
3492
4020
|
" \xB7 added ",
|
|
3493
4021
|
profile.w9.addDate
|
|
3494
4022
|
] })
|
|
3495
4023
|
] }),
|
|
3496
|
-
/* @__PURE__ */
|
|
4024
|
+
/* @__PURE__ */ jsx10("span", { children: "Rides on every bill automatically" })
|
|
3497
4025
|
] }) : null,
|
|
3498
|
-
/* @__PURE__ */
|
|
3499
|
-
/* @__PURE__ */
|
|
3500
|
-
/* @__PURE__ */
|
|
3501
|
-
/* @__PURE__ */
|
|
4026
|
+
/* @__PURE__ */ jsxs10("label", { className: "mbob-drop", children: [
|
|
4027
|
+
/* @__PURE__ */ jsx10("input", { type: "file", accept: "application/pdf,.pdf", onChange: (event) => setW9File(event.target.files?.[0] ?? null) }),
|
|
4028
|
+
/* @__PURE__ */ jsx10("strong", { children: w9File ? w9File.name : profile?.w9 ? "Replace the W-9 PDF" : "Drop the practice W-9 PDF here, or click to choose" }),
|
|
4029
|
+
/* @__PURE__ */ jsx10("span", { children: "The W-9 is auto-attached to every submission." })
|
|
3502
4030
|
] }),
|
|
3503
|
-
/* @__PURE__ */
|
|
3504
|
-
/* @__PURE__ */
|
|
3505
|
-
/* @__PURE__ */
|
|
4031
|
+
/* @__PURE__ */ jsxs10("div", { className: "mbob-actions", children: [
|
|
4032
|
+
/* @__PURE__ */ jsx10("span", { className: "mbob-status", children: savedStep["w9"] ? "Saved to MindBill." : "" }),
|
|
4033
|
+
/* @__PURE__ */ jsx10("button", { className: "mbob-save", type: "button", disabled: saving || !w9File, onClick: saveW9, children: saving ? "Uploading\u2026" : "Save W-9" })
|
|
3506
4034
|
] })
|
|
3507
4035
|
] });
|
|
3508
|
-
const reviewSection = /* @__PURE__ */
|
|
3509
|
-
(profile?.onboarding.checklist ?? []).map((item) => /* @__PURE__ */
|
|
3510
|
-
/* @__PURE__ */
|
|
3511
|
-
/* @__PURE__ */
|
|
4036
|
+
const reviewSection = /* @__PURE__ */ jsxs10("div", { className: "mbob-check", children: [
|
|
4037
|
+
(profile?.onboarding.checklist ?? []).map((item) => /* @__PURE__ */ jsxs10("div", { className: "mbob-check-item", "data-complete": item.complete, children: [
|
|
4038
|
+
/* @__PURE__ */ jsx10("i", { children: item.complete ? "\u2713" : "\u2022" }),
|
|
4039
|
+
/* @__PURE__ */ jsx10("span", { children: item.label })
|
|
3512
4040
|
] }, item.id)),
|
|
3513
|
-
profile?.onboarding.complete ? /* @__PURE__ */
|
|
4041
|
+
profile?.onboarding.complete ? /* @__PURE__ */ jsx10("p", { className: "mbob-done", children: "Billing setup is complete \u2014 bills submitted from your product carry this profile automatically." }) : /* @__PURE__ */ jsx10("p", { className: "mbob-status", children: "Items above complete themselves as each section is saved." })
|
|
3514
4042
|
] });
|
|
3515
4043
|
const sections = { practice: practiceSection, locations: locationsSection, w9: w9Section, review: reviewSection };
|
|
3516
|
-
return /* @__PURE__ */
|
|
3517
|
-
/* @__PURE__ */
|
|
3518
|
-
/* @__PURE__ */
|
|
3519
|
-
/* @__PURE__ */
|
|
3520
|
-
/* @__PURE__ */
|
|
3521
|
-
/* @__PURE__ */
|
|
4044
|
+
return /* @__PURE__ */ jsxs10("div", { className: `mbob ${className}`.trim(), style: { ...mindBillAppearanceStyle(appearance), ...style }, children: [
|
|
4045
|
+
/* @__PURE__ */ jsx10("style", { children: css8 }),
|
|
4046
|
+
/* @__PURE__ */ jsxs10("div", { className: "mbob-card", children: [
|
|
4047
|
+
/* @__PURE__ */ jsx10("div", { className: "mbob-head", children: /* @__PURE__ */ jsxs10("div", { children: [
|
|
4048
|
+
/* @__PURE__ */ jsx10("h2", { children: heading }),
|
|
4049
|
+
/* @__PURE__ */ jsx10("p", { className: "mbob-copy", children: description })
|
|
3522
4050
|
] }) }),
|
|
3523
|
-
loadError ? /* @__PURE__ */
|
|
3524
|
-
variant === "onboarding" ? /* @__PURE__ */
|
|
3525
|
-
/* @__PURE__ */
|
|
3526
|
-
/* @__PURE__ */
|
|
4051
|
+
loadError ? /* @__PURE__ */ jsx10("div", { className: "mbob-error", role: "alert", children: loadError }) : null,
|
|
4052
|
+
variant === "onboarding" ? /* @__PURE__ */ jsxs10(Fragment7, { children: [
|
|
4053
|
+
/* @__PURE__ */ jsx10("div", { className: "mbob-steps", children: STEPS.map((item) => /* @__PURE__ */ jsxs10("button", { className: "mbob-step", type: "button", "data-active": step === item.id, "data-done": Boolean(savedStep[item.id]), onClick: () => setStep(item.id), children: [
|
|
4054
|
+
/* @__PURE__ */ jsx10("i", { children: savedStep[item.id] ? "\u2713" : "" }),
|
|
3527
4055
|
item.label
|
|
3528
4056
|
] }, item.id)) }),
|
|
3529
4057
|
sections[step]
|
|
3530
|
-
] }) : /* @__PURE__ */
|
|
4058
|
+
] }) : /* @__PURE__ */ jsxs10(Fragment7, { children: [
|
|
3531
4059
|
practiceSection,
|
|
3532
|
-
/* @__PURE__ */
|
|
4060
|
+
/* @__PURE__ */ jsx10("h3", { className: "mbob-subhead", children: "Locations" }),
|
|
3533
4061
|
locationsSection,
|
|
3534
|
-
/* @__PURE__ */
|
|
4062
|
+
/* @__PURE__ */ jsx10("h3", { className: "mbob-subhead", children: "Practice W-9" }),
|
|
3535
4063
|
w9Section,
|
|
3536
|
-
/* @__PURE__ */
|
|
4064
|
+
/* @__PURE__ */ jsx10("h3", { className: "mbob-subhead", children: "Checklist" }),
|
|
3537
4065
|
reviewSection
|
|
3538
4066
|
] }),
|
|
3539
|
-
error ? /* @__PURE__ */
|
|
4067
|
+
error ? /* @__PURE__ */ jsx10("div", { className: "mbob-error", role: "alert", children: error }) : null
|
|
3540
4068
|
] })
|
|
3541
4069
|
] });
|
|
3542
4070
|
}
|
|
3543
4071
|
function BillingSettings(props) {
|
|
3544
|
-
return /* @__PURE__ */
|
|
4072
|
+
return /* @__PURE__ */ jsx10(
|
|
3545
4073
|
OrganizationOnboarding,
|
|
3546
4074
|
{
|
|
3547
4075
|
heading: "Billing settings",
|
|
@@ -3555,16 +4083,16 @@ function BillingSettings(props) {
|
|
|
3555
4083
|
// src/connected-bill-status.tsx
|
|
3556
4084
|
import {
|
|
3557
4085
|
useCallback as useCallback3,
|
|
3558
|
-
useEffect as
|
|
4086
|
+
useEffect as useEffect7,
|
|
3559
4087
|
useMemo as useMemo7,
|
|
3560
4088
|
useRef as useRef4,
|
|
3561
|
-
useState as
|
|
4089
|
+
useState as useState8
|
|
3562
4090
|
} from "react";
|
|
3563
4091
|
import {
|
|
3564
4092
|
DEFAULT_API_BASE_URL,
|
|
3565
4093
|
DEFAULT_SESSION_ENDPOINT
|
|
3566
4094
|
} from "@mindbill/browser";
|
|
3567
|
-
import { Fragment as
|
|
4095
|
+
import { Fragment as Fragment8, jsx as jsx11, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
3568
4096
|
var DEFAULT_REFRESH_INTERVAL = 6e4;
|
|
3569
4097
|
async function responseError(response, fallback) {
|
|
3570
4098
|
const body = await response.json().catch(() => null);
|
|
@@ -3704,16 +4232,16 @@ function useBillStatus({
|
|
|
3704
4232
|
apiBaseUrl,
|
|
3705
4233
|
...fetchOverride ? { fetch: fetchOverride } : {}
|
|
3706
4234
|
}), [apiBaseUrl, billId, fetchOverride, getSession, sessionEndpoint]);
|
|
3707
|
-
const [data, setData] =
|
|
3708
|
-
const [error, setError] =
|
|
3709
|
-
const [isLoading, setIsLoading] =
|
|
3710
|
-
const [isRefreshing, setIsRefreshing] =
|
|
4235
|
+
const [data, setData] = useState8(initialData);
|
|
4236
|
+
const [error, setError] = useState8(null);
|
|
4237
|
+
const [isLoading, setIsLoading] = useState8(enabled && !initialData);
|
|
4238
|
+
const [isRefreshing, setIsRefreshing] = useState8(false);
|
|
3711
4239
|
const dataRef = useRef4(initialData);
|
|
3712
4240
|
const initialDataRef = useRef4(initialData);
|
|
3713
4241
|
initialDataRef.current = initialData;
|
|
3714
4242
|
const activeControllerRef = useRef4(null);
|
|
3715
4243
|
const requestSequence = useRef4(0);
|
|
3716
|
-
|
|
4244
|
+
useEffect7(() => {
|
|
3717
4245
|
const seed = initialDataRef.current;
|
|
3718
4246
|
dataRef.current = seed;
|
|
3719
4247
|
setData(seed);
|
|
@@ -3754,10 +4282,10 @@ function useBillStatus({
|
|
|
3754
4282
|
}
|
|
3755
4283
|
}
|
|
3756
4284
|
}, [billId, client, enabled]);
|
|
3757
|
-
|
|
4285
|
+
useEffect7(() => {
|
|
3758
4286
|
if (enabled) void load();
|
|
3759
4287
|
}, [enabled, load]);
|
|
3760
|
-
|
|
4288
|
+
useEffect7(() => {
|
|
3761
4289
|
if (!enabled || refreshInterval <= 0) return;
|
|
3762
4290
|
const timer = window.setInterval(() => void load(), refreshInterval);
|
|
3763
4291
|
const onFocus = () => void load();
|
|
@@ -3785,17 +4313,17 @@ function ConnectedBillStatus({
|
|
|
3785
4313
|
}) {
|
|
3786
4314
|
const status = useBillStatus(options);
|
|
3787
4315
|
if (status.isLoading && !status.data) {
|
|
3788
|
-
return /* @__PURE__ */
|
|
4316
|
+
return /* @__PURE__ */ jsx11(Fragment8, { children: loadingFallback ?? /* @__PURE__ */ jsx11("div", { role: "status", children: "Loading bill status\u2026" }) });
|
|
3789
4317
|
}
|
|
3790
4318
|
if (status.error && !status.data) {
|
|
3791
|
-
return /* @__PURE__ */
|
|
4319
|
+
return /* @__PURE__ */ jsx11(Fragment8, { children: errorFallback?.(status.error, status.refresh) ?? /* @__PURE__ */ jsxs11("div", { role: "alert", children: [
|
|
3792
4320
|
status.error.message,
|
|
3793
4321
|
" ",
|
|
3794
|
-
/* @__PURE__ */
|
|
4322
|
+
/* @__PURE__ */ jsx11("button", { type: "button", onClick: () => void status.refresh(), children: "Retry" })
|
|
3795
4323
|
] }) });
|
|
3796
4324
|
}
|
|
3797
4325
|
if (!status.data) return null;
|
|
3798
|
-
return /* @__PURE__ */
|
|
4326
|
+
return /* @__PURE__ */ jsx11(
|
|
3799
4327
|
BillStatusSummary,
|
|
3800
4328
|
{
|
|
3801
4329
|
status: status.data.state,
|
|
@@ -3814,8 +4342,8 @@ function ConnectedBillStatus({
|
|
|
3814
4342
|
}
|
|
3815
4343
|
|
|
3816
4344
|
// src/bill-lifecycle-surfaces.tsx
|
|
3817
|
-
import { useState as
|
|
3818
|
-
import { jsx as
|
|
4345
|
+
import { useState as useState9 } from "react";
|
|
4346
|
+
import { jsx as jsx12, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
3819
4347
|
function visibleBillLifecycleActions(actions, showUnavailable = false) {
|
|
3820
4348
|
return actions.filter((action) => action.enabled || showUnavailable);
|
|
3821
4349
|
}
|
|
@@ -3830,11 +4358,11 @@ function BillLifecycleActions({
|
|
|
3830
4358
|
}) {
|
|
3831
4359
|
const visible = visibleBillLifecycleActions(actions, showUnavailable);
|
|
3832
4360
|
if (!visible.length) return null;
|
|
3833
|
-
return /* @__PURE__ */
|
|
3834
|
-
/* @__PURE__ */
|
|
3835
|
-
visible.map((action) => /* @__PURE__ */
|
|
3836
|
-
/* @__PURE__ */
|
|
3837
|
-
!action.enabled && action.reason ? /* @__PURE__ */
|
|
4361
|
+
return /* @__PURE__ */ jsxs12("div", { className: classes("mb-lifecycle-actions", className), style: mindBillAppearanceStyle(appearance, style), "aria-label": "Bill actions", children: [
|
|
4362
|
+
/* @__PURE__ */ jsx12("style", { children: lifecycleSurfaceStyles }),
|
|
4363
|
+
visible.map((action) => /* @__PURE__ */ jsxs12("div", { className: "mb-lifecycle-action", children: [
|
|
4364
|
+
/* @__PURE__ */ jsx12("button", { type: "button", className: action.primary ? "mb-action-button is-primary" : "mb-action-button", disabled: disabled || !action.enabled, onClick: () => onAction(action), children: action.label }),
|
|
4365
|
+
!action.enabled && action.reason ? /* @__PURE__ */ jsx12("span", { className: "mb-action-reason", children: action.reason }) : null
|
|
3838
4366
|
] }, action.id))
|
|
3839
4367
|
] });
|
|
3840
4368
|
}
|
|
@@ -3864,18 +4392,18 @@ function defaultFormatDate(createdAt) {
|
|
|
3864
4392
|
return new Intl.DateTimeFormat(void 0, { dateStyle: "medium", timeStyle: "short" }).format(parsed);
|
|
3865
4393
|
}
|
|
3866
4394
|
function BillActivityTimeline({ events, emptyLabel = "No bill activity yet.", appearance, className, style, formatDate = defaultFormatDate }) {
|
|
3867
|
-
return /* @__PURE__ */
|
|
3868
|
-
/* @__PURE__ */
|
|
3869
|
-
/* @__PURE__ */
|
|
3870
|
-
/* @__PURE__ */
|
|
3871
|
-
/* @__PURE__ */
|
|
4395
|
+
return /* @__PURE__ */ jsxs12("section", { className: classes("mb-surface mb-activity", className), style: mindBillAppearanceStyle(appearance, style), "aria-label": "Bill activity", children: [
|
|
4396
|
+
/* @__PURE__ */ jsx12("style", { children: lifecycleSurfaceStyles }),
|
|
4397
|
+
/* @__PURE__ */ jsx12("header", { className: "mb-surface-heading", children: /* @__PURE__ */ jsxs12("div", { children: [
|
|
4398
|
+
/* @__PURE__ */ jsx12("strong", { children: "Bill history" }),
|
|
4399
|
+
/* @__PURE__ */ jsx12("span", { children: "Submission, payer responses, follow-up, and payments." })
|
|
3872
4400
|
] }) }),
|
|
3873
|
-
!events.length ? /* @__PURE__ */
|
|
3874
|
-
/* @__PURE__ */
|
|
3875
|
-
/* @__PURE__ */
|
|
3876
|
-
/* @__PURE__ */
|
|
3877
|
-
event.description ? /* @__PURE__ */
|
|
3878
|
-
/* @__PURE__ */
|
|
4401
|
+
!events.length ? /* @__PURE__ */ jsx12("p", { className: "mb-activity-empty", children: emptyLabel }) : /* @__PURE__ */ jsx12("ol", { className: "mb-activity-list", children: events.map((event) => /* @__PURE__ */ jsxs12("li", { className: "mb-activity-item", children: [
|
|
4402
|
+
/* @__PURE__ */ jsx12("span", { className: "mb-activity-marker", "aria-hidden": "true" }),
|
|
4403
|
+
/* @__PURE__ */ jsxs12("div", { className: "mb-activity-content", children: [
|
|
4404
|
+
/* @__PURE__ */ jsx12("strong", { children: event.title ?? billActivityEventLabel(event.type) }),
|
|
4405
|
+
event.description ? /* @__PURE__ */ jsx12("p", { children: event.description }) : null,
|
|
4406
|
+
/* @__PURE__ */ jsxs12("span", { children: [
|
|
3879
4407
|
formatDate(event.createdAt),
|
|
3880
4408
|
event.actor ? ` \xB7 ${event.actor}` : ""
|
|
3881
4409
|
] })
|
|
@@ -3889,26 +4417,26 @@ function historyDate(iso) {
|
|
|
3889
4417
|
return new Intl.DateTimeFormat("en-US", { month: "2-digit", day: "2-digit", year: "numeric" }).format(parsed);
|
|
3890
4418
|
}
|
|
3891
4419
|
function BillHistoryTable({ entries, emptyLabel = "No bill history yet.", appearance, className, style, formatDate = historyDate, documentHref }) {
|
|
3892
|
-
const [expanded, setExpanded] =
|
|
3893
|
-
return /* @__PURE__ */
|
|
3894
|
-
/* @__PURE__ */
|
|
3895
|
-
/* @__PURE__ */
|
|
3896
|
-
/* @__PURE__ */
|
|
3897
|
-
/* @__PURE__ */
|
|
4420
|
+
const [expanded, setExpanded] = useState9({});
|
|
4421
|
+
return /* @__PURE__ */ jsxs12("section", { className: classes("mb-surface mb-history", className), style: mindBillAppearanceStyle(appearance, style), "aria-label": "Bill history", children: [
|
|
4422
|
+
/* @__PURE__ */ jsx12("style", { children: lifecycleSurfaceStyles }),
|
|
4423
|
+
/* @__PURE__ */ jsx12("header", { className: "mb-surface-heading", children: /* @__PURE__ */ jsxs12("div", { children: [
|
|
4424
|
+
/* @__PURE__ */ jsx12("strong", { children: "Bill history" }),
|
|
4425
|
+
/* @__PURE__ */ jsx12("span", { children: "Submissions, payer responses, follow-up, and payments." })
|
|
3898
4426
|
] }) }),
|
|
3899
|
-
!entries.length ? /* @__PURE__ */
|
|
3900
|
-
/* @__PURE__ */
|
|
3901
|
-
/* @__PURE__ */
|
|
3902
|
-
/* @__PURE__ */
|
|
3903
|
-
/* @__PURE__ */
|
|
3904
|
-
/* @__PURE__ */
|
|
4427
|
+
!entries.length ? /* @__PURE__ */ jsx12("p", { className: "mb-activity-empty", children: emptyLabel }) : /* @__PURE__ */ jsxs12("div", { className: "mb-history-table", children: [
|
|
4428
|
+
/* @__PURE__ */ jsxs12("div", { className: "mb-history-head", "aria-hidden": "true", children: [
|
|
4429
|
+
/* @__PURE__ */ jsx12("span", { children: "Date" }),
|
|
4430
|
+
/* @__PURE__ */ jsx12("span", { children: "Action" }),
|
|
4431
|
+
/* @__PURE__ */ jsx12("span", { children: "User" }),
|
|
4432
|
+
/* @__PURE__ */ jsx12("span", { children: "Details" })
|
|
3905
4433
|
] }),
|
|
3906
|
-
/* @__PURE__ */
|
|
4434
|
+
/* @__PURE__ */ jsx12("ul", { className: "mb-history-rows", children: entries.map((entry) => {
|
|
3907
4435
|
const expandable = Boolean(entry.details);
|
|
3908
4436
|
const isOpen = expandable && Boolean(expanded[entry.id]);
|
|
3909
4437
|
const details = entry.details;
|
|
3910
|
-
return /* @__PURE__ */
|
|
3911
|
-
/* @__PURE__ */
|
|
4438
|
+
return /* @__PURE__ */ jsxs12("li", { className: `mb-history-row is-${entry.tone}`, children: [
|
|
4439
|
+
/* @__PURE__ */ jsxs12(
|
|
3912
4440
|
"button",
|
|
3913
4441
|
{
|
|
3914
4442
|
type: "button",
|
|
@@ -3917,40 +4445,40 @@ function BillHistoryTable({ entries, emptyLabel = "No bill history yet.", appear
|
|
|
3917
4445
|
"aria-expanded": expandable ? isOpen : void 0,
|
|
3918
4446
|
onClick: expandable ? () => setExpanded((current) => ({ ...current, [entry.id]: !current[entry.id] })) : void 0,
|
|
3919
4447
|
children: [
|
|
3920
|
-
/* @__PURE__ */
|
|
3921
|
-
/* @__PURE__ */
|
|
3922
|
-
/* @__PURE__ */
|
|
3923
|
-
/* @__PURE__ */
|
|
3924
|
-
expandable ? /* @__PURE__ */
|
|
4448
|
+
/* @__PURE__ */ jsx12("span", { className: "mb-history-date", children: formatDate(entry.date) }),
|
|
4449
|
+
/* @__PURE__ */ jsx12("span", { className: "mb-history-action", children: entry.action }),
|
|
4450
|
+
/* @__PURE__ */ jsx12("span", { className: "mb-history-actor", children: entry.actor ?? "\u2014" }),
|
|
4451
|
+
/* @__PURE__ */ jsxs12("span", { className: "mb-history-summary", children: [
|
|
4452
|
+
expandable ? /* @__PURE__ */ jsx12("i", { className: `mb-history-caret${isOpen ? " is-open" : ""}`, "aria-hidden": "true" }) : null,
|
|
3925
4453
|
entry.summary
|
|
3926
4454
|
] })
|
|
3927
4455
|
]
|
|
3928
4456
|
}
|
|
3929
4457
|
),
|
|
3930
|
-
isOpen && details ? /* @__PURE__ */
|
|
3931
|
-
details.rows?.length ? /* @__PURE__ */
|
|
3932
|
-
/* @__PURE__ */
|
|
3933
|
-
/* @__PURE__ */
|
|
4458
|
+
isOpen && details ? /* @__PURE__ */ jsxs12("div", { className: "mb-history-details", children: [
|
|
4459
|
+
details.rows?.length ? /* @__PURE__ */ jsx12("dl", { className: "mb-history-kv", children: details.rows.map((row) => /* @__PURE__ */ jsxs12("div", { children: [
|
|
4460
|
+
/* @__PURE__ */ jsx12("dt", { children: row.label }),
|
|
4461
|
+
/* @__PURE__ */ jsx12("dd", { children: row.value })
|
|
3934
4462
|
] }, `${row.label}-${row.value}`)) }) : null,
|
|
3935
|
-
details.documents?.length ? /* @__PURE__ */
|
|
3936
|
-
/* @__PURE__ */
|
|
3937
|
-
/* @__PURE__ */
|
|
4463
|
+
details.documents?.length ? /* @__PURE__ */ jsx12("div", { className: "mb-history-kv", children: /* @__PURE__ */ jsxs12("div", { children: [
|
|
4464
|
+
/* @__PURE__ */ jsx12("dt", { children: "Documents" }),
|
|
4465
|
+
/* @__PURE__ */ jsx12("dd", { children: details.documents.map((doc) => {
|
|
3938
4466
|
const href = documentHref?.(doc) ?? null;
|
|
3939
|
-
return href ? /* @__PURE__ */
|
|
4467
|
+
return href ? /* @__PURE__ */ jsx12("a", { className: "mb-history-doc", href, target: "_blank", rel: "noreferrer", children: doc.filename }, doc.id) : /* @__PURE__ */ jsx12("span", { className: "mb-history-doc", children: doc.filename }, doc.id);
|
|
3940
4468
|
}) })
|
|
3941
4469
|
] }) }) : null,
|
|
3942
|
-
details.codes?.length ? /* @__PURE__ */
|
|
3943
|
-
/* @__PURE__ */
|
|
3944
|
-
/* @__PURE__ */
|
|
4470
|
+
details.codes?.length ? /* @__PURE__ */ jsx12("dl", { className: "mb-history-codes", children: details.codes.map((code) => /* @__PURE__ */ jsxs12("div", { children: [
|
|
4471
|
+
/* @__PURE__ */ jsx12("dt", { children: code.code }),
|
|
4472
|
+
/* @__PURE__ */ jsx12("dd", { children: code.text })
|
|
3945
4473
|
] }, code.code)) }) : null,
|
|
3946
|
-
details.complianceDueDates?.length ? /* @__PURE__ */
|
|
3947
|
-
/* @__PURE__ */
|
|
3948
|
-
/* @__PURE__ */
|
|
3949
|
-
/* @__PURE__ */
|
|
3950
|
-
/* @__PURE__ */
|
|
4474
|
+
details.complianceDueDates?.length ? /* @__PURE__ */ jsxs12("div", { className: "mb-history-due", children: [
|
|
4475
|
+
/* @__PURE__ */ jsx12("em", { children: "Compliance Due Dates" }),
|
|
4476
|
+
/* @__PURE__ */ jsx12("dl", { children: details.complianceDueDates.map((due) => /* @__PURE__ */ jsxs12("div", { children: [
|
|
4477
|
+
/* @__PURE__ */ jsx12("dt", { children: formatDate(due.date) }),
|
|
4478
|
+
/* @__PURE__ */ jsx12("dd", { children: due.text })
|
|
3951
4479
|
] }, `${due.date}-${due.text}`)) })
|
|
3952
4480
|
] }) : null,
|
|
3953
|
-
details.text ? /* @__PURE__ */
|
|
4481
|
+
details.text ? /* @__PURE__ */ jsx12("p", { className: "mb-history-text", children: details.text }) : null
|
|
3954
4482
|
] }) : null
|
|
3955
4483
|
] }, entry.id);
|
|
3956
4484
|
}) })
|
|
@@ -3998,15 +4526,15 @@ function billLifecycleDisplayLabel(state, nativeStatus) {
|
|
|
3998
4526
|
function BillLifecycleProgress({ state, nativeStatus, submittedAt, agingDays, appearance, className, style }) {
|
|
3999
4527
|
const rejected = state.toLowerCase() === "rejected";
|
|
4000
4528
|
const steps = billLifecycleProgressSteps(state);
|
|
4001
|
-
return /* @__PURE__ */
|
|
4002
|
-
/* @__PURE__ */
|
|
4003
|
-
/* @__PURE__ */
|
|
4004
|
-
/* @__PURE__ */
|
|
4005
|
-
/* @__PURE__ */
|
|
4529
|
+
return /* @__PURE__ */ jsxs12("section", { className: classes(`mb-surface mb-progress${rejected ? " is-rejected" : ""}`, className), style: mindBillAppearanceStyle(appearance, style), "aria-label": "Bill lifecycle", children: [
|
|
4530
|
+
/* @__PURE__ */ jsx12("style", { children: lifecycleSurfaceStyles }),
|
|
4531
|
+
/* @__PURE__ */ jsx12("header", { className: "mb-surface-heading", children: /* @__PURE__ */ jsxs12("div", { children: [
|
|
4532
|
+
/* @__PURE__ */ jsx12("strong", { children: billLifecycleDisplayLabel(state, nativeStatus) }),
|
|
4533
|
+
/* @__PURE__ */ jsx12("span", { children: rejected ? "The payer rejected this submission." : `${submittedAt ? `Submitted ${defaultFormatDate(submittedAt)}` : "Submitted"}${typeof agingDays === "number" ? ` \xB7 ${agingDays} days old` : ""}` })
|
|
4006
4534
|
] }) }),
|
|
4007
|
-
/* @__PURE__ */
|
|
4008
|
-
/* @__PURE__ */
|
|
4009
|
-
/* @__PURE__ */
|
|
4535
|
+
/* @__PURE__ */ jsx12("ol", { className: "mb-progress-list", style: { gridTemplateColumns: `repeat(${steps.length}, minmax(0, 1fr))` }, children: steps.map((step, index) => /* @__PURE__ */ jsxs12("li", { className: `is-${step.status}`, "aria-current": step.status === "current" ? "step" : void 0, children: [
|
|
4536
|
+
/* @__PURE__ */ jsx12("span", { "aria-hidden": "true", children: step.status === "complete" ? "\u2713" : rejected && step.status === "current" ? "!" : index + 1 }),
|
|
4537
|
+
/* @__PURE__ */ jsx12("b", { children: step.label })
|
|
4010
4538
|
] }, step.id)) })
|
|
4011
4539
|
] });
|
|
4012
4540
|
}
|
|
@@ -4020,48 +4548,48 @@ function billRejectionIssueSummary(rejection, count) {
|
|
|
4020
4548
|
function BillRejectionNotice({ rejection, title = "Rejected \u2014 action required", submittedAt, appearance, className, style, formatDate = defaultFormatDate }) {
|
|
4021
4549
|
const issues = rejection.issues?.length ? rejection.issues : [{ code: rejection.code, description: rejection.reason }];
|
|
4022
4550
|
const hasCodes = issues.some((issue) => Boolean(issue.code));
|
|
4023
|
-
return /* @__PURE__ */
|
|
4024
|
-
/* @__PURE__ */
|
|
4025
|
-
/* @__PURE__ */
|
|
4026
|
-
/* @__PURE__ */
|
|
4027
|
-
/* @__PURE__ */
|
|
4028
|
-
/* @__PURE__ */
|
|
4029
|
-
/* @__PURE__ */
|
|
4030
|
-
/* @__PURE__ */
|
|
4551
|
+
return /* @__PURE__ */ jsxs12("section", { className: classes("mb-surface mb-rejection-notice", className), style: mindBillAppearanceStyle(appearance, style), role: "alert", "aria-label": "Bill rejection reasons", children: [
|
|
4552
|
+
/* @__PURE__ */ jsx12("style", { children: lifecycleSurfaceStyles }),
|
|
4553
|
+
/* @__PURE__ */ jsxs12("div", { className: "mb-rejection-overview", children: [
|
|
4554
|
+
/* @__PURE__ */ jsxs12("header", { className: "mb-rejection-heading", children: [
|
|
4555
|
+
/* @__PURE__ */ jsx12("span", { className: "mb-rejection-icon", "aria-hidden": "true", children: "!" }),
|
|
4556
|
+
/* @__PURE__ */ jsxs12("div", { children: [
|
|
4557
|
+
/* @__PURE__ */ jsx12("strong", { children: title }),
|
|
4558
|
+
/* @__PURE__ */ jsxs12("span", { children: [
|
|
4031
4559
|
"Fix the ",
|
|
4032
4560
|
issues.length === 1 ? "issue" : "issues",
|
|
4033
4561
|
" below, then resubmit."
|
|
4034
4562
|
] })
|
|
4035
4563
|
] })
|
|
4036
4564
|
] }),
|
|
4037
|
-
/* @__PURE__ */
|
|
4038
|
-
/* @__PURE__ */
|
|
4039
|
-
/* @__PURE__ */
|
|
4040
|
-
/* @__PURE__ */
|
|
4041
|
-
submittedAt ? /* @__PURE__ */
|
|
4565
|
+
/* @__PURE__ */ jsxs12("ol", { className: "mb-rejection-progress", "aria-label": "Submission status", children: [
|
|
4566
|
+
/* @__PURE__ */ jsxs12("li", { className: "is-complete", children: [
|
|
4567
|
+
/* @__PURE__ */ jsx12("span", { "aria-hidden": "true", children: "\u2713" }),
|
|
4568
|
+
/* @__PURE__ */ jsx12("b", { children: "Sent" }),
|
|
4569
|
+
submittedAt ? /* @__PURE__ */ jsx12("small", { children: formatDate(submittedAt) }) : null
|
|
4042
4570
|
] }),
|
|
4043
|
-
/* @__PURE__ */
|
|
4044
|
-
/* @__PURE__ */
|
|
4045
|
-
/* @__PURE__ */
|
|
4046
|
-
rejection.receivedAt ? /* @__PURE__ */
|
|
4571
|
+
/* @__PURE__ */ jsxs12("li", { className: "is-rejected", "aria-current": "step", children: [
|
|
4572
|
+
/* @__PURE__ */ jsx12("span", { "aria-hidden": "true", children: "!" }),
|
|
4573
|
+
/* @__PURE__ */ jsx12("b", { children: "Rejected" }),
|
|
4574
|
+
rejection.receivedAt ? /* @__PURE__ */ jsx12("small", { children: formatDate(rejection.receivedAt) }) : null
|
|
4047
4575
|
] })
|
|
4048
4576
|
] })
|
|
4049
4577
|
] }),
|
|
4050
|
-
/* @__PURE__ */
|
|
4051
|
-
/* @__PURE__ */
|
|
4052
|
-
/* @__PURE__ */
|
|
4053
|
-
/* @__PURE__ */
|
|
4578
|
+
/* @__PURE__ */ jsxs12("div", { className: "mb-rejection-issues", "aria-label": "Rejection reasons", children: [
|
|
4579
|
+
/* @__PURE__ */ jsxs12("div", { className: "mb-rejection-issues-heading", children: [
|
|
4580
|
+
/* @__PURE__ */ jsxs12("strong", { children: [
|
|
4581
|
+
/* @__PURE__ */ jsx12("span", { "aria-hidden": "true", children: "\u25B3" }),
|
|
4054
4582
|
" Rejection reasons"
|
|
4055
4583
|
] }),
|
|
4056
|
-
/* @__PURE__ */
|
|
4584
|
+
/* @__PURE__ */ jsx12("span", { children: billRejectionIssueSummary(rejection, issues.length) })
|
|
4057
4585
|
] }),
|
|
4058
|
-
/* @__PURE__ */
|
|
4059
|
-
/* @__PURE__ */
|
|
4060
|
-
/* @__PURE__ */
|
|
4061
|
-
issue.code ? /* @__PURE__ */
|
|
4586
|
+
/* @__PURE__ */ jsx12("ol", { "aria-label": `${issues.length} rejection ${issues.length === 1 ? "reason" : "reasons"}`, children: issues.map((issue, index) => /* @__PURE__ */ jsxs12("li", { children: [
|
|
4587
|
+
/* @__PURE__ */ jsx12("span", { className: "mb-rejection-bullet", "aria-hidden": "true" }),
|
|
4588
|
+
/* @__PURE__ */ jsx12("p", { children: issue.description }),
|
|
4589
|
+
issue.code ? /* @__PURE__ */ jsx12("span", { className: "mb-rejection-code", children: issue.code }) : null
|
|
4062
4590
|
] }, `${issue.code ?? "issue"}-${index}`)) }),
|
|
4063
|
-
hasCodes ? /* @__PURE__ */
|
|
4064
|
-
/* @__PURE__ */
|
|
4591
|
+
hasCodes ? /* @__PURE__ */ jsxs12("p", { className: "mb-rejection-code-note", children: [
|
|
4592
|
+
/* @__PURE__ */ jsx12("span", { "aria-hidden": "true", children: "i" }),
|
|
4065
4593
|
" Technical error codes are included for support and auditability."
|
|
4066
4594
|
] }) : null
|
|
4067
4595
|
] })
|
|
@@ -4076,18 +4604,18 @@ function BillSnapshotSummary({ bill, patient, injury, delivery, appearance, clas
|
|
|
4076
4604
|
["Charged", currency(bill.totalCharge)],
|
|
4077
4605
|
["Balance", currency(bill.balanceDue)]
|
|
4078
4606
|
];
|
|
4079
|
-
return /* @__PURE__ */
|
|
4080
|
-
/* @__PURE__ */
|
|
4081
|
-
/* @__PURE__ */
|
|
4082
|
-
/* @__PURE__ */
|
|
4083
|
-
/* @__PURE__ */
|
|
4607
|
+
return /* @__PURE__ */ jsxs12("section", { className: classes("mb-surface mb-snapshot", className), style: mindBillAppearanceStyle(appearance, style), "aria-label": "Bill snapshot", children: [
|
|
4608
|
+
/* @__PURE__ */ jsx12("style", { children: lifecycleSurfaceStyles }),
|
|
4609
|
+
/* @__PURE__ */ jsx12("header", { className: "mb-surface-heading", children: /* @__PURE__ */ jsxs12("div", { children: [
|
|
4610
|
+
/* @__PURE__ */ jsx12("strong", { children: "Bill snapshot" }),
|
|
4611
|
+
/* @__PURE__ */ jsxs12("span", { children: [
|
|
4084
4612
|
"Bill #",
|
|
4085
4613
|
bill.billNumber
|
|
4086
4614
|
] })
|
|
4087
4615
|
] }) }),
|
|
4088
|
-
/* @__PURE__ */
|
|
4089
|
-
/* @__PURE__ */
|
|
4090
|
-
/* @__PURE__ */
|
|
4616
|
+
/* @__PURE__ */ jsx12("dl", { children: values.map(([label, value]) => /* @__PURE__ */ jsxs12("div", { children: [
|
|
4617
|
+
/* @__PURE__ */ jsx12("dt", { children: label }),
|
|
4618
|
+
/* @__PURE__ */ jsx12("dd", { children: value })
|
|
4091
4619
|
] }, label)) })
|
|
4092
4620
|
] });
|
|
4093
4621
|
}
|
|
@@ -4102,140 +4630,140 @@ function BillExplanationOfReview({
|
|
|
4102
4630
|
style
|
|
4103
4631
|
}) {
|
|
4104
4632
|
const rows = payments.length ? payments : [null];
|
|
4105
|
-
return /* @__PURE__ */
|
|
4106
|
-
/* @__PURE__ */
|
|
4107
|
-
/* @__PURE__ */
|
|
4108
|
-
/* @__PURE__ */
|
|
4109
|
-
/* @__PURE__ */
|
|
4633
|
+
return /* @__PURE__ */ jsxs12("section", { className: classes("mb-surface mb-eor-review", className), style: mindBillAppearanceStyle(appearance, style), "aria-label": "Explanation of Review and payments", children: [
|
|
4634
|
+
/* @__PURE__ */ jsx12("style", { children: lifecycleSurfaceStyles }),
|
|
4635
|
+
/* @__PURE__ */ jsx12("header", { className: "mb-surface-heading", children: /* @__PURE__ */ jsxs12("div", { children: [
|
|
4636
|
+
/* @__PURE__ */ jsx12("strong", { children: "Explanation of Review" }),
|
|
4637
|
+
/* @__PURE__ */ jsx12("span", { children: "Payer response and payment reconciliation." })
|
|
4110
4638
|
] }) }),
|
|
4111
|
-
/* @__PURE__ */
|
|
4112
|
-
/* @__PURE__ */
|
|
4113
|
-
/* @__PURE__ */
|
|
4114
|
-
/* @__PURE__ */
|
|
4639
|
+
/* @__PURE__ */ jsxs12("dl", { className: "mb-eor-metrics", children: [
|
|
4640
|
+
/* @__PURE__ */ jsxs12("div", { children: [
|
|
4641
|
+
/* @__PURE__ */ jsx12("dt", { children: "Amount billed" }),
|
|
4642
|
+
/* @__PURE__ */ jsx12("dd", { children: currency(remittance.billedAmount) })
|
|
4115
4643
|
] }),
|
|
4116
|
-
/* @__PURE__ */
|
|
4117
|
-
/* @__PURE__ */
|
|
4118
|
-
/* @__PURE__ */
|
|
4644
|
+
/* @__PURE__ */ jsxs12("div", { children: [
|
|
4645
|
+
/* @__PURE__ */ jsx12("dt", { children: "Payer allowed" }),
|
|
4646
|
+
/* @__PURE__ */ jsx12("dd", { children: remittance.payerAllowedAmount === null ? "\u2014" : currency(remittance.payerAllowedAmount) })
|
|
4119
4647
|
] }),
|
|
4120
|
-
/* @__PURE__ */
|
|
4121
|
-
/* @__PURE__ */
|
|
4122
|
-
/* @__PURE__ */
|
|
4648
|
+
/* @__PURE__ */ jsxs12("div", { children: [
|
|
4649
|
+
/* @__PURE__ */ jsx12("dt", { children: "Payer reported paid" }),
|
|
4650
|
+
/* @__PURE__ */ jsx12("dd", { children: remittance.payerReportedPaid === null ? "\u2014" : currency(remittance.payerReportedPaid) })
|
|
4123
4651
|
] }),
|
|
4124
|
-
/* @__PURE__ */
|
|
4125
|
-
/* @__PURE__ */
|
|
4126
|
-
/* @__PURE__ */
|
|
4652
|
+
/* @__PURE__ */ jsxs12("div", { className: "is-balance", children: [
|
|
4653
|
+
/* @__PURE__ */ jsx12("dt", { children: "Balance due" }),
|
|
4654
|
+
/* @__PURE__ */ jsx12("dd", { children: currency(remittance.balanceDue) })
|
|
4127
4655
|
] }),
|
|
4128
|
-
/* @__PURE__ */
|
|
4129
|
-
/* @__PURE__ */
|
|
4130
|
-
/* @__PURE__ */
|
|
4656
|
+
/* @__PURE__ */ jsxs12("div", { children: [
|
|
4657
|
+
/* @__PURE__ */ jsx12("dt", { children: "Payment posted" }),
|
|
4658
|
+
/* @__PURE__ */ jsx12("dd", { children: currency(remittance.postedPrincipal) })
|
|
4131
4659
|
] }),
|
|
4132
|
-
/* @__PURE__ */
|
|
4133
|
-
/* @__PURE__ */
|
|
4134
|
-
/* @__PURE__ */
|
|
4660
|
+
/* @__PURE__ */ jsxs12("div", { children: [
|
|
4661
|
+
/* @__PURE__ */ jsx12("dt", { children: "Penalty & interest" }),
|
|
4662
|
+
/* @__PURE__ */ jsx12("dd", { children: currency(remittance.postedAdditional) })
|
|
4135
4663
|
] }),
|
|
4136
|
-
/* @__PURE__ */
|
|
4137
|
-
/* @__PURE__ */
|
|
4138
|
-
/* @__PURE__ */
|
|
4664
|
+
/* @__PURE__ */ jsxs12("div", { children: [
|
|
4665
|
+
/* @__PURE__ */ jsx12("dt", { children: "Total received" }),
|
|
4666
|
+
/* @__PURE__ */ jsx12("dd", { children: currency(remittance.totalPostedCash) })
|
|
4139
4667
|
] }),
|
|
4140
|
-
/* @__PURE__ */
|
|
4141
|
-
/* @__PURE__ */
|
|
4142
|
-
/* @__PURE__ */
|
|
4668
|
+
/* @__PURE__ */ jsxs12("div", { children: [
|
|
4669
|
+
/* @__PURE__ */ jsx12("dt", { children: "Expected" }),
|
|
4670
|
+
/* @__PURE__ */ jsx12("dd", { children: currency(remittance.expectedAmount) })
|
|
4143
4671
|
] })
|
|
4144
4672
|
] }),
|
|
4145
|
-
remittance.denialReason ? /* @__PURE__ */
|
|
4146
|
-
/* @__PURE__ */
|
|
4147
|
-
/* @__PURE__ */
|
|
4673
|
+
remittance.denialReason ? /* @__PURE__ */ jsxs12("div", { className: "mb-denial", children: [
|
|
4674
|
+
/* @__PURE__ */ jsx12("strong", { children: "Denial reason" }),
|
|
4675
|
+
/* @__PURE__ */ jsx12("p", { children: remittance.denialReason })
|
|
4148
4676
|
] }) : null,
|
|
4149
|
-
/* @__PURE__ */
|
|
4150
|
-
/* @__PURE__ */
|
|
4151
|
-
/* @__PURE__ */
|
|
4152
|
-
/* @__PURE__ */
|
|
4153
|
-
/* @__PURE__ */
|
|
4154
|
-
/* @__PURE__ */
|
|
4155
|
-
/* @__PURE__ */
|
|
4677
|
+
/* @__PURE__ */ jsx12("div", { className: "mb-eor-table-wrap", children: /* @__PURE__ */ jsxs12("table", { className: "mb-eor-table", children: [
|
|
4678
|
+
/* @__PURE__ */ jsxs12("thead", { children: [
|
|
4679
|
+
/* @__PURE__ */ jsxs12("tr", { className: "mb-eor-groups", children: [
|
|
4680
|
+
/* @__PURE__ */ jsx12("th", { colSpan: 2, children: "Submission" }),
|
|
4681
|
+
/* @__PURE__ */ jsx12("th", { colSpan: 5, children: "EOR payment information" }),
|
|
4682
|
+
/* @__PURE__ */ jsx12("th", { colSpan: 2, children: "EOR post" }),
|
|
4683
|
+
/* @__PURE__ */ jsx12("th", { children: "EOR" })
|
|
4156
4684
|
] }),
|
|
4157
|
-
/* @__PURE__ */
|
|
4158
|
-
/* @__PURE__ */
|
|
4159
|
-
/* @__PURE__ */
|
|
4160
|
-
/* @__PURE__ */
|
|
4161
|
-
/* @__PURE__ */
|
|
4162
|
-
/* @__PURE__ */
|
|
4163
|
-
/* @__PURE__ */
|
|
4164
|
-
/* @__PURE__ */
|
|
4165
|
-
/* @__PURE__ */
|
|
4166
|
-
/* @__PURE__ */
|
|
4167
|
-
/* @__PURE__ */
|
|
4685
|
+
/* @__PURE__ */ jsxs12("tr", { children: [
|
|
4686
|
+
/* @__PURE__ */ jsx12("th", { children: "Submission" }),
|
|
4687
|
+
/* @__PURE__ */ jsx12("th", { children: "Submission payment" }),
|
|
4688
|
+
/* @__PURE__ */ jsx12("th", { children: "Payment method" }),
|
|
4689
|
+
/* @__PURE__ */ jsx12("th", { children: "Reference" }),
|
|
4690
|
+
/* @__PURE__ */ jsx12("th", { children: "Effective date" }),
|
|
4691
|
+
/* @__PURE__ */ jsx12("th", { children: "Payment total" }),
|
|
4692
|
+
/* @__PURE__ */ jsx12("th", { children: "Deposit date" }),
|
|
4693
|
+
/* @__PURE__ */ jsx12("th", { children: "Post date" }),
|
|
4694
|
+
/* @__PURE__ */ jsx12("th", { children: "Source" }),
|
|
4695
|
+
/* @__PURE__ */ jsx12("th", { children: "Document" })
|
|
4168
4696
|
] })
|
|
4169
4697
|
] }),
|
|
4170
|
-
/* @__PURE__ */
|
|
4698
|
+
/* @__PURE__ */ jsx12("tbody", { children: rows.map((payment, index) => {
|
|
4171
4699
|
const eor = eors[index] ?? eors[0];
|
|
4172
|
-
return /* @__PURE__ */
|
|
4173
|
-
/* @__PURE__ */
|
|
4174
|
-
/* @__PURE__ */
|
|
4175
|
-
submittedAt ? /* @__PURE__ */
|
|
4700
|
+
return /* @__PURE__ */ jsxs12("tr", { children: [
|
|
4701
|
+
/* @__PURE__ */ jsxs12("td", { "data-label": "Submission", children: [
|
|
4702
|
+
/* @__PURE__ */ jsx12("strong", { children: "Original bill" }),
|
|
4703
|
+
submittedAt ? /* @__PURE__ */ jsxs12("span", { children: [
|
|
4176
4704
|
"Sent ",
|
|
4177
4705
|
defaultFormatDate(submittedAt)
|
|
4178
4706
|
] }) : null
|
|
4179
4707
|
] }),
|
|
4180
|
-
/* @__PURE__ */
|
|
4181
|
-
/* @__PURE__ */
|
|
4182
|
-
/* @__PURE__ */
|
|
4183
|
-
/* @__PURE__ */
|
|
4184
|
-
/* @__PURE__ */
|
|
4185
|
-
/* @__PURE__ */
|
|
4186
|
-
/* @__PURE__ */
|
|
4187
|
-
/* @__PURE__ */
|
|
4188
|
-
/* @__PURE__ */
|
|
4708
|
+
/* @__PURE__ */ jsx12("td", { "data-label": "Submission payment", children: remittance.payerReportedPaid === null ? "\u2014" : currency(remittance.payerReportedPaid) }),
|
|
4709
|
+
/* @__PURE__ */ jsx12("td", { "data-label": "Payment method", children: payment ? humanize(payment.method) : "\u2014" }),
|
|
4710
|
+
/* @__PURE__ */ jsx12("td", { "data-label": "Reference", children: payment?.checkNumber || "\u2014" }),
|
|
4711
|
+
/* @__PURE__ */ jsx12("td", { "data-label": "Effective date", children: payment ? payment.receivedDate || payment.depositDate || defaultFormatDate(payment.postedAt) : "\u2014" }),
|
|
4712
|
+
/* @__PURE__ */ jsx12("td", { "data-label": "Payment total", children: payment ? currency(payment.amount) : currency(0) }),
|
|
4713
|
+
/* @__PURE__ */ jsx12("td", { "data-label": "Deposit date", children: payment?.depositDate || "Not recorded" }),
|
|
4714
|
+
/* @__PURE__ */ jsx12("td", { "data-label": "Post date", children: payment ? defaultFormatDate(payment.postedAt) : eor ? defaultFormatDate(eor.addedAt) : "\u2014" }),
|
|
4715
|
+
/* @__PURE__ */ jsx12("td", { "data-label": "Source", children: payment ? payment.source.toUpperCase() : eor ? "EOR" : "\u2014" }),
|
|
4716
|
+
/* @__PURE__ */ jsx12("td", { "data-label": "EOR", children: eor && onOpenEor ? /* @__PURE__ */ jsx12("button", { type: "button", className: "mb-eor-link", onClick: () => void onOpenEor(eor), children: eor.filename }) : eor?.filename || "\u2014" })
|
|
4189
4717
|
] }, payment?.id ?? `empty-${index}`);
|
|
4190
4718
|
}) })
|
|
4191
4719
|
] }) }),
|
|
4192
|
-
eors.length > rows.length ? /* @__PURE__ */
|
|
4720
|
+
eors.length > rows.length ? /* @__PURE__ */ jsx12("div", { className: "mb-eor-documents", children: eors.slice(rows.length).map((eor) => /* @__PURE__ */ jsx12("button", { type: "button", onClick: () => void onOpenEor?.(eor), children: eor.filename }, eor.id)) }) : null
|
|
4193
4721
|
] });
|
|
4194
4722
|
}
|
|
4195
4723
|
function BillRemittanceCard({ remittance, appearance, className, style }) {
|
|
4196
|
-
return /* @__PURE__ */
|
|
4197
|
-
/* @__PURE__ */
|
|
4198
|
-
/* @__PURE__ */
|
|
4199
|
-
/* @__PURE__ */
|
|
4200
|
-
/* @__PURE__ */
|
|
4724
|
+
return /* @__PURE__ */ jsxs12("section", { className: classes("mb-surface mb-remittance", className), style: mindBillAppearanceStyle(appearance, style), "aria-label": "Remittance summary", children: [
|
|
4725
|
+
/* @__PURE__ */ jsx12("style", { children: lifecycleSurfaceStyles }),
|
|
4726
|
+
/* @__PURE__ */ jsx12("header", { className: "mb-surface-heading", children: /* @__PURE__ */ jsxs12("div", { children: [
|
|
4727
|
+
/* @__PURE__ */ jsx12("strong", { children: "Remittance" }),
|
|
4728
|
+
/* @__PURE__ */ jsx12("span", { children: "Amounts reported by the payer and posted to the bill." })
|
|
4201
4729
|
] }) }),
|
|
4202
|
-
/* @__PURE__ */
|
|
4203
|
-
/* @__PURE__ */
|
|
4204
|
-
/* @__PURE__ */
|
|
4205
|
-
/* @__PURE__ */
|
|
4730
|
+
/* @__PURE__ */ jsxs12("dl", { children: [
|
|
4731
|
+
/* @__PURE__ */ jsxs12("div", { children: [
|
|
4732
|
+
/* @__PURE__ */ jsx12("dt", { children: "Amount billed" }),
|
|
4733
|
+
/* @__PURE__ */ jsx12("dd", { children: currency(remittance.billedAmount) })
|
|
4206
4734
|
] }),
|
|
4207
|
-
/* @__PURE__ */
|
|
4208
|
-
/* @__PURE__ */
|
|
4209
|
-
/* @__PURE__ */
|
|
4735
|
+
/* @__PURE__ */ jsxs12("div", { children: [
|
|
4736
|
+
/* @__PURE__ */ jsx12("dt", { children: "Expected" }),
|
|
4737
|
+
/* @__PURE__ */ jsx12("dd", { children: currency(remittance.expectedAmount) })
|
|
4210
4738
|
] }),
|
|
4211
|
-
/* @__PURE__ */
|
|
4212
|
-
/* @__PURE__ */
|
|
4213
|
-
/* @__PURE__ */
|
|
4739
|
+
/* @__PURE__ */ jsxs12("div", { children: [
|
|
4740
|
+
/* @__PURE__ */ jsx12("dt", { children: "Payer allowed" }),
|
|
4741
|
+
/* @__PURE__ */ jsx12("dd", { children: remittance.payerAllowedAmount === null ? "\u2014" : currency(remittance.payerAllowedAmount) })
|
|
4214
4742
|
] }),
|
|
4215
|
-
/* @__PURE__ */
|
|
4216
|
-
/* @__PURE__ */
|
|
4217
|
-
/* @__PURE__ */
|
|
4743
|
+
/* @__PURE__ */ jsxs12("div", { children: [
|
|
4744
|
+
/* @__PURE__ */ jsx12("dt", { children: "Payer reported paid" }),
|
|
4745
|
+
/* @__PURE__ */ jsx12("dd", { children: remittance.payerReportedPaid === null ? "\u2014" : currency(remittance.payerReportedPaid) })
|
|
4218
4746
|
] }),
|
|
4219
|
-
/* @__PURE__ */
|
|
4220
|
-
/* @__PURE__ */
|
|
4221
|
-
/* @__PURE__ */
|
|
4747
|
+
/* @__PURE__ */ jsxs12("div", { children: [
|
|
4748
|
+
/* @__PURE__ */ jsx12("dt", { children: "Payment posted" }),
|
|
4749
|
+
/* @__PURE__ */ jsx12("dd", { children: currency(remittance.postedPrincipal) })
|
|
4222
4750
|
] }),
|
|
4223
|
-
/* @__PURE__ */
|
|
4224
|
-
/* @__PURE__ */
|
|
4225
|
-
/* @__PURE__ */
|
|
4751
|
+
/* @__PURE__ */ jsxs12("div", { children: [
|
|
4752
|
+
/* @__PURE__ */ jsx12("dt", { children: "Penalty & interest" }),
|
|
4753
|
+
/* @__PURE__ */ jsx12("dd", { children: currency(remittance.postedAdditional) })
|
|
4226
4754
|
] }),
|
|
4227
|
-
/* @__PURE__ */
|
|
4228
|
-
/* @__PURE__ */
|
|
4229
|
-
/* @__PURE__ */
|
|
4755
|
+
/* @__PURE__ */ jsxs12("div", { children: [
|
|
4756
|
+
/* @__PURE__ */ jsx12("dt", { children: "Total received" }),
|
|
4757
|
+
/* @__PURE__ */ jsx12("dd", { children: currency(remittance.totalPostedCash) })
|
|
4230
4758
|
] }),
|
|
4231
|
-
/* @__PURE__ */
|
|
4232
|
-
/* @__PURE__ */
|
|
4233
|
-
/* @__PURE__ */
|
|
4759
|
+
/* @__PURE__ */ jsxs12("div", { children: [
|
|
4760
|
+
/* @__PURE__ */ jsx12("dt", { children: "Balance due" }),
|
|
4761
|
+
/* @__PURE__ */ jsx12("dd", { children: currency(remittance.balanceDue) })
|
|
4234
4762
|
] })
|
|
4235
4763
|
] }),
|
|
4236
|
-
remittance.denialReason ? /* @__PURE__ */
|
|
4237
|
-
/* @__PURE__ */
|
|
4238
|
-
/* @__PURE__ */
|
|
4764
|
+
remittance.denialReason ? /* @__PURE__ */ jsxs12("div", { className: "mb-denial", children: [
|
|
4765
|
+
/* @__PURE__ */ jsx12("strong", { children: "Denial reason" }),
|
|
4766
|
+
/* @__PURE__ */ jsx12("p", { children: remittance.denialReason })
|
|
4239
4767
|
] }) : null
|
|
4240
4768
|
] });
|
|
4241
4769
|
}
|
|
@@ -4250,72 +4778,72 @@ function BillPayerContactCard({ delivery, appearance, className, style }) {
|
|
|
4250
4778
|
delivery.contacts.portalUrl ? ["Portal", "Open payer portal", delivery.contacts.portalUrl] : null
|
|
4251
4779
|
].filter(Boolean);
|
|
4252
4780
|
if (!delivery.payerName && !contacts.length) return null;
|
|
4253
|
-
return /* @__PURE__ */
|
|
4254
|
-
/* @__PURE__ */
|
|
4255
|
-
/* @__PURE__ */
|
|
4256
|
-
/* @__PURE__ */
|
|
4257
|
-
/* @__PURE__ */
|
|
4781
|
+
return /* @__PURE__ */ jsxs12("section", { className: classes("mb-surface mb-contacts", className), style: mindBillAppearanceStyle(appearance, style), "aria-label": "Payer contact information", children: [
|
|
4782
|
+
/* @__PURE__ */ jsx12("style", { children: lifecycleSurfaceStyles }),
|
|
4783
|
+
/* @__PURE__ */ jsx12("header", { className: "mb-surface-heading", children: /* @__PURE__ */ jsxs12("div", { children: [
|
|
4784
|
+
/* @__PURE__ */ jsx12("strong", { children: delivery.payerName || "Claims administrator" }),
|
|
4785
|
+
/* @__PURE__ */ jsx12("span", { children: "Billing and follow-up contacts." })
|
|
4258
4786
|
] }) }),
|
|
4259
|
-
!contacts.length ? /* @__PURE__ */
|
|
4260
|
-
/* @__PURE__ */
|
|
4261
|
-
/* @__PURE__ */
|
|
4787
|
+
!contacts.length ? /* @__PURE__ */ jsx12("p", { className: "mb-empty", children: "No payer contact details are available." }) : /* @__PURE__ */ jsx12("dl", { children: contacts.map(([label, value, href]) => /* @__PURE__ */ jsxs12("div", { children: [
|
|
4788
|
+
/* @__PURE__ */ jsx12("dt", { children: label }),
|
|
4789
|
+
/* @__PURE__ */ jsx12("dd", { children: href ? /* @__PURE__ */ jsx12("a", { href, target: label === "Portal" ? "_blank" : void 0, rel: label === "Portal" ? "noreferrer noopener" : void 0, children: value }) : value })
|
|
4262
4790
|
] }, label)) })
|
|
4263
4791
|
] });
|
|
4264
4792
|
}
|
|
4265
4793
|
function BillPaymentLedger({ payments, appearance, className, style }) {
|
|
4266
|
-
return /* @__PURE__ */
|
|
4267
|
-
/* @__PURE__ */
|
|
4268
|
-
/* @__PURE__ */
|
|
4269
|
-
/* @__PURE__ */
|
|
4270
|
-
/* @__PURE__ */
|
|
4794
|
+
return /* @__PURE__ */ jsxs12("section", { className: classes("mb-surface mb-payments", className), style: mindBillAppearanceStyle(appearance, style), "aria-label": "Payment ledger", children: [
|
|
4795
|
+
/* @__PURE__ */ jsx12("style", { children: lifecycleSurfaceStyles }),
|
|
4796
|
+
/* @__PURE__ */ jsx12("header", { className: "mb-surface-heading", children: /* @__PURE__ */ jsxs12("div", { children: [
|
|
4797
|
+
/* @__PURE__ */ jsx12("strong", { children: "Payments" }),
|
|
4798
|
+
/* @__PURE__ */ jsx12("span", { children: "Funds recorded against this bill." })
|
|
4271
4799
|
] }) }),
|
|
4272
|
-
!payments.length ? /* @__PURE__ */
|
|
4800
|
+
!payments.length ? /* @__PURE__ */ jsx12("p", { className: "mb-empty", children: "No payments posted." }) : /* @__PURE__ */ jsx12("div", { className: "mb-payment-list", children: payments.map((payment) => {
|
|
4273
4801
|
const additional = payment.feeAmount ?? 0;
|
|
4274
|
-
return /* @__PURE__ */
|
|
4275
|
-
/* @__PURE__ */
|
|
4276
|
-
/* @__PURE__ */
|
|
4277
|
-
/* @__PURE__ */
|
|
4802
|
+
return /* @__PURE__ */ jsxs12("article", { children: [
|
|
4803
|
+
/* @__PURE__ */ jsxs12("div", { className: "mb-payment-amount", children: [
|
|
4804
|
+
/* @__PURE__ */ jsx12("strong", { children: currency(payment.amount) }),
|
|
4805
|
+
/* @__PURE__ */ jsx12("span", { children: "Total received" })
|
|
4278
4806
|
] }),
|
|
4279
|
-
/* @__PURE__ */
|
|
4280
|
-
/* @__PURE__ */
|
|
4281
|
-
/* @__PURE__ */
|
|
4282
|
-
/* @__PURE__ */
|
|
4807
|
+
/* @__PURE__ */ jsxs12("dl", { children: [
|
|
4808
|
+
/* @__PURE__ */ jsxs12("div", { children: [
|
|
4809
|
+
/* @__PURE__ */ jsx12("dt", { children: "Applied to bill" }),
|
|
4810
|
+
/* @__PURE__ */ jsx12("dd", { children: currency(payment.principalAmount) })
|
|
4283
4811
|
] }),
|
|
4284
|
-
additional > 0 ? /* @__PURE__ */
|
|
4285
|
-
/* @__PURE__ */
|
|
4286
|
-
/* @__PURE__ */
|
|
4812
|
+
additional > 0 ? /* @__PURE__ */ jsxs12("div", { children: [
|
|
4813
|
+
/* @__PURE__ */ jsx12("dt", { children: "Penalty & interest" }),
|
|
4814
|
+
/* @__PURE__ */ jsx12("dd", { children: currency(additional) })
|
|
4287
4815
|
] }) : null,
|
|
4288
|
-
/* @__PURE__ */
|
|
4289
|
-
/* @__PURE__ */
|
|
4290
|
-
/* @__PURE__ */
|
|
4816
|
+
/* @__PURE__ */ jsxs12("div", { children: [
|
|
4817
|
+
/* @__PURE__ */ jsx12("dt", { children: "Method" }),
|
|
4818
|
+
/* @__PURE__ */ jsx12("dd", { children: payment.method.toUpperCase() })
|
|
4291
4819
|
] }),
|
|
4292
|
-
/* @__PURE__ */
|
|
4293
|
-
/* @__PURE__ */
|
|
4294
|
-
/* @__PURE__ */
|
|
4820
|
+
/* @__PURE__ */ jsxs12("div", { children: [
|
|
4821
|
+
/* @__PURE__ */ jsx12("dt", { children: "Reference" }),
|
|
4822
|
+
/* @__PURE__ */ jsx12("dd", { children: payment.checkNumber || "\u2014" })
|
|
4295
4823
|
] }),
|
|
4296
|
-
/* @__PURE__ */
|
|
4297
|
-
/* @__PURE__ */
|
|
4298
|
-
/* @__PURE__ */
|
|
4824
|
+
/* @__PURE__ */ jsxs12("div", { children: [
|
|
4825
|
+
/* @__PURE__ */ jsx12("dt", { children: "Effective date" }),
|
|
4826
|
+
/* @__PURE__ */ jsx12("dd", { children: payment.receivedDate || payment.depositDate || defaultFormatDate(payment.postedAt) })
|
|
4299
4827
|
] }),
|
|
4300
|
-
/* @__PURE__ */
|
|
4301
|
-
/* @__PURE__ */
|
|
4302
|
-
/* @__PURE__ */
|
|
4828
|
+
/* @__PURE__ */ jsxs12("div", { children: [
|
|
4829
|
+
/* @__PURE__ */ jsx12("dt", { children: "Deposit date" }),
|
|
4830
|
+
/* @__PURE__ */ jsx12("dd", { children: payment.depositDate || "Not recorded" })
|
|
4303
4831
|
] }),
|
|
4304
|
-
/* @__PURE__ */
|
|
4305
|
-
/* @__PURE__ */
|
|
4306
|
-
/* @__PURE__ */
|
|
4832
|
+
/* @__PURE__ */ jsxs12("div", { children: [
|
|
4833
|
+
/* @__PURE__ */ jsx12("dt", { children: "Posted" }),
|
|
4834
|
+
/* @__PURE__ */ jsxs12("dd", { children: [
|
|
4307
4835
|
defaultFormatDate(payment.postedAt),
|
|
4308
4836
|
" \xB7 ",
|
|
4309
4837
|
payment.source.toUpperCase()
|
|
4310
4838
|
] })
|
|
4311
4839
|
] }),
|
|
4312
|
-
/* @__PURE__ */
|
|
4313
|
-
/* @__PURE__ */
|
|
4314
|
-
/* @__PURE__ */
|
|
4840
|
+
/* @__PURE__ */ jsxs12("div", { children: [
|
|
4841
|
+
/* @__PURE__ */ jsx12("dt", { children: "Status" }),
|
|
4842
|
+
/* @__PURE__ */ jsx12("dd", { children: humanize(payment.status || "posted") })
|
|
4315
4843
|
] })
|
|
4316
4844
|
] }),
|
|
4317
|
-
payment.feeReason ? /* @__PURE__ */
|
|
4318
|
-
payment.note ? /* @__PURE__ */
|
|
4845
|
+
payment.feeReason ? /* @__PURE__ */ jsx12("p", { children: payment.feeReason }) : null,
|
|
4846
|
+
payment.note ? /* @__PURE__ */ jsx12("p", { children: payment.note }) : null
|
|
4319
4847
|
] }, payment.id);
|
|
4320
4848
|
}) })
|
|
4321
4849
|
] });
|
|
@@ -4370,10 +4898,10 @@ var lifecycleSurfaceStyles = `
|
|
|
4370
4898
|
// src/connected-bill-lifecycle.tsx
|
|
4371
4899
|
import {
|
|
4372
4900
|
useCallback as useCallback4,
|
|
4373
|
-
useEffect as
|
|
4901
|
+
useEffect as useEffect8,
|
|
4374
4902
|
useMemo as useMemo8,
|
|
4375
4903
|
useRef as useRef5,
|
|
4376
|
-
useState as
|
|
4904
|
+
useState as useState10
|
|
4377
4905
|
} from "react";
|
|
4378
4906
|
import {
|
|
4379
4907
|
DEFAULT_API_BASE_URL as DEFAULT_API_BASE_URL2,
|
|
@@ -4381,7 +4909,7 @@ import {
|
|
|
4381
4909
|
createBillLifecycleClient
|
|
4382
4910
|
} from "@mindbill/browser";
|
|
4383
4911
|
import { createBillLifecycleClient as createBillLifecycleClient2 } from "@mindbill/browser";
|
|
4384
|
-
import { Fragment as
|
|
4912
|
+
import { Fragment as Fragment9, jsx as jsx13, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
4385
4913
|
var DEFAULT_REFRESH_INTERVAL2 = 6e4;
|
|
4386
4914
|
function reservePreviewWindow() {
|
|
4387
4915
|
const preview = window.open("about:blank", "_blank");
|
|
@@ -4423,11 +4951,11 @@ function useBillLifecycle({
|
|
|
4423
4951
|
enabled = true,
|
|
4424
4952
|
fetch: fetchOverride
|
|
4425
4953
|
}) {
|
|
4426
|
-
const [data, setData] =
|
|
4427
|
-
const [error, setError] =
|
|
4428
|
-
const [isLoading, setIsLoading] =
|
|
4429
|
-
const [isRefreshing, setIsRefreshing] =
|
|
4430
|
-
const [isMutating, setIsMutating] =
|
|
4954
|
+
const [data, setData] = useState10(null);
|
|
4955
|
+
const [error, setError] = useState10(null);
|
|
4956
|
+
const [isLoading, setIsLoading] = useState10(enabled);
|
|
4957
|
+
const [isRefreshing, setIsRefreshing] = useState10(false);
|
|
4958
|
+
const [isMutating, setIsMutating] = useState10(false);
|
|
4431
4959
|
const mounted = useRef5(true);
|
|
4432
4960
|
const client = useMemo8(() => createBillLifecycleClient({
|
|
4433
4961
|
billId: providedBillId,
|
|
@@ -4436,12 +4964,12 @@ function useBillLifecycle({
|
|
|
4436
4964
|
apiBaseUrl,
|
|
4437
4965
|
fetch: fetchOverride
|
|
4438
4966
|
}), [apiBaseUrl, fetchOverride, getSession, providedBillId, sessionEndpoint]);
|
|
4439
|
-
|
|
4967
|
+
useEffect8(() => {
|
|
4440
4968
|
setData(null);
|
|
4441
4969
|
setError(null);
|
|
4442
4970
|
setIsLoading(enabled);
|
|
4443
4971
|
}, [enabled, providedBillId]);
|
|
4444
|
-
|
|
4972
|
+
useEffect8(() => {
|
|
4445
4973
|
mounted.current = true;
|
|
4446
4974
|
return () => {
|
|
4447
4975
|
mounted.current = false;
|
|
@@ -4465,7 +4993,7 @@ function useBillLifecycle({
|
|
|
4465
4993
|
}
|
|
4466
4994
|
}
|
|
4467
4995
|
}, [client, enabled]);
|
|
4468
|
-
|
|
4996
|
+
useEffect8(() => {
|
|
4469
4997
|
if (!enabled) return;
|
|
4470
4998
|
void refresh();
|
|
4471
4999
|
const interval = refreshInterval > 0 ? window.setInterval(() => void refresh(), refreshInterval) : null;
|
|
@@ -4530,7 +5058,7 @@ function useBillLifecycle({
|
|
|
4530
5058
|
}
|
|
4531
5059
|
function LifecycleDialog({ children, title, onClose }) {
|
|
4532
5060
|
const dialog = useRef5(null);
|
|
4533
|
-
|
|
5061
|
+
useEffect8(() => {
|
|
4534
5062
|
const previous = document.activeElement;
|
|
4535
5063
|
dialog.current?.focus();
|
|
4536
5064
|
const onKeyDown = (event) => event.key === "Escape" && onClose();
|
|
@@ -4540,8 +5068,8 @@ function LifecycleDialog({ children, title, onClose }) {
|
|
|
4540
5068
|
previous?.focus();
|
|
4541
5069
|
};
|
|
4542
5070
|
}, [onClose]);
|
|
4543
|
-
return /* @__PURE__ */
|
|
4544
|
-
/* @__PURE__ */
|
|
5071
|
+
return /* @__PURE__ */ jsx13("div", { className: "mb-lifecycle-dialog-backdrop", onMouseDown: (event) => event.currentTarget === event.target && onClose(), children: /* @__PURE__ */ jsxs13("div", { ref: dialog, className: "mb-lifecycle-dialog", role: "dialog", "aria-modal": "true", "aria-label": title, tabIndex: -1, children: [
|
|
5072
|
+
/* @__PURE__ */ jsx13("button", { type: "button", className: "mb-lifecycle-dialog-close", "aria-label": "Close", onClick: onClose, children: "\xD7" }),
|
|
4545
5073
|
children
|
|
4546
5074
|
] }) });
|
|
4547
5075
|
}
|
|
@@ -4574,14 +5102,14 @@ function shouldShowSandboxControls(environment, enabled = false) {
|
|
|
4574
5102
|
function ConnectedBillLifecycle({ appearance, sandboxControls = false, className, style, loadingFallback, errorFallback, onChanged, ...options }) {
|
|
4575
5103
|
const lifecycle = useBillLifecycle(options);
|
|
4576
5104
|
const { data } = lifecycle;
|
|
4577
|
-
const [tab, setTab] =
|
|
4578
|
-
const [panel, setPanel] =
|
|
4579
|
-
const [notice, setNotice] =
|
|
4580
|
-
const [reason, setReason] =
|
|
4581
|
-
const [payment, setPayment] =
|
|
4582
|
-
const [review, setReview] =
|
|
5105
|
+
const [tab, setTab] = useState10("details");
|
|
5106
|
+
const [panel, setPanel] = useState10("");
|
|
5107
|
+
const [notice, setNotice] = useState10("");
|
|
5108
|
+
const [reason, setReason] = useState10("");
|
|
5109
|
+
const [payment, setPayment] = useState10({ amount: 0, penaltyAmount: 0, interestAmount: 0, method: "check", checkNumber: "", depositDate: today(), note: "" });
|
|
5110
|
+
const [review, setReview] = useState10({ reason: "", payerClaimControlNumber: "", disputedAmount: void 0, attachmentIds: [], route: "ebill" });
|
|
4583
5111
|
const lastData = useRef5(null);
|
|
4584
|
-
|
|
5112
|
+
useEffect8(() => {
|
|
4585
5113
|
if (!data || data === lastData.current) return;
|
|
4586
5114
|
lastData.current = data;
|
|
4587
5115
|
onChanged?.(data);
|
|
@@ -4598,13 +5126,13 @@ function ConnectedBillLifecycle({ appearance, sandboxControls = false, className
|
|
|
4598
5126
|
attachmentIds: current.attachmentIds.length ? current.attachmentIds.filter((id) => data.bill.attachments.some((document2) => document2.id === id)) : data.bill.attachments.map((document2) => document2.id)
|
|
4599
5127
|
}));
|
|
4600
5128
|
}, [data, onChanged]);
|
|
4601
|
-
if (lifecycle.isLoading && !data) return /* @__PURE__ */
|
|
5129
|
+
if (lifecycle.isLoading && !data) return /* @__PURE__ */ jsx13(Fragment9, { children: loadingFallback ?? /* @__PURE__ */ jsx13("div", { className: "mb-lifecycle-loading", children: "Loading bill\u2026" }) });
|
|
4602
5130
|
if (!data) {
|
|
4603
5131
|
const error = lifecycle.error ?? new Error("Bill could not be loaded.");
|
|
4604
|
-
return /* @__PURE__ */
|
|
4605
|
-
/* @__PURE__ */
|
|
4606
|
-
/* @__PURE__ */
|
|
4607
|
-
/* @__PURE__ */
|
|
5132
|
+
return /* @__PURE__ */ jsx13(Fragment9, { children: errorFallback?.(error, lifecycle.refresh) ?? /* @__PURE__ */ jsxs13("div", { className: "mb-lifecycle-error", role: "alert", children: [
|
|
5133
|
+
/* @__PURE__ */ jsx13("strong", { children: "Billing is unavailable." }),
|
|
5134
|
+
/* @__PURE__ */ jsx13("span", { children: error.message }),
|
|
5135
|
+
/* @__PURE__ */ jsx13("button", { type: "button", onClick: () => void lifecycle.refresh(), children: "Try again" })
|
|
4608
5136
|
] }) });
|
|
4609
5137
|
}
|
|
4610
5138
|
const complete = async (message, task) => {
|
|
@@ -4622,170 +5150,170 @@ function ConnectedBillLifecycle({ appearance, sandboxControls = false, className
|
|
|
4622
5150
|
const actions = data.lifecycle.actions.filter((action) => action.enabled && supportedActions.has(action.id));
|
|
4623
5151
|
const showSandboxControls = shouldShowSandboxControls(data.environment, sandboxControls);
|
|
4624
5152
|
const simulations = showSandboxControls ? sandboxScenarios(data.lifecycle.state) : [];
|
|
4625
|
-
return /* @__PURE__ */
|
|
4626
|
-
/* @__PURE__ */
|
|
4627
|
-
data.lifecycle.state.toLowerCase() === "rejected" && data.rejection ? /* @__PURE__ */
|
|
4628
|
-
/* @__PURE__ */
|
|
4629
|
-
/* @__PURE__ */
|
|
4630
|
-
/* @__PURE__ */
|
|
5153
|
+
return /* @__PURE__ */ jsxs13("section", { className: ["mb-connected-lifecycle", className].filter(Boolean).join(" "), style: mindBillAppearanceStyle(appearance, style), children: [
|
|
5154
|
+
/* @__PURE__ */ jsx13("style", { children: CONNECTED_LIFECYCLE_STYLES }),
|
|
5155
|
+
data.lifecycle.state.toLowerCase() === "rejected" && data.rejection ? /* @__PURE__ */ jsx13(BillRejectionNotice, { rejection: data.rejection, submittedAt: data.lifecycle.submittedAt ?? null, ...appearance ? { appearance } : {} }) : /* @__PURE__ */ jsx13(BillLifecycleProgress, { state: data.lifecycle.state, nativeStatus: data.lifecycle.nativeStatus, submittedAt: data.lifecycle.submittedAt ?? null, agingDays: data.lifecycle.agingDays ?? null, ...appearance ? { appearance } : {} }),
|
|
5156
|
+
/* @__PURE__ */ jsxs13("header", { className: "mb-lifecycle-head", children: [
|
|
5157
|
+
/* @__PURE__ */ jsxs13("div", { children: [
|
|
5158
|
+
/* @__PURE__ */ jsx13("div", { className: "mb-lifecycle-title", children: /* @__PURE__ */ jsxs13("h2", { children: [
|
|
4631
5159
|
"Bill #",
|
|
4632
5160
|
data.bill.billNumber
|
|
4633
5161
|
] }) }),
|
|
4634
|
-
/* @__PURE__ */
|
|
5162
|
+
/* @__PURE__ */ jsxs13("p", { children: [
|
|
4635
5163
|
"Claim ",
|
|
4636
5164
|
data.injury.claimNumber || "\u2014",
|
|
4637
5165
|
lifecycle.isRefreshing ? " \xB7 Refreshing\u2026" : ""
|
|
4638
5166
|
] })
|
|
4639
5167
|
] }),
|
|
4640
|
-
/* @__PURE__ */
|
|
5168
|
+
/* @__PURE__ */ jsx13("button", { type: "button", className: "mb-lifecycle-button primary", disabled: lifecycle.isMutating, onClick: () => void lifecycle.downloadPacket().catch(() => void 0), children: "Download packet" })
|
|
4641
5169
|
] }),
|
|
4642
|
-
/* @__PURE__ */
|
|
4643
|
-
/* @__PURE__ */
|
|
4644
|
-
/* @__PURE__ */
|
|
5170
|
+
/* @__PURE__ */ jsxs13("div", { className: "mb-lifecycle-tabs", role: "tablist", "aria-label": "Bill view", children: [
|
|
5171
|
+
/* @__PURE__ */ jsx13("button", { type: "button", role: "tab", "aria-selected": tab === "details", onClick: () => setTab("details"), children: "Bill details" }),
|
|
5172
|
+
/* @__PURE__ */ jsx13("button", { type: "button", role: "tab", "aria-selected": tab === "history", onClick: () => setTab("history"), children: "Bill history" })
|
|
4645
5173
|
] }),
|
|
4646
|
-
tab === "details" ? /* @__PURE__ */
|
|
4647
|
-
data.eors.length || data.payments.length || ["processed", "denied", "partially_paid"].includes(data.lifecycle.state) ? /* @__PURE__ */
|
|
4648
|
-
showSandboxControls ? /* @__PURE__ */
|
|
4649
|
-
/* @__PURE__ */
|
|
4650
|
-
/* @__PURE__ */
|
|
4651
|
-
/* @__PURE__ */
|
|
4652
|
-
/* @__PURE__ */
|
|
5174
|
+
tab === "details" ? /* @__PURE__ */ jsxs13("div", { className: "mb-lifecycle-tabpanel", role: "tabpanel", children: [
|
|
5175
|
+
data.eors.length || data.payments.length || ["processed", "denied", "partially_paid"].includes(data.lifecycle.state) ? /* @__PURE__ */ jsx13(BillExplanationOfReview, { remittance: data.remittance, eors: data.eors, payments: data.payments, submittedAt: data.lifecycle.submittedAt ?? null, onOpenEor: lifecycle.openEor, ...appearance ? { appearance } : {} }) : null,
|
|
5176
|
+
showSandboxControls ? /* @__PURE__ */ jsxs13("section", { className: "mb-lifecycle-simulator", "aria-label": "Sandbox lifecycle simulator", children: [
|
|
5177
|
+
/* @__PURE__ */ jsxs13("div", { children: [
|
|
5178
|
+
/* @__PURE__ */ jsx13("span", { children: "Sandbox demo controls" }),
|
|
5179
|
+
/* @__PURE__ */ jsx13("h3", { children: "Simulate the next payer response" }),
|
|
5180
|
+
/* @__PURE__ */ jsx13("p", { children: "This changes sandbox data only. The host receives the result through the same lifecycle API and components partners use." })
|
|
4653
5181
|
] }),
|
|
4654
|
-
simulations.length ? /* @__PURE__ */
|
|
4655
|
-
/* @__PURE__ */
|
|
4656
|
-
/* @__PURE__ */
|
|
4657
|
-
] }, scenario.id)) }) : /* @__PURE__ */
|
|
5182
|
+
simulations.length ? /* @__PURE__ */ jsx13("div", { className: "mb-lifecycle-simulator-actions", children: simulations.map((scenario) => /* @__PURE__ */ jsxs13("button", { type: "button", disabled: lifecycle.isMutating, onClick: () => void complete(`${scenario.label} simulated.`, () => lifecycle.simulateSandbox({ scenario: scenario.id })), children: [
|
|
5183
|
+
/* @__PURE__ */ jsx13("strong", { children: scenario.label }),
|
|
5184
|
+
/* @__PURE__ */ jsx13("span", { children: scenario.detail })
|
|
5185
|
+
] }, scenario.id)) }) : /* @__PURE__ */ jsx13("p", { className: "mb-lifecycle-simulator-idle", children: "No simulated payer transition is needed at this stage. Use the bill action below to continue." })
|
|
4658
5186
|
] }) : null,
|
|
4659
|
-
/* @__PURE__ */
|
|
4660
|
-
] }) : /* @__PURE__ */
|
|
4661
|
-
viewEor || actions.length ? /* @__PURE__ */
|
|
4662
|
-
viewEor && data.eors[0] ? /* @__PURE__ */
|
|
4663
|
-
actions.map((action) => /* @__PURE__ */
|
|
5187
|
+
/* @__PURE__ */ jsx13(BillReadOnlyForm, { data, onOpenAttachment: lifecycle.openAttachment, ...appearance ? { appearance } : {} })
|
|
5188
|
+
] }) : /* @__PURE__ */ jsx13("div", { className: "mb-lifecycle-tabpanel", role: "tabpanel", children: data.history?.length ? /* @__PURE__ */ jsx13(BillHistoryTable, { entries: data.history, ...appearance ? { appearance } : {} }) : /* @__PURE__ */ jsx13(BillActivityTimeline, { events: data.activity, ...appearance ? { appearance } : {} }) }),
|
|
5189
|
+
viewEor || actions.length ? /* @__PURE__ */ jsxs13("aside", { className: "mb-lifecycle-actions-sheet", "aria-label": "Bill actions", children: [
|
|
5190
|
+
viewEor && data.eors[0] ? /* @__PURE__ */ jsx13("button", { type: "button", className: "mb-lifecycle-button secondary", onClick: () => void lifecycle.openEor(data.eors[0]).catch(() => void 0), children: viewEor.label }) : null,
|
|
5191
|
+
actions.map((action) => /* @__PURE__ */ jsx13("button", { type: "button", className: action.primary ? "mb-lifecycle-button primary" : "mb-lifecycle-button secondary", onClick: () => {
|
|
4664
5192
|
const next = actionPanel(action);
|
|
4665
5193
|
if (next) setPanel(next);
|
|
4666
5194
|
}, children: action.label }, action.id))
|
|
4667
5195
|
] }) : null,
|
|
4668
|
-
panel === "resubmit" ? /* @__PURE__ */
|
|
4669
|
-
/* @__PURE__ */
|
|
4670
|
-
/* @__PURE__ */
|
|
4671
|
-
/* @__PURE__ */
|
|
5196
|
+
panel === "resubmit" ? /* @__PURE__ */ jsx13(LifecycleDialog, { title: "Correct and resubmit", onClose: () => setPanel(""), children: /* @__PURE__ */ jsxs13("section", { className: "mb-lifecycle-panel", children: [
|
|
5197
|
+
/* @__PURE__ */ jsxs13("div", { children: [
|
|
5198
|
+
/* @__PURE__ */ jsx13("h3", { children: "Correct and resubmit" }),
|
|
5199
|
+
/* @__PURE__ */ jsx13("p", { children: "The original submission remains immutable. This records a new submission attempt after the routing issue is corrected." })
|
|
4672
5200
|
] }),
|
|
4673
|
-
/* @__PURE__ */
|
|
4674
|
-
/* @__PURE__ */
|
|
4675
|
-
/* @__PURE__ */
|
|
5201
|
+
/* @__PURE__ */ jsxs13("label", { children: [
|
|
5202
|
+
/* @__PURE__ */ jsx13("span", { children: "Correction note (optional)" }),
|
|
5203
|
+
/* @__PURE__ */ jsx13("textarea", { value: reason, placeholder: "What changed before resubmission?", onChange: (event) => setReason(event.target.value) })
|
|
4676
5204
|
] }),
|
|
4677
|
-
/* @__PURE__ */
|
|
4678
|
-
/* @__PURE__ */
|
|
4679
|
-
/* @__PURE__ */
|
|
5205
|
+
/* @__PURE__ */ jsxs13("div", { className: "mb-lifecycle-panel-actions", children: [
|
|
5206
|
+
/* @__PURE__ */ jsx13("button", { type: "button", className: "mb-lifecycle-button secondary", onClick: () => setPanel(""), children: "Cancel" }),
|
|
5207
|
+
/* @__PURE__ */ jsx13("button", { type: "button", className: "mb-lifecycle-button primary", disabled: lifecycle.isMutating, onClick: () => void complete("Bill resubmitted.", () => lifecycle.resubmitBill({ reason })), children: lifecycle.isMutating ? "Resubmitting\u2026" : "Resubmit bill" })
|
|
4680
5208
|
] })
|
|
4681
5209
|
] }) }) : null,
|
|
4682
|
-
panel === "second_review" ? /* @__PURE__ */
|
|
4683
|
-
/* @__PURE__ */
|
|
4684
|
-
/* @__PURE__ */
|
|
4685
|
-
/* @__PURE__ */
|
|
5210
|
+
panel === "second_review" ? /* @__PURE__ */ jsx13(LifecycleDialog, { title: "Submit Second Review", onClose: () => setPanel(""), children: /* @__PURE__ */ jsxs13("section", { className: "mb-lifecycle-panel", children: [
|
|
5211
|
+
/* @__PURE__ */ jsxs13("div", { children: [
|
|
5212
|
+
/* @__PURE__ */ jsx13("h3", { children: "Submit Second Review" }),
|
|
5213
|
+
/* @__PURE__ */ jsx13("p", { children: "Explain the dispute and include the payer control number and supporting documents." })
|
|
4686
5214
|
] }),
|
|
4687
|
-
/* @__PURE__ */
|
|
4688
|
-
/* @__PURE__ */
|
|
4689
|
-
/* @__PURE__ */
|
|
4690
|
-
/* @__PURE__ */
|
|
5215
|
+
/* @__PURE__ */ jsxs13("div", { className: "mb-lifecycle-fields two", children: [
|
|
5216
|
+
/* @__PURE__ */ jsxs13("label", { className: "full", children: [
|
|
5217
|
+
/* @__PURE__ */ jsx13("span", { children: "Reason" }),
|
|
5218
|
+
/* @__PURE__ */ jsx13("textarea", { required: true, value: review.reason, onChange: (event) => setReview((current) => ({ ...current, reason: event.target.value })) })
|
|
4691
5219
|
] }),
|
|
4692
|
-
/* @__PURE__ */
|
|
4693
|
-
/* @__PURE__ */
|
|
4694
|
-
/* @__PURE__ */
|
|
5220
|
+
/* @__PURE__ */ jsxs13("label", { children: [
|
|
5221
|
+
/* @__PURE__ */ jsx13("span", { children: "Payer claim control number" }),
|
|
5222
|
+
/* @__PURE__ */ jsx13("input", { required: true, value: review.payerClaimControlNumber, onChange: (event) => setReview((current) => ({ ...current, payerClaimControlNumber: event.target.value })) })
|
|
4695
5223
|
] }),
|
|
4696
|
-
/* @__PURE__ */
|
|
4697
|
-
/* @__PURE__ */
|
|
4698
|
-
/* @__PURE__ */
|
|
5224
|
+
/* @__PURE__ */ jsxs13("label", { children: [
|
|
5225
|
+
/* @__PURE__ */ jsx13("span", { children: "Disputed amount" }),
|
|
5226
|
+
/* @__PURE__ */ jsx13("input", { type: "number", min: "0.01", step: "0.01", value: review.disputedAmount ?? "", onChange: (event) => setReview((current) => ({ ...current, disputedAmount: event.target.value ? Number(event.target.value) : void 0 })) })
|
|
4699
5227
|
] }),
|
|
4700
|
-
/* @__PURE__ */
|
|
4701
|
-
/* @__PURE__ */
|
|
4702
|
-
/* @__PURE__ */
|
|
4703
|
-
/* @__PURE__ */
|
|
4704
|
-
/* @__PURE__ */
|
|
4705
|
-
/* @__PURE__ */
|
|
4706
|
-
/* @__PURE__ */
|
|
5228
|
+
/* @__PURE__ */ jsxs13("label", { children: [
|
|
5229
|
+
/* @__PURE__ */ jsx13("span", { children: "Send via" }),
|
|
5230
|
+
/* @__PURE__ */ jsxs13("select", { value: review.route, onChange: (event) => setReview((current) => ({ ...current, route: event.target.value })), children: [
|
|
5231
|
+
/* @__PURE__ */ jsx13("option", { value: "ebill", children: "E-bill" }),
|
|
5232
|
+
/* @__PURE__ */ jsx13("option", { value: "fax", children: "Fax" }),
|
|
5233
|
+
/* @__PURE__ */ jsx13("option", { value: "mail", children: "Mail" }),
|
|
5234
|
+
/* @__PURE__ */ jsx13("option", { value: "email", children: "Email" })
|
|
4707
5235
|
] })
|
|
4708
5236
|
] })
|
|
4709
5237
|
] }),
|
|
4710
|
-
/* @__PURE__ */
|
|
4711
|
-
/* @__PURE__ */
|
|
4712
|
-
data.bill.attachments.map((attachment) => /* @__PURE__ */
|
|
4713
|
-
/* @__PURE__ */
|
|
4714
|
-
/* @__PURE__ */
|
|
4715
|
-
/* @__PURE__ */
|
|
4716
|
-
/* @__PURE__ */
|
|
5238
|
+
/* @__PURE__ */ jsxs13("fieldset", { className: "mb-lifecycle-packet", children: [
|
|
5239
|
+
/* @__PURE__ */ jsx13("legend", { children: "Supporting packet" }),
|
|
5240
|
+
data.bill.attachments.map((attachment) => /* @__PURE__ */ jsxs13("label", { children: [
|
|
5241
|
+
/* @__PURE__ */ jsx13("input", { type: "checkbox", checked: review.attachmentIds.includes(attachment.id), onChange: (event) => setReview((current) => ({ ...current, attachmentIds: event.target.checked ? [...current.attachmentIds, attachment.id] : current.attachmentIds.filter((id) => id !== attachment.id) })) }),
|
|
5242
|
+
/* @__PURE__ */ jsxs13("span", { children: [
|
|
5243
|
+
/* @__PURE__ */ jsx13("strong", { children: attachment.filename }),
|
|
5244
|
+
/* @__PURE__ */ jsx13("small", { children: attachment.description || attachment.documentType })
|
|
4717
5245
|
] }),
|
|
4718
|
-
/* @__PURE__ */
|
|
5246
|
+
/* @__PURE__ */ jsx13("button", { type: "button", onClick: () => void lifecycle.openAttachment(attachment).catch(() => void 0), children: "View" })
|
|
4719
5247
|
] }, attachment.id))
|
|
4720
5248
|
] }),
|
|
4721
|
-
/* @__PURE__ */
|
|
4722
|
-
/* @__PURE__ */
|
|
4723
|
-
/* @__PURE__ */
|
|
5249
|
+
/* @__PURE__ */ jsxs13("div", { className: "mb-lifecycle-panel-actions", children: [
|
|
5250
|
+
/* @__PURE__ */ jsx13("button", { type: "button", className: "mb-lifecycle-button secondary", onClick: () => setPanel(""), children: "Cancel" }),
|
|
5251
|
+
/* @__PURE__ */ jsx13("button", { type: "button", className: "mb-lifecycle-button primary", disabled: lifecycle.isMutating || !review.reason.trim() || !review.payerClaimControlNumber.trim(), onClick: () => void complete("Second Review submitted.", () => lifecycle.submitSecondReview(review)), children: lifecycle.isMutating ? "Submitting\u2026" : "Submit Second Review" })
|
|
4724
5252
|
] })
|
|
4725
5253
|
] }) }) : null,
|
|
4726
|
-
panel === "payment" ? /* @__PURE__ */
|
|
4727
|
-
/* @__PURE__ */
|
|
4728
|
-
/* @__PURE__ */
|
|
4729
|
-
/* @__PURE__ */
|
|
5254
|
+
panel === "payment" ? /* @__PURE__ */ jsx13(LifecycleDialog, { title: "Post payment", onClose: () => setPanel(""), children: /* @__PURE__ */ jsxs13("section", { className: "mb-lifecycle-panel", children: [
|
|
5255
|
+
/* @__PURE__ */ jsxs13("div", { children: [
|
|
5256
|
+
/* @__PURE__ */ jsx13("h3", { children: "Post payment" }),
|
|
5257
|
+
/* @__PURE__ */ jsx13("p", { children: "Record a full or partial payment, plus any penalty and interest received." })
|
|
4730
5258
|
] }),
|
|
4731
|
-
/* @__PURE__ */
|
|
4732
|
-
/* @__PURE__ */
|
|
4733
|
-
/* @__PURE__ */
|
|
4734
|
-
/* @__PURE__ */
|
|
5259
|
+
/* @__PURE__ */ jsxs13("div", { className: "mb-lifecycle-fields two", children: [
|
|
5260
|
+
/* @__PURE__ */ jsxs13("label", { children: [
|
|
5261
|
+
/* @__PURE__ */ jsx13("span", { children: "Amount applied to bill" }),
|
|
5262
|
+
/* @__PURE__ */ jsx13("input", { type: "number", min: "0.01", max: data.bill.balanceDue, step: "0.01", value: payment.amount || "", onChange: (event) => setPayment((current) => ({ ...current, amount: Number(event.target.value) })) })
|
|
4735
5263
|
] }),
|
|
4736
|
-
/* @__PURE__ */
|
|
4737
|
-
/* @__PURE__ */
|
|
4738
|
-
/* @__PURE__ */
|
|
5264
|
+
/* @__PURE__ */ jsxs13("label", { children: [
|
|
5265
|
+
/* @__PURE__ */ jsx13("span", { children: "Penalty" }),
|
|
5266
|
+
/* @__PURE__ */ jsx13("input", { type: "number", min: "0", step: "0.01", value: payment.penaltyAmount || "", placeholder: "0.00", onChange: (event) => setPayment((current) => ({ ...current, penaltyAmount: Number(event.target.value) })) })
|
|
4739
5267
|
] }),
|
|
4740
|
-
/* @__PURE__ */
|
|
4741
|
-
/* @__PURE__ */
|
|
4742
|
-
/* @__PURE__ */
|
|
5268
|
+
/* @__PURE__ */ jsxs13("label", { children: [
|
|
5269
|
+
/* @__PURE__ */ jsx13("span", { children: "Interest" }),
|
|
5270
|
+
/* @__PURE__ */ jsx13("input", { type: "number", min: "0", step: "0.01", value: payment.interestAmount || "", placeholder: "0.00", onChange: (event) => setPayment((current) => ({ ...current, interestAmount: Number(event.target.value) })) })
|
|
4743
5271
|
] }),
|
|
4744
|
-
/* @__PURE__ */
|
|
4745
|
-
/* @__PURE__ */
|
|
4746
|
-
/* @__PURE__ */
|
|
4747
|
-
/* @__PURE__ */
|
|
4748
|
-
/* @__PURE__ */
|
|
5272
|
+
/* @__PURE__ */ jsxs13("label", { children: [
|
|
5273
|
+
/* @__PURE__ */ jsx13("span", { children: "Method" }),
|
|
5274
|
+
/* @__PURE__ */ jsxs13("select", { value: payment.method, onChange: (event) => setPayment((current) => ({ ...current, method: event.target.value })), children: [
|
|
5275
|
+
/* @__PURE__ */ jsx13("option", { value: "check", children: "Check" }),
|
|
5276
|
+
/* @__PURE__ */ jsx13("option", { value: "eft", children: "EFT" })
|
|
4749
5277
|
] })
|
|
4750
5278
|
] }),
|
|
4751
|
-
/* @__PURE__ */
|
|
4752
|
-
/* @__PURE__ */
|
|
4753
|
-
/* @__PURE__ */
|
|
5279
|
+
/* @__PURE__ */ jsxs13("label", { children: [
|
|
5280
|
+
/* @__PURE__ */ jsx13("span", { children: payment.method === "check" ? "Check number" : "EFT reference" }),
|
|
5281
|
+
/* @__PURE__ */ jsx13("input", { value: payment.checkNumber, onChange: (event) => setPayment((current) => ({ ...current, checkNumber: event.target.value })) })
|
|
4754
5282
|
] }),
|
|
4755
|
-
/* @__PURE__ */
|
|
4756
|
-
/* @__PURE__ */
|
|
4757
|
-
/* @__PURE__ */
|
|
5283
|
+
/* @__PURE__ */ jsxs13("label", { children: [
|
|
5284
|
+
/* @__PURE__ */ jsx13("span", { children: "Deposit date" }),
|
|
5285
|
+
/* @__PURE__ */ jsx13("input", { required: true, value: payment.depositDate, placeholder: "MM/DD/YYYY", onChange: (event) => setPayment((current) => ({ ...current, depositDate: event.target.value })) })
|
|
4758
5286
|
] }),
|
|
4759
|
-
/* @__PURE__ */
|
|
4760
|
-
/* @__PURE__ */
|
|
4761
|
-
/* @__PURE__ */
|
|
5287
|
+
/* @__PURE__ */ jsxs13("label", { className: "full", children: [
|
|
5288
|
+
/* @__PURE__ */ jsx13("span", { children: "Note (optional)" }),
|
|
5289
|
+
/* @__PURE__ */ jsx13("input", { value: payment.note, onChange: (event) => setPayment((current) => ({ ...current, note: event.target.value })) })
|
|
4762
5290
|
] })
|
|
4763
5291
|
] }),
|
|
4764
|
-
/* @__PURE__ */
|
|
4765
|
-
/* @__PURE__ */
|
|
4766
|
-
/* @__PURE__ */
|
|
5292
|
+
/* @__PURE__ */ jsxs13("div", { className: "mb-payment-total", children: [
|
|
5293
|
+
/* @__PURE__ */ jsx13("span", { children: "Total received" }),
|
|
5294
|
+
/* @__PURE__ */ jsx13("strong", { children: new Intl.NumberFormat(void 0, { style: "currency", currency: "USD" }).format(payment.amount + (payment.penaltyAmount ?? 0) + (payment.interestAmount ?? 0)) })
|
|
4767
5295
|
] }),
|
|
4768
|
-
/* @__PURE__ */
|
|
4769
|
-
/* @__PURE__ */
|
|
4770
|
-
/* @__PURE__ */
|
|
5296
|
+
/* @__PURE__ */ jsxs13("div", { className: "mb-lifecycle-panel-actions", children: [
|
|
5297
|
+
/* @__PURE__ */ jsx13("button", { type: "button", className: "mb-lifecycle-button secondary", onClick: () => setPanel(""), children: "Cancel" }),
|
|
5298
|
+
/* @__PURE__ */ jsx13("button", { type: "button", className: "mb-lifecycle-button primary", disabled: lifecycle.isMutating || payment.amount <= 0 || payment.amount > data.bill.balanceDue || (payment.penaltyAmount ?? 0) < 0 || (payment.interestAmount ?? 0) < 0 || !payment.depositDate, onClick: () => void complete("Payment posted.", () => lifecycle.postPayment(payment)), children: lifecycle.isMutating ? "Posting\u2026" : "Post payment" })
|
|
4771
5299
|
] })
|
|
4772
5300
|
] }) }) : null,
|
|
4773
|
-
panel === "close" || panel === "reopen" ? /* @__PURE__ */
|
|
4774
|
-
/* @__PURE__ */
|
|
4775
|
-
/* @__PURE__ */
|
|
4776
|
-
/* @__PURE__ */
|
|
5301
|
+
panel === "close" || panel === "reopen" ? /* @__PURE__ */ jsx13(LifecycleDialog, { title: panel === "close" ? "Close bill" : "Reopen bill", onClose: () => setPanel(""), children: /* @__PURE__ */ jsxs13("section", { className: "mb-lifecycle-panel", children: [
|
|
5302
|
+
/* @__PURE__ */ jsxs13("div", { children: [
|
|
5303
|
+
/* @__PURE__ */ jsx13("h3", { children: panel === "close" ? "Close bill" : "Reopen bill" }),
|
|
5304
|
+
/* @__PURE__ */ jsx13("p", { children: panel === "close" ? "The immutable submission and history remain available." : "Return this bill to active follow-up without changing the submitted snapshot." })
|
|
4777
5305
|
] }),
|
|
4778
|
-
/* @__PURE__ */
|
|
4779
|
-
/* @__PURE__ */
|
|
4780
|
-
/* @__PURE__ */
|
|
5306
|
+
/* @__PURE__ */ jsxs13("label", { children: [
|
|
5307
|
+
/* @__PURE__ */ jsx13("span", { children: "Reason" }),
|
|
5308
|
+
/* @__PURE__ */ jsx13("textarea", { required: true, value: reason, onChange: (event) => setReason(event.target.value) })
|
|
4781
5309
|
] }),
|
|
4782
|
-
/* @__PURE__ */
|
|
4783
|
-
/* @__PURE__ */
|
|
4784
|
-
/* @__PURE__ */
|
|
5310
|
+
/* @__PURE__ */ jsxs13("div", { className: "mb-lifecycle-panel-actions", children: [
|
|
5311
|
+
/* @__PURE__ */ jsx13("button", { type: "button", className: "mb-lifecycle-button secondary", onClick: () => setPanel(""), children: "Cancel" }),
|
|
5312
|
+
/* @__PURE__ */ jsx13("button", { type: "button", className: "mb-lifecycle-button primary", disabled: lifecycle.isMutating || !reason.trim(), onClick: () => void complete(panel === "close" ? "Bill closed." : "Bill reopened.", () => panel === "close" ? lifecycle.closeBill({ reason }) : lifecycle.reopenBill({ reason })), children: lifecycle.isMutating ? "Saving\u2026" : panel === "close" ? "Close bill" : "Reopen bill" })
|
|
4785
5313
|
] })
|
|
4786
5314
|
] }) }) : null,
|
|
4787
|
-
notice ? /* @__PURE__ */
|
|
4788
|
-
lifecycle.error ? /* @__PURE__ */
|
|
5315
|
+
notice ? /* @__PURE__ */ jsx13("div", { className: "mb-lifecycle-message success", role: "status", children: notice }) : null,
|
|
5316
|
+
lifecycle.error ? /* @__PURE__ */ jsx13("div", { className: "mb-lifecycle-message error", role: "alert", children: lifecycle.error.message }) : null
|
|
4789
5317
|
] });
|
|
4790
5318
|
}
|
|
4791
5319
|
var CONNECTED_LIFECYCLE_STYLES = `
|
|
@@ -4799,7 +5327,7 @@ var CONNECTED_LIFECYCLE_STYLES = `
|
|
|
4799
5327
|
function widget(tagName, props) {
|
|
4800
5328
|
const ref = useRef6(null);
|
|
4801
5329
|
const { onMindBill, onMindBillError } = props;
|
|
4802
|
-
|
|
5330
|
+
useEffect9(() => {
|
|
4803
5331
|
const element = ref.current;
|
|
4804
5332
|
if (!element) return;
|
|
4805
5333
|
const handleEvent = (event) => onMindBill?.(event);
|
|
@@ -4841,6 +5369,7 @@ export {
|
|
|
4841
5369
|
BILL_SUBMISSION_DOCUMENT_TYPES,
|
|
4842
5370
|
BILL_SUBMISSION_REPORT_TYPES,
|
|
4843
5371
|
BILL_SUBMISSION_REQUIRED_FIELDS,
|
|
5372
|
+
BILL_TASKS_AGING_BUCKETS2 as BILL_TASKS_AGING_BUCKETS,
|
|
4844
5373
|
BillActivityTimeline,
|
|
4845
5374
|
BillAgingSummary,
|
|
4846
5375
|
BillExplanationOfReview,
|
|
@@ -4865,6 +5394,8 @@ export {
|
|
|
4865
5394
|
BillSubmissionPatientSection,
|
|
4866
5395
|
BillSubmissionProvidersSection,
|
|
4867
5396
|
BillSubmissionServiceLinesSection,
|
|
5397
|
+
BillSubmissionsRibbon,
|
|
5398
|
+
BillTasksDashboard,
|
|
4868
5399
|
BillingDashboard,
|
|
4869
5400
|
BillingReport,
|
|
4870
5401
|
BillingSettings,
|
|
@@ -4878,6 +5409,8 @@ export {
|
|
|
4878
5409
|
MindBillBillTimeline,
|
|
4879
5410
|
OrganizationOnboarding,
|
|
4880
5411
|
PSYCH_QME_DEFAULT_DIAGNOSIS,
|
|
5412
|
+
REPORT_BILL_STATUS_OPTIONS,
|
|
5413
|
+
ReportBillStatusDialog,
|
|
4881
5414
|
SendRouteDialog,
|
|
4882
5415
|
applyBillSubmissionEvaluationDiagnoses,
|
|
4883
5416
|
applyBillSubmissionEvaluationModifiers,
|
|
@@ -4886,9 +5419,13 @@ export {
|
|
|
4886
5419
|
billAgingDays,
|
|
4887
5420
|
billLifecycleDisplayLabel,
|
|
4888
5421
|
billLifecycleStage,
|
|
5422
|
+
billSubmissionsRibbonDeliveryLabel,
|
|
5423
|
+
billSubmissionsRibbonFromHistory,
|
|
5424
|
+
billTasksAgingBucketIndex,
|
|
4889
5425
|
buildBillReviewSaveInput,
|
|
4890
5426
|
buildBillStatusAgingCsv,
|
|
4891
5427
|
buildBillStatusAgingMatrix,
|
|
5428
|
+
buildBillTasksDashboard,
|
|
4892
5429
|
buildBillingReportCsv,
|
|
4893
5430
|
buildBillingReportRows,
|
|
4894
5431
|
calculateBillSubmissionAllowedAmount,
|