@mindbill/react 0.50.0 → 0.52.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/dist/index.d.ts +47 -1
- package/dist/index.js +977 -767
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -348,7 +348,7 @@ function organizationProfileOptions(profile) {
|
|
|
348
348
|
|
|
349
349
|
// src/index.tsx
|
|
350
350
|
import "@mindbill/embed";
|
|
351
|
-
import { createElement, useEffect as
|
|
351
|
+
import { createElement, useEffect as useEffect16, useRef as useRef11 } from "react";
|
|
352
352
|
|
|
353
353
|
// src/native-bill-review.tsx
|
|
354
354
|
import { sanitizeBillReviewSaveInput } from "@mindbill/browser";
|
|
@@ -5422,7 +5422,7 @@ function ConnectedPaymentReview({ initialQuery, onSelectBill, onPostPayment, app
|
|
|
5422
5422
|
import { useEffect as useEffect10, useId as useId3, useRef as useRef5, useState as useState12 } from "react";
|
|
5423
5423
|
import { Fragment as Fragment11, jsx as jsx16, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
5424
5424
|
function defaultNotificationPreferences() {
|
|
5425
|
-
return { enabled: false, statusUpdates: false, agingDays: [], quietHours: true };
|
|
5425
|
+
return { enabled: false, statusUpdates: false, agingDays: [], quietHours: true, reportDigest: "off" };
|
|
5426
5426
|
}
|
|
5427
5427
|
function notificationSettingsUpdate(preferences, consent) {
|
|
5428
5428
|
return {
|
|
@@ -5430,15 +5430,18 @@ function notificationSettingsUpdate(preferences, consent) {
|
|
|
5430
5430
|
statusUpdates: preferences.statusUpdates === true,
|
|
5431
5431
|
agingDays: [30, 60, 90].filter((day) => preferences.agingDays.includes(day)),
|
|
5432
5432
|
quietHours: preferences.quietHours === true,
|
|
5433
|
+
reportDigest: preferences.reportDigest === "daily" || preferences.reportDigest === "weekly" ? preferences.reportDigest : "off",
|
|
5433
5434
|
consent: consent === true
|
|
5434
5435
|
};
|
|
5435
5436
|
}
|
|
5436
5437
|
function notificationSettingsNeedsConsent(previous, next) {
|
|
5437
5438
|
if (!next.enabled) return false;
|
|
5439
|
+
if ((previous?.reportDigest ?? "off") !== (next.reportDigest ?? "off")) return true;
|
|
5438
5440
|
if (!previous?.enabled || previous.statusUpdates !== next.statusUpdates || previous.quietHours !== next.quietHours) return true;
|
|
5439
5441
|
return JSON.stringify(notificationSettingsUpdate(previous, false).agingDays) !== JSON.stringify(notificationSettingsUpdate(next, false).agingDays);
|
|
5440
5442
|
}
|
|
5441
5443
|
var css11 = `
|
|
5444
|
+
.mbns-digest{display:grid;gap:6px;margin-top:12px}.mbns-digest select{font:inherit;min-height:44px;border:1px solid var(--mb-border);border-radius:var(--mb-control-radius);background:var(--mb-surface);color:var(--mb-text);padding:10px 12px}.mbns-digest select:focus-visible{outline:2px solid var(--mb-accent);outline-offset:3px}
|
|
5442
5445
|
.mbns{color:var(--mb-text);font-family:var(--mb-font);font-size:14px;line-height:1.5;min-width:0}.mbns *{box-sizing:border-box}.mbns h2,.mbns p{margin:0}.mbns-card{padding:24px;background:var(--mb-surface);border:1px solid var(--mb-border);border-radius:var(--mb-radius);box-shadow:var(--mb-shadow)}
|
|
5443
5446
|
.mbns-header{display:flex;gap:16px;align-items:flex-start;justify-content:space-between;margin-bottom:24px}.mbns h2{font-size:20px;line-height:1.3;font-weight:700}.mbns-muted{color:var(--mb-muted)}.mbns-header p{margin-top:6px;max-width:56ch}.mbns-badge{flex-shrink:0;background:var(--mb-soft);color:var(--mb-muted);padding:4px 9px;border-radius:var(--mb-control-radius);font-size:12px;font-weight:650}
|
|
5444
5447
|
.mbns-account{padding:14px 16px;background:var(--mb-soft);border-radius:var(--mb-control-radius);margin-bottom:20px;overflow-wrap:anywhere}.mbns-account strong{display:block;font-weight:650}.mbns-account p{margin-top:3px;font-size:13px}
|
|
@@ -5481,7 +5484,7 @@ function NotificationSettingsSession({ adapter, appearance, className, style, on
|
|
|
5481
5484
|
};
|
|
5482
5485
|
}, [adapter, reload]);
|
|
5483
5486
|
const needsConsent = notificationSettingsNeedsConsent(snapshot?.preferences ?? null, draft);
|
|
5484
|
-
const hasCategory = draft.statusUpdates || draft.agingDays.length > 0;
|
|
5487
|
+
const hasCategory = draft.statusUpdates || draft.agingDays.length > 0 || (draft.reportDigest ?? "off") !== "off";
|
|
5485
5488
|
const changed = JSON.stringify(notificationSettingsUpdate(draft, false)) !== JSON.stringify(notificationSettingsUpdate(snapshot?.preferences ?? defaultNotificationPreferences(), false));
|
|
5486
5489
|
const busy = phase !== "ready";
|
|
5487
5490
|
const canSave = !busy && changed && (!draft.enabled || !!snapshot?.canEnable && hasCategory && (!needsConsent || consent));
|
|
@@ -5570,6 +5573,15 @@ function NotificationSettingsSession({ adapter, appearance, className, style, on
|
|
|
5570
5573
|
/* @__PURE__ */ jsx16("strong", { children: "Quiet hours" }),
|
|
5571
5574
|
/* @__PURE__ */ jsx16("small", { children: "Hold emails from 7 pm to 7 am Pacific time." })
|
|
5572
5575
|
] })
|
|
5576
|
+
] }),
|
|
5577
|
+
/* @__PURE__ */ jsxs16("label", { className: "mbns-digest", children: [
|
|
5578
|
+
/* @__PURE__ */ jsx16("strong", { children: "Scheduled activity digest" }),
|
|
5579
|
+
/* @__PURE__ */ jsxs16("select", { value: draft.reportDigest ?? "off", onChange: (event) => update({ reportDigest: event.target.value }), children: [
|
|
5580
|
+
/* @__PURE__ */ jsx16("option", { value: "off", children: "Off" }),
|
|
5581
|
+
/* @__PURE__ */ jsx16("option", { value: "daily", children: "Daily" }),
|
|
5582
|
+
/* @__PURE__ */ jsx16("option", { value: "weekly", children: "Weekly" })
|
|
5583
|
+
] }),
|
|
5584
|
+
/* @__PURE__ */ jsx16("small", { className: "mbns-muted", children: "Activity counts at 9 am Pacific, every day or every Monday. No patient details, financial reports or attachments." })
|
|
5573
5585
|
] })
|
|
5574
5586
|
] }),
|
|
5575
5587
|
draft.enabled && !hasCategory && /* @__PURE__ */ jsx16("p", { className: "mbns-notice", children: "Select at least one update type to enable notifications." }),
|
|
@@ -5592,19 +5604,215 @@ function NotificationSettingsSession({ adapter, appearance, className, style, on
|
|
|
5592
5604
|
] });
|
|
5593
5605
|
}
|
|
5594
5606
|
|
|
5607
|
+
// src/notification-recipients.tsx
|
|
5608
|
+
import { useEffect as useEffect11, useId as useId4, useRef as useRef6, useState as useState13 } from "react";
|
|
5609
|
+
import { jsx as jsx17, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
5610
|
+
function notificationRecipientInvitation(input, requestId) {
|
|
5611
|
+
const preferences = notificationSettingsUpdate({ ...input, enabled: false }, false);
|
|
5612
|
+
return {
|
|
5613
|
+
requestId,
|
|
5614
|
+
email: input.email.trim().toLowerCase(),
|
|
5615
|
+
audience: input.audience,
|
|
5616
|
+
statusUpdates: preferences.statusUpdates,
|
|
5617
|
+
agingDays: preferences.agingDays,
|
|
5618
|
+
quietHours: preferences.quietHours,
|
|
5619
|
+
reportDigest: preferences.reportDigest ?? "off"
|
|
5620
|
+
};
|
|
5621
|
+
}
|
|
5622
|
+
var css12 = `
|
|
5623
|
+
.mbnr-digest{margin-top:12px}.mbnr-digest small{display:block;margin-top:6px}
|
|
5624
|
+
.mbnr{font:14px/1.5 var(--mb-font);color:var(--mb-text);min-width:0}.mbnr *{box-sizing:border-box}.mbnr h2,.mbnr h3,.mbnr p{margin:0}.mbnr h2{font-size:20px}.mbnr h3{font-size:15px}.mbnr-card{border:1px solid var(--mb-border);border-radius:var(--mb-radius);background:var(--mb-surface);padding:24px}.mbnr header{display:flex;gap:16px;justify-content:space-between;align-items:start;margin-bottom:24px}.mbnr-muted{color:var(--mb-muted)}.mbnr header p{margin-top:6px;max-width:65ch}.mbnr-badge{background:var(--mb-soft);padding:4px 9px;border-radius:var(--mb-control-radius);white-space:nowrap;font-size:12px}.mbnr-form{display:grid;gap:16px;padding:20px;background:var(--mb-soft);border-radius:var(--mb-control-radius)}.mbnr-fields{display:grid;grid-template-columns:1fr 1fr;gap:16px}.mbnr label{display:block}.mbnr label>span{display:block;font-weight:600;margin-bottom:6px}.mbnr input[type=email],.mbnr select{width:100%;min-height:44px;background:var(--mb-surface);color:var(--mb-text);font:inherit;border:1px solid var(--mb-border);border-radius:var(--mb-control-radius);padding:10px 12px}.mbnr-check{display:flex!important;gap:10px;align-items:center;min-height:36px}.mbnr input[type=checkbox]{width:17px;height:17px;accent-color:var(--mb-accent)}.mbnr fieldset{border:0;margin:0;padding:0;min-width:0}.mbnr legend{font-weight:600;margin-bottom:6px}.mbnr-days{display:flex;gap:20px;flex-wrap:wrap}.mbnr button{font:inherit;font-weight:600;min-height:44px;padding:10px 14px;border:1px solid var(--mb-border);border-radius:var(--mb-control-radius);background:var(--mb-surface);color:var(--mb-text);cursor:pointer}.mbnr button:disabled{opacity:.5;cursor:not-allowed}.mbnr button.mbnr-primary{background:var(--mb-accent);border-color:var(--mb-accent);color:var(--mb-accent-contrast)}.mbnr :is(input,button,select):focus-visible{outline:2px solid var(--mb-accent);outline-offset:3px}.mbnr-actions{display:flex;gap:12px;flex-wrap:wrap;align-items:center}.mbnr-list{margin-top:28px;display:grid;gap:12px}.mbnr-recipient{border-top:1px solid var(--mb-border);padding-top:16px;display:flex;gap:16px;justify-content:space-between;align-items:start}.mbnr-email{overflow-wrap:anywhere;font-weight:600}.mbnr-state{display:flex;gap:10px;align-items:center;flex-shrink:0}.mbnr-error{color:var(--mb-danger)}.mbnr-notice{margin-top:16px!important}.mbnr-pagination{margin-top:20px}.mbnr-empty{padding:20px 0;color:var(--mb-muted)}@media(max-width:600px){.mbnr-card{padding:18px}.mbnr-form{padding:16px}.mbnr-fields{grid-template-columns:1fr}.mbnr-recipient{flex-direction:column}.mbnr-state{width:100%;justify-content:space-between}.mbnr header{flex-wrap:wrap}}
|
|
5625
|
+
`;
|
|
5626
|
+
function NotificationRecipientsSettings(props) {
|
|
5627
|
+
return /* @__PURE__ */ jsx17(RecipientSettingsSession, { ...props }, props.identityKey);
|
|
5628
|
+
}
|
|
5629
|
+
var ConnectedNotificationRecipientsSettings = NotificationRecipientsSettings;
|
|
5630
|
+
function recipientCategories(recipient) {
|
|
5631
|
+
return [
|
|
5632
|
+
recipient.statusUpdates ? "Status and payment updates" : "",
|
|
5633
|
+
recipient.agingDays.length ? `${recipient.agingDays.join(" / ")} day reminders` : "",
|
|
5634
|
+
recipient.reportDigest === "daily" ? "Daily activity digest" : recipient.reportDigest === "weekly" ? "Weekly activity digest" : ""
|
|
5635
|
+
].filter(Boolean).join(" \xB7 ") || "No email categories";
|
|
5636
|
+
}
|
|
5637
|
+
function RecipientSettingsSession({ adapter, appearance, className, style }) {
|
|
5638
|
+
const titleId = useId4();
|
|
5639
|
+
const [snapshot, setSnapshot] = useState13(null);
|
|
5640
|
+
const [email, setEmail] = useState13("");
|
|
5641
|
+
const [audience, setAudience] = useState13("assigned_bills");
|
|
5642
|
+
const [preferences, setPreferences] = useState13(defaultNotificationPreferences);
|
|
5643
|
+
const [offset, setOffset] = useState13(0);
|
|
5644
|
+
const [reload, setReload] = useState13(0);
|
|
5645
|
+
const [busy, setBusy] = useState13(true);
|
|
5646
|
+
const [notice, setNotice] = useState13("");
|
|
5647
|
+
const [failed, setFailed] = useState13(false);
|
|
5648
|
+
const [hasReceipt, setHasReceipt] = useState13(false);
|
|
5649
|
+
const generation = useRef6(0);
|
|
5650
|
+
const pending = useRef6(null);
|
|
5651
|
+
useEffect11(() => {
|
|
5652
|
+
const current = ++generation.current;
|
|
5653
|
+
setBusy(true);
|
|
5654
|
+
setSnapshot(null);
|
|
5655
|
+
void Promise.resolve().then(() => adapter.load(offset)).then((result) => {
|
|
5656
|
+
if (current !== generation.current) return;
|
|
5657
|
+
setSnapshot(result);
|
|
5658
|
+
setBusy(false);
|
|
5659
|
+
}).catch(() => {
|
|
5660
|
+
if (current !== generation.current) return;
|
|
5661
|
+
setBusy(false);
|
|
5662
|
+
setFailed(true);
|
|
5663
|
+
setNotice("Could not load recipients. No settings have been changed.");
|
|
5664
|
+
});
|
|
5665
|
+
return () => {
|
|
5666
|
+
generation.current++;
|
|
5667
|
+
};
|
|
5668
|
+
}, [adapter, offset, reload]);
|
|
5669
|
+
async function mutate(action, invitation = false) {
|
|
5670
|
+
if (busy) return;
|
|
5671
|
+
const current = ++generation.current;
|
|
5672
|
+
setBusy(true);
|
|
5673
|
+
setNotice("");
|
|
5674
|
+
setFailed(false);
|
|
5675
|
+
try {
|
|
5676
|
+
const message = await action();
|
|
5677
|
+
if (current !== generation.current) return;
|
|
5678
|
+
if (invitation) setHasReceipt(true);
|
|
5679
|
+
setNotice(message);
|
|
5680
|
+
setReload((value) => value + 1);
|
|
5681
|
+
} catch {
|
|
5682
|
+
if (current !== generation.current) return;
|
|
5683
|
+
setBusy(false);
|
|
5684
|
+
setFailed(true);
|
|
5685
|
+
setNotice("We couldn't confirm the request. Retry unchanged to check the same invitation, or reload recipients. Do not assume an email was sent.");
|
|
5686
|
+
}
|
|
5687
|
+
}
|
|
5688
|
+
const canInvite = !busy && !!snapshot?.available && !!email.trim() && (preferences.statusUpdates || preferences.agingDays.length > 0 || (preferences.reportDigest ?? "off") !== "off");
|
|
5689
|
+
return /* @__PURE__ */ jsxs17("section", { className: `mbnr ${className ?? ""}`, style: { ...mindBillAppearanceStyle(appearance), ...style }, "aria-labelledby": titleId, "aria-busy": busy, children: [
|
|
5690
|
+
/* @__PURE__ */ jsx17("style", { children: css12 }),
|
|
5691
|
+
/* @__PURE__ */ jsxs17("div", { className: "mbnr-card", children: [
|
|
5692
|
+
/* @__PURE__ */ jsxs17("header", { children: [
|
|
5693
|
+
/* @__PURE__ */ jsxs17("div", { children: [
|
|
5694
|
+
/* @__PURE__ */ jsx17("h2", { id: titleId, children: "Notification recipients" }),
|
|
5695
|
+
/* @__PURE__ */ jsx17("p", { className: "mbnr-muted", children: "Add any email address for billing alerts. No MindBill console account is needed. Notifications stay off until the recipient confirms." })
|
|
5696
|
+
] }),
|
|
5697
|
+
/* @__PURE__ */ jsx17("span", { className: "mbnr-badge", children: "Default off" })
|
|
5698
|
+
] }),
|
|
5699
|
+
snapshot?.environment === "sandbox" && /* @__PURE__ */ jsx17("p", { className: "mbnr-notice mbnr-muted", children: "Sandbox preview. No emails are sent." }),
|
|
5700
|
+
snapshot && !snapshot.available && /* @__PURE__ */ jsx17("p", { className: "mbnr-notice mbnr-muted", children: "Email invitations are not available yet. Existing notifications can still be disabled." }),
|
|
5701
|
+
/* @__PURE__ */ jsxs17("form", { className: "mbnr-form", onSubmit: (event) => {
|
|
5702
|
+
event.preventDefault();
|
|
5703
|
+
if (!canInvite) return;
|
|
5704
|
+
const input = notificationRecipientInvitation({ email, audience, ...preferences }, "");
|
|
5705
|
+
const payload = JSON.stringify(input);
|
|
5706
|
+
if (pending.current?.payload !== payload) pending.current = { payload, id: crypto.randomUUID() };
|
|
5707
|
+
const requestId = pending.current.id;
|
|
5708
|
+
void mutate(async () => {
|
|
5709
|
+
const result = await adapter.invite({ ...input, requestId });
|
|
5710
|
+
return result.deliveryStatus === "sandbox_preview" ? "Sandbox invitation prepared. Notifications remain off until recipient confirmation." : result.deliveryStatus === "sent" ? "Invitation sent. Notifications remain off until the recipient confirms." : "Invitation recorded, but email delivery is not confirmed. Notifications remain off. Reload recipients before requesting a new invitation.";
|
|
5711
|
+
}, true);
|
|
5712
|
+
}, children: [
|
|
5713
|
+
/* @__PURE__ */ jsxs17("div", { className: "mbnr-fields", children: [
|
|
5714
|
+
/* @__PURE__ */ jsxs17("label", { children: [
|
|
5715
|
+
/* @__PURE__ */ jsx17("span", { children: "Recipient email" }),
|
|
5716
|
+
/* @__PURE__ */ jsx17("input", { type: "email", autoComplete: "email", required: true, maxLength: 254, value: email, disabled: busy || !snapshot?.available, placeholder: "doctor@example.com", onChange: (event) => setEmail(event.target.value) })
|
|
5717
|
+
] }),
|
|
5718
|
+
/* @__PURE__ */ jsxs17("label", { children: [
|
|
5719
|
+
/* @__PURE__ */ jsx17("span", { children: "Billing access scope" }),
|
|
5720
|
+
/* @__PURE__ */ jsxs17("select", { value: audience, disabled: busy || !snapshot?.available, onChange: (event) => setAudience(event.target.value), children: [
|
|
5721
|
+
/* @__PURE__ */ jsx17("option", { value: "assigned_bills", children: "Assigned bills only" }),
|
|
5722
|
+
/* @__PURE__ */ jsx17("option", { value: "practice", children: "All bills in this practice" })
|
|
5723
|
+
] })
|
|
5724
|
+
] })
|
|
5725
|
+
] }),
|
|
5726
|
+
/* @__PURE__ */ jsxs17("p", { className: "mbnr-muted", children: [
|
|
5727
|
+
audience === "assigned_bills" ? "Your application must assign bills on the server. Without assignments, this recipient receives no alerts." : "The invitation asks for alerts about all bills in this practice, including future bills.",
|
|
5728
|
+
" This does not grant access to the app."
|
|
5729
|
+
] }),
|
|
5730
|
+
/* @__PURE__ */ jsxs17("fieldset", { disabled: busy || !snapshot?.available, children: [
|
|
5731
|
+
/* @__PURE__ */ jsx17("legend", { children: "Alerts to request" }),
|
|
5732
|
+
/* @__PURE__ */ jsxs17("label", { className: "mbnr-check", children: [
|
|
5733
|
+
/* @__PURE__ */ jsx17("input", { type: "checkbox", checked: preferences.statusUpdates, onChange: (event) => setPreferences((value) => ({ ...value, statusUpdates: event.target.checked })) }),
|
|
5734
|
+
"Bill status and payment updates"
|
|
5735
|
+
] }),
|
|
5736
|
+
/* @__PURE__ */ jsx17("p", { className: "mbnr-muted", children: "Reminders while a bill waits for a payer:" }),
|
|
5737
|
+
/* @__PURE__ */ jsx17("div", { className: "mbnr-days", children: [30, 60, 90].map((day) => /* @__PURE__ */ jsxs17("label", { className: "mbnr-check", children: [
|
|
5738
|
+
/* @__PURE__ */ jsx17("input", { type: "checkbox", checked: preferences.agingDays.includes(day), onChange: (event) => setPreferences((value) => ({ ...value, agingDays: event.target.checked ? [...value.agingDays, day] : value.agingDays.filter((item) => item !== day) })) }),
|
|
5739
|
+
day,
|
|
5740
|
+
" days"
|
|
5741
|
+
] }, day)) }),
|
|
5742
|
+
/* @__PURE__ */ jsxs17("label", { className: "mbnr-check", children: [
|
|
5743
|
+
/* @__PURE__ */ jsx17("input", { type: "checkbox", checked: preferences.quietHours, onChange: (event) => setPreferences((value) => ({ ...value, quietHours: event.target.checked })) }),
|
|
5744
|
+
"Quiet hours \xB7 7 pm\u20137 am Pacific"
|
|
5745
|
+
] }),
|
|
5746
|
+
/* @__PURE__ */ jsxs17("label", { className: "mbnr-digest", children: [
|
|
5747
|
+
/* @__PURE__ */ jsx17("span", { children: "Scheduled activity digest" }),
|
|
5748
|
+
/* @__PURE__ */ jsxs17("select", { value: preferences.reportDigest ?? "off", onChange: (event) => setPreferences((value) => ({ ...value, reportDigest: event.target.value })), children: [
|
|
5749
|
+
/* @__PURE__ */ jsx17("option", { value: "off", children: "Off" }),
|
|
5750
|
+
/* @__PURE__ */ jsx17("option", { value: "daily", children: "Daily" }),
|
|
5751
|
+
/* @__PURE__ */ jsx17("option", { value: "weekly", children: "Weekly" })
|
|
5752
|
+
] }),
|
|
5753
|
+
/* @__PURE__ */ jsx17("small", { className: "mbnr-muted", children: "Activity counts at 9 am Pacific, every day or every Monday. No financial reports or attachments." })
|
|
5754
|
+
] })
|
|
5755
|
+
] }),
|
|
5756
|
+
/* @__PURE__ */ jsx17("p", { className: "mbnr-muted", children: "Emails contain general alerts and activity counts, not patient details, reports or attachments. The recipient reviews these choices and can unsubscribe at any time." }),
|
|
5757
|
+
/* @__PURE__ */ jsxs17("div", { className: "mbnr-actions", children: [
|
|
5758
|
+
/* @__PURE__ */ jsx17("button", { type: "submit", className: "mbnr-primary", disabled: !canInvite, children: busy ? "Please wait\u2026" : "Send confirmation invitation" }),
|
|
5759
|
+
hasReceipt && /* @__PURE__ */ jsx17("button", { type: "button", disabled: busy, onClick: () => {
|
|
5760
|
+
pending.current = null;
|
|
5761
|
+
setHasReceipt(false);
|
|
5762
|
+
setEmail("");
|
|
5763
|
+
setPreferences(defaultNotificationPreferences());
|
|
5764
|
+
setNotice("New invitation form. Reinviting the same recipient replaces their previous confirmation link and turns notifications off until they confirm again.");
|
|
5765
|
+
}, children: "Start another invitation" })
|
|
5766
|
+
] })
|
|
5767
|
+
] }),
|
|
5768
|
+
notice && /* @__PURE__ */ jsx17("p", { className: `mbnr-notice ${failed ? "mbnr-error" : "mbnr-muted"}`, role: failed ? "alert" : "status", children: notice }),
|
|
5769
|
+
/* @__PURE__ */ jsxs17("div", { className: "mbnr-list", children: [
|
|
5770
|
+
/* @__PURE__ */ jsx17("h3", { children: "Recipients" }),
|
|
5771
|
+
!snapshot && busy ? /* @__PURE__ */ jsx17("p", { role: "status", children: "Loading recipients\u2026" }) : snapshot?.recipients.length === 0 ? /* @__PURE__ */ jsx17("p", { className: "mbnr-empty", children: "No recipients yet. Nothing is sent until someone accepts an invitation." }) : snapshot?.recipients.map((recipient) => /* @__PURE__ */ jsxs17("div", { className: "mbnr-recipient", children: [
|
|
5772
|
+
/* @__PURE__ */ jsxs17("div", { children: [
|
|
5773
|
+
/* @__PURE__ */ jsx17("p", { className: "mbnr-email", children: recipient.email }),
|
|
5774
|
+
/* @__PURE__ */ jsxs17("p", { className: "mbnr-muted", children: [
|
|
5775
|
+
recipient.audience === "practice" ? "Practice-wide" : `${recipient.assignedBillCount} assigned bills`,
|
|
5776
|
+
" \xB7 ",
|
|
5777
|
+
recipientCategories(recipient)
|
|
5778
|
+
] }),
|
|
5779
|
+
recipient.deliveryStatus === "unknown" && /* @__PURE__ */ jsx17("p", { className: "mbnr-muted", children: "Invitation delivery unconfirmed. No automatic resend." })
|
|
5780
|
+
] }),
|
|
5781
|
+
/* @__PURE__ */ jsxs17("div", { className: "mbnr-state", children: [
|
|
5782
|
+
/* @__PURE__ */ jsx17("span", { className: "mbnr-badge", children: { active: "On", pending_confirmation: "Pending confirmation \xB7 off", expired: "Invitation expired \xB7 off", off: "Off", unavailable: "Delivery unavailable" }[recipient.state] }),
|
|
5783
|
+
recipient.state !== "off" && /* @__PURE__ */ jsx17("button", { type: "button", disabled: busy, onClick: () => void mutate(async () => {
|
|
5784
|
+
await adapter.disable(recipient.externalUserId);
|
|
5785
|
+
return "Notifications disabled and pending invitations revoked.";
|
|
5786
|
+
}), children: "Disable" })
|
|
5787
|
+
] })
|
|
5788
|
+
] }, recipient.externalUserId))
|
|
5789
|
+
] }),
|
|
5790
|
+
/* @__PURE__ */ jsxs17("div", { className: "mbnr-actions mbnr-pagination", children: [
|
|
5791
|
+
/* @__PURE__ */ jsx17("button", { type: "button", disabled: busy, onClick: () => {
|
|
5792
|
+
setNotice("");
|
|
5793
|
+
setFailed(false);
|
|
5794
|
+
setReload((value) => value + 1);
|
|
5795
|
+
}, children: "Reload recipients" }),
|
|
5796
|
+
offset > 0 && /* @__PURE__ */ jsx17("button", { type: "button", disabled: busy, onClick: () => setOffset((value) => Math.max(0, value - 100)), children: "Previous" }),
|
|
5797
|
+
snapshot?.hasMore && /* @__PURE__ */ jsx17("button", { type: "button", disabled: busy, onClick: () => setOffset((value) => value + 100), children: "Next" })
|
|
5798
|
+
] })
|
|
5799
|
+
] })
|
|
5800
|
+
] });
|
|
5801
|
+
}
|
|
5802
|
+
|
|
5595
5803
|
// src/connected-bill-status.tsx
|
|
5596
5804
|
import {
|
|
5597
5805
|
useCallback as useCallback3,
|
|
5598
|
-
useEffect as
|
|
5806
|
+
useEffect as useEffect12,
|
|
5599
5807
|
useMemo as useMemo8,
|
|
5600
|
-
useRef as
|
|
5601
|
-
useState as
|
|
5808
|
+
useRef as useRef7,
|
|
5809
|
+
useState as useState14
|
|
5602
5810
|
} from "react";
|
|
5603
5811
|
import {
|
|
5604
5812
|
DEFAULT_API_BASE_URL as DEFAULT_API_BASE_URL2,
|
|
5605
5813
|
DEFAULT_SESSION_ENDPOINT as DEFAULT_SESSION_ENDPOINT2
|
|
5606
5814
|
} from "@mindbill/browser";
|
|
5607
|
-
import { Fragment as Fragment12, jsx as
|
|
5815
|
+
import { Fragment as Fragment12, jsx as jsx18, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
5608
5816
|
var DEFAULT_REFRESH_INTERVAL = 6e4;
|
|
5609
5817
|
async function responseError2(response, fallback) {
|
|
5610
5818
|
const body = await response.json().catch(() => null);
|
|
@@ -5744,16 +5952,16 @@ function useBillStatus({
|
|
|
5744
5952
|
apiBaseUrl,
|
|
5745
5953
|
...fetchOverride ? { fetch: fetchOverride } : {}
|
|
5746
5954
|
}), [apiBaseUrl, billId, fetchOverride, getSession, sessionEndpoint]);
|
|
5747
|
-
const [data, setData] =
|
|
5748
|
-
const [error, setError] =
|
|
5749
|
-
const [isLoading, setIsLoading] =
|
|
5750
|
-
const [isRefreshing, setIsRefreshing] =
|
|
5751
|
-
const dataRef =
|
|
5752
|
-
const initialDataRef =
|
|
5955
|
+
const [data, setData] = useState14(initialData);
|
|
5956
|
+
const [error, setError] = useState14(null);
|
|
5957
|
+
const [isLoading, setIsLoading] = useState14(enabled && !initialData);
|
|
5958
|
+
const [isRefreshing, setIsRefreshing] = useState14(false);
|
|
5959
|
+
const dataRef = useRef7(initialData);
|
|
5960
|
+
const initialDataRef = useRef7(initialData);
|
|
5753
5961
|
initialDataRef.current = initialData;
|
|
5754
|
-
const activeControllerRef =
|
|
5755
|
-
const requestSequence =
|
|
5756
|
-
|
|
5962
|
+
const activeControllerRef = useRef7(null);
|
|
5963
|
+
const requestSequence = useRef7(0);
|
|
5964
|
+
useEffect12(() => {
|
|
5757
5965
|
const seed = initialDataRef.current;
|
|
5758
5966
|
dataRef.current = seed;
|
|
5759
5967
|
setData(seed);
|
|
@@ -5794,10 +6002,10 @@ function useBillStatus({
|
|
|
5794
6002
|
}
|
|
5795
6003
|
}
|
|
5796
6004
|
}, [billId, client, enabled]);
|
|
5797
|
-
|
|
6005
|
+
useEffect12(() => {
|
|
5798
6006
|
if (enabled) void load();
|
|
5799
6007
|
}, [enabled, load]);
|
|
5800
|
-
|
|
6008
|
+
useEffect12(() => {
|
|
5801
6009
|
if (!enabled || refreshInterval <= 0) return;
|
|
5802
6010
|
const timer = window.setInterval(() => void load(), refreshInterval);
|
|
5803
6011
|
const onFocus = () => void load();
|
|
@@ -5825,17 +6033,17 @@ function ConnectedBillStatus({
|
|
|
5825
6033
|
}) {
|
|
5826
6034
|
const status = useBillStatus(options);
|
|
5827
6035
|
if (status.isLoading && !status.data) {
|
|
5828
|
-
return /* @__PURE__ */
|
|
6036
|
+
return /* @__PURE__ */ jsx18(Fragment12, { children: loadingFallback ?? /* @__PURE__ */ jsx18("div", { role: "status", children: "Loading bill status\u2026" }) });
|
|
5829
6037
|
}
|
|
5830
6038
|
if (status.error && !status.data) {
|
|
5831
|
-
return /* @__PURE__ */
|
|
6039
|
+
return /* @__PURE__ */ jsx18(Fragment12, { children: errorFallback?.(status.error, status.refresh) ?? /* @__PURE__ */ jsxs18("div", { role: "alert", children: [
|
|
5832
6040
|
status.error.message,
|
|
5833
6041
|
" ",
|
|
5834
|
-
/* @__PURE__ */
|
|
6042
|
+
/* @__PURE__ */ jsx18("button", { type: "button", onClick: () => void status.refresh(), children: "Retry" })
|
|
5835
6043
|
] }) });
|
|
5836
6044
|
}
|
|
5837
6045
|
if (!status.data) return null;
|
|
5838
|
-
return /* @__PURE__ */
|
|
6046
|
+
return /* @__PURE__ */ jsx18(
|
|
5839
6047
|
BillStatusSummary,
|
|
5840
6048
|
{
|
|
5841
6049
|
status: status.data.state,
|
|
@@ -5854,8 +6062,8 @@ function ConnectedBillStatus({
|
|
|
5854
6062
|
}
|
|
5855
6063
|
|
|
5856
6064
|
// src/bill-lifecycle-surfaces.tsx
|
|
5857
|
-
import { useEffect as
|
|
5858
|
-
import { Fragment as Fragment13, jsx as
|
|
6065
|
+
import { useEffect as useEffect13, useRef as useRef8, useState as useState15 } from "react";
|
|
6066
|
+
import { Fragment as Fragment13, jsx as jsx19, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
5859
6067
|
function visibleBillLifecycleActions(actions, showUnavailable = false) {
|
|
5860
6068
|
return actions.filter((action) => action.enabled || showUnavailable);
|
|
5861
6069
|
}
|
|
@@ -5870,11 +6078,11 @@ function BillLifecycleActions({
|
|
|
5870
6078
|
}) {
|
|
5871
6079
|
const visible = visibleBillLifecycleActions(actions, showUnavailable);
|
|
5872
6080
|
if (!visible.length) return null;
|
|
5873
|
-
return /* @__PURE__ */
|
|
5874
|
-
/* @__PURE__ */
|
|
5875
|
-
visible.map((action) => /* @__PURE__ */
|
|
5876
|
-
/* @__PURE__ */
|
|
5877
|
-
!action.enabled && action.reason ? /* @__PURE__ */
|
|
6081
|
+
return /* @__PURE__ */ jsxs19("div", { className: classes("mb-lifecycle-actions", className), style: mindBillAppearanceStyle(appearance, style), "aria-label": "Bill actions", children: [
|
|
6082
|
+
/* @__PURE__ */ jsx19("style", { children: lifecycleSurfaceStyles }),
|
|
6083
|
+
visible.map((action) => /* @__PURE__ */ jsxs19("div", { className: "mb-lifecycle-action", children: [
|
|
6084
|
+
/* @__PURE__ */ jsx19("button", { type: "button", className: action.primary ? "mb-action-button is-primary" : "mb-action-button", disabled: disabled || !action.enabled, onClick: () => onAction(action), children: action.label }),
|
|
6085
|
+
!action.enabled && action.reason ? /* @__PURE__ */ jsx19("span", { className: "mb-action-reason", children: action.reason }) : null
|
|
5878
6086
|
] }, action.id))
|
|
5879
6087
|
] });
|
|
5880
6088
|
}
|
|
@@ -5904,18 +6112,18 @@ function defaultFormatDate(createdAt) {
|
|
|
5904
6112
|
return new Intl.DateTimeFormat(void 0, { dateStyle: "medium", timeStyle: "short" }).format(parsed);
|
|
5905
6113
|
}
|
|
5906
6114
|
function BillActivityTimeline({ events, emptyLabel = "No bill activity yet.", appearance, className, style, formatDate = defaultFormatDate }) {
|
|
5907
|
-
return /* @__PURE__ */
|
|
5908
|
-
/* @__PURE__ */
|
|
5909
|
-
/* @__PURE__ */
|
|
5910
|
-
/* @__PURE__ */
|
|
5911
|
-
/* @__PURE__ */
|
|
6115
|
+
return /* @__PURE__ */ jsxs19("section", { className: classes("mb-surface mb-activity", className), style: mindBillAppearanceStyle(appearance, style), "aria-label": "Bill activity", children: [
|
|
6116
|
+
/* @__PURE__ */ jsx19("style", { children: lifecycleSurfaceStyles }),
|
|
6117
|
+
/* @__PURE__ */ jsx19("header", { className: "mb-surface-heading", children: /* @__PURE__ */ jsxs19("div", { children: [
|
|
6118
|
+
/* @__PURE__ */ jsx19("strong", { children: "Bill history" }),
|
|
6119
|
+
/* @__PURE__ */ jsx19("span", { children: "Submission, payer responses, follow-up, and payments." })
|
|
5912
6120
|
] }) }),
|
|
5913
|
-
!events.length ? /* @__PURE__ */
|
|
5914
|
-
/* @__PURE__ */
|
|
5915
|
-
/* @__PURE__ */
|
|
5916
|
-
/* @__PURE__ */
|
|
5917
|
-
event.description ? /* @__PURE__ */
|
|
5918
|
-
/* @__PURE__ */
|
|
6121
|
+
!events.length ? /* @__PURE__ */ jsx19("p", { className: "mb-activity-empty", children: emptyLabel }) : /* @__PURE__ */ jsx19("ol", { className: "mb-activity-list", children: events.map((event) => /* @__PURE__ */ jsxs19("li", { className: "mb-activity-item", children: [
|
|
6122
|
+
/* @__PURE__ */ jsx19("span", { className: "mb-activity-marker", "aria-hidden": "true" }),
|
|
6123
|
+
/* @__PURE__ */ jsxs19("div", { className: "mb-activity-content", children: [
|
|
6124
|
+
/* @__PURE__ */ jsx19("strong", { children: event.title ?? billActivityEventLabel(event.type) }),
|
|
6125
|
+
event.description ? /* @__PURE__ */ jsx19("p", { children: event.description }) : null,
|
|
6126
|
+
/* @__PURE__ */ jsxs19("span", { children: [
|
|
5919
6127
|
formatDate(event.createdAt),
|
|
5920
6128
|
event.actor ? ` \xB7 ${event.actor}` : ""
|
|
5921
6129
|
] })
|
|
@@ -5929,49 +6137,49 @@ function historyDate(iso) {
|
|
|
5929
6137
|
return new Intl.DateTimeFormat("en-US", { month: "2-digit", day: "2-digit", year: "numeric" }).format(parsed);
|
|
5930
6138
|
}
|
|
5931
6139
|
function BillHistoryTable({ entries, selectedEntryId, emptyLabel = "No bill history yet.", appearance, className, style, formatDate = historyDate, documentHref, onOpenDocument }) {
|
|
5932
|
-
const [expanded, setExpanded] =
|
|
5933
|
-
const selectedRowRef =
|
|
5934
|
-
|
|
6140
|
+
const [expanded, setExpanded] = useState15({});
|
|
6141
|
+
const selectedRowRef = useRef8(null);
|
|
6142
|
+
useEffect13(() => {
|
|
5935
6143
|
if (!selectedEntryId) return;
|
|
5936
6144
|
const selected = entries.find((entry) => entry.id === selectedEntryId);
|
|
5937
6145
|
if (selected?.details) setExpanded((current) => current[selectedEntryId] ? current : { ...current, [selectedEntryId]: true });
|
|
5938
6146
|
selectedRowRef.current?.scrollIntoView({ behavior: "smooth", block: "center" });
|
|
5939
6147
|
}, [entries, selectedEntryId]);
|
|
5940
|
-
return /* @__PURE__ */
|
|
5941
|
-
/* @__PURE__ */
|
|
5942
|
-
/* @__PURE__ */
|
|
5943
|
-
/* @__PURE__ */
|
|
5944
|
-
/* @__PURE__ */
|
|
6148
|
+
return /* @__PURE__ */ jsxs19("section", { className: classes("mb-surface mb-history", className), style: mindBillAppearanceStyle(appearance, style), "aria-label": "Bill history", children: [
|
|
6149
|
+
/* @__PURE__ */ jsx19("style", { children: lifecycleSurfaceStyles }),
|
|
6150
|
+
/* @__PURE__ */ jsx19("header", { className: "mb-surface-heading", children: /* @__PURE__ */ jsxs19("div", { children: [
|
|
6151
|
+
/* @__PURE__ */ jsx19("strong", { children: "Bill history" }),
|
|
6152
|
+
/* @__PURE__ */ jsx19("span", { children: "Submissions, payer responses, follow-up, and payments." })
|
|
5945
6153
|
] }) }),
|
|
5946
|
-
!entries.length ? /* @__PURE__ */
|
|
5947
|
-
/* @__PURE__ */
|
|
5948
|
-
/* @__PURE__ */
|
|
5949
|
-
/* @__PURE__ */
|
|
5950
|
-
/* @__PURE__ */
|
|
5951
|
-
/* @__PURE__ */
|
|
6154
|
+
!entries.length ? /* @__PURE__ */ jsx19("p", { className: "mb-activity-empty", children: emptyLabel }) : /* @__PURE__ */ jsxs19("div", { className: "mb-history-table", children: [
|
|
6155
|
+
/* @__PURE__ */ jsxs19("div", { className: "mb-history-head", "aria-hidden": "true", children: [
|
|
6156
|
+
/* @__PURE__ */ jsx19("span", { children: "Date" }),
|
|
6157
|
+
/* @__PURE__ */ jsx19("span", { children: "Action" }),
|
|
6158
|
+
/* @__PURE__ */ jsx19("span", { children: "User" }),
|
|
6159
|
+
/* @__PURE__ */ jsx19("span", { children: "Details" })
|
|
5952
6160
|
] }),
|
|
5953
|
-
/* @__PURE__ */
|
|
6161
|
+
/* @__PURE__ */ jsx19("ul", { className: "mb-history-rows", children: entries.map((entry) => {
|
|
5954
6162
|
const isSelected = entry.id === selectedEntryId;
|
|
5955
6163
|
const expandable = Boolean(entry.details);
|
|
5956
6164
|
const isOpen = expandable && Boolean(expanded[entry.id]);
|
|
5957
6165
|
const details = entry.details;
|
|
5958
|
-
const lineContents = /* @__PURE__ */
|
|
5959
|
-
/* @__PURE__ */
|
|
5960
|
-
/* @__PURE__ */
|
|
5961
|
-
/* @__PURE__ */
|
|
5962
|
-
/* @__PURE__ */
|
|
5963
|
-
expandable ? /* @__PURE__ */
|
|
6166
|
+
const lineContents = /* @__PURE__ */ jsxs19(Fragment13, { children: [
|
|
6167
|
+
/* @__PURE__ */ jsx19("span", { className: "mb-history-date", children: formatDate(entry.date) }),
|
|
6168
|
+
/* @__PURE__ */ jsx19("span", { className: "mb-history-action", children: entry.action }),
|
|
6169
|
+
/* @__PURE__ */ jsx19("span", { className: "mb-history-actor", children: entry.actor ?? "\u2014" }),
|
|
6170
|
+
/* @__PURE__ */ jsxs19("span", { className: "mb-history-summary", children: [
|
|
6171
|
+
expandable ? /* @__PURE__ */ jsx19("i", { className: `mb-history-caret${isOpen ? " is-open" : ""}`, "aria-hidden": "true" }) : null,
|
|
5964
6172
|
entry.summary
|
|
5965
6173
|
] })
|
|
5966
6174
|
] });
|
|
5967
|
-
return /* @__PURE__ */
|
|
6175
|
+
return /* @__PURE__ */ jsxs19(
|
|
5968
6176
|
"li",
|
|
5969
6177
|
{
|
|
5970
6178
|
ref: isSelected ? selectedRowRef : void 0,
|
|
5971
6179
|
className: `mb-history-row is-${entry.tone}${isSelected ? " is-selected" : ""}`,
|
|
5972
6180
|
"aria-current": isSelected ? "true" : void 0,
|
|
5973
6181
|
children: [
|
|
5974
|
-
expandable ? /* @__PURE__ */
|
|
6182
|
+
expandable ? /* @__PURE__ */ jsx19(
|
|
5975
6183
|
"button",
|
|
5976
6184
|
{
|
|
5977
6185
|
type: "button",
|
|
@@ -5980,31 +6188,31 @@ function BillHistoryTable({ entries, selectedEntryId, emptyLabel = "No bill hist
|
|
|
5980
6188
|
onClick: () => setExpanded((current) => ({ ...current, [entry.id]: !current[entry.id] })),
|
|
5981
6189
|
children: lineContents
|
|
5982
6190
|
}
|
|
5983
|
-
) : /* @__PURE__ */
|
|
5984
|
-
isOpen && details ? /* @__PURE__ */
|
|
5985
|
-
details.rows?.length ? /* @__PURE__ */
|
|
5986
|
-
/* @__PURE__ */
|
|
5987
|
-
/* @__PURE__ */
|
|
6191
|
+
) : /* @__PURE__ */ jsx19("div", { className: "mb-history-line", children: lineContents }),
|
|
6192
|
+
isOpen && details ? /* @__PURE__ */ jsxs19("div", { className: "mb-history-details", children: [
|
|
6193
|
+
details.rows?.length ? /* @__PURE__ */ jsx19("dl", { className: "mb-history-kv", children: details.rows.map((row) => /* @__PURE__ */ jsxs19("div", { children: [
|
|
6194
|
+
/* @__PURE__ */ jsx19("dt", { children: row.label }),
|
|
6195
|
+
/* @__PURE__ */ jsx19("dd", { children: row.value })
|
|
5988
6196
|
] }, `${row.label}-${row.value}`)) }) : null,
|
|
5989
|
-
details.documents?.length ? /* @__PURE__ */
|
|
5990
|
-
/* @__PURE__ */
|
|
5991
|
-
/* @__PURE__ */
|
|
6197
|
+
details.documents?.length ? /* @__PURE__ */ jsx19("div", { className: "mb-history-kv", children: /* @__PURE__ */ jsxs19("div", { children: [
|
|
6198
|
+
/* @__PURE__ */ jsx19("dt", { children: "Documents" }),
|
|
6199
|
+
/* @__PURE__ */ jsx19("dd", { children: details.documents.map((doc) => {
|
|
5992
6200
|
const href = documentHref?.(doc) ?? null;
|
|
5993
|
-
return href ? /* @__PURE__ */
|
|
6201
|
+
return href ? /* @__PURE__ */ jsx19("a", { className: "mb-history-doc", href, target: "_blank", rel: "noreferrer", children: doc.filename }, doc.id) : onOpenDocument ? /* @__PURE__ */ jsx19("button", { type: "button", className: "mb-history-doc", onClick: () => void onOpenDocument(doc), children: doc.filename }, doc.id) : /* @__PURE__ */ jsx19("span", { className: "mb-history-doc", children: doc.filename }, doc.id);
|
|
5994
6202
|
}) })
|
|
5995
6203
|
] }) }) : null,
|
|
5996
|
-
details.codes?.length ? /* @__PURE__ */
|
|
5997
|
-
/* @__PURE__ */
|
|
5998
|
-
/* @__PURE__ */
|
|
6204
|
+
details.codes?.length ? /* @__PURE__ */ jsx19("dl", { className: "mb-history-codes", children: details.codes.map((code) => /* @__PURE__ */ jsxs19("div", { children: [
|
|
6205
|
+
/* @__PURE__ */ jsx19("dt", { children: code.code }),
|
|
6206
|
+
/* @__PURE__ */ jsx19("dd", { children: code.text })
|
|
5999
6207
|
] }, code.code)) }) : null,
|
|
6000
|
-
details.complianceDueDates?.length ? /* @__PURE__ */
|
|
6001
|
-
/* @__PURE__ */
|
|
6002
|
-
/* @__PURE__ */
|
|
6003
|
-
/* @__PURE__ */
|
|
6004
|
-
/* @__PURE__ */
|
|
6208
|
+
details.complianceDueDates?.length ? /* @__PURE__ */ jsxs19("div", { className: "mb-history-due", children: [
|
|
6209
|
+
/* @__PURE__ */ jsx19("em", { children: "Compliance Due Dates" }),
|
|
6210
|
+
/* @__PURE__ */ jsx19("dl", { children: details.complianceDueDates.map((due) => /* @__PURE__ */ jsxs19("div", { children: [
|
|
6211
|
+
/* @__PURE__ */ jsx19("dt", { children: formatDate(due.date) }),
|
|
6212
|
+
/* @__PURE__ */ jsx19("dd", { children: due.text })
|
|
6005
6213
|
] }, `${due.date}-${due.text}`)) })
|
|
6006
6214
|
] }) : null,
|
|
6007
|
-
details.text ? /* @__PURE__ */
|
|
6215
|
+
details.text ? /* @__PURE__ */ jsx19("p", { className: "mb-history-text", children: details.text }) : null
|
|
6008
6216
|
] }) : null
|
|
6009
6217
|
]
|
|
6010
6218
|
},
|
|
@@ -6065,15 +6273,15 @@ function BillLifecycleProgress({ state, nativeStatus, submittedAt, agingDays, dr
|
|
|
6065
6273
|
const rejected = state.toLowerCase() === "rejected";
|
|
6066
6274
|
const draft = Boolean(draftStage) && isBillLifecycleDraft(state);
|
|
6067
6275
|
const steps = billLifecycleProgressSteps(state, { draftStage: Boolean(draftStage) });
|
|
6068
|
-
return /* @__PURE__ */
|
|
6069
|
-
/* @__PURE__ */
|
|
6070
|
-
/* @__PURE__ */
|
|
6071
|
-
/* @__PURE__ */
|
|
6072
|
-
/* @__PURE__ */
|
|
6276
|
+
return /* @__PURE__ */ jsxs19("section", { className: classes(`mb-surface mb-progress${rejected ? " is-rejected" : ""}`, className), style: mindBillAppearanceStyle(appearance, style), "aria-label": "Bill lifecycle", children: [
|
|
6277
|
+
/* @__PURE__ */ jsx19("style", { children: lifecycleSurfaceStyles }),
|
|
6278
|
+
/* @__PURE__ */ jsx19("header", { className: "mb-surface-heading", children: /* @__PURE__ */ jsxs19("div", { children: [
|
|
6279
|
+
/* @__PURE__ */ jsx19("strong", { children: billLifecycleDisplayLabel(state, nativeStatus) }),
|
|
6280
|
+
/* @__PURE__ */ jsx19("span", { children: rejected ? "The payer rejected this submission." : draft ? "Not yet sent" : `${submittedAt ? `Submitted ${defaultFormatDate(submittedAt)}` : "Submitted"}${typeof agingDays === "number" ? ` \xB7 ${agingDays} days old` : ""}` })
|
|
6073
6281
|
] }) }),
|
|
6074
|
-
/* @__PURE__ */
|
|
6075
|
-
/* @__PURE__ */
|
|
6076
|
-
/* @__PURE__ */
|
|
6282
|
+
/* @__PURE__ */ jsx19("ol", { className: "mb-progress-list", style: { gridTemplateColumns: `repeat(${steps.length}, minmax(0, 1fr))` }, children: steps.map((step, index) => /* @__PURE__ */ jsxs19("li", { className: `is-${step.status}`, "aria-current": step.status === "current" ? "step" : void 0, children: [
|
|
6283
|
+
/* @__PURE__ */ jsx19("span", { "aria-hidden": "true", children: step.status === "complete" ? "\u2713" : rejected && step.status === "current" ? "!" : index + 1 }),
|
|
6284
|
+
/* @__PURE__ */ jsx19("b", { children: step.label })
|
|
6077
6285
|
] }, step.id)) })
|
|
6078
6286
|
] });
|
|
6079
6287
|
}
|
|
@@ -6087,48 +6295,48 @@ function billRejectionIssueSummary(rejection, count) {
|
|
|
6087
6295
|
function BillRejectionNotice({ rejection, title = "Rejected \u2014 action required", submittedAt, appearance, className, style, formatDate = defaultFormatDate }) {
|
|
6088
6296
|
const issues = rejection.issues?.length ? rejection.issues : [{ code: rejection.code, description: rejection.reason }];
|
|
6089
6297
|
const hasCodes = issues.some((issue) => Boolean(issue.code));
|
|
6090
|
-
return /* @__PURE__ */
|
|
6091
|
-
/* @__PURE__ */
|
|
6092
|
-
/* @__PURE__ */
|
|
6093
|
-
/* @__PURE__ */
|
|
6094
|
-
/* @__PURE__ */
|
|
6095
|
-
/* @__PURE__ */
|
|
6096
|
-
/* @__PURE__ */
|
|
6097
|
-
/* @__PURE__ */
|
|
6298
|
+
return /* @__PURE__ */ jsxs19("section", { className: classes("mb-surface mb-rejection-notice", className), style: mindBillAppearanceStyle(appearance, style), role: "alert", "aria-label": "Bill rejection reasons", children: [
|
|
6299
|
+
/* @__PURE__ */ jsx19("style", { children: lifecycleSurfaceStyles }),
|
|
6300
|
+
/* @__PURE__ */ jsxs19("div", { className: "mb-rejection-overview", children: [
|
|
6301
|
+
/* @__PURE__ */ jsxs19("header", { className: "mb-rejection-heading", children: [
|
|
6302
|
+
/* @__PURE__ */ jsx19("span", { className: "mb-rejection-icon", "aria-hidden": "true", children: "!" }),
|
|
6303
|
+
/* @__PURE__ */ jsxs19("div", { children: [
|
|
6304
|
+
/* @__PURE__ */ jsx19("strong", { children: title }),
|
|
6305
|
+
/* @__PURE__ */ jsxs19("span", { children: [
|
|
6098
6306
|
"Fix the ",
|
|
6099
6307
|
issues.length === 1 ? "issue" : "issues",
|
|
6100
6308
|
" below, then resubmit."
|
|
6101
6309
|
] })
|
|
6102
6310
|
] })
|
|
6103
6311
|
] }),
|
|
6104
|
-
/* @__PURE__ */
|
|
6105
|
-
/* @__PURE__ */
|
|
6106
|
-
/* @__PURE__ */
|
|
6107
|
-
/* @__PURE__ */
|
|
6108
|
-
submittedAt ? /* @__PURE__ */
|
|
6312
|
+
/* @__PURE__ */ jsxs19("ol", { className: "mb-rejection-progress", "aria-label": "Submission status", children: [
|
|
6313
|
+
/* @__PURE__ */ jsxs19("li", { className: "is-complete", children: [
|
|
6314
|
+
/* @__PURE__ */ jsx19("span", { "aria-hidden": "true", children: "\u2713" }),
|
|
6315
|
+
/* @__PURE__ */ jsx19("b", { children: "Sent" }),
|
|
6316
|
+
submittedAt ? /* @__PURE__ */ jsx19("small", { children: formatDate(submittedAt) }) : null
|
|
6109
6317
|
] }),
|
|
6110
|
-
/* @__PURE__ */
|
|
6111
|
-
/* @__PURE__ */
|
|
6112
|
-
/* @__PURE__ */
|
|
6113
|
-
rejection.receivedAt ? /* @__PURE__ */
|
|
6318
|
+
/* @__PURE__ */ jsxs19("li", { className: "is-rejected", "aria-current": "step", children: [
|
|
6319
|
+
/* @__PURE__ */ jsx19("span", { "aria-hidden": "true", children: "!" }),
|
|
6320
|
+
/* @__PURE__ */ jsx19("b", { children: "Rejected" }),
|
|
6321
|
+
rejection.receivedAt ? /* @__PURE__ */ jsx19("small", { children: formatDate(rejection.receivedAt) }) : null
|
|
6114
6322
|
] })
|
|
6115
6323
|
] })
|
|
6116
6324
|
] }),
|
|
6117
|
-
/* @__PURE__ */
|
|
6118
|
-
/* @__PURE__ */
|
|
6119
|
-
/* @__PURE__ */
|
|
6120
|
-
/* @__PURE__ */
|
|
6325
|
+
/* @__PURE__ */ jsxs19("div", { className: "mb-rejection-issues", "aria-label": "Rejection reasons", children: [
|
|
6326
|
+
/* @__PURE__ */ jsxs19("div", { className: "mb-rejection-issues-heading", children: [
|
|
6327
|
+
/* @__PURE__ */ jsxs19("strong", { children: [
|
|
6328
|
+
/* @__PURE__ */ jsx19("span", { "aria-hidden": "true", children: "\u25B3" }),
|
|
6121
6329
|
" Rejection reasons"
|
|
6122
6330
|
] }),
|
|
6123
|
-
/* @__PURE__ */
|
|
6331
|
+
/* @__PURE__ */ jsx19("span", { children: billRejectionIssueSummary(rejection, issues.length) })
|
|
6124
6332
|
] }),
|
|
6125
|
-
/* @__PURE__ */
|
|
6126
|
-
/* @__PURE__ */
|
|
6127
|
-
/* @__PURE__ */
|
|
6128
|
-
issue.code ? /* @__PURE__ */
|
|
6333
|
+
/* @__PURE__ */ jsx19("ol", { "aria-label": `${issues.length} rejection ${issues.length === 1 ? "reason" : "reasons"}`, children: issues.map((issue, index) => /* @__PURE__ */ jsxs19("li", { children: [
|
|
6334
|
+
/* @__PURE__ */ jsx19("span", { className: "mb-rejection-bullet", "aria-hidden": "true" }),
|
|
6335
|
+
/* @__PURE__ */ jsx19("p", { children: issue.description }),
|
|
6336
|
+
issue.code ? /* @__PURE__ */ jsx19("span", { className: "mb-rejection-code", children: issue.code }) : null
|
|
6129
6337
|
] }, `${issue.code ?? "issue"}-${index}`)) }),
|
|
6130
|
-
hasCodes ? /* @__PURE__ */
|
|
6131
|
-
/* @__PURE__ */
|
|
6338
|
+
hasCodes ? /* @__PURE__ */ jsxs19("p", { className: "mb-rejection-code-note", children: [
|
|
6339
|
+
/* @__PURE__ */ jsx19("span", { "aria-hidden": "true", children: "i" }),
|
|
6132
6340
|
" Technical error codes are included for support and auditability."
|
|
6133
6341
|
] }) : null
|
|
6134
6342
|
] })
|
|
@@ -6143,18 +6351,18 @@ function BillSnapshotSummary({ bill, patient, injury, delivery, appearance, clas
|
|
|
6143
6351
|
["Charged", currency(bill.totalCharge)],
|
|
6144
6352
|
["Balance", currency(bill.balanceDue)]
|
|
6145
6353
|
];
|
|
6146
|
-
return /* @__PURE__ */
|
|
6147
|
-
/* @__PURE__ */
|
|
6148
|
-
/* @__PURE__ */
|
|
6149
|
-
/* @__PURE__ */
|
|
6150
|
-
/* @__PURE__ */
|
|
6354
|
+
return /* @__PURE__ */ jsxs19("section", { className: classes("mb-surface mb-snapshot", className), style: mindBillAppearanceStyle(appearance, style), "aria-label": "Bill snapshot", children: [
|
|
6355
|
+
/* @__PURE__ */ jsx19("style", { children: lifecycleSurfaceStyles }),
|
|
6356
|
+
/* @__PURE__ */ jsx19("header", { className: "mb-surface-heading", children: /* @__PURE__ */ jsxs19("div", { children: [
|
|
6357
|
+
/* @__PURE__ */ jsx19("strong", { children: "Bill snapshot" }),
|
|
6358
|
+
/* @__PURE__ */ jsxs19("span", { children: [
|
|
6151
6359
|
"Bill #",
|
|
6152
6360
|
bill.billNumber
|
|
6153
6361
|
] })
|
|
6154
6362
|
] }) }),
|
|
6155
|
-
/* @__PURE__ */
|
|
6156
|
-
/* @__PURE__ */
|
|
6157
|
-
/* @__PURE__ */
|
|
6363
|
+
/* @__PURE__ */ jsx19("dl", { children: values.map(([label, value]) => /* @__PURE__ */ jsxs19("div", { children: [
|
|
6364
|
+
/* @__PURE__ */ jsx19("dt", { children: label }),
|
|
6365
|
+
/* @__PURE__ */ jsx19("dd", { children: value })
|
|
6158
6366
|
] }, label)) })
|
|
6159
6367
|
] });
|
|
6160
6368
|
}
|
|
@@ -6169,140 +6377,140 @@ function BillExplanationOfReview({
|
|
|
6169
6377
|
style
|
|
6170
6378
|
}) {
|
|
6171
6379
|
const rows = payments.length ? payments : [null];
|
|
6172
|
-
return /* @__PURE__ */
|
|
6173
|
-
/* @__PURE__ */
|
|
6174
|
-
/* @__PURE__ */
|
|
6175
|
-
/* @__PURE__ */
|
|
6176
|
-
/* @__PURE__ */
|
|
6380
|
+
return /* @__PURE__ */ jsxs19("section", { className: classes("mb-surface mb-eor-review", className), style: mindBillAppearanceStyle(appearance, style), "aria-label": "Explanation of Review and payments", children: [
|
|
6381
|
+
/* @__PURE__ */ jsx19("style", { children: lifecycleSurfaceStyles }),
|
|
6382
|
+
/* @__PURE__ */ jsx19("header", { className: "mb-surface-heading", children: /* @__PURE__ */ jsxs19("div", { children: [
|
|
6383
|
+
/* @__PURE__ */ jsx19("strong", { children: "Explanation of Review" }),
|
|
6384
|
+
/* @__PURE__ */ jsx19("span", { children: "Payer response and payment reconciliation." })
|
|
6177
6385
|
] }) }),
|
|
6178
|
-
/* @__PURE__ */
|
|
6179
|
-
/* @__PURE__ */
|
|
6180
|
-
/* @__PURE__ */
|
|
6181
|
-
/* @__PURE__ */
|
|
6386
|
+
/* @__PURE__ */ jsxs19("dl", { className: "mb-eor-metrics", children: [
|
|
6387
|
+
/* @__PURE__ */ jsxs19("div", { children: [
|
|
6388
|
+
/* @__PURE__ */ jsx19("dt", { children: "Amount billed" }),
|
|
6389
|
+
/* @__PURE__ */ jsx19("dd", { children: currency(remittance.billedAmount) })
|
|
6182
6390
|
] }),
|
|
6183
|
-
/* @__PURE__ */
|
|
6184
|
-
/* @__PURE__ */
|
|
6185
|
-
/* @__PURE__ */
|
|
6391
|
+
/* @__PURE__ */ jsxs19("div", { children: [
|
|
6392
|
+
/* @__PURE__ */ jsx19("dt", { children: "Payer allowed" }),
|
|
6393
|
+
/* @__PURE__ */ jsx19("dd", { children: remittance.payerAllowedAmount === null ? "\u2014" : currency(remittance.payerAllowedAmount) })
|
|
6186
6394
|
] }),
|
|
6187
|
-
/* @__PURE__ */
|
|
6188
|
-
/* @__PURE__ */
|
|
6189
|
-
/* @__PURE__ */
|
|
6395
|
+
/* @__PURE__ */ jsxs19("div", { children: [
|
|
6396
|
+
/* @__PURE__ */ jsx19("dt", { children: "Payer reported paid" }),
|
|
6397
|
+
/* @__PURE__ */ jsx19("dd", { children: remittance.payerReportedPaid === null ? "\u2014" : currency(remittance.payerReportedPaid) })
|
|
6190
6398
|
] }),
|
|
6191
|
-
/* @__PURE__ */
|
|
6192
|
-
/* @__PURE__ */
|
|
6193
|
-
/* @__PURE__ */
|
|
6399
|
+
/* @__PURE__ */ jsxs19("div", { className: "is-balance", children: [
|
|
6400
|
+
/* @__PURE__ */ jsx19("dt", { children: "Balance due" }),
|
|
6401
|
+
/* @__PURE__ */ jsx19("dd", { children: currency(remittance.balanceDue) })
|
|
6194
6402
|
] }),
|
|
6195
|
-
/* @__PURE__ */
|
|
6196
|
-
/* @__PURE__ */
|
|
6197
|
-
/* @__PURE__ */
|
|
6403
|
+
/* @__PURE__ */ jsxs19("div", { children: [
|
|
6404
|
+
/* @__PURE__ */ jsx19("dt", { children: "Payment posted" }),
|
|
6405
|
+
/* @__PURE__ */ jsx19("dd", { children: currency(remittance.postedPrincipal) })
|
|
6198
6406
|
] }),
|
|
6199
|
-
/* @__PURE__ */
|
|
6200
|
-
/* @__PURE__ */
|
|
6201
|
-
/* @__PURE__ */
|
|
6407
|
+
/* @__PURE__ */ jsxs19("div", { children: [
|
|
6408
|
+
/* @__PURE__ */ jsx19("dt", { children: "Penalty & interest" }),
|
|
6409
|
+
/* @__PURE__ */ jsx19("dd", { children: currency(remittance.postedAdditional) })
|
|
6202
6410
|
] }),
|
|
6203
|
-
/* @__PURE__ */
|
|
6204
|
-
/* @__PURE__ */
|
|
6205
|
-
/* @__PURE__ */
|
|
6411
|
+
/* @__PURE__ */ jsxs19("div", { children: [
|
|
6412
|
+
/* @__PURE__ */ jsx19("dt", { children: "Total received" }),
|
|
6413
|
+
/* @__PURE__ */ jsx19("dd", { children: currency(remittance.totalPostedCash) })
|
|
6206
6414
|
] }),
|
|
6207
|
-
/* @__PURE__ */
|
|
6208
|
-
/* @__PURE__ */
|
|
6209
|
-
/* @__PURE__ */
|
|
6415
|
+
/* @__PURE__ */ jsxs19("div", { children: [
|
|
6416
|
+
/* @__PURE__ */ jsx19("dt", { children: "Expected" }),
|
|
6417
|
+
/* @__PURE__ */ jsx19("dd", { children: currency(remittance.expectedAmount) })
|
|
6210
6418
|
] })
|
|
6211
6419
|
] }),
|
|
6212
|
-
remittance.denialReason ? /* @__PURE__ */
|
|
6213
|
-
/* @__PURE__ */
|
|
6214
|
-
/* @__PURE__ */
|
|
6420
|
+
remittance.denialReason ? /* @__PURE__ */ jsxs19("div", { className: "mb-denial", children: [
|
|
6421
|
+
/* @__PURE__ */ jsx19("strong", { children: "Denial reason" }),
|
|
6422
|
+
/* @__PURE__ */ jsx19("p", { children: remittance.denialReason })
|
|
6215
6423
|
] }) : null,
|
|
6216
|
-
/* @__PURE__ */
|
|
6217
|
-
/* @__PURE__ */
|
|
6218
|
-
/* @__PURE__ */
|
|
6219
|
-
/* @__PURE__ */
|
|
6220
|
-
/* @__PURE__ */
|
|
6221
|
-
/* @__PURE__ */
|
|
6222
|
-
/* @__PURE__ */
|
|
6424
|
+
/* @__PURE__ */ jsx19("div", { className: "mb-eor-table-wrap", children: /* @__PURE__ */ jsxs19("table", { className: "mb-eor-table", children: [
|
|
6425
|
+
/* @__PURE__ */ jsxs19("thead", { children: [
|
|
6426
|
+
/* @__PURE__ */ jsxs19("tr", { className: "mb-eor-groups", children: [
|
|
6427
|
+
/* @__PURE__ */ jsx19("th", { colSpan: 2, children: "Submission" }),
|
|
6428
|
+
/* @__PURE__ */ jsx19("th", { colSpan: 5, children: "EOR payment information" }),
|
|
6429
|
+
/* @__PURE__ */ jsx19("th", { colSpan: 2, children: "EOR post" }),
|
|
6430
|
+
/* @__PURE__ */ jsx19("th", { children: "EOR" })
|
|
6223
6431
|
] }),
|
|
6224
|
-
/* @__PURE__ */
|
|
6225
|
-
/* @__PURE__ */
|
|
6226
|
-
/* @__PURE__ */
|
|
6227
|
-
/* @__PURE__ */
|
|
6228
|
-
/* @__PURE__ */
|
|
6229
|
-
/* @__PURE__ */
|
|
6230
|
-
/* @__PURE__ */
|
|
6231
|
-
/* @__PURE__ */
|
|
6232
|
-
/* @__PURE__ */
|
|
6233
|
-
/* @__PURE__ */
|
|
6234
|
-
/* @__PURE__ */
|
|
6432
|
+
/* @__PURE__ */ jsxs19("tr", { children: [
|
|
6433
|
+
/* @__PURE__ */ jsx19("th", { children: "Submission" }),
|
|
6434
|
+
/* @__PURE__ */ jsx19("th", { children: "Submission payment" }),
|
|
6435
|
+
/* @__PURE__ */ jsx19("th", { children: "Payment method" }),
|
|
6436
|
+
/* @__PURE__ */ jsx19("th", { children: "Reference" }),
|
|
6437
|
+
/* @__PURE__ */ jsx19("th", { children: "Effective date" }),
|
|
6438
|
+
/* @__PURE__ */ jsx19("th", { children: "Payment total" }),
|
|
6439
|
+
/* @__PURE__ */ jsx19("th", { children: "Deposit date" }),
|
|
6440
|
+
/* @__PURE__ */ jsx19("th", { children: "Post date" }),
|
|
6441
|
+
/* @__PURE__ */ jsx19("th", { children: "Source" }),
|
|
6442
|
+
/* @__PURE__ */ jsx19("th", { children: "Document" })
|
|
6235
6443
|
] })
|
|
6236
6444
|
] }),
|
|
6237
|
-
/* @__PURE__ */
|
|
6445
|
+
/* @__PURE__ */ jsx19("tbody", { children: rows.map((payment, index) => {
|
|
6238
6446
|
const eor = eors[index] ?? eors[0];
|
|
6239
|
-
return /* @__PURE__ */
|
|
6240
|
-
/* @__PURE__ */
|
|
6241
|
-
/* @__PURE__ */
|
|
6242
|
-
submittedAt ? /* @__PURE__ */
|
|
6447
|
+
return /* @__PURE__ */ jsxs19("tr", { children: [
|
|
6448
|
+
/* @__PURE__ */ jsxs19("td", { "data-label": "Submission", children: [
|
|
6449
|
+
/* @__PURE__ */ jsx19("strong", { children: "Original bill" }),
|
|
6450
|
+
submittedAt ? /* @__PURE__ */ jsxs19("span", { children: [
|
|
6243
6451
|
"Sent ",
|
|
6244
6452
|
defaultFormatDate(submittedAt)
|
|
6245
6453
|
] }) : null
|
|
6246
6454
|
] }),
|
|
6247
|
-
/* @__PURE__ */
|
|
6248
|
-
/* @__PURE__ */
|
|
6249
|
-
/* @__PURE__ */
|
|
6250
|
-
/* @__PURE__ */
|
|
6251
|
-
/* @__PURE__ */
|
|
6252
|
-
/* @__PURE__ */
|
|
6253
|
-
/* @__PURE__ */
|
|
6254
|
-
/* @__PURE__ */
|
|
6255
|
-
/* @__PURE__ */
|
|
6455
|
+
/* @__PURE__ */ jsx19("td", { "data-label": "Submission payment", children: remittance.payerReportedPaid === null ? "\u2014" : currency(remittance.payerReportedPaid) }),
|
|
6456
|
+
/* @__PURE__ */ jsx19("td", { "data-label": "Payment method", children: payment ? humanize(payment.method) : "\u2014" }),
|
|
6457
|
+
/* @__PURE__ */ jsx19("td", { "data-label": "Reference", children: payment?.checkNumber || "\u2014" }),
|
|
6458
|
+
/* @__PURE__ */ jsx19("td", { "data-label": "Effective date", children: payment ? payment.receivedDate || payment.depositDate || defaultFormatDate(payment.postedAt) : "\u2014" }),
|
|
6459
|
+
/* @__PURE__ */ jsx19("td", { "data-label": "Payment total", children: payment ? currency(payment.amount) : currency(0) }),
|
|
6460
|
+
/* @__PURE__ */ jsx19("td", { "data-label": "Deposit date", children: payment?.depositDate || "Not recorded" }),
|
|
6461
|
+
/* @__PURE__ */ jsx19("td", { "data-label": "Post date", children: payment ? defaultFormatDate(payment.postedAt) : eor ? defaultFormatDate(eor.addedAt) : "\u2014" }),
|
|
6462
|
+
/* @__PURE__ */ jsx19("td", { "data-label": "Source", children: payment ? payment.source.toUpperCase() : eor ? "EOR" : "\u2014" }),
|
|
6463
|
+
/* @__PURE__ */ jsx19("td", { "data-label": "EOR", children: eor && onOpenEor ? /* @__PURE__ */ jsx19("button", { type: "button", className: "mb-eor-link", onClick: () => void onOpenEor(eor), children: eor.filename }) : eor?.filename || "\u2014" })
|
|
6256
6464
|
] }, payment?.id ?? `empty-${index}`);
|
|
6257
6465
|
}) })
|
|
6258
6466
|
] }) }),
|
|
6259
|
-
eors.length > rows.length ? /* @__PURE__ */
|
|
6467
|
+
eors.length > rows.length ? /* @__PURE__ */ jsx19("div", { className: "mb-eor-documents", children: eors.slice(rows.length).map((eor) => /* @__PURE__ */ jsx19("button", { type: "button", onClick: () => void onOpenEor?.(eor), children: eor.filename }, eor.id)) }) : null
|
|
6260
6468
|
] });
|
|
6261
6469
|
}
|
|
6262
6470
|
function BillRemittanceCard({ remittance, appearance, className, style }) {
|
|
6263
|
-
return /* @__PURE__ */
|
|
6264
|
-
/* @__PURE__ */
|
|
6265
|
-
/* @__PURE__ */
|
|
6266
|
-
/* @__PURE__ */
|
|
6267
|
-
/* @__PURE__ */
|
|
6471
|
+
return /* @__PURE__ */ jsxs19("section", { className: classes("mb-surface mb-remittance", className), style: mindBillAppearanceStyle(appearance, style), "aria-label": "Remittance summary", children: [
|
|
6472
|
+
/* @__PURE__ */ jsx19("style", { children: lifecycleSurfaceStyles }),
|
|
6473
|
+
/* @__PURE__ */ jsx19("header", { className: "mb-surface-heading", children: /* @__PURE__ */ jsxs19("div", { children: [
|
|
6474
|
+
/* @__PURE__ */ jsx19("strong", { children: "Remittance" }),
|
|
6475
|
+
/* @__PURE__ */ jsx19("span", { children: "Amounts reported by the payer and posted to the bill." })
|
|
6268
6476
|
] }) }),
|
|
6269
|
-
/* @__PURE__ */
|
|
6270
|
-
/* @__PURE__ */
|
|
6271
|
-
/* @__PURE__ */
|
|
6272
|
-
/* @__PURE__ */
|
|
6477
|
+
/* @__PURE__ */ jsxs19("dl", { children: [
|
|
6478
|
+
/* @__PURE__ */ jsxs19("div", { children: [
|
|
6479
|
+
/* @__PURE__ */ jsx19("dt", { children: "Amount billed" }),
|
|
6480
|
+
/* @__PURE__ */ jsx19("dd", { children: currency(remittance.billedAmount) })
|
|
6273
6481
|
] }),
|
|
6274
|
-
/* @__PURE__ */
|
|
6275
|
-
/* @__PURE__ */
|
|
6276
|
-
/* @__PURE__ */
|
|
6482
|
+
/* @__PURE__ */ jsxs19("div", { children: [
|
|
6483
|
+
/* @__PURE__ */ jsx19("dt", { children: "Expected" }),
|
|
6484
|
+
/* @__PURE__ */ jsx19("dd", { children: currency(remittance.expectedAmount) })
|
|
6277
6485
|
] }),
|
|
6278
|
-
/* @__PURE__ */
|
|
6279
|
-
/* @__PURE__ */
|
|
6280
|
-
/* @__PURE__ */
|
|
6486
|
+
/* @__PURE__ */ jsxs19("div", { children: [
|
|
6487
|
+
/* @__PURE__ */ jsx19("dt", { children: "Payer allowed" }),
|
|
6488
|
+
/* @__PURE__ */ jsx19("dd", { children: remittance.payerAllowedAmount === null ? "\u2014" : currency(remittance.payerAllowedAmount) })
|
|
6281
6489
|
] }),
|
|
6282
|
-
/* @__PURE__ */
|
|
6283
|
-
/* @__PURE__ */
|
|
6284
|
-
/* @__PURE__ */
|
|
6490
|
+
/* @__PURE__ */ jsxs19("div", { children: [
|
|
6491
|
+
/* @__PURE__ */ jsx19("dt", { children: "Payer reported paid" }),
|
|
6492
|
+
/* @__PURE__ */ jsx19("dd", { children: remittance.payerReportedPaid === null ? "\u2014" : currency(remittance.payerReportedPaid) })
|
|
6285
6493
|
] }),
|
|
6286
|
-
/* @__PURE__ */
|
|
6287
|
-
/* @__PURE__ */
|
|
6288
|
-
/* @__PURE__ */
|
|
6494
|
+
/* @__PURE__ */ jsxs19("div", { children: [
|
|
6495
|
+
/* @__PURE__ */ jsx19("dt", { children: "Payment posted" }),
|
|
6496
|
+
/* @__PURE__ */ jsx19("dd", { children: currency(remittance.postedPrincipal) })
|
|
6289
6497
|
] }),
|
|
6290
|
-
/* @__PURE__ */
|
|
6291
|
-
/* @__PURE__ */
|
|
6292
|
-
/* @__PURE__ */
|
|
6498
|
+
/* @__PURE__ */ jsxs19("div", { children: [
|
|
6499
|
+
/* @__PURE__ */ jsx19("dt", { children: "Penalty & interest" }),
|
|
6500
|
+
/* @__PURE__ */ jsx19("dd", { children: currency(remittance.postedAdditional) })
|
|
6293
6501
|
] }),
|
|
6294
|
-
/* @__PURE__ */
|
|
6295
|
-
/* @__PURE__ */
|
|
6296
|
-
/* @__PURE__ */
|
|
6502
|
+
/* @__PURE__ */ jsxs19("div", { children: [
|
|
6503
|
+
/* @__PURE__ */ jsx19("dt", { children: "Total received" }),
|
|
6504
|
+
/* @__PURE__ */ jsx19("dd", { children: currency(remittance.totalPostedCash) })
|
|
6297
6505
|
] }),
|
|
6298
|
-
/* @__PURE__ */
|
|
6299
|
-
/* @__PURE__ */
|
|
6300
|
-
/* @__PURE__ */
|
|
6506
|
+
/* @__PURE__ */ jsxs19("div", { children: [
|
|
6507
|
+
/* @__PURE__ */ jsx19("dt", { children: "Balance due" }),
|
|
6508
|
+
/* @__PURE__ */ jsx19("dd", { children: currency(remittance.balanceDue) })
|
|
6301
6509
|
] })
|
|
6302
6510
|
] }),
|
|
6303
|
-
remittance.denialReason ? /* @__PURE__ */
|
|
6304
|
-
/* @__PURE__ */
|
|
6305
|
-
/* @__PURE__ */
|
|
6511
|
+
remittance.denialReason ? /* @__PURE__ */ jsxs19("div", { className: "mb-denial", children: [
|
|
6512
|
+
/* @__PURE__ */ jsx19("strong", { children: "Denial reason" }),
|
|
6513
|
+
/* @__PURE__ */ jsx19("p", { children: remittance.denialReason })
|
|
6306
6514
|
] }) : null
|
|
6307
6515
|
] });
|
|
6308
6516
|
}
|
|
@@ -6317,72 +6525,72 @@ function BillPayerContactCard({ delivery, appearance, className, style }) {
|
|
|
6317
6525
|
delivery.contacts.portalUrl ? ["Portal", "Open payer portal", delivery.contacts.portalUrl] : null
|
|
6318
6526
|
].filter(Boolean);
|
|
6319
6527
|
if (!delivery.payerName && !contacts2.length) return null;
|
|
6320
|
-
return /* @__PURE__ */
|
|
6321
|
-
/* @__PURE__ */
|
|
6322
|
-
/* @__PURE__ */
|
|
6323
|
-
/* @__PURE__ */
|
|
6324
|
-
/* @__PURE__ */
|
|
6528
|
+
return /* @__PURE__ */ jsxs19("section", { className: classes("mb-surface mb-contacts", className), style: mindBillAppearanceStyle(appearance, style), "aria-label": "Payer contact information", children: [
|
|
6529
|
+
/* @__PURE__ */ jsx19("style", { children: lifecycleSurfaceStyles }),
|
|
6530
|
+
/* @__PURE__ */ jsx19("header", { className: "mb-surface-heading", children: /* @__PURE__ */ jsxs19("div", { children: [
|
|
6531
|
+
/* @__PURE__ */ jsx19("strong", { children: delivery.payerName || "Claims administrator" }),
|
|
6532
|
+
/* @__PURE__ */ jsx19("span", { children: "Billing and follow-up contacts." })
|
|
6325
6533
|
] }) }),
|
|
6326
|
-
!contacts2.length ? /* @__PURE__ */
|
|
6327
|
-
/* @__PURE__ */
|
|
6328
|
-
/* @__PURE__ */
|
|
6534
|
+
!contacts2.length ? /* @__PURE__ */ jsx19("p", { className: "mb-empty", children: "No payer contact details are available." }) : /* @__PURE__ */ jsx19("dl", { children: contacts2.map(([label, value, href]) => /* @__PURE__ */ jsxs19("div", { children: [
|
|
6535
|
+
/* @__PURE__ */ jsx19("dt", { children: label }),
|
|
6536
|
+
/* @__PURE__ */ jsx19("dd", { children: href ? /* @__PURE__ */ jsx19("a", { href, target: label === "Portal" ? "_blank" : void 0, rel: label === "Portal" ? "noreferrer noopener" : void 0, children: value }) : value })
|
|
6329
6537
|
] }, label)) })
|
|
6330
6538
|
] });
|
|
6331
6539
|
}
|
|
6332
6540
|
function BillPaymentLedger({ payments, appearance, className, style }) {
|
|
6333
|
-
return /* @__PURE__ */
|
|
6334
|
-
/* @__PURE__ */
|
|
6335
|
-
/* @__PURE__ */
|
|
6336
|
-
/* @__PURE__ */
|
|
6337
|
-
/* @__PURE__ */
|
|
6541
|
+
return /* @__PURE__ */ jsxs19("section", { className: classes("mb-surface mb-payments", className), style: mindBillAppearanceStyle(appearance, style), "aria-label": "Payment ledger", children: [
|
|
6542
|
+
/* @__PURE__ */ jsx19("style", { children: lifecycleSurfaceStyles }),
|
|
6543
|
+
/* @__PURE__ */ jsx19("header", { className: "mb-surface-heading", children: /* @__PURE__ */ jsxs19("div", { children: [
|
|
6544
|
+
/* @__PURE__ */ jsx19("strong", { children: "Payments" }),
|
|
6545
|
+
/* @__PURE__ */ jsx19("span", { children: "Funds recorded against this bill." })
|
|
6338
6546
|
] }) }),
|
|
6339
|
-
!payments.length ? /* @__PURE__ */
|
|
6547
|
+
!payments.length ? /* @__PURE__ */ jsx19("p", { className: "mb-empty", children: "No payments posted." }) : /* @__PURE__ */ jsx19("div", { className: "mb-payment-list", children: payments.map((payment) => {
|
|
6340
6548
|
const additional = payment.feeAmount ?? 0;
|
|
6341
|
-
return /* @__PURE__ */
|
|
6342
|
-
/* @__PURE__ */
|
|
6343
|
-
/* @__PURE__ */
|
|
6344
|
-
/* @__PURE__ */
|
|
6549
|
+
return /* @__PURE__ */ jsxs19("article", { children: [
|
|
6550
|
+
/* @__PURE__ */ jsxs19("div", { className: "mb-payment-amount", children: [
|
|
6551
|
+
/* @__PURE__ */ jsx19("strong", { children: currency(payment.amount) }),
|
|
6552
|
+
/* @__PURE__ */ jsx19("span", { children: "Total received" })
|
|
6345
6553
|
] }),
|
|
6346
|
-
/* @__PURE__ */
|
|
6347
|
-
/* @__PURE__ */
|
|
6348
|
-
/* @__PURE__ */
|
|
6349
|
-
/* @__PURE__ */
|
|
6554
|
+
/* @__PURE__ */ jsxs19("dl", { children: [
|
|
6555
|
+
/* @__PURE__ */ jsxs19("div", { children: [
|
|
6556
|
+
/* @__PURE__ */ jsx19("dt", { children: "Applied to bill" }),
|
|
6557
|
+
/* @__PURE__ */ jsx19("dd", { children: currency(payment.principalAmount) })
|
|
6350
6558
|
] }),
|
|
6351
|
-
additional > 0 ? /* @__PURE__ */
|
|
6352
|
-
/* @__PURE__ */
|
|
6353
|
-
/* @__PURE__ */
|
|
6559
|
+
additional > 0 ? /* @__PURE__ */ jsxs19("div", { children: [
|
|
6560
|
+
/* @__PURE__ */ jsx19("dt", { children: "Penalty & interest" }),
|
|
6561
|
+
/* @__PURE__ */ jsx19("dd", { children: currency(additional) })
|
|
6354
6562
|
] }) : null,
|
|
6355
|
-
/* @__PURE__ */
|
|
6356
|
-
/* @__PURE__ */
|
|
6357
|
-
/* @__PURE__ */
|
|
6563
|
+
/* @__PURE__ */ jsxs19("div", { children: [
|
|
6564
|
+
/* @__PURE__ */ jsx19("dt", { children: "Method" }),
|
|
6565
|
+
/* @__PURE__ */ jsx19("dd", { children: payment.method.toUpperCase() })
|
|
6358
6566
|
] }),
|
|
6359
|
-
/* @__PURE__ */
|
|
6360
|
-
/* @__PURE__ */
|
|
6361
|
-
/* @__PURE__ */
|
|
6567
|
+
/* @__PURE__ */ jsxs19("div", { children: [
|
|
6568
|
+
/* @__PURE__ */ jsx19("dt", { children: "Reference" }),
|
|
6569
|
+
/* @__PURE__ */ jsx19("dd", { children: payment.checkNumber || "\u2014" })
|
|
6362
6570
|
] }),
|
|
6363
|
-
/* @__PURE__ */
|
|
6364
|
-
/* @__PURE__ */
|
|
6365
|
-
/* @__PURE__ */
|
|
6571
|
+
/* @__PURE__ */ jsxs19("div", { children: [
|
|
6572
|
+
/* @__PURE__ */ jsx19("dt", { children: "Effective date" }),
|
|
6573
|
+
/* @__PURE__ */ jsx19("dd", { children: payment.receivedDate || payment.depositDate || defaultFormatDate(payment.postedAt) })
|
|
6366
6574
|
] }),
|
|
6367
|
-
/* @__PURE__ */
|
|
6368
|
-
/* @__PURE__ */
|
|
6369
|
-
/* @__PURE__ */
|
|
6575
|
+
/* @__PURE__ */ jsxs19("div", { children: [
|
|
6576
|
+
/* @__PURE__ */ jsx19("dt", { children: "Deposit date" }),
|
|
6577
|
+
/* @__PURE__ */ jsx19("dd", { children: payment.depositDate || "Not recorded" })
|
|
6370
6578
|
] }),
|
|
6371
|
-
/* @__PURE__ */
|
|
6372
|
-
/* @__PURE__ */
|
|
6373
|
-
/* @__PURE__ */
|
|
6579
|
+
/* @__PURE__ */ jsxs19("div", { children: [
|
|
6580
|
+
/* @__PURE__ */ jsx19("dt", { children: "Posted" }),
|
|
6581
|
+
/* @__PURE__ */ jsxs19("dd", { children: [
|
|
6374
6582
|
defaultFormatDate(payment.postedAt),
|
|
6375
6583
|
" \xB7 ",
|
|
6376
6584
|
payment.source.toUpperCase()
|
|
6377
6585
|
] })
|
|
6378
6586
|
] }),
|
|
6379
|
-
/* @__PURE__ */
|
|
6380
|
-
/* @__PURE__ */
|
|
6381
|
-
/* @__PURE__ */
|
|
6587
|
+
/* @__PURE__ */ jsxs19("div", { children: [
|
|
6588
|
+
/* @__PURE__ */ jsx19("dt", { children: "Status" }),
|
|
6589
|
+
/* @__PURE__ */ jsx19("dd", { children: humanize(payment.status || "posted") })
|
|
6382
6590
|
] })
|
|
6383
6591
|
] }),
|
|
6384
|
-
payment.feeReason ? /* @__PURE__ */
|
|
6385
|
-
payment.note ? /* @__PURE__ */
|
|
6592
|
+
payment.feeReason ? /* @__PURE__ */ jsx19("p", { children: payment.feeReason }) : null,
|
|
6593
|
+
payment.note ? /* @__PURE__ */ jsx19("p", { children: payment.note }) : null
|
|
6386
6594
|
] }, payment.id);
|
|
6387
6595
|
}) })
|
|
6388
6596
|
] });
|
|
@@ -6439,10 +6647,10 @@ var lifecycleSurfaceStyles = `
|
|
|
6439
6647
|
// src/connected-bill-lifecycle.tsx
|
|
6440
6648
|
import {
|
|
6441
6649
|
useCallback as useCallback4,
|
|
6442
|
-
useEffect as
|
|
6650
|
+
useEffect as useEffect14,
|
|
6443
6651
|
useMemo as useMemo10,
|
|
6444
|
-
useRef as
|
|
6445
|
-
useState as
|
|
6652
|
+
useRef as useRef9,
|
|
6653
|
+
useState as useState17
|
|
6446
6654
|
} from "react";
|
|
6447
6655
|
import {
|
|
6448
6656
|
DEFAULT_API_BASE_URL as DEFAULT_API_BASE_URL3,
|
|
@@ -6453,13 +6661,13 @@ import {
|
|
|
6453
6661
|
} from "@mindbill/browser";
|
|
6454
6662
|
|
|
6455
6663
|
// src/second-review-form.tsx
|
|
6456
|
-
import { useMemo as useMemo9, useState as
|
|
6664
|
+
import { useMemo as useMemo9, useState as useState16 } from "react";
|
|
6457
6665
|
|
|
6458
6666
|
// src/second-review-corrections.ts
|
|
6459
6667
|
import { parseSecondReviewCorrection } from "@mindbill/browser";
|
|
6460
6668
|
|
|
6461
6669
|
// src/second-review-form.tsx
|
|
6462
|
-
import { Fragment as Fragment14, jsx as
|
|
6670
|
+
import { Fragment as Fragment14, jsx as jsx20, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
6463
6671
|
var SECOND_REVIEW_REASON_TEMPLATES = [
|
|
6464
6672
|
{
|
|
6465
6673
|
label: "Med-legal report denied",
|
|
@@ -6494,7 +6702,7 @@ var SECOND_REVIEW_REASON_TEMPLATES = [
|
|
|
6494
6702
|
value: "This service was provided before the claims administrator accepted or denied liability and was authorized under California Labor Code section 5402(c). Please reprocess this service and issue payment."
|
|
6495
6703
|
}
|
|
6496
6704
|
];
|
|
6497
|
-
var
|
|
6705
|
+
var css13 = `
|
|
6498
6706
|
.mb-second-review{display:grid;gap:18px;padding:22px;color:var(--mb-text);font-family:var(--mb-font);background:var(--mb-surface);border:1px solid var(--mb-border);border-radius:var(--mb-radius);box-shadow:var(--mb-shadow)}
|
|
6499
6707
|
.mb-second-review *{box-sizing:border-box}.mb-second-review h3{margin:0;font-size:22px}.mb-second-review p{margin:4px 0 0;color:var(--mb-muted)}
|
|
6500
6708
|
.mb-second-review-deadline{padding:12px 14px;border-radius:var(--mb-control-radius);background:color-mix(in srgb,var(--mb-warning) 10%,var(--mb-surface));color:var(--mb-text)!important}
|
|
@@ -6532,12 +6740,12 @@ function SecondReviewForm({
|
|
|
6532
6740
|
onCancel,
|
|
6533
6741
|
onSubmit
|
|
6534
6742
|
}) {
|
|
6535
|
-
const [lines, setLines] =
|
|
6536
|
-
const [attachmentIds, setAttachmentIds] =
|
|
6537
|
-
const [uploads, setUploads] =
|
|
6538
|
-
const [formError, setFormError] =
|
|
6539
|
-
const [preparing, setPreparing] =
|
|
6540
|
-
const [delivery, setDelivery] =
|
|
6743
|
+
const [lines, setLines] = useState16(() => initialLineDrafts(data));
|
|
6744
|
+
const [attachmentIds, setAttachmentIds] = useState16(() => data.bill.attachments.map((attachment) => attachment.id));
|
|
6745
|
+
const [uploads, setUploads] = useState16([]);
|
|
6746
|
+
const [formError, setFormError] = useState16("");
|
|
6747
|
+
const [preparing, setPreparing] = useState16(false);
|
|
6748
|
+
const [delivery, setDelivery] = useState16(null);
|
|
6541
6749
|
const selectableLines = useMemo9(() => data.bill.lineItems.filter((line) => Boolean(line.id)), [data.bill.lineItems]);
|
|
6542
6750
|
const selected = selectableLines.filter((line) => lines[line.id]?.selected);
|
|
6543
6751
|
const invalidReason = selected.some((line) => !lines[line.id]?.reason.trim());
|
|
@@ -6637,118 +6845,118 @@ function SecondReviewForm({
|
|
|
6637
6845
|
setPreparing(false);
|
|
6638
6846
|
}
|
|
6639
6847
|
};
|
|
6640
|
-
return /* @__PURE__ */
|
|
6641
|
-
/* @__PURE__ */
|
|
6642
|
-
/* @__PURE__ */
|
|
6643
|
-
/* @__PURE__ */
|
|
6644
|
-
/* @__PURE__ */
|
|
6645
|
-
/* @__PURE__ */
|
|
6848
|
+
return /* @__PURE__ */ jsxs20(Fragment14, { children: [
|
|
6849
|
+
/* @__PURE__ */ jsx20("style", { children: css13 }),
|
|
6850
|
+
/* @__PURE__ */ jsxs20("section", { className: "mb-second-review", children: [
|
|
6851
|
+
/* @__PURE__ */ jsxs20("div", { children: [
|
|
6852
|
+
/* @__PURE__ */ jsx20("h3", { children: "Submit Second Review" }),
|
|
6853
|
+
/* @__PURE__ */ jsx20("p", { children: "Select each disputed service and explain why it should be reconsidered." })
|
|
6646
6854
|
] }),
|
|
6647
|
-
/* @__PURE__ */
|
|
6648
|
-
/* @__PURE__ */
|
|
6649
|
-
/* @__PURE__ */
|
|
6855
|
+
/* @__PURE__ */ jsxs20("label", { className: "mb-second-review-template", children: [
|
|
6856
|
+
/* @__PURE__ */ jsx20("span", { className: "mb-second-review-label", children: "Apply a saved reason to selected lines" }),
|
|
6857
|
+
/* @__PURE__ */ jsxs20("select", { className: "mb-second-review-select", defaultValue: "", onChange: (event) => {
|
|
6650
6858
|
applyTemplate(event.target.value);
|
|
6651
6859
|
event.target.value = "";
|
|
6652
6860
|
}, children: [
|
|
6653
|
-
/* @__PURE__ */
|
|
6654
|
-
SECOND_REVIEW_REASON_TEMPLATES.map((template) => /* @__PURE__ */
|
|
6861
|
+
/* @__PURE__ */ jsx20("option", { value: "", children: "Choose a reason template (optional)" }),
|
|
6862
|
+
SECOND_REVIEW_REASON_TEMPLATES.map((template) => /* @__PURE__ */ jsx20("option", { value: template.value, children: template.label }, template.label))
|
|
6655
6863
|
] })
|
|
6656
6864
|
] }),
|
|
6657
|
-
/* @__PURE__ */
|
|
6865
|
+
/* @__PURE__ */ jsxs20("section", { className: "mb-second-review-lines", "aria-label": "Service lines in dispute", children: [
|
|
6658
6866
|
selectableLines.map((line) => {
|
|
6659
6867
|
const draft = lines[line.id];
|
|
6660
|
-
return /* @__PURE__ */
|
|
6661
|
-
/* @__PURE__ */
|
|
6662
|
-
/* @__PURE__ */
|
|
6663
|
-
/* @__PURE__ */
|
|
6664
|
-
/* @__PURE__ */
|
|
6868
|
+
return /* @__PURE__ */ jsxs20("article", { className: "mb-second-review-line", "data-selected": draft?.selected, children: [
|
|
6869
|
+
/* @__PURE__ */ jsxs20("div", { className: "mb-second-review-line-head", children: [
|
|
6870
|
+
/* @__PURE__ */ jsxs20("label", { className: "mb-second-review-check", children: [
|
|
6871
|
+
/* @__PURE__ */ jsx20("input", { type: "checkbox", checked: Boolean(draft?.selected), onChange: (event) => patchLine(line.id, { selected: event.target.checked }) }),
|
|
6872
|
+
/* @__PURE__ */ jsxs20("span", { children: [
|
|
6665
6873
|
line.code,
|
|
6666
6874
|
line.modifiers.length ? `-${line.modifiers.join("-")}` : ""
|
|
6667
6875
|
] })
|
|
6668
6876
|
] }),
|
|
6669
|
-
/* @__PURE__ */
|
|
6670
|
-
/* @__PURE__ */
|
|
6877
|
+
/* @__PURE__ */ jsxs20("span", { className: "mb-second-review-metrics", children: [
|
|
6878
|
+
/* @__PURE__ */ jsxs20("span", { children: [
|
|
6671
6879
|
line.units,
|
|
6672
6880
|
" unit",
|
|
6673
6881
|
line.units === 1 ? "" : "s"
|
|
6674
6882
|
] }),
|
|
6675
|
-
/* @__PURE__ */
|
|
6883
|
+
/* @__PURE__ */ jsx20("span", { children: money6(line.charge) })
|
|
6676
6884
|
] })
|
|
6677
6885
|
] }),
|
|
6678
|
-
draft?.selected ? /* @__PURE__ */
|
|
6679
|
-
/* @__PURE__ */
|
|
6680
|
-
/* @__PURE__ */
|
|
6681
|
-
/* @__PURE__ */
|
|
6886
|
+
draft?.selected ? /* @__PURE__ */ jsxs20(Fragment14, { children: [
|
|
6887
|
+
/* @__PURE__ */ jsxs20("label", { className: "mb-second-review-field", children: [
|
|
6888
|
+
/* @__PURE__ */ jsx20("span", { className: "mb-second-review-label", children: "Reason for requesting Second Review" }),
|
|
6889
|
+
/* @__PURE__ */ jsx20("textarea", { className: "mb-second-review-textarea", required: true, value: draft.reason, onChange: (event) => patchLine(line.id, { reason: event.target.value }) })
|
|
6682
6890
|
] }),
|
|
6683
|
-
/* @__PURE__ */
|
|
6684
|
-
/* @__PURE__ */
|
|
6685
|
-
[["yes", "Yes"], ["no", "No"], ["", "Not specified"]].map(([value, label]) => /* @__PURE__ */
|
|
6686
|
-
/* @__PURE__ */
|
|
6891
|
+
/* @__PURE__ */ jsxs20("div", { className: "mb-second-review-auth", role: "radiogroup", "aria-label": `Service or good ${line.code} authorized`, children: [
|
|
6892
|
+
/* @__PURE__ */ jsx20("strong", { children: "Service/Good Authorized?" }),
|
|
6893
|
+
[["yes", "Yes"], ["no", "No"], ["", "Not specified"]].map(([value, label]) => /* @__PURE__ */ jsxs20("label", { children: [
|
|
6894
|
+
/* @__PURE__ */ jsx20("input", { type: "radio", name: `authorized-${line.id}`, checked: draft.serviceAuthorized === value, onChange: () => patchLine(line.id, { serviceAuthorized: value }) }),
|
|
6687
6895
|
label
|
|
6688
6896
|
] }, label))
|
|
6689
6897
|
] })
|
|
6690
6898
|
] }) : null,
|
|
6691
|
-
draft?.selected ? /* @__PURE__ */
|
|
6692
|
-
/* @__PURE__ */
|
|
6693
|
-
/* @__PURE__ */
|
|
6899
|
+
draft?.selected ? /* @__PURE__ */ jsxs20(Fragment14, { children: [
|
|
6900
|
+
/* @__PURE__ */ jsxs20("label", { className: "mb-second-review-check", children: [
|
|
6901
|
+
/* @__PURE__ */ jsx20("input", { type: "checkbox", checked: draft.correctBilling, onChange: (event) => patchLine(line.id, { correctBilling: event.target.checked, chargeReviewed: false }) }),
|
|
6694
6902
|
"Correct units or modifiers on this submission"
|
|
6695
6903
|
] }),
|
|
6696
|
-
draft.correctBilling ? /* @__PURE__ */
|
|
6697
|
-
/* @__PURE__ */
|
|
6698
|
-
/* @__PURE__ */
|
|
6699
|
-
/* @__PURE__ */
|
|
6700
|
-
/* @__PURE__ */
|
|
6701
|
-
/* @__PURE__ */
|
|
6904
|
+
draft.correctBilling ? /* @__PURE__ */ jsxs20(Fragment14, { children: [
|
|
6905
|
+
/* @__PURE__ */ jsx20("p", { className: "mb-second-review-correction-note", children: "Earlier submissions stay unchanged. Review the charge explicitly; changing units or modifiers does not recalculate it." }),
|
|
6906
|
+
/* @__PURE__ */ jsxs20("div", { className: "mb-second-review-corrections", children: [
|
|
6907
|
+
/* @__PURE__ */ jsxs20("label", { className: "mb-second-review-field", children: [
|
|
6908
|
+
/* @__PURE__ */ jsx20("span", { className: "mb-second-review-label", children: "Corrected units" }),
|
|
6909
|
+
/* @__PURE__ */ jsx20("input", { className: "mb-second-review-select", type: "number", min: "1", max: "10000", step: "1", value: draft.units, onChange: (event) => patchLine(line.id, { units: event.target.value, chargeReviewed: false }) })
|
|
6702
6910
|
] }),
|
|
6703
|
-
/* @__PURE__ */
|
|
6704
|
-
/* @__PURE__ */
|
|
6705
|
-
/* @__PURE__ */
|
|
6911
|
+
/* @__PURE__ */ jsxs20("label", { className: "mb-second-review-field", children: [
|
|
6912
|
+
/* @__PURE__ */ jsx20("span", { className: "mb-second-review-label", children: "Corrected modifiers" }),
|
|
6913
|
+
/* @__PURE__ */ jsx20("input", { className: "mb-second-review-select", placeholder: "95, 93 \u2014 or leave blank", value: draft.modifiers, onChange: (event) => patchLine(line.id, { modifiers: event.target.value, chargeReviewed: false }) })
|
|
6706
6914
|
] }),
|
|
6707
|
-
/* @__PURE__ */
|
|
6708
|
-
/* @__PURE__ */
|
|
6709
|
-
/* @__PURE__ */
|
|
6915
|
+
/* @__PURE__ */ jsxs20("label", { className: "mb-second-review-field", children: [
|
|
6916
|
+
/* @__PURE__ */ jsx20("span", { className: "mb-second-review-label", children: "Corrected charge ($)" }),
|
|
6917
|
+
/* @__PURE__ */ jsx20("input", { className: "mb-second-review-select", type: "number", min: "0", max: "999999.99", step: "0.01", value: draft.charge, onChange: (event) => patchLine(line.id, { charge: event.target.value, chargeReviewed: false }) })
|
|
6710
6918
|
] })
|
|
6711
6919
|
] }),
|
|
6712
|
-
/* @__PURE__ */
|
|
6713
|
-
/* @__PURE__ */
|
|
6920
|
+
/* @__PURE__ */ jsxs20("label", { className: "mb-second-review-check", children: [
|
|
6921
|
+
/* @__PURE__ */ jsx20("input", { type: "checkbox", checked: draft.chargeReviewed, onChange: (event) => patchLine(line.id, { chargeReviewed: event.target.checked }) }),
|
|
6714
6922
|
"I reviewed the corrected charge"
|
|
6715
6923
|
] }),
|
|
6716
|
-
correctionErrors[line.id] ? /* @__PURE__ */
|
|
6924
|
+
correctionErrors[line.id] ? /* @__PURE__ */ jsx20("p", { className: "mb-second-review-correction-note", role: "status", children: correctionErrors[line.id] }) : null
|
|
6717
6925
|
] }) : null
|
|
6718
6926
|
] }) : null
|
|
6719
6927
|
] }, line.id);
|
|
6720
6928
|
}),
|
|
6721
|
-
!selectableLines.length ? /* @__PURE__ */
|
|
6929
|
+
!selectableLines.length ? /* @__PURE__ */ jsx20("div", { className: "mb-second-review-error", children: "This bill has no stable service-line identifiers. Refresh the bill before submitting a Second Review." }) : null
|
|
6722
6930
|
] }),
|
|
6723
|
-
/* @__PURE__ */
|
|
6724
|
-
/* @__PURE__ */
|
|
6725
|
-
data.bill.attachments.map((attachment) => /* @__PURE__ */
|
|
6726
|
-
/* @__PURE__ */
|
|
6727
|
-
/* @__PURE__ */
|
|
6728
|
-
/* @__PURE__ */
|
|
6729
|
-
/* @__PURE__ */
|
|
6931
|
+
/* @__PURE__ */ jsxs20("fieldset", { className: "mb-second-review-packet", children: [
|
|
6932
|
+
/* @__PURE__ */ jsx20("legend", { children: "Supporting packet" }),
|
|
6933
|
+
data.bill.attachments.map((attachment) => /* @__PURE__ */ jsxs20("label", { className: "mb-second-review-document", children: [
|
|
6934
|
+
/* @__PURE__ */ jsx20("input", { type: "checkbox", checked: attachmentIds.includes(attachment.id), onChange: (event) => setAttachmentIds((current) => event.target.checked ? [...current, attachment.id] : current.filter((id) => id !== attachment.id)) }),
|
|
6935
|
+
/* @__PURE__ */ jsxs20("span", { children: [
|
|
6936
|
+
/* @__PURE__ */ jsx20("strong", { children: attachment.filename }),
|
|
6937
|
+
/* @__PURE__ */ jsx20("small", { children: attachment.description || attachment.documentType })
|
|
6730
6938
|
] }),
|
|
6731
|
-
/* @__PURE__ */
|
|
6939
|
+
/* @__PURE__ */ jsx20("button", { className: "mb-second-review-link", type: "button", onClick: () => void openAttachment(attachment).catch(() => void 0), children: "View" })
|
|
6732
6940
|
] }, attachment.id)),
|
|
6733
|
-
/* @__PURE__ */
|
|
6734
|
-
/* @__PURE__ */
|
|
6735
|
-
/* @__PURE__ */
|
|
6736
|
-
/* @__PURE__ */
|
|
6941
|
+
/* @__PURE__ */ jsxs20("label", { className: "mb-second-review-upload", children: [
|
|
6942
|
+
/* @__PURE__ */ jsx20("input", { type: "file", accept: "application/pdf,.pdf", multiple: true, onChange: addUploads }),
|
|
6943
|
+
/* @__PURE__ */ jsxs20("span", { children: [
|
|
6944
|
+
/* @__PURE__ */ jsx20("strong", { children: "Choose one or more PDF files" }),
|
|
6737
6945
|
" to attach"
|
|
6738
6946
|
] })
|
|
6739
6947
|
] }),
|
|
6740
|
-
uploads.map((upload, index) => /* @__PURE__ */
|
|
6741
|
-
/* @__PURE__ */
|
|
6742
|
-
/* @__PURE__ */
|
|
6948
|
+
uploads.map((upload, index) => /* @__PURE__ */ jsxs20("div", { className: "mb-second-review-uploaded", children: [
|
|
6949
|
+
/* @__PURE__ */ jsx20("span", { children: upload.file.name }),
|
|
6950
|
+
/* @__PURE__ */ jsx20("button", { className: "mb-second-review-link", type: "button", onClick: () => setUploads((current) => current.filter((_, itemIndex) => itemIndex !== index)), children: "Remove" })
|
|
6743
6951
|
] }, `${upload.file.name}-${index}`))
|
|
6744
6952
|
] }),
|
|
6745
|
-
formError || error?.message ? /* @__PURE__ */
|
|
6746
|
-
/* @__PURE__ */
|
|
6747
|
-
/* @__PURE__ */
|
|
6748
|
-
/* @__PURE__ */
|
|
6953
|
+
formError || error?.message ? /* @__PURE__ */ jsx20("div", { className: "mb-second-review-error", role: "alert", children: formError || error?.message }) : null,
|
|
6954
|
+
/* @__PURE__ */ jsxs20("div", { className: "mb-second-review-actions", children: [
|
|
6955
|
+
/* @__PURE__ */ jsx20("button", { className: "mb-second-review-button secondary", type: "button", disabled: submitting || preparing, onClick: onCancel, children: "Cancel" }),
|
|
6956
|
+
/* @__PURE__ */ jsx20("button", { className: "mb-second-review-button primary", type: "button", disabled: submitting || preparing || !selected.length || invalidReason || invalidCorrection, onClick: () => void continueToDelivery(), children: preparing ? "Preparing\u2026" : "Continue to delivery" })
|
|
6749
6957
|
] })
|
|
6750
6958
|
] }),
|
|
6751
|
-
delivery ? /* @__PURE__ */
|
|
6959
|
+
delivery ? /* @__PURE__ */ jsx20(SendRouteDialog, { title: "Confirm Second Review delivery", delivery, submitting: submitting || preparing, error: formError || error?.message || null, onCancel: () => setDelivery(null), onConfirm: (route) => void submit(route) }) : null
|
|
6752
6960
|
] });
|
|
6753
6961
|
}
|
|
6754
6962
|
|
|
@@ -6760,7 +6968,7 @@ import {
|
|
|
6760
6968
|
reportBillStatusContacts as reportBillStatusContacts2,
|
|
6761
6969
|
secondReviewDeadline as secondReviewDeadline2
|
|
6762
6970
|
} from "@mindbill/browser";
|
|
6763
|
-
import { Fragment as Fragment15, jsx as
|
|
6971
|
+
import { Fragment as Fragment15, jsx as jsx21, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
6764
6972
|
var DEFAULT_REFRESH_INTERVAL2 = 6e4;
|
|
6765
6973
|
function billTeamNotes(data) {
|
|
6766
6974
|
const notes = data.notes ?? [];
|
|
@@ -6808,12 +7016,12 @@ function useBillLifecycle({
|
|
|
6808
7016
|
enabled = true,
|
|
6809
7017
|
fetch: fetchOverride
|
|
6810
7018
|
}) {
|
|
6811
|
-
const [data, setData] =
|
|
6812
|
-
const [error, setError] =
|
|
6813
|
-
const [isLoading, setIsLoading] =
|
|
6814
|
-
const [isRefreshing, setIsRefreshing] =
|
|
6815
|
-
const [isMutating, setIsMutating] =
|
|
6816
|
-
const mounted =
|
|
7019
|
+
const [data, setData] = useState17(null);
|
|
7020
|
+
const [error, setError] = useState17(null);
|
|
7021
|
+
const [isLoading, setIsLoading] = useState17(enabled);
|
|
7022
|
+
const [isRefreshing, setIsRefreshing] = useState17(false);
|
|
7023
|
+
const [isMutating, setIsMutating] = useState17(false);
|
|
7024
|
+
const mounted = useRef9(true);
|
|
6817
7025
|
const client = useMemo10(() => createBillLifecycleClient({
|
|
6818
7026
|
billId: providedBillId,
|
|
6819
7027
|
sessionEndpoint,
|
|
@@ -6821,12 +7029,12 @@ function useBillLifecycle({
|
|
|
6821
7029
|
apiBaseUrl,
|
|
6822
7030
|
fetch: fetchOverride
|
|
6823
7031
|
}), [apiBaseUrl, fetchOverride, getSession, providedBillId, sessionEndpoint]);
|
|
6824
|
-
|
|
7032
|
+
useEffect14(() => {
|
|
6825
7033
|
setData(null);
|
|
6826
7034
|
setError(null);
|
|
6827
7035
|
setIsLoading(enabled);
|
|
6828
7036
|
}, [enabled, providedBillId]);
|
|
6829
|
-
|
|
7037
|
+
useEffect14(() => {
|
|
6830
7038
|
mounted.current = true;
|
|
6831
7039
|
return () => {
|
|
6832
7040
|
mounted.current = false;
|
|
@@ -6850,7 +7058,7 @@ function useBillLifecycle({
|
|
|
6850
7058
|
}
|
|
6851
7059
|
}
|
|
6852
7060
|
}, [client, enabled]);
|
|
6853
|
-
|
|
7061
|
+
useEffect14(() => {
|
|
6854
7062
|
if (!enabled) return;
|
|
6855
7063
|
void refresh();
|
|
6856
7064
|
const interval = refreshInterval > 0 ? window.setInterval(() => void refresh(), refreshInterval) : null;
|
|
@@ -6953,10 +7161,10 @@ function useBillLifecycle({
|
|
|
6953
7161
|
};
|
|
6954
7162
|
}
|
|
6955
7163
|
function LifecycleDialog({ children, title, wide = false, onClose }) {
|
|
6956
|
-
const dialog =
|
|
6957
|
-
const onCloseRef =
|
|
7164
|
+
const dialog = useRef9(null);
|
|
7165
|
+
const onCloseRef = useRef9(onClose);
|
|
6958
7166
|
onCloseRef.current = onClose;
|
|
6959
|
-
|
|
7167
|
+
useEffect14(() => {
|
|
6960
7168
|
const previous = document.activeElement;
|
|
6961
7169
|
dialog.current?.focus();
|
|
6962
7170
|
const onKeyDown = (event) => event.key === "Escape" && onCloseRef.current();
|
|
@@ -6966,8 +7174,8 @@ function LifecycleDialog({ children, title, wide = false, onClose }) {
|
|
|
6966
7174
|
previous?.focus();
|
|
6967
7175
|
};
|
|
6968
7176
|
}, []);
|
|
6969
|
-
return /* @__PURE__ */
|
|
6970
|
-
/* @__PURE__ */
|
|
7177
|
+
return /* @__PURE__ */ jsx21("div", { className: "mb-lifecycle-dialog-backdrop", onMouseDown: (event) => event.currentTarget === event.target && onClose(), children: /* @__PURE__ */ jsxs21("div", { ref: dialog, className: ["mb-lifecycle-dialog", wide ? "wide" : ""].filter(Boolean).join(" "), role: "dialog", "aria-modal": "true", "aria-label": title, tabIndex: -1, children: [
|
|
7178
|
+
/* @__PURE__ */ jsx21("button", { type: "button", className: "mb-lifecycle-dialog-close", "aria-label": "Close", onClick: onClose, children: "\xD7" }),
|
|
6971
7179
|
children
|
|
6972
7180
|
] }) });
|
|
6973
7181
|
}
|
|
@@ -7006,22 +7214,22 @@ function correctionRejectionSummary(rejection) {
|
|
|
7006
7214
|
function CorrectionRejectionReason({ rejection }) {
|
|
7007
7215
|
const summary = correctionRejectionSummary(rejection);
|
|
7008
7216
|
const details = rejection.issues?.filter((issue) => issue.description.trim() !== summary.description || Boolean(issue.code?.trim() && issue.code.trim() !== summary.code)) ?? [];
|
|
7009
|
-
return /* @__PURE__ */
|
|
7010
|
-
summary.code ? /* @__PURE__ */
|
|
7011
|
-
/* @__PURE__ */
|
|
7012
|
-
/* @__PURE__ */
|
|
7013
|
-
summary.clearinghouseDetail ? /* @__PURE__ */
|
|
7014
|
-
/* @__PURE__ */
|
|
7217
|
+
return /* @__PURE__ */ jsxs21("div", { className: "mb-lifecycle-correction-reason", role: "alert", children: [
|
|
7218
|
+
summary.code ? /* @__PURE__ */ jsxs21("div", { className: "mb-lifecycle-correction-reason-code", children: [
|
|
7219
|
+
/* @__PURE__ */ jsx21("span", { children: "Rejection code" }),
|
|
7220
|
+
/* @__PURE__ */ jsx21("code", { children: summary.code }),
|
|
7221
|
+
summary.clearinghouseDetail ? /* @__PURE__ */ jsxs21("small", { children: [
|
|
7222
|
+
/* @__PURE__ */ jsx21("span", { children: "Clearinghouse detail" }),
|
|
7015
7223
|
summary.clearinghouseDetail
|
|
7016
7224
|
] }) : null
|
|
7017
7225
|
] }) : null,
|
|
7018
|
-
/* @__PURE__ */
|
|
7019
|
-
/* @__PURE__ */
|
|
7020
|
-
/* @__PURE__ */
|
|
7226
|
+
/* @__PURE__ */ jsxs21("div", { className: "mb-lifecycle-correction-reason-description", children: [
|
|
7227
|
+
/* @__PURE__ */ jsx21("span", { children: "Reason" }),
|
|
7228
|
+
/* @__PURE__ */ jsx21("strong", { children: summary.description })
|
|
7021
7229
|
] }),
|
|
7022
|
-
details.length ? /* @__PURE__ */
|
|
7023
|
-
issue.code ? /* @__PURE__ */
|
|
7024
|
-
/* @__PURE__ */
|
|
7230
|
+
details.length ? /* @__PURE__ */ jsx21("ul", { "aria-label": "Additional rejection details", children: details.map((issue, index) => /* @__PURE__ */ jsxs21("li", { children: [
|
|
7231
|
+
issue.code ? /* @__PURE__ */ jsx21("code", { children: issue.code }) : null,
|
|
7232
|
+
/* @__PURE__ */ jsx21("span", { children: issue.description })
|
|
7025
7233
|
] }, `${issue.code || "issue"}-${index}`)) }) : null
|
|
7026
7234
|
] });
|
|
7027
7235
|
}
|
|
@@ -7062,16 +7270,16 @@ function CorrectionVerificationContact({ delivery }) {
|
|
|
7062
7270
|
{ label: "Mail", values: mailingAddresses }
|
|
7063
7271
|
].filter((method) => method.values.length);
|
|
7064
7272
|
if (!methods.length) return null;
|
|
7065
|
-
return /* @__PURE__ */
|
|
7066
|
-
/* @__PURE__ */
|
|
7067
|
-
/* @__PURE__ */
|
|
7273
|
+
return /* @__PURE__ */ jsxs21("aside", { className: "mb-lifecycle-correction-contact", children: [
|
|
7274
|
+
/* @__PURE__ */ jsx21("strong", { children: "Need to verify the rejected information?" }),
|
|
7275
|
+
/* @__PURE__ */ jsxs21("span", { children: [
|
|
7068
7276
|
"Contact ",
|
|
7069
7277
|
delivery.payerName,
|
|
7070
7278
|
" using any available method:"
|
|
7071
7279
|
] }),
|
|
7072
|
-
/* @__PURE__ */
|
|
7073
|
-
/* @__PURE__ */
|
|
7074
|
-
/* @__PURE__ */
|
|
7280
|
+
/* @__PURE__ */ jsx21("dl", { children: methods.map((method) => /* @__PURE__ */ jsxs21("div", { children: [
|
|
7281
|
+
/* @__PURE__ */ jsx21("dt", { children: method.label }),
|
|
7282
|
+
/* @__PURE__ */ jsx21("dd", { children: /* @__PURE__ */ jsx21("ul", { children: method.values.map((value) => /* @__PURE__ */ jsx21("li", { children: method.href ? /* @__PURE__ */ jsx21("a", { href: method.href(value), ...method.label === "Portal" ? { target: "_blank", rel: "noreferrer" } : {}, children: value }) : value }, value)) }) })
|
|
7075
7283
|
] }, method.label)) })
|
|
7076
7284
|
] });
|
|
7077
7285
|
}
|
|
@@ -7190,22 +7398,22 @@ function shouldShowSandboxControls(environment, enabled = false) {
|
|
|
7190
7398
|
function ConnectedBillLifecycle({ appearance, actorName, claimsAdministratorHint, claimsAdministratorSources, courtesyCopyRecipientOptions: courtesyCopyRecipientOptions2 = [], sandboxControls = false, className, style, loadingFallback, errorFallback, onChanged, ...options }) {
|
|
7191
7399
|
const lifecycle = useBillLifecycle(options);
|
|
7192
7400
|
const { data } = lifecycle;
|
|
7193
|
-
const [tab, setTab] =
|
|
7194
|
-
const [selectedSubmissionId, setSelectedSubmissionId] =
|
|
7195
|
-
const [panel, setPanel] =
|
|
7196
|
-
const [notice, setNotice] =
|
|
7197
|
-
const [note, setNote] =
|
|
7198
|
-
const [reason, setReason] =
|
|
7199
|
-
const [correctionError, setCorrectionError] =
|
|
7200
|
-
const [newBillError, setNewBillError] =
|
|
7201
|
-
const [payment, setPayment] =
|
|
7202
|
-
const [duplicateError, setDuplicateError] =
|
|
7401
|
+
const [tab, setTab] = useState17("details");
|
|
7402
|
+
const [selectedSubmissionId, setSelectedSubmissionId] = useState17();
|
|
7403
|
+
const [panel, setPanel] = useState17("");
|
|
7404
|
+
const [notice, setNotice] = useState17("");
|
|
7405
|
+
const [note, setNote] = useState17("");
|
|
7406
|
+
const [reason, setReason] = useState17("");
|
|
7407
|
+
const [correctionError, setCorrectionError] = useState17("");
|
|
7408
|
+
const [newBillError, setNewBillError] = useState17("");
|
|
7409
|
+
const [payment, setPayment] = useState17({ amount: 0, penaltyAmount: 0, interestAmount: 0, method: "check", checkNumber: "", depositDate: today(), note: "" });
|
|
7410
|
+
const [duplicateError, setDuplicateError] = useState17("");
|
|
7203
7411
|
const currentAttemptKey = data?.attempts?.find((attempt) => attempt.isCurrent)?.id ?? data?.history?.filter((entry) => entry.kind === "submission").at(-1)?.id ?? data?.bill.id;
|
|
7204
|
-
|
|
7412
|
+
useEffect14(() => {
|
|
7205
7413
|
setPanel("");
|
|
7206
7414
|
}, [currentAttemptKey]);
|
|
7207
7415
|
const actor = actorName?.trim() ? { actorName: actorName.trim() } : {};
|
|
7208
|
-
const lastData =
|
|
7416
|
+
const lastData = useRef9(null);
|
|
7209
7417
|
const correctionInitialBill = useMemo10(() => data ? correctionBill(data) : null, [data]);
|
|
7210
7418
|
const correctionAttachments = useMemo10(() => data ? data.bill.attachments.map((attachment) => {
|
|
7211
7419
|
const documentType = correctionDocumentType(attachment.documentType);
|
|
@@ -7221,7 +7429,7 @@ function ConnectedBillLifecycle({ appearance, actorName, claimsAdministratorHint
|
|
|
7221
7429
|
};
|
|
7222
7430
|
}) : [], [data, lifecycle]);
|
|
7223
7431
|
const correctionAttentionFields = useMemo10(() => data?.rejection?.issues?.flatMap((issue) => issue.fieldPaths || []).filter((path, index, fields) => fields.indexOf(path) === index) || [], [data]);
|
|
7224
|
-
|
|
7432
|
+
useEffect14(() => {
|
|
7225
7433
|
if (!data || data === lastData.current) return;
|
|
7226
7434
|
lastData.current = data;
|
|
7227
7435
|
onChanged?.(data);
|
|
@@ -7233,13 +7441,13 @@ function ConnectedBillLifecycle({ appearance, actorName, claimsAdministratorHint
|
|
|
7233
7441
|
interestAmount: 0
|
|
7234
7442
|
}));
|
|
7235
7443
|
}, [data, onChanged]);
|
|
7236
|
-
if (lifecycle.isLoading && !data) return /* @__PURE__ */
|
|
7444
|
+
if (lifecycle.isLoading && !data) return /* @__PURE__ */ jsx21(Fragment15, { children: loadingFallback ?? /* @__PURE__ */ jsx21("div", { className: "mb-lifecycle-loading", children: "Loading bill\u2026" }) });
|
|
7237
7445
|
if (!data) {
|
|
7238
7446
|
const error = lifecycle.error ?? new Error("Bill could not be loaded.");
|
|
7239
|
-
return /* @__PURE__ */
|
|
7240
|
-
/* @__PURE__ */
|
|
7241
|
-
/* @__PURE__ */
|
|
7242
|
-
/* @__PURE__ */
|
|
7447
|
+
return /* @__PURE__ */ jsx21(Fragment15, { children: errorFallback?.(error, lifecycle.refresh) ?? /* @__PURE__ */ jsxs21("div", { className: "mb-lifecycle-error", role: "alert", children: [
|
|
7448
|
+
/* @__PURE__ */ jsx21("strong", { children: "Billing is unavailable." }),
|
|
7449
|
+
/* @__PURE__ */ jsx21("span", { children: error.message }),
|
|
7450
|
+
/* @__PURE__ */ jsx21("button", { type: "button", onClick: () => void lifecycle.refresh(), children: "Try again" })
|
|
7243
7451
|
] }) });
|
|
7244
7452
|
}
|
|
7245
7453
|
const complete = async (message, task) => {
|
|
@@ -7362,121 +7570,121 @@ function ConnectedBillLifecycle({ appearance, actorName, claimsAdministratorHint
|
|
|
7362
7570
|
const statusContacts = reportBillStatusContacts(data.delivery);
|
|
7363
7571
|
const receiptEntries = (data.history ?? []).filter((entry) => entry.kind === "submission" || entry.kind === "ack");
|
|
7364
7572
|
const reviewDeadline = secondReviewDeadline(data.eors);
|
|
7365
|
-
return /* @__PURE__ */
|
|
7366
|
-
/* @__PURE__ */
|
|
7367
|
-
ribbonItems.length >= 2 ? /* @__PURE__ */
|
|
7573
|
+
return /* @__PURE__ */ jsxs21("section", { className: ["mb-connected-lifecycle", className].filter(Boolean).join(" "), style: mindBillAppearanceStyle(appearance, style), children: [
|
|
7574
|
+
/* @__PURE__ */ jsx21("style", { children: CONNECTED_LIFECYCLE_STYLES }),
|
|
7575
|
+
ribbonItems.length >= 2 ? /* @__PURE__ */ jsx21(BillSubmissionsRibbon, { items: ribbonItems, onSelect: (item) => {
|
|
7368
7576
|
setSelectedSubmissionId(item.id);
|
|
7369
7577
|
setTab("details");
|
|
7370
7578
|
setPanel("");
|
|
7371
7579
|
}, ...appearance ? { appearance } : {} }) : null,
|
|
7372
|
-
historical ? null : data.lifecycle.state.toLowerCase() === "rejected" && data.rejection ? /* @__PURE__ */
|
|
7373
|
-
/* @__PURE__ */
|
|
7374
|
-
/* @__PURE__ */
|
|
7375
|
-
/* @__PURE__ */
|
|
7376
|
-
/* @__PURE__ */
|
|
7580
|
+
historical ? null : data.lifecycle.state.toLowerCase() === "rejected" && data.rejection ? /* @__PURE__ */ jsx21(BillRejectionNotice, { rejection: data.rejection, submittedAt: data.lifecycle.submittedAt ?? null, ...appearance ? { appearance } : {} }) : /* @__PURE__ */ jsx21(BillLifecycleProgress, { state: data.lifecycle.state, nativeStatus: data.lifecycle.nativeStatus, submittedAt: data.lifecycle.submittedAt ?? null, agingDays: data.lifecycle.agingDays ?? null, ...appearance ? { appearance } : {} }),
|
|
7581
|
+
/* @__PURE__ */ jsxs21("header", { className: "mb-lifecycle-head", children: [
|
|
7582
|
+
/* @__PURE__ */ jsxs21("div", { children: [
|
|
7583
|
+
/* @__PURE__ */ jsx21("div", { className: "mb-lifecycle-title", children: /* @__PURE__ */ jsx21("h2", { children: historical && !selectedAttempt ? "Previous submission" : `Bill #${historical ? selectedAttempt?.billNumber : data.bill.billNumber}` }) }),
|
|
7584
|
+
/* @__PURE__ */ jsxs21("p", { children: [
|
|
7377
7585
|
displayedData ? `Claim ${displayedData.injury.claimNumber || "\u2014"}` : "Previous submission",
|
|
7378
7586
|
lifecycle.isRefreshing ? " \xB7 Refreshing\u2026" : ""
|
|
7379
7587
|
] })
|
|
7380
7588
|
] }),
|
|
7381
|
-
!historical ? /* @__PURE__ */
|
|
7382
|
-
/* @__PURE__ */
|
|
7383
|
-
/* @__PURE__ */
|
|
7589
|
+
!historical ? /* @__PURE__ */ jsxs21(Fragment15, { children: [
|
|
7590
|
+
/* @__PURE__ */ jsx21("button", { type: "button", className: "mb-lifecycle-button primary", disabled: lifecycle.isMutating, onClick: () => void lifecycle.downloadPacket().catch(() => void 0), children: "Download packet" }),
|
|
7591
|
+
/* @__PURE__ */ jsx21("button", { type: "button", className: "mb-lifecycle-button secondary", disabled: lifecycle.isMutating, onClick: () => setPanel("courtesy_copy"), children: "Forward copy" })
|
|
7384
7592
|
] }) : null
|
|
7385
7593
|
] }),
|
|
7386
|
-
/* @__PURE__ */
|
|
7387
|
-
/* @__PURE__ */
|
|
7388
|
-
/* @__PURE__ */
|
|
7594
|
+
/* @__PURE__ */ jsxs21("div", { className: "mb-lifecycle-tabs", role: "tablist", "aria-label": "Bill view", children: [
|
|
7595
|
+
/* @__PURE__ */ jsx21("button", { type: "button", role: "tab", "aria-selected": tab === "details", onClick: () => setTab("details"), children: "Bill details" }),
|
|
7596
|
+
/* @__PURE__ */ jsx21("button", { type: "button", role: "tab", "aria-selected": tab === "history", onClick: () => setTab("history"), children: "Bill history" })
|
|
7389
7597
|
] }),
|
|
7390
|
-
tab === "details" ? /* @__PURE__ */
|
|
7391
|
-
selectedAttempt && ribbonItems.length >= 2 ? /* @__PURE__ */
|
|
7392
|
-
/* @__PURE__ */
|
|
7393
|
-
/* @__PURE__ */
|
|
7394
|
-
/* @__PURE__ */
|
|
7395
|
-
/* @__PURE__ */
|
|
7598
|
+
tab === "details" ? /* @__PURE__ */ jsxs21("div", { className: "mb-lifecycle-tabpanel", role: "tabpanel", children: [
|
|
7599
|
+
selectedAttempt && ribbonItems.length >= 2 ? /* @__PURE__ */ jsxs21("section", { className: "mb-lifecycle-attempt-detail", "aria-label": "Selected submission detail", children: [
|
|
7600
|
+
/* @__PURE__ */ jsxs21("header", { children: [
|
|
7601
|
+
/* @__PURE__ */ jsxs21("div", { children: [
|
|
7602
|
+
/* @__PURE__ */ jsx21("span", { children: "Selected submission" }),
|
|
7603
|
+
/* @__PURE__ */ jsx21("h3", { children: selectedAttempt.label })
|
|
7396
7604
|
] }),
|
|
7397
|
-
/* @__PURE__ */
|
|
7605
|
+
/* @__PURE__ */ jsx21("strong", { children: selectedAttempt.isCurrent ? "Current" : "Previous" })
|
|
7398
7606
|
] }),
|
|
7399
|
-
/* @__PURE__ */
|
|
7400
|
-
/* @__PURE__ */
|
|
7401
|
-
/* @__PURE__ */
|
|
7402
|
-
/* @__PURE__ */
|
|
7607
|
+
/* @__PURE__ */ jsxs21("dl", { children: [
|
|
7608
|
+
/* @__PURE__ */ jsxs21("div", { children: [
|
|
7609
|
+
/* @__PURE__ */ jsx21("dt", { children: "Bill" }),
|
|
7610
|
+
/* @__PURE__ */ jsxs21("dd", { children: [
|
|
7403
7611
|
"#",
|
|
7404
7612
|
selectedAttempt.billNumber || data.bill.billNumber
|
|
7405
7613
|
] })
|
|
7406
7614
|
] }),
|
|
7407
|
-
/* @__PURE__ */
|
|
7408
|
-
/* @__PURE__ */
|
|
7409
|
-
/* @__PURE__ */
|
|
7615
|
+
/* @__PURE__ */ jsxs21("div", { children: [
|
|
7616
|
+
/* @__PURE__ */ jsx21("dt", { children: "Delivery" }),
|
|
7617
|
+
/* @__PURE__ */ jsx21("dd", { children: selectedAttempt.deliveryLabel || "\u2014" })
|
|
7410
7618
|
] }),
|
|
7411
|
-
/* @__PURE__ */
|
|
7412
|
-
/* @__PURE__ */
|
|
7413
|
-
/* @__PURE__ */
|
|
7619
|
+
/* @__PURE__ */ jsxs21("div", { children: [
|
|
7620
|
+
/* @__PURE__ */ jsx21("dt", { children: "Sent" }),
|
|
7621
|
+
/* @__PURE__ */ jsx21("dd", { children: selectedAttempt.sentAt ? new Date(selectedAttempt.sentAt).toLocaleString() : "\u2014" })
|
|
7414
7622
|
] }),
|
|
7415
|
-
/* @__PURE__ */
|
|
7416
|
-
/* @__PURE__ */
|
|
7417
|
-
/* @__PURE__ */
|
|
7623
|
+
/* @__PURE__ */ jsxs21("div", { children: [
|
|
7624
|
+
/* @__PURE__ */ jsx21("dt", { children: "Status" }),
|
|
7625
|
+
/* @__PURE__ */ jsx21("dd", { children: selectedAttempt.status || selectedAttempt.ackLabel || "Submitted" })
|
|
7418
7626
|
] }),
|
|
7419
|
-
selectedAttempt.complianceLabel ? /* @__PURE__ */
|
|
7420
|
-
/* @__PURE__ */
|
|
7421
|
-
/* @__PURE__ */
|
|
7627
|
+
selectedAttempt.complianceLabel ? /* @__PURE__ */ jsxs21("div", { children: [
|
|
7628
|
+
/* @__PURE__ */ jsx21("dt", { children: selectedAttempt.complianceLabel }),
|
|
7629
|
+
/* @__PURE__ */ jsx21("dd", { children: selectedAttempt.complianceAt ? new Date(selectedAttempt.complianceAt).toLocaleDateString() : "\u2014" })
|
|
7422
7630
|
] }) : null
|
|
7423
7631
|
] })
|
|
7424
7632
|
] }) : null,
|
|
7425
|
-
!historical && (data.eors.length || data.payments.length || ["processed", "denied", "partially_paid"].includes(data.lifecycle.state)) ? /* @__PURE__ */
|
|
7426
|
-
showSandboxControls ? /* @__PURE__ */
|
|
7427
|
-
/* @__PURE__ */
|
|
7428
|
-
/* @__PURE__ */
|
|
7429
|
-
/* @__PURE__ */
|
|
7430
|
-
/* @__PURE__ */
|
|
7633
|
+
!historical && (data.eors.length || data.payments.length || ["processed", "denied", "partially_paid"].includes(data.lifecycle.state)) ? /* @__PURE__ */ jsx21(BillExplanationOfReview, { remittance: data.remittance, eors: data.eors, payments: data.payments, submittedAt: data.lifecycle.submittedAt ?? null, onOpenEor: lifecycle.openEor, ...appearance ? { appearance } : {} }) : null,
|
|
7634
|
+
showSandboxControls ? /* @__PURE__ */ jsxs21("section", { className: "mb-lifecycle-simulator", "aria-label": "Sandbox lifecycle simulator", children: [
|
|
7635
|
+
/* @__PURE__ */ jsxs21("div", { children: [
|
|
7636
|
+
/* @__PURE__ */ jsx21("span", { children: "Sandbox demo controls" }),
|
|
7637
|
+
/* @__PURE__ */ jsx21("h3", { children: "Simulate the next payer response" }),
|
|
7638
|
+
/* @__PURE__ */ jsx21("p", { children: "This changes sandbox data only. The host receives the result through the same lifecycle API and components partners use." })
|
|
7431
7639
|
] }),
|
|
7432
|
-
simulations.length ? /* @__PURE__ */
|
|
7433
|
-
/* @__PURE__ */
|
|
7434
|
-
/* @__PURE__ */
|
|
7435
|
-
] }, scenario.id)) }) : /* @__PURE__ */
|
|
7640
|
+
simulations.length ? /* @__PURE__ */ jsx21("div", { className: "mb-lifecycle-simulator-actions", children: simulations.map((scenario) => /* @__PURE__ */ jsxs21("button", { type: "button", disabled: lifecycle.isMutating, onClick: () => void complete(`${scenario.label} simulated.`, () => lifecycle.simulateSandbox({ scenario: scenario.id })), children: [
|
|
7641
|
+
/* @__PURE__ */ jsx21("strong", { children: scenario.label }),
|
|
7642
|
+
/* @__PURE__ */ jsx21("span", { children: scenario.detail })
|
|
7643
|
+
] }, scenario.id)) }) : /* @__PURE__ */ jsx21("p", { className: "mb-lifecycle-simulator-idle", children: "No simulated payer transition is needed at this stage. Use the bill action below to continue." })
|
|
7436
7644
|
] }) : null,
|
|
7437
|
-
historical ? /* @__PURE__ */
|
|
7438
|
-
displayedData ? /* @__PURE__ */
|
|
7439
|
-
historical && selectedAttempt ? /* @__PURE__ */
|
|
7440
|
-
/* @__PURE__ */
|
|
7441
|
-
/* @__PURE__ */
|
|
7442
|
-
selectedDetail?.artifacts?.length ? selectedDetail.artifacts.map((artifact) => /* @__PURE__ */
|
|
7645
|
+
historical ? /* @__PURE__ */ jsx21("p", { className: "mb-lifecycle-card", children: selectedDetail?.source === "submission_snapshot" ? "Saved as submitted. This previous submission is read-only; payment balances and current actions are shown on the current bill." : displayedData ? "Historical bill record. An exact as-submitted snapshot was not recorded for this older attempt; these are the stored bill values, not a guaranteed copy of the original packet." : "Detailed values were not saved for this historical submission. Select the current submission to see the current bill. We will not substitute current data for this older attempt." }) : null,
|
|
7646
|
+
displayedData ? /* @__PURE__ */ jsx21(BillReadOnlyForm, { data: displayedData, ...!historical ? { onOpenAttachment: lifecycle.openAttachment } : {}, ...appearance ? { appearance } : {} }, activeSubmissionId) : null,
|
|
7647
|
+
historical && selectedAttempt ? /* @__PURE__ */ jsxs21("section", { className: "mb-lifecycle-card", "aria-label": "Retained submission files", children: [
|
|
7648
|
+
/* @__PURE__ */ jsx21("h3", { children: "Retained submission files" }),
|
|
7649
|
+
/* @__PURE__ */ jsx21("p", { children: "Exact files saved for this submission. These downloads do not include a regenerated current bill or a later EOR." }),
|
|
7650
|
+
selectedDetail?.artifacts?.length ? selectedDetail.artifacts.map((artifact) => /* @__PURE__ */ jsxs21("button", { type: "button", className: "mb-lifecycle-button secondary", onClick: () => void lifecycle.downloadSubmissionArtifact(selectedAttempt.id, artifact.id, artifact.label).catch(() => void 0), children: [
|
|
7443
7651
|
"Download ",
|
|
7444
7652
|
artifact.kind === "submitted_edi" ? "submitted EDI" : "submitted attachment",
|
|
7445
7653
|
": ",
|
|
7446
7654
|
artifact.label
|
|
7447
|
-
] }, artifact.id)) : /* @__PURE__ */
|
|
7655
|
+
] }, artifact.id)) : /* @__PURE__ */ jsx21("p", { children: "No retained files are available for this submission." })
|
|
7448
7656
|
] }) : null,
|
|
7449
|
-
!historical ? /* @__PURE__ */
|
|
7450
|
-
/* @__PURE__ */
|
|
7451
|
-
/* @__PURE__ */
|
|
7452
|
-
/* @__PURE__ */
|
|
7453
|
-
/* @__PURE__ */
|
|
7657
|
+
!historical ? /* @__PURE__ */ jsxs21("section", { className: "mb-lifecycle-notes", "aria-label": "Bill notes", children: [
|
|
7658
|
+
/* @__PURE__ */ jsxs21("header", { children: [
|
|
7659
|
+
/* @__PURE__ */ jsxs21("div", { children: [
|
|
7660
|
+
/* @__PURE__ */ jsx21("h3", { children: "Team notes" }),
|
|
7661
|
+
/* @__PURE__ */ jsx21("p", { children: "Shared with your workspace\u2019s billing team. Never sent to the payer." })
|
|
7454
7662
|
] }),
|
|
7455
|
-
/* @__PURE__ */
|
|
7663
|
+
/* @__PURE__ */ jsx21("span", { children: billNotes.length })
|
|
7456
7664
|
] }),
|
|
7457
|
-
billNotes.length ? /* @__PURE__ */
|
|
7458
|
-
/* @__PURE__ */
|
|
7459
|
-
/* @__PURE__ */
|
|
7665
|
+
billNotes.length ? /* @__PURE__ */ jsx21("ol", { children: billNotes.map((entry) => /* @__PURE__ */ jsxs21("li", { children: [
|
|
7666
|
+
/* @__PURE__ */ jsx21("p", { children: entry.summary }),
|
|
7667
|
+
/* @__PURE__ */ jsxs21("small", { children: [
|
|
7460
7668
|
entry.actor || "System",
|
|
7461
7669
|
" \xB7 ",
|
|
7462
7670
|
usDate(entry.date)
|
|
7463
7671
|
] })
|
|
7464
|
-
] }, entry.id)) }) : /* @__PURE__ */
|
|
7465
|
-
/* @__PURE__ */
|
|
7672
|
+
] }, entry.id)) }) : /* @__PURE__ */ jsx21("p", { className: "mb-lifecycle-notes-empty", children: "No notes yet." }),
|
|
7673
|
+
/* @__PURE__ */ jsxs21("form", { onSubmit: (event) => {
|
|
7466
7674
|
event.preventDefault();
|
|
7467
7675
|
void addNote();
|
|
7468
7676
|
}, children: [
|
|
7469
|
-
/* @__PURE__ */
|
|
7470
|
-
/* @__PURE__ */
|
|
7471
|
-
/* @__PURE__ */
|
|
7677
|
+
/* @__PURE__ */ jsxs21("label", { children: [
|
|
7678
|
+
/* @__PURE__ */ jsx21("span", { children: "Add a note" }),
|
|
7679
|
+
/* @__PURE__ */ jsx21("textarea", { value: note, maxLength: 2e3, placeholder: "Add context for the billing team\u2026", onChange: (event) => setNote(event.target.value) })
|
|
7472
7680
|
] }),
|
|
7473
|
-
/* @__PURE__ */
|
|
7681
|
+
/* @__PURE__ */ jsx21("button", { type: "submit", className: "mb-lifecycle-button primary", disabled: lifecycle.isMutating || !note.trim(), children: lifecycle.isMutating ? "Adding\u2026" : "Add note" })
|
|
7474
7682
|
] })
|
|
7475
7683
|
] }) : null
|
|
7476
|
-
] }) : /* @__PURE__ */
|
|
7477
|
-
!historical && (viewEor || actions.length) ? /* @__PURE__ */
|
|
7478
|
-
viewEor && data.eors[0] ? /* @__PURE__ */
|
|
7479
|
-
actions.map((action) => /* @__PURE__ */
|
|
7684
|
+
] }) : /* @__PURE__ */ jsx21("div", { className: "mb-lifecycle-tabpanel", role: "tabpanel", children: data.history?.length ? /* @__PURE__ */ jsx21(BillHistoryTable, { entries: data.history, ...!historical ? { onOpenDocument: lifecycle.openAttachment } : {}, ...appearance ? { appearance } : {} }) : /* @__PURE__ */ jsx21(BillActivityTimeline, { events: data.activity, ...appearance ? { appearance } : {} }) }),
|
|
7685
|
+
!historical && (viewEor || actions.length) ? /* @__PURE__ */ jsxs21("aside", { className: "mb-lifecycle-actions-sheet", "aria-label": "Bill actions", children: [
|
|
7686
|
+
viewEor && data.eors[0] ? /* @__PURE__ */ jsx21("button", { type: "button", className: "mb-lifecycle-button secondary", onClick: () => void lifecycle.openEor(data.eors[0]).catch(() => void 0), children: viewEor.label }) : null,
|
|
7687
|
+
actions.map((action) => /* @__PURE__ */ jsx21("button", { type: "button", className: action.primary ? "mb-lifecycle-button primary" : "mb-lifecycle-button secondary", onClick: () => {
|
|
7480
7688
|
const next = actionPanel(action);
|
|
7481
7689
|
if (!next) return;
|
|
7482
7690
|
if (next === "resubmit") setCorrectionError("");
|
|
@@ -7485,37 +7693,37 @@ function ConnectedBillLifecycle({ appearance, actorName, claimsAdministratorHint
|
|
|
7485
7693
|
setPanel(next);
|
|
7486
7694
|
}, children: action.label }, action.id))
|
|
7487
7695
|
] }) : null,
|
|
7488
|
-
activePanel === "courtesy_copy" ? /* @__PURE__ */
|
|
7696
|
+
activePanel === "courtesy_copy" ? /* @__PURE__ */ jsx21(LifecycleDialog, { title: "Forward courtesy copy", wide: true, onClose: () => setPanel(""), children: /* @__PURE__ */ jsx21(BillCourtesyCopyForm, { documents: data.bill.attachments, recipientOptions: courtesyCopyRecipientOptions2, subject: `Courtesy copy \u2014 bill #${data.bill.billNumber}`, environment: data.environment, onPreview: lifecycle.previewCourtesyCopy, onSend: lifecycle.sendCourtesyCopy, onSent: () => {
|
|
7489
7697
|
void lifecycle.refresh();
|
|
7490
7698
|
}, ...appearance ? { appearance } : {} }) }) : null,
|
|
7491
|
-
activePanel === "ibr" ? /* @__PURE__ */
|
|
7492
|
-
/* @__PURE__ */
|
|
7493
|
-
/* @__PURE__ */
|
|
7494
|
-
lifecycle.error ? /* @__PURE__ */
|
|
7495
|
-
/* @__PURE__ */
|
|
7496
|
-
/* @__PURE__ */
|
|
7497
|
-
/* @__PURE__ */
|
|
7699
|
+
activePanel === "ibr" ? /* @__PURE__ */ jsx21(LifecycleDialog, { title: "Prepare Independent Bill Review packet", onClose: () => setPanel(""), children: /* @__PURE__ */ jsxs21("section", { className: "mb-lifecycle-panel", children: [
|
|
7700
|
+
/* @__PURE__ */ jsx21("header", { style: { paddingRight: 44 }, children: /* @__PURE__ */ jsx21("h3", { children: "Prepare Independent Bill Review packet" }) }),
|
|
7701
|
+
/* @__PURE__ */ jsx21("p", { children: "Download a PDF packet for self-filing Independent Bill Review (IBR). Preparing this packet does not file the review, send it to a payer, or change the bill status." }),
|
|
7702
|
+
lifecycle.error ? /* @__PURE__ */ jsx21("p", { role: "alert", className: "mb-lifecycle-message error", children: lifecycle.error.message }) : null,
|
|
7703
|
+
/* @__PURE__ */ jsxs21("div", { className: "mb-lifecycle-panel-actions", children: [
|
|
7704
|
+
/* @__PURE__ */ jsx21("button", { type: "button", className: "mb-lifecycle-button secondary", disabled: lifecycle.isMutating, onClick: () => setPanel(""), children: "Cancel" }),
|
|
7705
|
+
/* @__PURE__ */ jsx21("button", { type: "button", className: "mb-lifecycle-button primary", disabled: lifecycle.isMutating, onClick: () => void lifecycle.downloadIbrPacket().then(() => {
|
|
7498
7706
|
setPanel("");
|
|
7499
7707
|
setNotice("IBR packet prepared for self-filing. The review has not been filed.");
|
|
7500
7708
|
}).catch(() => void 0), children: lifecycle.isMutating ? "Preparing\u2026" : "Prepare IBR packet" })
|
|
7501
7709
|
] })
|
|
7502
7710
|
] }) }) : null,
|
|
7503
|
-
activePanel === "resubmit" && correctionInitialBill ? /* @__PURE__ */
|
|
7504
|
-
/* @__PURE__ */
|
|
7505
|
-
/* @__PURE__ */
|
|
7506
|
-
/* @__PURE__ */
|
|
7711
|
+
activePanel === "resubmit" && correctionInitialBill ? /* @__PURE__ */ jsx21(LifecycleDialog, { title: "Correct and resubmit", wide: true, onClose: () => setPanel(""), children: /* @__PURE__ */ jsxs21("section", { className: "mb-lifecycle-correction", children: [
|
|
7712
|
+
/* @__PURE__ */ jsx21("header", { children: /* @__PURE__ */ jsxs21("div", { children: [
|
|
7713
|
+
/* @__PURE__ */ jsx21("h3", { children: "Correct and resubmit" }),
|
|
7714
|
+
/* @__PURE__ */ jsx21("p", { children: "Review the rejected snapshot, correct the highlighted information, and submit a new immutable attempt under this bill." })
|
|
7507
7715
|
] }) }),
|
|
7508
|
-
data.environment === "live" ? /* @__PURE__ */
|
|
7509
|
-
/* @__PURE__ */
|
|
7510
|
-
/* @__PURE__ */
|
|
7716
|
+
data.environment === "live" ? /* @__PURE__ */ jsxs21("div", { className: "mb-lifecycle-live-warning", children: [
|
|
7717
|
+
/* @__PURE__ */ jsx21("strong", { children: "Live clearinghouse submission" }),
|
|
7718
|
+
/* @__PURE__ */ jsx21("span", { children: "Resubmitting sends a real bill. Confirm the corrected information before continuing." })
|
|
7511
7719
|
] }) : null,
|
|
7512
|
-
data.rejection ? /* @__PURE__ */
|
|
7513
|
-
/* @__PURE__ */
|
|
7514
|
-
/* @__PURE__ */
|
|
7515
|
-
/* @__PURE__ */
|
|
7516
|
-
/* @__PURE__ */
|
|
7720
|
+
data.rejection ? /* @__PURE__ */ jsx21(CorrectionRejectionReason, { rejection: data.rejection }) : null,
|
|
7721
|
+
/* @__PURE__ */ jsx21(CorrectionVerificationContact, { delivery: data.delivery }),
|
|
7722
|
+
/* @__PURE__ */ jsxs21("label", { className: "mb-lifecycle-correction-note", children: [
|
|
7723
|
+
/* @__PURE__ */ jsx21("span", { children: "Correction note (optional)" }),
|
|
7724
|
+
/* @__PURE__ */ jsx21("textarea", { value: reason, placeholder: "What changed before resubmission?", onChange: (event) => setReason(event.target.value) })
|
|
7517
7725
|
] }),
|
|
7518
|
-
/* @__PURE__ */
|
|
7726
|
+
/* @__PURE__ */ jsx21(
|
|
7519
7727
|
BillSubmissionForm,
|
|
7520
7728
|
{
|
|
7521
7729
|
className: "mbsf-lifecycle-correction",
|
|
@@ -7541,18 +7749,18 @@ function ConnectedBillLifecycle({ appearance, actorName, claimsAdministratorHint
|
|
|
7541
7749
|
...appearance ? { appearance } : {}
|
|
7542
7750
|
}
|
|
7543
7751
|
),
|
|
7544
|
-
correctionError ? /* @__PURE__ */
|
|
7752
|
+
correctionError ? /* @__PURE__ */ jsx21("div", { className: "mb-lifecycle-message error", role: "alert", children: correctionError }) : null
|
|
7545
7753
|
] }) }) : null,
|
|
7546
|
-
activePanel === "submit_new_bill" && correctionInitialBill ? /* @__PURE__ */
|
|
7547
|
-
/* @__PURE__ */
|
|
7548
|
-
/* @__PURE__ */
|
|
7549
|
-
/* @__PURE__ */
|
|
7754
|
+
activePanel === "submit_new_bill" && correctionInitialBill ? /* @__PURE__ */ jsx21(LifecycleDialog, { title: "Submit New Bill", wide: true, onClose: () => setPanel(""), children: /* @__PURE__ */ jsxs21("section", { className: "mb-lifecycle-correction", children: [
|
|
7755
|
+
/* @__PURE__ */ jsx21("header", { children: /* @__PURE__ */ jsxs21("div", { children: [
|
|
7756
|
+
/* @__PURE__ */ jsx21("h3", { children: "Submit New Bill" }),
|
|
7757
|
+
/* @__PURE__ */ jsx21("p", { children: "This closed bill stays closed and keeps its record. Review the carried-over snapshot below and submit a fresh bill \u2014 both bills stay linked in the submissions timeline." })
|
|
7550
7758
|
] }) }),
|
|
7551
|
-
/* @__PURE__ */
|
|
7552
|
-
/* @__PURE__ */
|
|
7553
|
-
/* @__PURE__ */
|
|
7759
|
+
/* @__PURE__ */ jsxs21("label", { className: "mb-lifecycle-correction-note", children: [
|
|
7760
|
+
/* @__PURE__ */ jsx21("span", { children: "Submission note (optional)" }),
|
|
7761
|
+
/* @__PURE__ */ jsx21("textarea", { value: reason, placeholder: "Why is a new bill being submitted?", onChange: (event) => setReason(event.target.value) })
|
|
7554
7762
|
] }),
|
|
7555
|
-
/* @__PURE__ */
|
|
7763
|
+
/* @__PURE__ */ jsx21(
|
|
7556
7764
|
BillSubmissionForm,
|
|
7557
7765
|
{
|
|
7558
7766
|
className: "mbsf-lifecycle-correction",
|
|
@@ -7577,10 +7785,10 @@ function ConnectedBillLifecycle({ appearance, actorName, claimsAdministratorHint
|
|
|
7577
7785
|
...appearance ? { appearance } : {}
|
|
7578
7786
|
}
|
|
7579
7787
|
),
|
|
7580
|
-
newBillError ? /* @__PURE__ */
|
|
7788
|
+
newBillError ? /* @__PURE__ */ jsx21("div", { className: "mb-lifecycle-message error", role: "alert", children: newBillError }) : null
|
|
7581
7789
|
] }) }) : null,
|
|
7582
|
-
activePanel === "second_review" ? /* @__PURE__ */
|
|
7583
|
-
/* @__PURE__ */
|
|
7790
|
+
activePanel === "second_review" ? /* @__PURE__ */ jsxs21(LifecycleDialog, { title: "Submit Second Review", wide: true, onClose: () => setPanel(""), children: [
|
|
7791
|
+
/* @__PURE__ */ jsx21(
|
|
7584
7792
|
SecondReviewForm,
|
|
7585
7793
|
{
|
|
7586
7794
|
data,
|
|
@@ -7593,86 +7801,86 @@ function ConnectedBillLifecycle({ appearance, actorName, claimsAdministratorHint
|
|
|
7593
7801
|
onSubmit: (input) => complete("Second Review submitted.", () => lifecycle.submitSecondReview({ ...input, ...actor }))
|
|
7594
7802
|
}
|
|
7595
7803
|
),
|
|
7596
|
-
reviewDeadline ? /* @__PURE__ */
|
|
7804
|
+
reviewDeadline ? /* @__PURE__ */ jsxs21("p", { className: "mb-lifecycle-deadline-hint", children: [
|
|
7597
7805
|
"Second Review must be requested within 90 days of the denial EOR (dated ",
|
|
7598
7806
|
usDate(reviewDeadline.eorDate),
|
|
7599
7807
|
") \u2014 file by ",
|
|
7600
|
-
/* @__PURE__ */
|
|
7808
|
+
/* @__PURE__ */ jsx21("strong", { children: usDate(reviewDeadline.deadline) }),
|
|
7601
7809
|
"."
|
|
7602
7810
|
] }) : null
|
|
7603
7811
|
] }) : null,
|
|
7604
|
-
activePanel === "payment" ? /* @__PURE__ */
|
|
7605
|
-
/* @__PURE__ */
|
|
7606
|
-
/* @__PURE__ */
|
|
7607
|
-
/* @__PURE__ */
|
|
7812
|
+
activePanel === "payment" ? /* @__PURE__ */ jsx21(LifecycleDialog, { title: "Post payment", onClose: () => setPanel(""), children: /* @__PURE__ */ jsxs21("section", { className: "mb-lifecycle-panel", children: [
|
|
7813
|
+
/* @__PURE__ */ jsxs21("div", { children: [
|
|
7814
|
+
/* @__PURE__ */ jsx21("h3", { children: "Post payment" }),
|
|
7815
|
+
/* @__PURE__ */ jsx21("p", { children: "Record a full or partial payment, plus any penalty and interest received." })
|
|
7608
7816
|
] }),
|
|
7609
|
-
/* @__PURE__ */
|
|
7610
|
-
/* @__PURE__ */
|
|
7611
|
-
/* @__PURE__ */
|
|
7612
|
-
/* @__PURE__ */
|
|
7817
|
+
/* @__PURE__ */ jsxs21("div", { className: "mb-lifecycle-fields two", children: [
|
|
7818
|
+
/* @__PURE__ */ jsxs21("label", { children: [
|
|
7819
|
+
/* @__PURE__ */ jsx21("span", { children: "Amount applied to bill" }),
|
|
7820
|
+
/* @__PURE__ */ jsx21("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) })) })
|
|
7613
7821
|
] }),
|
|
7614
|
-
/* @__PURE__ */
|
|
7615
|
-
/* @__PURE__ */
|
|
7616
|
-
/* @__PURE__ */
|
|
7822
|
+
/* @__PURE__ */ jsxs21("label", { children: [
|
|
7823
|
+
/* @__PURE__ */ jsx21("span", { children: "Penalty" }),
|
|
7824
|
+
/* @__PURE__ */ jsx21("input", { type: "number", min: "0", step: "0.01", value: payment.penaltyAmount || "", placeholder: "0.00", onChange: (event) => setPayment((current) => ({ ...current, penaltyAmount: Number(event.target.value) })) })
|
|
7617
7825
|
] }),
|
|
7618
|
-
/* @__PURE__ */
|
|
7619
|
-
/* @__PURE__ */
|
|
7620
|
-
/* @__PURE__ */
|
|
7826
|
+
/* @__PURE__ */ jsxs21("label", { children: [
|
|
7827
|
+
/* @__PURE__ */ jsx21("span", { children: "Interest" }),
|
|
7828
|
+
/* @__PURE__ */ jsx21("input", { type: "number", min: "0", step: "0.01", value: payment.interestAmount || "", placeholder: "0.00", onChange: (event) => setPayment((current) => ({ ...current, interestAmount: Number(event.target.value) })) })
|
|
7621
7829
|
] }),
|
|
7622
|
-
/* @__PURE__ */
|
|
7623
|
-
/* @__PURE__ */
|
|
7624
|
-
/* @__PURE__ */
|
|
7625
|
-
/* @__PURE__ */
|
|
7626
|
-
/* @__PURE__ */
|
|
7830
|
+
/* @__PURE__ */ jsxs21("label", { children: [
|
|
7831
|
+
/* @__PURE__ */ jsx21("span", { children: "Method" }),
|
|
7832
|
+
/* @__PURE__ */ jsxs21("select", { value: payment.method, onChange: (event) => setPayment((current) => ({ ...current, method: event.target.value })), children: [
|
|
7833
|
+
/* @__PURE__ */ jsx21("option", { value: "check", children: "Check" }),
|
|
7834
|
+
/* @__PURE__ */ jsx21("option", { value: "eft", children: "EFT" })
|
|
7627
7835
|
] })
|
|
7628
7836
|
] }),
|
|
7629
|
-
/* @__PURE__ */
|
|
7630
|
-
/* @__PURE__ */
|
|
7631
|
-
/* @__PURE__ */
|
|
7837
|
+
/* @__PURE__ */ jsxs21("label", { children: [
|
|
7838
|
+
/* @__PURE__ */ jsx21("span", { children: payment.method === "check" ? "Check number" : "EFT reference" }),
|
|
7839
|
+
/* @__PURE__ */ jsx21("input", { value: payment.checkNumber, onChange: (event) => setPayment((current) => ({ ...current, checkNumber: event.target.value })) })
|
|
7632
7840
|
] }),
|
|
7633
|
-
/* @__PURE__ */
|
|
7634
|
-
/* @__PURE__ */
|
|
7635
|
-
/* @__PURE__ */
|
|
7841
|
+
/* @__PURE__ */ jsxs21("label", { children: [
|
|
7842
|
+
/* @__PURE__ */ jsx21("span", { children: "Deposit date" }),
|
|
7843
|
+
/* @__PURE__ */ jsx21("input", { required: true, value: payment.depositDate, placeholder: "MM/DD/YYYY", onChange: (event) => setPayment((current) => ({ ...current, depositDate: event.target.value })) })
|
|
7636
7844
|
] }),
|
|
7637
|
-
/* @__PURE__ */
|
|
7638
|
-
/* @__PURE__ */
|
|
7639
|
-
/* @__PURE__ */
|
|
7845
|
+
/* @__PURE__ */ jsxs21("label", { className: "full", children: [
|
|
7846
|
+
/* @__PURE__ */ jsx21("span", { children: "Note (optional)" }),
|
|
7847
|
+
/* @__PURE__ */ jsx21("input", { value: payment.note, onChange: (event) => setPayment((current) => ({ ...current, note: event.target.value })) })
|
|
7640
7848
|
] })
|
|
7641
7849
|
] }),
|
|
7642
|
-
/* @__PURE__ */
|
|
7643
|
-
/* @__PURE__ */
|
|
7644
|
-
/* @__PURE__ */
|
|
7850
|
+
/* @__PURE__ */ jsxs21("div", { className: "mb-payment-total", children: [
|
|
7851
|
+
/* @__PURE__ */ jsx21("span", { children: "Total received" }),
|
|
7852
|
+
/* @__PURE__ */ jsx21("strong", { children: new Intl.NumberFormat(void 0, { style: "currency", currency: "USD" }).format(payment.amount + (payment.penaltyAmount ?? 0) + (payment.interestAmount ?? 0)) })
|
|
7645
7853
|
] }),
|
|
7646
|
-
/* @__PURE__ */
|
|
7647
|
-
/* @__PURE__ */
|
|
7648
|
-
/* @__PURE__ */
|
|
7854
|
+
/* @__PURE__ */ jsxs21("div", { className: "mb-lifecycle-panel-actions", children: [
|
|
7855
|
+
/* @__PURE__ */ jsx21("button", { type: "button", className: "mb-lifecycle-button secondary", onClick: () => setPanel(""), children: "Cancel" }),
|
|
7856
|
+
/* @__PURE__ */ jsx21("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, ...actor })), children: lifecycle.isMutating ? "Posting\u2026" : "Post payment" })
|
|
7649
7857
|
] })
|
|
7650
7858
|
] }) }) : null,
|
|
7651
|
-
activePanel === "close" || activePanel === "reopen" ? /* @__PURE__ */
|
|
7652
|
-
/* @__PURE__ */
|
|
7653
|
-
/* @__PURE__ */
|
|
7654
|
-
/* @__PURE__ */
|
|
7859
|
+
activePanel === "close" || activePanel === "reopen" ? /* @__PURE__ */ jsx21(LifecycleDialog, { title: activePanel === "close" ? "Close bill" : "Reopen bill", onClose: () => setPanel(""), children: /* @__PURE__ */ jsxs21("section", { className: "mb-lifecycle-panel", children: [
|
|
7860
|
+
/* @__PURE__ */ jsxs21("div", { children: [
|
|
7861
|
+
/* @__PURE__ */ jsx21("h3", { children: activePanel === "close" ? "Close bill" : "Reopen bill" }),
|
|
7862
|
+
/* @__PURE__ */ jsx21("p", { children: activePanel === "close" ? "The immutable submission and history remain available." : "Return this bill to active follow-up without changing the submitted snapshot." })
|
|
7655
7863
|
] }),
|
|
7656
|
-
/* @__PURE__ */
|
|
7657
|
-
/* @__PURE__ */
|
|
7658
|
-
/* @__PURE__ */
|
|
7864
|
+
/* @__PURE__ */ jsxs21("label", { children: [
|
|
7865
|
+
/* @__PURE__ */ jsx21("span", { children: "Reason" }),
|
|
7866
|
+
/* @__PURE__ */ jsx21("textarea", { required: true, value: reason, onChange: (event) => setReason(event.target.value) })
|
|
7659
7867
|
] }),
|
|
7660
|
-
/* @__PURE__ */
|
|
7661
|
-
/* @__PURE__ */
|
|
7662
|
-
/* @__PURE__ */
|
|
7868
|
+
/* @__PURE__ */ jsxs21("div", { className: "mb-lifecycle-panel-actions", children: [
|
|
7869
|
+
/* @__PURE__ */ jsx21("button", { type: "button", className: "mb-lifecycle-button secondary", onClick: () => setPanel(""), children: "Cancel" }),
|
|
7870
|
+
/* @__PURE__ */ jsx21("button", { type: "button", className: "mb-lifecycle-button primary", disabled: lifecycle.isMutating || !reason.trim(), onClick: () => void complete(activePanel === "close" ? "Bill closed." : "Bill reopened.", () => activePanel === "close" ? lifecycle.closeBill({ reason, ...actor }) : lifecycle.reopenBill({ reason, ...actor })), children: lifecycle.isMutating ? "Saving\u2026" : activePanel === "close" ? "Close bill" : "Reopen bill" })
|
|
7663
7871
|
] })
|
|
7664
7872
|
] }) }) : null,
|
|
7665
|
-
activePanel === "send_duplicate" && correctionInitialBill ? /* @__PURE__ */
|
|
7666
|
-
/* @__PURE__ */
|
|
7667
|
-
/* @__PURE__ */
|
|
7668
|
-
/* @__PURE__ */
|
|
7873
|
+
activePanel === "send_duplicate" && correctionInitialBill ? /* @__PURE__ */ jsx21(LifecycleDialog, { title: "Send duplicate bill", wide: true, onClose: () => setPanel(""), children: /* @__PURE__ */ jsxs21("section", { className: "mb-lifecycle-correction", children: [
|
|
7874
|
+
/* @__PURE__ */ jsx21("header", { children: /* @__PURE__ */ jsxs21("div", { children: [
|
|
7875
|
+
/* @__PURE__ */ jsx21("h3", { children: "Send duplicate bill" }),
|
|
7876
|
+
/* @__PURE__ */ jsx21("p", { children: "Review and edit any bill field before creating a duplicate submission. The original bill and its history stay unchanged." })
|
|
7669
7877
|
] }) }),
|
|
7670
|
-
data.environment === "live" ? /* @__PURE__ */
|
|
7671
|
-
/* @__PURE__ */
|
|
7672
|
-
/* @__PURE__ */
|
|
7878
|
+
data.environment === "live" ? /* @__PURE__ */ jsxs21("div", { className: "mb-lifecycle-live-warning", children: [
|
|
7879
|
+
/* @__PURE__ */ jsx21("strong", { children: "Live clearinghouse submission" }),
|
|
7880
|
+
/* @__PURE__ */ jsx21("span", { children: "The duplicate will be sent only after you confirm its delivery route in the next dialog." })
|
|
7673
7881
|
] }) : null,
|
|
7674
|
-
/* @__PURE__ */
|
|
7675
|
-
/* @__PURE__ */
|
|
7882
|
+
/* @__PURE__ */ jsx21(CorrectionVerificationContact, { delivery: data.delivery }),
|
|
7883
|
+
/* @__PURE__ */ jsx21(
|
|
7676
7884
|
BillSubmissionForm,
|
|
7677
7885
|
{
|
|
7678
7886
|
className: "mbsf-lifecycle-correction",
|
|
@@ -7697,15 +7905,15 @@ function ConnectedBillLifecycle({ appearance, actorName, claimsAdministratorHint
|
|
|
7697
7905
|
...appearance ? { appearance } : {}
|
|
7698
7906
|
}
|
|
7699
7907
|
),
|
|
7700
|
-
duplicateError ? /* @__PURE__ */
|
|
7908
|
+
duplicateError ? /* @__PURE__ */ jsx21("div", { className: "mb-lifecycle-message error", role: "alert", children: duplicateError }) : null
|
|
7701
7909
|
] }) }) : null,
|
|
7702
|
-
activePanel === "report_status" ? /* @__PURE__ */
|
|
7910
|
+
activePanel === "report_status" ? /* @__PURE__ */ jsx21(
|
|
7703
7911
|
ReportBillStatusDialog,
|
|
7704
7912
|
{
|
|
7705
7913
|
...data.delivery.directory ? { directory: data.delivery.directory } : {},
|
|
7706
7914
|
...statusContacts.claimsAdmin ? { claimsAdmin: statusContacts.claimsAdmin } : {},
|
|
7707
7915
|
...statusContacts.billReview ? { billReview: statusContacts.billReview } : {},
|
|
7708
|
-
...receiptEntries.length ? { receipt: /* @__PURE__ */
|
|
7916
|
+
...receiptEntries.length ? { receipt: /* @__PURE__ */ jsx21(BillHistoryTable, { entries: receiptEntries, onOpenDocument: lifecycle.openAttachment, ...appearance ? { appearance } : {} }) } : {},
|
|
7709
7917
|
submitting: lifecycle.isMutating,
|
|
7710
7918
|
error: lifecycle.error?.message ?? null,
|
|
7711
7919
|
onCancel: () => setPanel(""),
|
|
@@ -7713,8 +7921,8 @@ function ConnectedBillLifecycle({ appearance, actorName, claimsAdministratorHint
|
|
|
7713
7921
|
...appearance ? { appearance } : {}
|
|
7714
7922
|
}
|
|
7715
7923
|
) : null,
|
|
7716
|
-
notice ? /* @__PURE__ */
|
|
7717
|
-
lifecycle.error ? /* @__PURE__ */
|
|
7924
|
+
notice ? /* @__PURE__ */ jsx21("div", { className: "mb-lifecycle-message success", role: "status", children: notice }) : null,
|
|
7925
|
+
lifecycle.error ? /* @__PURE__ */ jsx21("div", { className: "mb-lifecycle-message error", role: "alert", children: lifecycle.error.message }) : null
|
|
7718
7926
|
] });
|
|
7719
7927
|
}
|
|
7720
7928
|
var CONNECTED_LIFECYCLE_STYLES = `
|
|
@@ -7732,14 +7940,14 @@ var CONNECTED_LIFECYCLE_STYLES = `
|
|
|
7732
7940
|
// src/connected-billing-workspace.tsx
|
|
7733
7941
|
import {
|
|
7734
7942
|
useCallback as useCallback5,
|
|
7735
|
-
useEffect as
|
|
7943
|
+
useEffect as useEffect15,
|
|
7736
7944
|
useLayoutEffect,
|
|
7737
7945
|
useMemo as useMemo11,
|
|
7738
|
-
useRef as
|
|
7739
|
-
useState as
|
|
7946
|
+
useRef as useRef10,
|
|
7947
|
+
useState as useState18
|
|
7740
7948
|
} from "react";
|
|
7741
|
-
import { Fragment as Fragment16, jsx as
|
|
7742
|
-
var
|
|
7949
|
+
import { Fragment as Fragment16, jsx as jsx22, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
7950
|
+
var css14 = `
|
|
7743
7951
|
.mbow-select{max-width:100%}
|
|
7744
7952
|
.mbow{color:var(--mb-text);font:14px/1.45 var(--mb-font);background:var(--mb-soft);border-radius:var(--mb-radius);padding:20px}.mbow,.mbow *{box-sizing:border-box}.mbow h2,.mbow h3,.mbow p{margin:0}.mbow a{color:var(--mb-accent)}
|
|
7745
7953
|
.mbow-workspace{width:100%;height:100%;max-height:var(--mbow-available-height,100dvh);min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable}
|
|
@@ -7757,10 +7965,10 @@ function money7(value) {
|
|
|
7757
7965
|
}
|
|
7758
7966
|
function RenderingProviderFilter({ value, options, onChange }) {
|
|
7759
7967
|
if (!options && !value) return null;
|
|
7760
|
-
return /* @__PURE__ */
|
|
7761
|
-
/* @__PURE__ */
|
|
7762
|
-
value && !options?.some((option) => option.id === value) ? /* @__PURE__ */
|
|
7763
|
-
options?.map((option) => /* @__PURE__ */
|
|
7968
|
+
return /* @__PURE__ */ jsxs22("select", { className: "mbow-select", "aria-label": "Rendering provider filter", value, onChange: (event) => onChange(event.target.value), children: [
|
|
7969
|
+
/* @__PURE__ */ jsx22("option", { value: "", children: "All rendering providers" }),
|
|
7970
|
+
value && !options?.some((option) => option.id === value) ? /* @__PURE__ */ jsx22("option", { value, children: "Selected rendering provider" }) : null,
|
|
7971
|
+
options?.map((option) => /* @__PURE__ */ jsx22("option", { value: option.id, children: option.name }, option.id))
|
|
7764
7972
|
] });
|
|
7765
7973
|
}
|
|
7766
7974
|
function shortDate(value) {
|
|
@@ -7776,14 +7984,14 @@ function defaultRange(days = 29) {
|
|
|
7776
7984
|
return { from: iso(from), to: iso(to) };
|
|
7777
7985
|
}
|
|
7778
7986
|
function Surface({ appearance, className = "", style, children, surfaceRef }) {
|
|
7779
|
-
return /* @__PURE__ */
|
|
7780
|
-
/* @__PURE__ */
|
|
7987
|
+
return /* @__PURE__ */ jsxs22("div", { ref: surfaceRef, className: `mbow ${className}`.trim(), style: mindBillAppearanceStyle(appearance, style), children: [
|
|
7988
|
+
/* @__PURE__ */ jsx22("style", { children: css14 }),
|
|
7781
7989
|
children
|
|
7782
7990
|
] });
|
|
7783
7991
|
}
|
|
7784
7992
|
function useAvailableViewportHeight() {
|
|
7785
|
-
const workspaceRef =
|
|
7786
|
-
const [availableHeight, setAvailableHeight] =
|
|
7993
|
+
const workspaceRef = useRef10(null);
|
|
7994
|
+
const [availableHeight, setAvailableHeight] = useState18(null);
|
|
7787
7995
|
useLayoutEffect(() => {
|
|
7788
7996
|
const element = workspaceRef.current;
|
|
7789
7997
|
if (!element || typeof window === "undefined") return;
|
|
@@ -7818,11 +8026,11 @@ function BillSearchContent({
|
|
|
7818
8026
|
onSelectBill,
|
|
7819
8027
|
heading
|
|
7820
8028
|
}) {
|
|
7821
|
-
const [query, setQuery] =
|
|
7822
|
-
const [draft, setDraft] =
|
|
7823
|
-
const [result, setResult] =
|
|
7824
|
-
const [error, setError] =
|
|
7825
|
-
const [loading, setLoading] =
|
|
8029
|
+
const [query, setQuery] = useState18({ age: "all", page: 1, pageSize: 25, sort: "submitted_desc", ...initialQuery, status: initialQuery?.status === "submitted" ? "sent" : initialQuery?.status ?? "all" });
|
|
8030
|
+
const [draft, setDraft] = useState18(initialQuery?.q ?? "");
|
|
8031
|
+
const [result, setResult] = useState18(null);
|
|
8032
|
+
const [error, setError] = useState18(null);
|
|
8033
|
+
const [loading, setLoading] = useState18(true);
|
|
7826
8034
|
const load = useCallback5(async (signal) => {
|
|
7827
8035
|
setLoading(true);
|
|
7828
8036
|
setError(null);
|
|
@@ -7834,78 +8042,78 @@ function BillSearchContent({
|
|
|
7834
8042
|
if (!signal?.aborted) setLoading(false);
|
|
7835
8043
|
}
|
|
7836
8044
|
}, [client, query]);
|
|
7837
|
-
|
|
8045
|
+
useEffect15(() => {
|
|
7838
8046
|
const controller = new AbortController();
|
|
7839
8047
|
void load(controller.signal);
|
|
7840
8048
|
return () => controller.abort();
|
|
7841
8049
|
}, [load]);
|
|
7842
8050
|
const update = (next) => setQuery((current) => ({ ...current, ...next, page: next.page ?? 1 }));
|
|
7843
8051
|
const pageCount = Math.max(1, Math.ceil((result?.total ?? 0) / (result?.pageSize ?? 25)));
|
|
7844
|
-
return /* @__PURE__ */
|
|
7845
|
-
heading ? /* @__PURE__ */
|
|
7846
|
-
/* @__PURE__ */
|
|
8052
|
+
return /* @__PURE__ */ jsxs22(Fragment16, { children: [
|
|
8053
|
+
heading ? /* @__PURE__ */ jsx22("div", { className: "mbow-head", children: /* @__PURE__ */ jsx22("div", { children: typeof heading === "string" ? /* @__PURE__ */ jsx22("h2", { children: heading }) : heading }) }) : null,
|
|
8054
|
+
/* @__PURE__ */ jsxs22("form", { className: "mbow-toolbar", onSubmit: (event) => {
|
|
7847
8055
|
event.preventDefault();
|
|
7848
8056
|
update({ q: draft.trim() });
|
|
7849
8057
|
}, children: [
|
|
7850
|
-
/* @__PURE__ */
|
|
7851
|
-
/* @__PURE__ */
|
|
7852
|
-
/* @__PURE__ */
|
|
7853
|
-
/* @__PURE__ */
|
|
7854
|
-
/* @__PURE__ */
|
|
7855
|
-
/* @__PURE__ */
|
|
7856
|
-
/* @__PURE__ */
|
|
7857
|
-
/* @__PURE__ */
|
|
7858
|
-
/* @__PURE__ */
|
|
7859
|
-
/* @__PURE__ */
|
|
7860
|
-
/* @__PURE__ */
|
|
8058
|
+
/* @__PURE__ */ jsx22("input", { className: "mbow-input", value: draft, onChange: (event) => setDraft(event.target.value), placeholder: "Search patient, bill ID, claim, or external ID\u2026", "aria-label": "Search bills" }),
|
|
8059
|
+
/* @__PURE__ */ jsxs22("select", { className: "mbow-select", value: query.status ?? "all", onChange: (event) => update({ status: event.target.value }), "aria-label": "Bill status", children: [
|
|
8060
|
+
/* @__PURE__ */ jsx22("option", { value: "all", children: "All statuses" }),
|
|
8061
|
+
/* @__PURE__ */ jsx22("option", { value: "incomplete", children: "Incomplete" }),
|
|
8062
|
+
/* @__PURE__ */ jsx22("option", { value: "sent", children: "Sent" }),
|
|
8063
|
+
/* @__PURE__ */ jsx22("option", { value: "accepted", children: "Accepted" }),
|
|
8064
|
+
/* @__PURE__ */ jsx22("option", { value: "accepted_no_response", children: "Accepted \u2014 response overdue" }),
|
|
8065
|
+
/* @__PURE__ */ jsx22("option", { value: "rejected", children: "Rejected" }),
|
|
8066
|
+
/* @__PURE__ */ jsx22("option", { value: "processed", children: "Processed" }),
|
|
8067
|
+
/* @__PURE__ */ jsx22("option", { value: "paid", children: "Paid" }),
|
|
8068
|
+
/* @__PURE__ */ jsx22("option", { value: "closed", children: "Closed" })
|
|
7861
8069
|
] }),
|
|
7862
|
-
/* @__PURE__ */
|
|
7863
|
-
/* @__PURE__ */
|
|
7864
|
-
/* @__PURE__ */
|
|
7865
|
-
/* @__PURE__ */
|
|
7866
|
-
/* @__PURE__ */
|
|
7867
|
-
/* @__PURE__ */
|
|
7868
|
-
/* @__PURE__ */
|
|
7869
|
-
/* @__PURE__ */
|
|
8070
|
+
/* @__PURE__ */ jsxs22("select", { className: "mbow-select", value: query.age ?? "all", onChange: (event) => update({ age: event.target.value }), "aria-label": "A/R age", children: [
|
|
8071
|
+
/* @__PURE__ */ jsx22("option", { value: "all", children: "All A/R ages" }),
|
|
8072
|
+
/* @__PURE__ */ jsx22("option", { value: "0-30", children: "0\u201330 days" }),
|
|
8073
|
+
/* @__PURE__ */ jsx22("option", { value: "31-60", children: "31\u201360 days" }),
|
|
8074
|
+
/* @__PURE__ */ jsx22("option", { value: "61-90", children: "61\u201390 days" }),
|
|
8075
|
+
/* @__PURE__ */ jsx22("option", { value: "91+", children: "91+ days" }),
|
|
8076
|
+
/* @__PURE__ */ jsx22("option", { value: "91-180", children: "91\u2013180 days" }),
|
|
8077
|
+
/* @__PURE__ */ jsx22("option", { value: "181+", children: "181+ days" })
|
|
7870
8078
|
] }),
|
|
7871
|
-
/* @__PURE__ */
|
|
7872
|
-
/* @__PURE__ */
|
|
8079
|
+
/* @__PURE__ */ jsx22("button", { className: "mbow-button", type: "submit", children: "Search" }),
|
|
8080
|
+
/* @__PURE__ */ jsx22(RenderingProviderFilter, { value: query.renderingProviderId ?? "", options: result?.filters?.renderingProviders, onChange: (value) => update({ renderingProviderId: value }) })
|
|
7873
8081
|
] }),
|
|
7874
|
-
/* @__PURE__ */
|
|
7875
|
-
loading ? /* @__PURE__ */
|
|
8082
|
+
/* @__PURE__ */ jsxs22("div", { className: "mbow-card mbow-scroll", children: [
|
|
8083
|
+
loading ? /* @__PURE__ */ jsx22("div", { className: "mbow-state", role: "status", children: "Loading bills\u2026" }) : error ? /* @__PURE__ */ jsxs22("div", { className: "mbow-state mbow-error", role: "alert", children: [
|
|
7876
8084
|
error.message,
|
|
7877
8085
|
" ",
|
|
7878
|
-
/* @__PURE__ */
|
|
7879
|
-
] }) : result?.items.length === 0 ? /* @__PURE__ */
|
|
7880
|
-
/* @__PURE__ */
|
|
7881
|
-
/* @__PURE__ */
|
|
7882
|
-
/* @__PURE__ */
|
|
7883
|
-
/* @__PURE__ */
|
|
7884
|
-
/* @__PURE__ */
|
|
7885
|
-
/* @__PURE__ */
|
|
7886
|
-
/* @__PURE__ */
|
|
7887
|
-
/* @__PURE__ */
|
|
7888
|
-
/* @__PURE__ */
|
|
8086
|
+
/* @__PURE__ */ jsx22("button", { className: "mbow-button", type: "button", onClick: () => void load(), children: "Retry" })
|
|
8087
|
+
] }) : result?.items.length === 0 ? /* @__PURE__ */ jsx22("div", { className: "mbow-state", children: "No bills match these filters." }) : /* @__PURE__ */ jsxs22("table", { className: "mbow-table", children: [
|
|
8088
|
+
/* @__PURE__ */ jsx22("thead", { children: /* @__PURE__ */ jsxs22("tr", { children: [
|
|
8089
|
+
/* @__PURE__ */ jsx22("th", { children: "Bill" }),
|
|
8090
|
+
/* @__PURE__ */ jsx22("th", { children: "Patient" }),
|
|
8091
|
+
/* @__PURE__ */ jsx22("th", { children: "DOS" }),
|
|
8092
|
+
/* @__PURE__ */ jsx22("th", { children: "Codes" }),
|
|
8093
|
+
/* @__PURE__ */ jsx22("th", { children: "Claims administrator" }),
|
|
8094
|
+
/* @__PURE__ */ jsx22("th", { children: "Status" }),
|
|
8095
|
+
/* @__PURE__ */ jsx22("th", { children: "Submitted / A/R age" }),
|
|
8096
|
+
/* @__PURE__ */ jsx22("th", { className: "mbow-money", children: "Balance due" })
|
|
7889
8097
|
] }) }),
|
|
7890
|
-
/* @__PURE__ */
|
|
7891
|
-
/* @__PURE__ */
|
|
8098
|
+
/* @__PURE__ */ jsx22("tbody", { children: result?.items.map((bill) => /* @__PURE__ */ jsxs22("tr", { className: onSelectBill ? "clickable" : "", onClick: () => onSelectBill?.(bill), children: [
|
|
8099
|
+
/* @__PURE__ */ jsxs22("td", { className: "mbow-strong", children: [
|
|
7892
8100
|
"#",
|
|
7893
8101
|
bill.billNumber
|
|
7894
8102
|
] }),
|
|
7895
|
-
/* @__PURE__ */
|
|
7896
|
-
/* @__PURE__ */
|
|
7897
|
-
/* @__PURE__ */
|
|
7898
|
-
/* @__PURE__ */
|
|
7899
|
-
/* @__PURE__ */
|
|
7900
|
-
/* @__PURE__ */
|
|
8103
|
+
/* @__PURE__ */ jsx22("td", { children: bill.patientName }),
|
|
8104
|
+
/* @__PURE__ */ jsx22("td", { children: shortDate(bill.dateOfService) }),
|
|
8105
|
+
/* @__PURE__ */ jsx22("td", { children: bill.procedureCodes.join(", ") || "\u2014" }),
|
|
8106
|
+
/* @__PURE__ */ jsx22("td", { children: bill.claimsAdministrator || "\u2014" }),
|
|
8107
|
+
/* @__PURE__ */ jsx22("td", { children: /* @__PURE__ */ jsx22("span", { className: `mbow-badge ${bill.status.tone ?? ""}`, children: bill.status.label }) }),
|
|
8108
|
+
/* @__PURE__ */ jsxs22("td", { children: [
|
|
7901
8109
|
shortDate(bill.submittedAt),
|
|
7902
|
-
/* @__PURE__ */
|
|
8110
|
+
/* @__PURE__ */ jsx22("div", { className: "mbow-muted", children: bill.arAgeDays == null ? "\u2014" : `${bill.arAgeDays} days` })
|
|
7903
8111
|
] }),
|
|
7904
|
-
/* @__PURE__ */
|
|
8112
|
+
/* @__PURE__ */ jsx22("td", { className: "mbow-money mbow-strong", children: money7(bill.balanceDue) })
|
|
7905
8113
|
] }, bill.id)) })
|
|
7906
8114
|
] }),
|
|
7907
|
-
result && !loading && !error ? /* @__PURE__ */
|
|
7908
|
-
/* @__PURE__ */
|
|
8115
|
+
result && !loading && !error ? /* @__PURE__ */ jsxs22("div", { className: "mbow-pager", children: [
|
|
8116
|
+
/* @__PURE__ */ jsxs22("span", { children: [
|
|
7909
8117
|
"Showing ",
|
|
7910
8118
|
result.total === 0 ? 0 : (result.page - 1) * result.pageSize + 1,
|
|
7911
8119
|
"\u2013",
|
|
@@ -7913,14 +8121,14 @@ function BillSearchContent({
|
|
|
7913
8121
|
" of ",
|
|
7914
8122
|
result.total
|
|
7915
8123
|
] }),
|
|
7916
|
-
/* @__PURE__ */
|
|
7917
|
-
/* @__PURE__ */
|
|
8124
|
+
/* @__PURE__ */ jsxs22("span", { children: [
|
|
8125
|
+
/* @__PURE__ */ jsx22("button", { className: "mbow-button", type: "button", disabled: result.page <= 1, onClick: () => update({ page: result.page - 1 }), children: "Previous" }),
|
|
7918
8126
|
" ",
|
|
7919
8127
|
result.page,
|
|
7920
8128
|
" / ",
|
|
7921
8129
|
pageCount,
|
|
7922
8130
|
" ",
|
|
7923
|
-
/* @__PURE__ */
|
|
8131
|
+
/* @__PURE__ */ jsx22("button", { className: "mbow-button", type: "button", disabled: result.page >= pageCount, onClick: () => update({ page: result.page + 1 }), children: "Next" })
|
|
7924
8132
|
] })
|
|
7925
8133
|
] }) : null
|
|
7926
8134
|
] })
|
|
@@ -7928,7 +8136,7 @@ function BillSearchContent({
|
|
|
7928
8136
|
}
|
|
7929
8137
|
function ConnectedBillSearch({ appearance, className, style, initialQuery, onSelectBill, heading = "All bills", ...options }) {
|
|
7930
8138
|
const client = useClient(options);
|
|
7931
|
-
return /* @__PURE__ */
|
|
8139
|
+
return /* @__PURE__ */ jsx22(Surface, { appearance, className, style, children: /* @__PURE__ */ jsx22(BillSearchContent, { client, initialQuery, onSelectBill, heading }) });
|
|
7932
8140
|
}
|
|
7933
8141
|
function taskQuery(cell) {
|
|
7934
8142
|
const [taskType, taskLabel] = cell.rowId.split("::", 2);
|
|
@@ -7939,11 +8147,11 @@ function taskQuery(cell) {
|
|
|
7939
8147
|
return { status: "all", taskSection: cell.sectionId, ...taskType ? { taskType } : {}, ...taskLabel ? { taskLabel } : {}, ...age ? { age } : {} };
|
|
7940
8148
|
}
|
|
7941
8149
|
function BillTasksContent({ client, onDrillDown, appearance }) {
|
|
7942
|
-
const [claimsAdminId, setClaimsAdminId] =
|
|
7943
|
-
const [renderingProviderId, setRenderingProviderId] =
|
|
7944
|
-
const [result, setResult] =
|
|
7945
|
-
const [error, setError] =
|
|
7946
|
-
const [loading, setLoading] =
|
|
8150
|
+
const [claimsAdminId, setClaimsAdminId] = useState18("");
|
|
8151
|
+
const [renderingProviderId, setRenderingProviderId] = useState18("");
|
|
8152
|
+
const [result, setResult] = useState18(null);
|
|
8153
|
+
const [error, setError] = useState18(null);
|
|
8154
|
+
const [loading, setLoading] = useState18(true);
|
|
7947
8155
|
const load = useCallback5(async (signal) => {
|
|
7948
8156
|
setLoading(true);
|
|
7949
8157
|
setError(null);
|
|
@@ -7955,32 +8163,32 @@ function BillTasksContent({ client, onDrillDown, appearance }) {
|
|
|
7955
8163
|
if (!signal?.aborted) setLoading(false);
|
|
7956
8164
|
}
|
|
7957
8165
|
}, [claimsAdminId, renderingProviderId, client]);
|
|
7958
|
-
|
|
8166
|
+
useEffect15(() => {
|
|
7959
8167
|
const controller = new AbortController();
|
|
7960
8168
|
void load(controller.signal);
|
|
7961
8169
|
return () => controller.abort();
|
|
7962
8170
|
}, [load]);
|
|
7963
|
-
if (loading && !result) return /* @__PURE__ */
|
|
7964
|
-
if (error && !result) return /* @__PURE__ */
|
|
7965
|
-
if (!result) return /* @__PURE__ */
|
|
8171
|
+
if (loading && !result) return /* @__PURE__ */ jsx22("div", { className: "mbow-state", children: "Loading bill tasks\u2026" });
|
|
8172
|
+
if (error && !result) return /* @__PURE__ */ jsx22("div", { className: "mbow-state mbow-error", children: error.message });
|
|
8173
|
+
if (!result) return /* @__PURE__ */ jsx22(Fragment16, {});
|
|
7966
8174
|
const selectionProps = loading || error ? {} : {
|
|
7967
8175
|
onSelectCell: (cell) => onDrillDown?.({ ...taskQuery(cell), ...claimsAdminId ? { claimsAdministrator: claimsAdminId } : {}, ...renderingProviderId ? { renderingProviderId } : {} })
|
|
7968
8176
|
};
|
|
7969
|
-
return /* @__PURE__ */
|
|
7970
|
-
/* @__PURE__ */
|
|
8177
|
+
return /* @__PURE__ */ jsxs22(Fragment16, { children: [
|
|
8178
|
+
/* @__PURE__ */ jsxs22("p", { className: "mbow-task-note", children: [
|
|
7971
8179
|
"Open follow-up work grouped by task and age. ",
|
|
7972
8180
|
result.waiting ? "Sent and accepted bills waiting for a payer are shown below." : "Find sent and accepted bills in All bills."
|
|
7973
8181
|
] }),
|
|
7974
|
-
loading ? /* @__PURE__ */
|
|
7975
|
-
error ? /* @__PURE__ */
|
|
7976
|
-
/* @__PURE__ */
|
|
7977
|
-
/* @__PURE__ */
|
|
7978
|
-
/* @__PURE__ */
|
|
7979
|
-
result.filters.claimsAdministrators.map((item) => /* @__PURE__ */
|
|
8182
|
+
loading ? /* @__PURE__ */ jsx22("p", { role: "status", children: "Updating bill tasks\u2026" }) : null,
|
|
8183
|
+
error ? /* @__PURE__ */ jsx22("p", { role: "alert", className: "mbow-error", children: error.message }) : null,
|
|
8184
|
+
/* @__PURE__ */ jsx22(BillTasksDashboard, { data: result.dashboard, appearance: appearance ?? { preset: "mindbill" }, toolbar: /* @__PURE__ */ jsxs22("div", { className: "mbow-toolbar", children: [
|
|
8185
|
+
/* @__PURE__ */ jsxs22("select", { "aria-label": "Claims administrator filter", className: "mbow-select", value: claimsAdminId, onChange: (event) => setClaimsAdminId(event.target.value), children: [
|
|
8186
|
+
/* @__PURE__ */ jsx22("option", { value: "", children: "All claims administrators" }),
|
|
8187
|
+
result.filters.claimsAdministrators.map((item) => /* @__PURE__ */ jsx22("option", { value: item.id, children: item.name }, item.id))
|
|
7980
8188
|
] }),
|
|
7981
|
-
/* @__PURE__ */
|
|
8189
|
+
/* @__PURE__ */ jsx22(RenderingProviderFilter, { value: renderingProviderId, options: result.filters.renderingProviders, onChange: setRenderingProviderId })
|
|
7982
8190
|
] }), ...selectionProps }),
|
|
7983
|
-
result.waiting ? /* @__PURE__ */
|
|
8191
|
+
result.waiting ? /* @__PURE__ */ jsx22(
|
|
7984
8192
|
BillTasksDashboard,
|
|
7985
8193
|
{
|
|
7986
8194
|
data: result.waiting,
|
|
@@ -7998,28 +8206,28 @@ function BillTasksContent({ client, onDrillDown, appearance }) {
|
|
|
7998
8206
|
}
|
|
7999
8207
|
function ConnectedBillTasksDashboard({ appearance, className, style, onDrillDown, ...options }) {
|
|
8000
8208
|
const client = useClient(options);
|
|
8001
|
-
return /* @__PURE__ */
|
|
8209
|
+
return /* @__PURE__ */ jsx22(Surface, { appearance, className, style, children: /* @__PURE__ */ jsx22(BillTasksContent, { client, onDrillDown, appearance }) });
|
|
8002
8210
|
}
|
|
8003
8211
|
function RangeToolbar({ from, to, setFrom, setTo }) {
|
|
8004
|
-
return /* @__PURE__ */
|
|
8005
|
-
/* @__PURE__ */
|
|
8212
|
+
return /* @__PURE__ */ jsxs22("div", { className: "mbow-toolbar", children: [
|
|
8213
|
+
/* @__PURE__ */ jsxs22("label", { children: [
|
|
8006
8214
|
"From ",
|
|
8007
|
-
/* @__PURE__ */
|
|
8215
|
+
/* @__PURE__ */ jsx22("input", { className: "mbow-input", type: "date", value: from, onChange: (event) => setFrom(event.target.value) })
|
|
8008
8216
|
] }),
|
|
8009
|
-
/* @__PURE__ */
|
|
8217
|
+
/* @__PURE__ */ jsxs22("label", { children: [
|
|
8010
8218
|
"To ",
|
|
8011
|
-
/* @__PURE__ */
|
|
8219
|
+
/* @__PURE__ */ jsx22("input", { className: "mbow-input", type: "date", value: to, onChange: (event) => setTo(event.target.value) })
|
|
8012
8220
|
] })
|
|
8013
8221
|
] });
|
|
8014
8222
|
}
|
|
8015
8223
|
function ConnectedServiceLineItemsReport({ appearance, className, style, initialFrom, initialTo, onSelectBill, ...options }) {
|
|
8016
8224
|
const defaults = useMemo11(() => defaultRange(), []);
|
|
8017
8225
|
const client = useClient(options);
|
|
8018
|
-
const [from, setFrom] =
|
|
8019
|
-
const [to, setTo] =
|
|
8020
|
-
const [data, setData] =
|
|
8021
|
-
const [error, setError] =
|
|
8022
|
-
|
|
8226
|
+
const [from, setFrom] = useState18(initialFrom ?? defaults.from);
|
|
8227
|
+
const [to, setTo] = useState18(initialTo ?? defaults.to);
|
|
8228
|
+
const [data, setData] = useState18(null);
|
|
8229
|
+
const [error, setError] = useState18(null);
|
|
8230
|
+
useEffect15(() => {
|
|
8023
8231
|
const controller = new AbortController();
|
|
8024
8232
|
setError(null);
|
|
8025
8233
|
void client.getServiceLineItems({ from, to }, controller.signal).then(setData).catch((cause) => {
|
|
@@ -8027,64 +8235,64 @@ function ConnectedServiceLineItemsReport({ appearance, className, style, initial
|
|
|
8027
8235
|
});
|
|
8028
8236
|
return () => controller.abort();
|
|
8029
8237
|
}, [client, from, to]);
|
|
8030
|
-
return /* @__PURE__ */
|
|
8031
|
-
/* @__PURE__ */
|
|
8032
|
-
/* @__PURE__ */
|
|
8033
|
-
/* @__PURE__ */
|
|
8238
|
+
return /* @__PURE__ */ jsxs22(Surface, { appearance, className, style, children: [
|
|
8239
|
+
/* @__PURE__ */ jsx22("div", { className: "mbow-head", children: /* @__PURE__ */ jsxs22("div", { children: [
|
|
8240
|
+
/* @__PURE__ */ jsx22("h2", { children: "Original submissions by procedure" }),
|
|
8241
|
+
/* @__PURE__ */ jsx22("p", { className: "mbow-sub", children: "First payer submission for each patient and date of service." })
|
|
8034
8242
|
] }) }),
|
|
8035
|
-
/* @__PURE__ */
|
|
8036
|
-
error ? /* @__PURE__ */
|
|
8037
|
-
/* @__PURE__ */
|
|
8038
|
-
/* @__PURE__ */
|
|
8039
|
-
/* @__PURE__ */
|
|
8040
|
-
/* @__PURE__ */
|
|
8041
|
-
/* @__PURE__ */
|
|
8243
|
+
/* @__PURE__ */ jsx22(RangeToolbar, { from, to, setFrom, setTo }),
|
|
8244
|
+
error ? /* @__PURE__ */ jsx22("div", { className: "mbow-state mbow-error", children: error.message }) : !data ? /* @__PURE__ */ jsx22("div", { className: "mbow-state", children: "Loading report\u2026" }) : /* @__PURE__ */ jsxs22(Fragment16, { children: [
|
|
8245
|
+
/* @__PURE__ */ jsxs22("div", { className: "mbow-metrics", children: [
|
|
8246
|
+
/* @__PURE__ */ jsx22(Metric, { label: "Original bills", value: String(data.totalBills) }),
|
|
8247
|
+
/* @__PURE__ */ jsx22(Metric, { label: "Service lines", value: String(data.totalLines) }),
|
|
8248
|
+
/* @__PURE__ */ jsx22(Metric, { label: "Total billed", value: money7(data.totalBilled) }),
|
|
8249
|
+
/* @__PURE__ */ jsx22(Metric, { label: "Report window", value: data.windowLabel })
|
|
8042
8250
|
] }),
|
|
8043
|
-
/* @__PURE__ */
|
|
8044
|
-
/* @__PURE__ */
|
|
8045
|
-
/* @__PURE__ */
|
|
8046
|
-
/* @__PURE__ */
|
|
8047
|
-
/* @__PURE__ */
|
|
8048
|
-
/* @__PURE__ */
|
|
8049
|
-
/* @__PURE__ */
|
|
8050
|
-
/* @__PURE__ */
|
|
8251
|
+
/* @__PURE__ */ jsxs22("div", { className: "mbow-card mbow-scroll", children: [
|
|
8252
|
+
/* @__PURE__ */ jsx22("div", { className: "mbow-section-head", children: /* @__PURE__ */ jsx22("h3", { children: "Procedure summary" }) }),
|
|
8253
|
+
/* @__PURE__ */ jsxs22("table", { className: "mbow-table", children: [
|
|
8254
|
+
/* @__PURE__ */ jsx22("thead", { children: /* @__PURE__ */ jsxs22("tr", { children: [
|
|
8255
|
+
/* @__PURE__ */ jsx22("th", { children: "Procedure code" }),
|
|
8256
|
+
/* @__PURE__ */ jsx22("th", { children: "Bills" }),
|
|
8257
|
+
/* @__PURE__ */ jsx22("th", { children: "Service lines" }),
|
|
8258
|
+
/* @__PURE__ */ jsx22("th", { className: "mbow-money", children: "Total billed" })
|
|
8051
8259
|
] }) }),
|
|
8052
|
-
/* @__PURE__ */
|
|
8053
|
-
/* @__PURE__ */
|
|
8054
|
-
/* @__PURE__ */
|
|
8055
|
-
/* @__PURE__ */
|
|
8056
|
-
/* @__PURE__ */
|
|
8260
|
+
/* @__PURE__ */ jsx22("tbody", { children: data.cptRows.map((row) => /* @__PURE__ */ jsxs22("tr", { children: [
|
|
8261
|
+
/* @__PURE__ */ jsx22("td", { className: "mbow-strong", children: row.code }),
|
|
8262
|
+
/* @__PURE__ */ jsx22("td", { children: row.bills }),
|
|
8263
|
+
/* @__PURE__ */ jsx22("td", { children: row.lines }),
|
|
8264
|
+
/* @__PURE__ */ jsx22("td", { className: "mbow-money", children: money7(row.billed) })
|
|
8057
8265
|
] }, row.code)) })
|
|
8058
8266
|
] })
|
|
8059
8267
|
] }),
|
|
8060
|
-
/* @__PURE__ */
|
|
8061
|
-
/* @__PURE__ */
|
|
8062
|
-
/* @__PURE__ */
|
|
8063
|
-
/* @__PURE__ */
|
|
8064
|
-
/* @__PURE__ */
|
|
8065
|
-
/* @__PURE__ */
|
|
8066
|
-
/* @__PURE__ */
|
|
8067
|
-
/* @__PURE__ */
|
|
8068
|
-
/* @__PURE__ */
|
|
8069
|
-
/* @__PURE__ */
|
|
8070
|
-
/* @__PURE__ */
|
|
8071
|
-
/* @__PURE__ */
|
|
8268
|
+
/* @__PURE__ */ jsxs22("div", { className: "mbow-card mbow-scroll", style: { marginTop: 16 }, children: [
|
|
8269
|
+
/* @__PURE__ */ jsx22("div", { className: "mbow-section-head", children: /* @__PURE__ */ jsx22("h3", { children: "All original bills" }) }),
|
|
8270
|
+
/* @__PURE__ */ jsxs22("table", { className: "mbow-table", children: [
|
|
8271
|
+
/* @__PURE__ */ jsx22("thead", { children: /* @__PURE__ */ jsxs22("tr", { children: [
|
|
8272
|
+
/* @__PURE__ */ jsx22("th", { children: "Bill" }),
|
|
8273
|
+
/* @__PURE__ */ jsx22("th", { children: "First submitted" }),
|
|
8274
|
+
/* @__PURE__ */ jsx22("th", { children: "Patient \xB7 Claim" }),
|
|
8275
|
+
/* @__PURE__ */ jsx22("th", { children: "DOS" }),
|
|
8276
|
+
/* @__PURE__ */ jsx22("th", { children: "Claims administrator" }),
|
|
8277
|
+
/* @__PURE__ */ jsx22("th", { children: "Codes" }),
|
|
8278
|
+
/* @__PURE__ */ jsx22("th", { className: "mbow-money", children: "Billed" }),
|
|
8279
|
+
/* @__PURE__ */ jsx22("th", { children: "Status" })
|
|
8072
8280
|
] }) }),
|
|
8073
|
-
/* @__PURE__ */
|
|
8074
|
-
/* @__PURE__ */
|
|
8281
|
+
/* @__PURE__ */ jsx22("tbody", { children: data.billRows.map((row) => /* @__PURE__ */ jsxs22("tr", { className: onSelectBill ? "clickable" : "", onClick: () => onSelectBill?.(row.billId), children: [
|
|
8282
|
+
/* @__PURE__ */ jsxs22("td", { className: "mbow-strong", children: [
|
|
8075
8283
|
"#",
|
|
8076
8284
|
row.billNumber
|
|
8077
8285
|
] }),
|
|
8078
|
-
/* @__PURE__ */
|
|
8079
|
-
/* @__PURE__ */
|
|
8286
|
+
/* @__PURE__ */ jsx22("td", { children: shortDate(row.submittedDate) }),
|
|
8287
|
+
/* @__PURE__ */ jsxs22("td", { children: [
|
|
8080
8288
|
row.patient,
|
|
8081
|
-
/* @__PURE__ */
|
|
8289
|
+
/* @__PURE__ */ jsx22("div", { className: "mbow-muted", children: row.claim })
|
|
8082
8290
|
] }),
|
|
8083
|
-
/* @__PURE__ */
|
|
8084
|
-
/* @__PURE__ */
|
|
8085
|
-
/* @__PURE__ */
|
|
8086
|
-
/* @__PURE__ */
|
|
8087
|
-
/* @__PURE__ */
|
|
8291
|
+
/* @__PURE__ */ jsx22("td", { children: shortDate(row.dos) }),
|
|
8292
|
+
/* @__PURE__ */ jsx22("td", { children: row.claimsAdmin }),
|
|
8293
|
+
/* @__PURE__ */ jsx22("td", { children: row.codes.join(", ") }),
|
|
8294
|
+
/* @__PURE__ */ jsx22("td", { className: "mbow-money", children: money7(row.billed) }),
|
|
8295
|
+
/* @__PURE__ */ jsx22("td", { children: row.status })
|
|
8088
8296
|
] }, row.billId)) })
|
|
8089
8297
|
] })
|
|
8090
8298
|
] })
|
|
@@ -8092,19 +8300,19 @@ function ConnectedServiceLineItemsReport({ appearance, className, style, initial
|
|
|
8092
8300
|
] });
|
|
8093
8301
|
}
|
|
8094
8302
|
function Metric({ label, value }) {
|
|
8095
|
-
return /* @__PURE__ */
|
|
8096
|
-
/* @__PURE__ */
|
|
8097
|
-
/* @__PURE__ */
|
|
8303
|
+
return /* @__PURE__ */ jsxs22("div", { className: "mbow-metric", children: [
|
|
8304
|
+
/* @__PURE__ */ jsx22("span", { children: label }),
|
|
8305
|
+
/* @__PURE__ */ jsx22("strong", { children: value })
|
|
8098
8306
|
] });
|
|
8099
8307
|
}
|
|
8100
8308
|
function ConnectedProductivityReport({ appearance, className, style, initialFrom, initialTo, ...options }) {
|
|
8101
8309
|
const defaults = useMemo11(() => defaultRange(13), []);
|
|
8102
8310
|
const client = useClient(options);
|
|
8103
|
-
const [from, setFrom] =
|
|
8104
|
-
const [to, setTo] =
|
|
8105
|
-
const [data, setData] =
|
|
8106
|
-
const [error, setError] =
|
|
8107
|
-
|
|
8311
|
+
const [from, setFrom] = useState18(initialFrom ?? defaults.from);
|
|
8312
|
+
const [to, setTo] = useState18(initialTo ?? defaults.to);
|
|
8313
|
+
const [data, setData] = useState18(null);
|
|
8314
|
+
const [error, setError] = useState18(null);
|
|
8315
|
+
useEffect15(() => {
|
|
8108
8316
|
const controller = new AbortController();
|
|
8109
8317
|
setError(null);
|
|
8110
8318
|
void client.getProductivity({ from, to }, controller.signal).then(setData).catch((cause) => {
|
|
@@ -8113,41 +8321,41 @@ function ConnectedProductivityReport({ appearance, className, style, initialFrom
|
|
|
8113
8321
|
return () => controller.abort();
|
|
8114
8322
|
}, [client, from, to]);
|
|
8115
8323
|
const maxSent = data ? Math.max(1, ...Object.values(data.sentTotal)) : 1;
|
|
8116
|
-
return /* @__PURE__ */
|
|
8117
|
-
/* @__PURE__ */
|
|
8118
|
-
/* @__PURE__ */
|
|
8119
|
-
/* @__PURE__ */
|
|
8324
|
+
return /* @__PURE__ */ jsxs22(Surface, { appearance, className, style, children: [
|
|
8325
|
+
/* @__PURE__ */ jsx22("div", { className: "mbow-head", children: /* @__PURE__ */ jsxs22("div", { children: [
|
|
8326
|
+
/* @__PURE__ */ jsx22("h2", { children: "Productivity" }),
|
|
8327
|
+
/* @__PURE__ */ jsx22("p", { className: "mbow-sub", children: "Bills created and sent per biller, plus accepted-first-try rate." })
|
|
8120
8328
|
] }) }),
|
|
8121
|
-
/* @__PURE__ */
|
|
8122
|
-
error ? /* @__PURE__ */
|
|
8123
|
-
/* @__PURE__ */
|
|
8124
|
-
/* @__PURE__ */
|
|
8125
|
-
/* @__PURE__ */
|
|
8126
|
-
/* @__PURE__ */
|
|
8127
|
-
/* @__PURE__ */
|
|
8329
|
+
/* @__PURE__ */ jsx22(RangeToolbar, { from, to, setFrom, setTo }),
|
|
8330
|
+
error ? /* @__PURE__ */ jsx22("div", { className: "mbow-state mbow-error", children: error.message }) : !data ? /* @__PURE__ */ jsx22("div", { className: "mbow-state", children: "Loading report\u2026" }) : /* @__PURE__ */ jsxs22(Fragment16, { children: [
|
|
8331
|
+
/* @__PURE__ */ jsxs22("div", { className: "mbow-metrics", children: [
|
|
8332
|
+
/* @__PURE__ */ jsx22(Metric, { label: "Bills created", value: String(data.totalCreated) }),
|
|
8333
|
+
/* @__PURE__ */ jsx22(Metric, { label: "Transmissions", value: String(data.totalSent) }),
|
|
8334
|
+
/* @__PURE__ */ jsx22(Metric, { label: "Bills submitted", value: String(data.totalSubmitted) }),
|
|
8335
|
+
/* @__PURE__ */ jsx22(Metric, { label: "Accepted first try", value: data.totalSubmitted ? `${Math.round(data.totalClean / data.totalSubmitted * 100)}%` : "\u2014" })
|
|
8128
8336
|
] }),
|
|
8129
|
-
/* @__PURE__ */
|
|
8130
|
-
/* @__PURE__ */
|
|
8131
|
-
/* @__PURE__ */
|
|
8132
|
-
/* @__PURE__ */
|
|
8133
|
-
/* @__PURE__ */
|
|
8134
|
-
/* @__PURE__ */
|
|
8135
|
-
/* @__PURE__ */
|
|
8136
|
-
/* @__PURE__ */
|
|
8137
|
-
/* @__PURE__ */
|
|
8138
|
-
/* @__PURE__ */
|
|
8337
|
+
/* @__PURE__ */ jsxs22("div", { className: "mbow-card mbow-scroll", children: [
|
|
8338
|
+
/* @__PURE__ */ jsx22("div", { className: "mbow-section-head", children: /* @__PURE__ */ jsx22("h3", { children: "Per-biller summary" }) }),
|
|
8339
|
+
/* @__PURE__ */ jsxs22("table", { className: "mbow-table", children: [
|
|
8340
|
+
/* @__PURE__ */ jsx22("thead", { children: /* @__PURE__ */ jsxs22("tr", { children: [
|
|
8341
|
+
/* @__PURE__ */ jsx22("th", { children: "Biller" }),
|
|
8342
|
+
/* @__PURE__ */ jsx22("th", { children: "Created" }),
|
|
8343
|
+
/* @__PURE__ */ jsx22("th", { children: "Transmissions" }),
|
|
8344
|
+
/* @__PURE__ */ jsx22("th", { children: "Submitted" }),
|
|
8345
|
+
/* @__PURE__ */ jsx22("th", { children: "Accepted first try" }),
|
|
8346
|
+
/* @__PURE__ */ jsx22("th", { children: "Volume" })
|
|
8139
8347
|
] }) }),
|
|
8140
|
-
/* @__PURE__ */
|
|
8348
|
+
/* @__PURE__ */ jsx22("tbody", { children: data.billers.map((biller) => {
|
|
8141
8349
|
const sent = data.sentTotal[biller.name] ?? 0;
|
|
8142
8350
|
const submitted = data.submittedTotal[biller.name] ?? 0;
|
|
8143
8351
|
const clean = data.cleanTotal[biller.name] ?? 0;
|
|
8144
|
-
return /* @__PURE__ */
|
|
8145
|
-
/* @__PURE__ */
|
|
8146
|
-
/* @__PURE__ */
|
|
8147
|
-
/* @__PURE__ */
|
|
8148
|
-
/* @__PURE__ */
|
|
8149
|
-
/* @__PURE__ */
|
|
8150
|
-
/* @__PURE__ */
|
|
8352
|
+
return /* @__PURE__ */ jsxs22("tr", { children: [
|
|
8353
|
+
/* @__PURE__ */ jsx22("td", { className: "mbow-strong", children: biller.name }),
|
|
8354
|
+
/* @__PURE__ */ jsx22("td", { children: data.createdTotal[biller.name] ?? 0 }),
|
|
8355
|
+
/* @__PURE__ */ jsx22("td", { children: sent }),
|
|
8356
|
+
/* @__PURE__ */ jsx22("td", { children: submitted }),
|
|
8357
|
+
/* @__PURE__ */ jsx22("td", { children: submitted ? `${Math.round(clean / submitted * 100)}%` : "\u2014" }),
|
|
8358
|
+
/* @__PURE__ */ jsx22("td", { children: /* @__PURE__ */ jsx22("div", { className: "mbow-bar", children: /* @__PURE__ */ jsx22("i", { style: { width: `${sent / maxSent * 100}%` } }) }) })
|
|
8151
8359
|
] }, biller.name);
|
|
8152
8360
|
}) })
|
|
8153
8361
|
] })
|
|
@@ -8157,43 +8365,43 @@ function ConnectedProductivityReport({ appearance, className, style, initialFrom
|
|
|
8157
8365
|
}
|
|
8158
8366
|
function ConnectedBillingWorkspace({ appearance, className, style, initialView = "tasks", onCreateBill, onPostPayment, sandboxControls = false, getCourtesyCopyRecipientOptions, ...options }) {
|
|
8159
8367
|
const client = useClient(options);
|
|
8160
|
-
const [view, setView] =
|
|
8161
|
-
const [billQuery, setBillQuery] =
|
|
8162
|
-
const [selectedBillId, setSelectedBillId] =
|
|
8368
|
+
const [view, setView] = useState18(initialView);
|
|
8369
|
+
const [billQuery, setBillQuery] = useState18({ status: "all" });
|
|
8370
|
+
const [selectedBillId, setSelectedBillId] = useState18(null);
|
|
8163
8371
|
const { workspaceRef, availableHeight } = useAvailableViewportHeight();
|
|
8164
8372
|
const workspaceClassName = ["mbow-workspace", className].filter(Boolean).join(" ");
|
|
8165
8373
|
const hasExplicitHeight = style?.height != null || style?.maxHeight != null;
|
|
8166
8374
|
const workspaceStyle = availableHeight == null || hasExplicitHeight ? style : { ...style, maxHeight: availableHeight };
|
|
8167
|
-
if (selectedBillId) return /* @__PURE__ */
|
|
8168
|
-
/* @__PURE__ */
|
|
8169
|
-
/* @__PURE__ */
|
|
8375
|
+
if (selectedBillId) return /* @__PURE__ */ jsxs22(Surface, { surfaceRef: workspaceRef, appearance, className: workspaceClassName, style: workspaceStyle, children: [
|
|
8376
|
+
/* @__PURE__ */ jsx22("button", { className: "mbow-button mbow-back", type: "button", onClick: () => setSelectedBillId(null), children: "\u2190 Back to bills" }),
|
|
8377
|
+
/* @__PURE__ */ jsx22(ConnectedBillLifecycle, { billId: selectedBillId, sandboxControls, courtesyCopyRecipientOptions: getCourtesyCopyRecipientOptions?.(selectedBillId) ?? [], ...options, ...appearance ? { appearance } : {} })
|
|
8170
8378
|
] });
|
|
8171
8379
|
const selectView = (next) => {
|
|
8172
8380
|
setView(next);
|
|
8173
8381
|
setSelectedBillId(null);
|
|
8174
8382
|
};
|
|
8175
8383
|
const appearanceProps = appearance ? { appearance } : {};
|
|
8176
|
-
return /* @__PURE__ */
|
|
8177
|
-
/* @__PURE__ */
|
|
8178
|
-
/* @__PURE__ */
|
|
8179
|
-
/* @__PURE__ */
|
|
8180
|
-
/* @__PURE__ */
|
|
8384
|
+
return /* @__PURE__ */ jsxs22(Surface, { surfaceRef: workspaceRef, appearance, className: workspaceClassName, style: workspaceStyle, children: [
|
|
8385
|
+
/* @__PURE__ */ jsxs22("div", { className: "mbow-head", children: [
|
|
8386
|
+
/* @__PURE__ */ jsxs22("div", { children: [
|
|
8387
|
+
/* @__PURE__ */ jsx22("h2", { children: "Billing" }),
|
|
8388
|
+
/* @__PURE__ */ jsx22("p", { className: "mbow-sub", children: "Follow up on open work or find any bill and its current status." })
|
|
8181
8389
|
] }),
|
|
8182
|
-
onCreateBill ? /* @__PURE__ */
|
|
8390
|
+
onCreateBill ? /* @__PURE__ */ jsx22("div", { className: "mbow-actions", children: /* @__PURE__ */ jsx22("button", { className: "mbow-button primary", type: "button", onClick: onCreateBill, children: "+ Add bill" }) }) : null
|
|
8183
8391
|
] }),
|
|
8184
|
-
/* @__PURE__ */
|
|
8185
|
-
view === "tasks" ? /* @__PURE__ */
|
|
8392
|
+
/* @__PURE__ */ jsx22("div", { className: "mbow-tabs", role: "tablist", children: [["tasks", "Bill tasks"], ["bills", "All bills"], ["procedures", "Procedures"], ["productivity", "Productivity"], ["payments", "Payment review"]].map(([id, label]) => /* @__PURE__ */ jsx22("button", { className: `mbow-tab ${view === id ? "active" : ""}`, type: "button", role: "tab", "aria-selected": view === id, onClick: () => selectView(id), children: label }, id)) }),
|
|
8393
|
+
view === "tasks" ? /* @__PURE__ */ jsx22(BillTasksContent, { client, onDrillDown: (query) => {
|
|
8186
8394
|
setBillQuery(query);
|
|
8187
8395
|
setView("bills");
|
|
8188
|
-
}, appearance }) : view === "bills" ? /* @__PURE__ */
|
|
8396
|
+
}, appearance }) : view === "bills" ? /* @__PURE__ */ jsx22(BillSearchContent, { client, initialQuery: billQuery, onSelectBill: (bill) => setSelectedBillId(bill.id) }) : view === "procedures" ? /* @__PURE__ */ jsx22(ConnectedServiceLineItemsReport, { ...options, ...appearanceProps, onSelectBill: setSelectedBillId }) : view === "payments" ? /* @__PURE__ */ jsx22(ConnectedPaymentReview, { ...options, ...appearanceProps, ...onPostPayment ? { onPostPayment } : {}, onSelectBill: setSelectedBillId }) : /* @__PURE__ */ jsx22(ConnectedProductivityReport, { ...options, ...appearanceProps })
|
|
8189
8397
|
] });
|
|
8190
8398
|
}
|
|
8191
8399
|
|
|
8192
8400
|
// src/index.tsx
|
|
8193
8401
|
function widget(tagName, props) {
|
|
8194
|
-
const ref =
|
|
8402
|
+
const ref = useRef11(null);
|
|
8195
8403
|
const { onMindBill, onMindBillError } = props;
|
|
8196
|
-
|
|
8404
|
+
useEffect16(() => {
|
|
8197
8405
|
const element = ref.current;
|
|
8198
8406
|
if (!element) return;
|
|
8199
8407
|
const handleEvent = (event) => onMindBill?.(event);
|
|
@@ -8272,6 +8480,7 @@ export {
|
|
|
8272
8480
|
ConnectedBillStatus,
|
|
8273
8481
|
ConnectedBillTasksDashboard,
|
|
8274
8482
|
ConnectedBillingWorkspace,
|
|
8483
|
+
ConnectedNotificationRecipientsSettings,
|
|
8275
8484
|
ConnectedNotificationSettings,
|
|
8276
8485
|
ConnectedPaymentReview,
|
|
8277
8486
|
ConnectedProductivityReport,
|
|
@@ -8282,6 +8491,7 @@ export {
|
|
|
8282
8491
|
MED_LEGAL_REPORT_TYPE_CODE,
|
|
8283
8492
|
MindBillBillReview,
|
|
8284
8493
|
MindBillBillTimeline,
|
|
8494
|
+
NotificationRecipientsSettings,
|
|
8285
8495
|
NotificationSettings,
|
|
8286
8496
|
OrganizationOnboarding,
|
|
8287
8497
|
PSYCH_QME_DEFAULT_DIAGNOSIS,
|