@mindbill/react 0.27.0 → 0.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/index.d.ts +15 -3
- package/dist/index.js +263 -99
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1060,8 +1060,75 @@ function Value({ label, children, wide = false }) {
|
|
|
1060
1060
|
/* @__PURE__ */ jsx2("dd", { children: children || "\u2014" })
|
|
1061
1061
|
] });
|
|
1062
1062
|
}
|
|
1063
|
+
var PAYER_TABS = [
|
|
1064
|
+
["main", "Main"],
|
|
1065
|
+
["bill-review", "Bill Review"],
|
|
1066
|
+
["authorization", "Authorization Info"],
|
|
1067
|
+
["mailing", "Mailing Address"],
|
|
1068
|
+
["patterns", "Claim Number Pattern"]
|
|
1069
|
+
];
|
|
1070
|
+
function DirectoryEmpty({ children }) {
|
|
1071
|
+
return /* @__PURE__ */ jsx2("p", { className: "mb-read-directory-empty", children });
|
|
1072
|
+
}
|
|
1073
|
+
function ContactTable({ contacts, empty }) {
|
|
1074
|
+
if (!contacts.length) return /* @__PURE__ */ jsx2(DirectoryEmpty, { children: empty });
|
|
1075
|
+
return /* @__PURE__ */ jsx2("div", { className: "mb-read-directory-table-wrap", children: /* @__PURE__ */ jsxs2("table", { className: "mb-read-directory-table", children: [
|
|
1076
|
+
/* @__PURE__ */ jsx2("thead", { children: /* @__PURE__ */ jsxs2("tr", { children: [
|
|
1077
|
+
/* @__PURE__ */ jsx2("th", { children: "Name" }),
|
|
1078
|
+
/* @__PURE__ */ jsx2("th", { children: "Telephone" }),
|
|
1079
|
+
/* @__PURE__ */ jsx2("th", { children: "Portal / email" }),
|
|
1080
|
+
/* @__PURE__ */ jsx2("th", { children: "Fax" }),
|
|
1081
|
+
/* @__PURE__ */ jsx2("th", { children: "Address" })
|
|
1082
|
+
] }) }),
|
|
1083
|
+
/* @__PURE__ */ jsx2("tbody", { children: contacts.map((contact, index) => /* @__PURE__ */ jsxs2("tr", { children: [
|
|
1084
|
+
/* @__PURE__ */ jsxs2("td", { children: [
|
|
1085
|
+
contact.name || "\u2014",
|
|
1086
|
+
contact.note ? /* @__PURE__ */ jsx2("small", { children: contact.note }) : null
|
|
1087
|
+
] }),
|
|
1088
|
+
/* @__PURE__ */ jsx2("td", { children: contact.phone || "\u2014" }),
|
|
1089
|
+
/* @__PURE__ */ jsx2("td", { children: contact.portalUrl ? /* @__PURE__ */ jsx2("a", { href: contact.portalUrl, target: "_blank", rel: "noopener noreferrer", children: "Open portal" }) : contact.email || "\u2014" }),
|
|
1090
|
+
/* @__PURE__ */ jsx2("td", { children: contact.fax || "\u2014" }),
|
|
1091
|
+
/* @__PURE__ */ jsx2("td", { children: contact.address || "\u2014" })
|
|
1092
|
+
] }, `${contact.name || "contact"}-${index}`)) })
|
|
1093
|
+
] }) });
|
|
1094
|
+
}
|
|
1095
|
+
function MailingTable({ addresses }) {
|
|
1096
|
+
if (!addresses.length) return /* @__PURE__ */ jsx2(DirectoryEmpty, { children: "No mailing addresses are available for this directory entry." });
|
|
1097
|
+
return /* @__PURE__ */ jsx2("div", { className: "mb-read-directory-table-wrap", children: /* @__PURE__ */ jsxs2("table", { className: "mb-read-directory-table", children: [
|
|
1098
|
+
/* @__PURE__ */ jsx2("thead", { children: /* @__PURE__ */ jsxs2("tr", { children: [
|
|
1099
|
+
/* @__PURE__ */ jsx2("th", { children: "Company" }),
|
|
1100
|
+
/* @__PURE__ */ jsx2("th", { children: "Address" }),
|
|
1101
|
+
/* @__PURE__ */ jsx2("th", { children: "Notes" }),
|
|
1102
|
+
/* @__PURE__ */ jsx2("th", { children: "Submission types" })
|
|
1103
|
+
] }) }),
|
|
1104
|
+
/* @__PURE__ */ jsx2("tbody", { children: addresses.map((entry, index) => /* @__PURE__ */ jsxs2("tr", { children: [
|
|
1105
|
+
/* @__PURE__ */ jsx2("td", { children: entry.company || "\u2014" }),
|
|
1106
|
+
/* @__PURE__ */ jsx2("td", { children: entry.address }),
|
|
1107
|
+
/* @__PURE__ */ jsx2("td", { children: entry.notes || "\u2014" }),
|
|
1108
|
+
/* @__PURE__ */ jsx2("td", { children: entry.submissionTypes?.join(", ") || "\u2014" })
|
|
1109
|
+
] }, `${entry.address}-${index}`)) })
|
|
1110
|
+
] }) });
|
|
1111
|
+
}
|
|
1112
|
+
function PatternTable({ patterns }) {
|
|
1113
|
+
if (!patterns.length) return /* @__PURE__ */ jsx2(DirectoryEmpty, { children: "No claim-number pattern is available for this directory entry." });
|
|
1114
|
+
return /* @__PURE__ */ jsx2("div", { className: "mb-read-directory-table-wrap", children: /* @__PURE__ */ jsxs2("table", { className: "mb-read-directory-table", children: [
|
|
1115
|
+
/* @__PURE__ */ jsx2("thead", { children: /* @__PURE__ */ jsxs2("tr", { children: [
|
|
1116
|
+
/* @__PURE__ */ jsx2("th", { children: "Status" }),
|
|
1117
|
+
/* @__PURE__ */ jsx2("th", { children: "Length" }),
|
|
1118
|
+
/* @__PURE__ */ jsx2("th", { children: "Pattern" }),
|
|
1119
|
+
/* @__PURE__ */ jsx2("th", { children: "Example" })
|
|
1120
|
+
] }) }),
|
|
1121
|
+
/* @__PURE__ */ jsx2("tbody", { children: patterns.map((entry, index) => /* @__PURE__ */ jsxs2("tr", { children: [
|
|
1122
|
+
/* @__PURE__ */ jsx2("td", { children: entry.matches === true ? /* @__PURE__ */ jsx2("span", { className: "mb-read-match is-match", children: "\u2713 Matches this claim" }) : entry.matches === false ? /* @__PURE__ */ jsx2("span", { className: "mb-read-match is-warning", children: "Review format" }) : "Advisory" }),
|
|
1123
|
+
/* @__PURE__ */ jsx2("td", { children: entry.length ?? "\u2014" }),
|
|
1124
|
+
/* @__PURE__ */ jsx2("td", { children: entry.pattern }),
|
|
1125
|
+
/* @__PURE__ */ jsx2("td", { children: entry.example || "\u2014" })
|
|
1126
|
+
] }, `${entry.pattern}-${index}`)) })
|
|
1127
|
+
] }) });
|
|
1128
|
+
}
|
|
1063
1129
|
function BillReadOnlyForm({ data, appearance, className, style, onOpenAttachment }) {
|
|
1064
1130
|
const [payerOpen, setPayerOpen] = useState2(false);
|
|
1131
|
+
const [payerTab, setPayerTab] = useState2("main");
|
|
1065
1132
|
const { bill, patient, injury } = data;
|
|
1066
1133
|
const provider = bill.billingSnapshot?.billingProvider;
|
|
1067
1134
|
const clinician = bill.billingSnapshot?.renderingProvider;
|
|
@@ -1072,6 +1139,17 @@ function BillReadOnlyForm({ data, appearance, className, style, onOpenAttachment
|
|
|
1072
1139
|
const locationAddress = location ? [location.street, location.city, location.state, location.zip].filter(Boolean).join(", ") : "";
|
|
1073
1140
|
const payerName = data.delivery?.payerName || injury.claimsAdminName || "\u2014";
|
|
1074
1141
|
const contacts = data.delivery?.contacts;
|
|
1142
|
+
const directory = data.delivery?.directory;
|
|
1143
|
+
const fallbackContacts = contacts && Object.values(contacts).some(Boolean) ? [{
|
|
1144
|
+
name: contacts.adjusterName || "Claims contact",
|
|
1145
|
+
...contacts.adjusterPhone ? { phone: contacts.adjusterPhone } : {},
|
|
1146
|
+
...contacts.adjusterEmail || contacts.claimsEmail ? { email: contacts.adjusterEmail || contacts.claimsEmail } : {},
|
|
1147
|
+
...contacts.faxNumber ? { fax: contacts.faxNumber } : {},
|
|
1148
|
+
...contacts.portalUrl ? { portalUrl: contacts.portalUrl } : {},
|
|
1149
|
+
...contacts.mailingAddress ? { address: contacts.mailingAddress } : {}
|
|
1150
|
+
}] : [];
|
|
1151
|
+
const billReview = directory?.billReview?.length ? directory.billReview : fallbackContacts;
|
|
1152
|
+
const mailingAddresses = directory?.mailingAddresses?.length ? directory.mailingAddresses : contacts?.mailingAddress ? [{ company: payerName, address: contacts.mailingAddress }] : [];
|
|
1075
1153
|
useEffect2(() => {
|
|
1076
1154
|
if (!payerOpen) return;
|
|
1077
1155
|
const close = (event) => {
|
|
@@ -1083,10 +1161,7 @@ function BillReadOnlyForm({ data, appearance, className, style, onOpenAttachment
|
|
|
1083
1161
|
return /* @__PURE__ */ jsxs2("section", { className: ["mb-readonly-bill", className].filter(Boolean).join(" "), style: mindBillAppearanceStyle(appearance, style), "aria-label": "Bill details", children: [
|
|
1084
1162
|
/* @__PURE__ */ jsx2("style", { children: READ_ONLY_STYLES }),
|
|
1085
1163
|
/* @__PURE__ */ jsxs2("header", { className: "mb-readonly-heading", children: [
|
|
1086
|
-
/* @__PURE__ */
|
|
1087
|
-
/* @__PURE__ */ jsx2("h2", { children: "Bill details" }),
|
|
1088
|
-
/* @__PURE__ */ jsx2("p", { children: "Immutable snapshot submitted to the payer." })
|
|
1089
|
-
] }),
|
|
1164
|
+
/* @__PURE__ */ jsx2("h2", { children: "Bill details" }),
|
|
1090
1165
|
/* @__PURE__ */ jsx2("strong", { children: money2(bill.totalCharge) })
|
|
1091
1166
|
] }),
|
|
1092
1167
|
/* @__PURE__ */ jsxs2("section", { className: "mb-read-card", children: [
|
|
@@ -1103,7 +1178,10 @@ function BillReadOnlyForm({ data, appearance, className, style, onOpenAttachment
|
|
|
1103
1178
|
/* @__PURE__ */ jsxs2("dl", { className: "mb-read-grid", children: [
|
|
1104
1179
|
/* @__PURE__ */ jsx2(Value, { label: "Claim number", children: injury.claimNumber }),
|
|
1105
1180
|
/* @__PURE__ */ jsx2(Value, { label: "WCAB / ADJ number", children: injury.adjNumber }),
|
|
1106
|
-
/* @__PURE__ */ jsx2(Value, { label: "Claims administrator", children: /* @__PURE__ */ jsx2("button", { type: "button", className: "mb-read-payer", onClick: () =>
|
|
1181
|
+
/* @__PURE__ */ jsx2(Value, { label: "Claims administrator", children: /* @__PURE__ */ jsx2("button", { type: "button", className: "mb-read-payer", onClick: () => {
|
|
1182
|
+
setPayerTab("main");
|
|
1183
|
+
setPayerOpen(true);
|
|
1184
|
+
}, children: payerName }) }),
|
|
1107
1185
|
/* @__PURE__ */ jsx2(Value, { label: "Employer", children: injury.employer }),
|
|
1108
1186
|
/* @__PURE__ */ jsx2(Value, { label: "Date of injury", children: date(injury.doi) }),
|
|
1109
1187
|
/* @__PURE__ */ jsx2(Value, { label: "Date of service", children: bill.dosEnd ? `${date(bill.dos)} \u2013 ${date(bill.dosEnd)}` : date(bill.dos) }),
|
|
@@ -1168,27 +1246,33 @@ function BillReadOnlyForm({ data, appearance, className, style, onOpenAttachment
|
|
|
1168
1246
|
}, children: /* @__PURE__ */ jsxs2("section", { className: "mb-read-dialog", role: "dialog", "aria-modal": "true", "aria-labelledby": "mb-read-payer-title", children: [
|
|
1169
1247
|
/* @__PURE__ */ jsxs2("header", { children: [
|
|
1170
1248
|
/* @__PURE__ */ jsxs2("div", { children: [
|
|
1171
|
-
/* @__PURE__ */ jsx2("
|
|
1172
|
-
/* @__PURE__ */ jsx2("
|
|
1249
|
+
/* @__PURE__ */ jsx2("h3", { id: "mb-read-payer-title", children: payerName }),
|
|
1250
|
+
/* @__PURE__ */ jsx2("span", { children: "Claims administrator" })
|
|
1173
1251
|
] }),
|
|
1174
1252
|
/* @__PURE__ */ jsx2("button", { type: "button", "aria-label": "Close claims administrator details", onClick: () => setPayerOpen(false), children: "\xD7" })
|
|
1175
1253
|
] }),
|
|
1176
|
-
/* @__PURE__ */
|
|
1177
|
-
|
|
1178
|
-
/* @__PURE__ */
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1254
|
+
/* @__PURE__ */ jsx2("div", { className: "mb-read-dialog-tabs", role: "tablist", "aria-label": "Claims administrator information", children: PAYER_TABS.map(([id, label]) => /* @__PURE__ */ jsx2("button", { type: "button", role: "tab", "aria-selected": payerTab === id, onClick: () => setPayerTab(id), children: label }, id)) }),
|
|
1255
|
+
/* @__PURE__ */ jsxs2("div", { className: "mb-read-dialog-panel", role: "tabpanel", children: [
|
|
1256
|
+
payerTab === "main" ? /* @__PURE__ */ jsxs2("dl", { className: "mb-read-directory-main", children: [
|
|
1257
|
+
/* @__PURE__ */ jsx2(Value, { label: "Name", children: payerName }),
|
|
1258
|
+
/* @__PURE__ */ jsx2(Value, { label: "Type", children: directory?.type }),
|
|
1259
|
+
/* @__PURE__ */ jsx2(Value, { label: "Description", wide: true, children: directory?.description }),
|
|
1260
|
+
/* @__PURE__ */ jsx2(Value, { label: "Website", children: directory?.website ? /* @__PURE__ */ jsx2("a", { href: directory.website, target: "_blank", rel: "noopener noreferrer", children: directory.website }) : "\u2014" }),
|
|
1261
|
+
/* @__PURE__ */ jsx2(Value, { label: "Hours of operation", children: directory?.hours }),
|
|
1262
|
+
/* @__PURE__ */ jsx2(Value, { label: "Also known as", wide: true, children: directory?.aliases?.join(", ") }),
|
|
1263
|
+
/* @__PURE__ */ jsx2(Value, { label: "Affiliated entities", wide: true, children: directory?.affiliatedEntities?.join(", ") })
|
|
1264
|
+
] }) : null,
|
|
1265
|
+
payerTab === "bill-review" ? /* @__PURE__ */ jsx2(ContactTable, { contacts: billReview, empty: "No bill-review contacts are available for this directory entry." }) : null,
|
|
1266
|
+
payerTab === "authorization" ? /* @__PURE__ */ jsx2(ContactTable, { contacts: directory?.authorization ?? [], empty: "No authorization contacts are available for this directory entry." }) : null,
|
|
1267
|
+
payerTab === "mailing" ? /* @__PURE__ */ jsx2(MailingTable, { addresses: mailingAddresses }) : null,
|
|
1268
|
+
payerTab === "patterns" ? /* @__PURE__ */ jsx2(PatternTable, { patterns: directory?.claimNumberPatterns ?? [] }) : null
|
|
1269
|
+
] })
|
|
1186
1270
|
] }) }) : null
|
|
1187
1271
|
] });
|
|
1188
1272
|
}
|
|
1189
1273
|
var READ_ONLY_STYLES = `
|
|
1190
|
-
.mb-readonly-bill{--mb-accent:#176c70;--mb-border:#d7e0df;--mb-surface:#fff;--mb-muted:#607176;color:var(--mb-text,#17282d);font:inherit;display:grid;gap:16px}.mb-readonly-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:20px}.mb-readonly-heading h2,.mb-read-card h3{margin:0}.mb-readonly-heading
|
|
1191
|
-
@media(max-width:700px){.mb-readonly-heading{align-items:flex-start}.mb-read-grid,.mb-read-
|
|
1274
|
+
.mb-readonly-bill{--mb-accent:#176c70;--mb-border:#d7e0df;--mb-surface:#fff;--mb-muted:#607176;color:var(--mb-text,#17282d);font:inherit;display:grid;gap:16px}.mb-readonly-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:20px}.mb-readonly-heading h2,.mb-read-card h3{margin:0}.mb-readonly-heading>strong{font-size:1.35rem}.mb-read-card{background:var(--mb-surface);border:1px solid var(--mb-border);border-radius:var(--mb-radius,14px);padding:20px;box-shadow:0 1px 2px rgba(15,40,45,.04)}.mb-read-card h3{font-size:1.05rem;margin-bottom:16px}.mb-read-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:17px 28px;margin:0}.mb-read-value{min-width:0}.mb-read-value.is-wide{grid-column:1/-1}.mb-read-value dt{color:var(--mb-muted);font-size:.75rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase}.mb-read-value dd{font-weight:600;margin:5px 0 0;overflow-wrap:anywhere}.mb-read-payer{border:0;border-bottom:1px dotted currentColor;background:transparent;color:inherit;padding:0;font:inherit;font-weight:inherit;text-align:left;cursor:pointer}.mb-read-payer:hover{color:var(--mb-accent)}.mb-read-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:16px}.mb-read-chips span{border:1px solid var(--mb-border);border-radius:999px;padding:3px 9px;font-size:.82rem;background:#f7f9f8}.mb-read-lines{border:1px solid var(--mb-border);border-radius:10px;overflow:hidden}.mb-read-line-header,.mb-read-line{display:grid;grid-template-columns:1.2fr 1.5fr .45fr .7fr;gap:16px;align-items:center;padding:12px 14px}.mb-read-line-header{background:#f6f8f7;color:var(--mb-muted);font-size:.75rem;font-weight:700;text-transform:uppercase}.mb-read-line{border-top:1px solid var(--mb-border)}.mb-read-line .mb-read-chips{margin:0}.mb-read-line>span:last-child,.mb-read-line>strong:last-child{text-align:right}.mb-read-total{display:flex;justify-content:flex-end;gap:24px;border-top:1px solid var(--mb-border);padding:13px 14px}.mb-read-documents{list-style:none;padding:0;margin:0;display:grid}.mb-read-documents li{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:13px 0;border-top:1px solid var(--mb-border)}.mb-read-documents li:first-child{border-top:0;padding-top:0}.mb-read-documents li:last-child{padding-bottom:0}.mb-read-documents div{display:grid;gap:3px;min-width:0}.mb-read-documents strong{overflow-wrap:anywhere}.mb-read-documents span,.mb-read-empty{color:var(--mb-muted)}.mb-read-documents button{border:1px solid var(--mb-border);border-radius:8px;background:transparent;color:inherit;padding:8px 13px;font:inherit;font-weight:650;cursor:pointer}.mb-read-documents button:hover{border-color:var(--mb-accent);color:var(--mb-accent)}.mb-read-dialog-backdrop{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;background:rgba(11,28,32,.46);padding:20px}.mb-read-dialog{width:min(1040px,100%);min-height:min(620px,calc(100vh - 40px));max-height:calc(100vh - 40px);overflow:auto;border:1px solid var(--mb-border);border-radius:var(--mb-radius,14px);background:var(--mb-surface);padding:22px;box-shadow:0 22px 70px rgba(8,25,29,.24)}.mb-read-dialog header{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:20px}.mb-read-dialog header span{display:block;margin-top:4px;color:var(--mb-muted);font-size:.78rem}.mb-read-dialog h3{margin:0;font-size:1.35rem}.mb-read-dialog header button{border:0;background:transparent;color:inherit;font:inherit;font-size:1.7rem;line-height:1;cursor:pointer}.mb-read-dialog-tabs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));border-radius:10px;background:var(--mb-soft,#f4f7f6);padding:0 10px}.mb-read-dialog-tabs button{min-height:68px;border:0;border-top:4px solid transparent;background:transparent;color:var(--mb-muted);font:inherit;font-weight:750;cursor:pointer;padding:8px}.mb-read-dialog-tabs button[aria-selected=true]{border-color:var(--mb-accent);background:var(--mb-surface);color:var(--mb-text)}.mb-read-dialog-panel{padding-top:22px}.mb-read-directory-main{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 28px;margin:0}.mb-read-directory-main a,.mb-read-directory-table a{color:var(--mb-accent)}.mb-read-directory-table-wrap{border:1px solid var(--mb-border);border-radius:10px;overflow:auto}.mb-read-directory-table{width:100%;border-collapse:collapse;text-align:left}.mb-read-directory-table th,.mb-read-directory-table td{padding:13px 14px;vertical-align:top;border-top:1px solid var(--mb-border)}.mb-read-directory-table th{border-top:0;background:var(--mb-soft,#f4f7f6);color:var(--mb-muted);font-size:.78rem}.mb-read-directory-table td small{display:block;margin-top:4px;color:var(--mb-muted)}.mb-read-directory-empty{margin:0;padding:26px;border:1px dashed var(--mb-border);border-radius:10px;color:var(--mb-muted);text-align:center}.mb-read-match{display:inline-flex;border-radius:999px;padding:3px 8px;font-size:.78rem;font-weight:750}.mb-read-match.is-match{background:#eaf7ef;color:#237448}.mb-read-match.is-warning{background:#fff5df;color:#8a5b00}
|
|
1275
|
+
@media(max-width:700px){.mb-readonly-heading{align-items:flex-start}.mb-read-grid,.mb-read-directory-main{grid-template-columns:1fr}.mb-read-value.is-wide{grid-column:auto}.mb-read-card{padding:16px}.mb-read-line-header{display:none}.mb-read-line{grid-template-columns:1fr auto;gap:8px}.mb-read-line>*:nth-child(2){grid-column:1/-1}.mb-read-total{justify-content:space-between}.mb-readonly-heading>strong{font-size:1.05rem}.mb-read-dialog-backdrop{place-items:end center;padding:0}.mb-read-dialog{width:100%;min-height:0;max-height:88vh;border-radius:18px 18px 0 0;padding:20px 18px calc(20px + env(safe-area-inset-bottom))}.mb-read-dialog-tabs{display:flex;overflow-x:auto;padding:0}.mb-read-dialog-tabs button{min-width:128px}.mb-read-directory-table-wrap{border:0;overflow:visible}.mb-read-directory-table,.mb-read-directory-table thead,.mb-read-directory-table tbody,.mb-read-directory-table tr,.mb-read-directory-table th,.mb-read-directory-table td{display:block}.mb-read-directory-table thead{display:none}.mb-read-directory-table tr{border:1px solid var(--mb-border);border-radius:10px;margin-bottom:10px;overflow:hidden}.mb-read-directory-table td{border-top:1px solid var(--mb-border)}.mb-read-directory-table td:first-child{border-top:0}}
|
|
1192
1276
|
`;
|
|
1193
1277
|
|
|
1194
1278
|
// src/bill-submission-form.tsx
|
|
@@ -3025,6 +3109,107 @@ function BillSnapshotSummary({ bill, patient, injury, delivery, appearance, clas
|
|
|
3025
3109
|
] }, label)) })
|
|
3026
3110
|
] });
|
|
3027
3111
|
}
|
|
3112
|
+
function BillExplanationOfReview({
|
|
3113
|
+
remittance,
|
|
3114
|
+
eors,
|
|
3115
|
+
payments,
|
|
3116
|
+
submittedAt,
|
|
3117
|
+
onOpenEor,
|
|
3118
|
+
appearance,
|
|
3119
|
+
className,
|
|
3120
|
+
style
|
|
3121
|
+
}) {
|
|
3122
|
+
const rows = payments.length ? payments : [null];
|
|
3123
|
+
return /* @__PURE__ */ jsxs6("section", { className: classes("mb-surface mb-eor-review", className), style: mindBillAppearanceStyle(appearance, style), "aria-label": "Explanation of Review and payments", children: [
|
|
3124
|
+
/* @__PURE__ */ jsx6("style", { children: lifecycleSurfaceStyles }),
|
|
3125
|
+
/* @__PURE__ */ jsx6("header", { className: "mb-surface-heading", children: /* @__PURE__ */ jsxs6("div", { children: [
|
|
3126
|
+
/* @__PURE__ */ jsx6("strong", { children: "Explanation of Review" }),
|
|
3127
|
+
/* @__PURE__ */ jsx6("span", { children: "Payer response and payment reconciliation." })
|
|
3128
|
+
] }) }),
|
|
3129
|
+
/* @__PURE__ */ jsxs6("dl", { className: "mb-eor-metrics", children: [
|
|
3130
|
+
/* @__PURE__ */ jsxs6("div", { children: [
|
|
3131
|
+
/* @__PURE__ */ jsx6("dt", { children: "Amount billed" }),
|
|
3132
|
+
/* @__PURE__ */ jsx6("dd", { children: currency(remittance.billedAmount) })
|
|
3133
|
+
] }),
|
|
3134
|
+
/* @__PURE__ */ jsxs6("div", { children: [
|
|
3135
|
+
/* @__PURE__ */ jsx6("dt", { children: "Payer allowed" }),
|
|
3136
|
+
/* @__PURE__ */ jsx6("dd", { children: remittance.payerAllowedAmount === null ? "\u2014" : currency(remittance.payerAllowedAmount) })
|
|
3137
|
+
] }),
|
|
3138
|
+
/* @__PURE__ */ jsxs6("div", { children: [
|
|
3139
|
+
/* @__PURE__ */ jsx6("dt", { children: "Payer reported paid" }),
|
|
3140
|
+
/* @__PURE__ */ jsx6("dd", { children: remittance.payerReportedPaid === null ? "\u2014" : currency(remittance.payerReportedPaid) })
|
|
3141
|
+
] }),
|
|
3142
|
+
/* @__PURE__ */ jsxs6("div", { className: "is-balance", children: [
|
|
3143
|
+
/* @__PURE__ */ jsx6("dt", { children: "Balance due" }),
|
|
3144
|
+
/* @__PURE__ */ jsx6("dd", { children: currency(remittance.balanceDue) })
|
|
3145
|
+
] }),
|
|
3146
|
+
/* @__PURE__ */ jsxs6("div", { children: [
|
|
3147
|
+
/* @__PURE__ */ jsx6("dt", { children: "Payment posted" }),
|
|
3148
|
+
/* @__PURE__ */ jsx6("dd", { children: currency(remittance.postedPrincipal) })
|
|
3149
|
+
] }),
|
|
3150
|
+
/* @__PURE__ */ jsxs6("div", { children: [
|
|
3151
|
+
/* @__PURE__ */ jsx6("dt", { children: "Penalty & interest" }),
|
|
3152
|
+
/* @__PURE__ */ jsx6("dd", { children: currency(remittance.postedAdditional) })
|
|
3153
|
+
] }),
|
|
3154
|
+
/* @__PURE__ */ jsxs6("div", { children: [
|
|
3155
|
+
/* @__PURE__ */ jsx6("dt", { children: "Total received" }),
|
|
3156
|
+
/* @__PURE__ */ jsx6("dd", { children: currency(remittance.totalPostedCash) })
|
|
3157
|
+
] }),
|
|
3158
|
+
/* @__PURE__ */ jsxs6("div", { children: [
|
|
3159
|
+
/* @__PURE__ */ jsx6("dt", { children: "Expected" }),
|
|
3160
|
+
/* @__PURE__ */ jsx6("dd", { children: currency(remittance.expectedAmount) })
|
|
3161
|
+
] })
|
|
3162
|
+
] }),
|
|
3163
|
+
remittance.denialReason ? /* @__PURE__ */ jsxs6("div", { className: "mb-denial", children: [
|
|
3164
|
+
/* @__PURE__ */ jsx6("strong", { children: "Denial reason" }),
|
|
3165
|
+
/* @__PURE__ */ jsx6("p", { children: remittance.denialReason })
|
|
3166
|
+
] }) : null,
|
|
3167
|
+
/* @__PURE__ */ jsx6("div", { className: "mb-eor-table-wrap", children: /* @__PURE__ */ jsxs6("table", { className: "mb-eor-table", children: [
|
|
3168
|
+
/* @__PURE__ */ jsxs6("thead", { children: [
|
|
3169
|
+
/* @__PURE__ */ jsxs6("tr", { className: "mb-eor-groups", children: [
|
|
3170
|
+
/* @__PURE__ */ jsx6("th", { colSpan: 2, children: "Submission" }),
|
|
3171
|
+
/* @__PURE__ */ jsx6("th", { colSpan: 5, children: "EOR payment information" }),
|
|
3172
|
+
/* @__PURE__ */ jsx6("th", { colSpan: 2, children: "EOR post" }),
|
|
3173
|
+
/* @__PURE__ */ jsx6("th", { children: "EOR" })
|
|
3174
|
+
] }),
|
|
3175
|
+
/* @__PURE__ */ jsxs6("tr", { children: [
|
|
3176
|
+
/* @__PURE__ */ jsx6("th", { children: "Submission" }),
|
|
3177
|
+
/* @__PURE__ */ jsx6("th", { children: "Submission payment" }),
|
|
3178
|
+
/* @__PURE__ */ jsx6("th", { children: "Payment method" }),
|
|
3179
|
+
/* @__PURE__ */ jsx6("th", { children: "Reference" }),
|
|
3180
|
+
/* @__PURE__ */ jsx6("th", { children: "Effective date" }),
|
|
3181
|
+
/* @__PURE__ */ jsx6("th", { children: "Payment total" }),
|
|
3182
|
+
/* @__PURE__ */ jsx6("th", { children: "Deposit date" }),
|
|
3183
|
+
/* @__PURE__ */ jsx6("th", { children: "Post date" }),
|
|
3184
|
+
/* @__PURE__ */ jsx6("th", { children: "Source" }),
|
|
3185
|
+
/* @__PURE__ */ jsx6("th", { children: "Document" })
|
|
3186
|
+
] })
|
|
3187
|
+
] }),
|
|
3188
|
+
/* @__PURE__ */ jsx6("tbody", { children: rows.map((payment, index) => {
|
|
3189
|
+
const eor = eors[index] ?? eors[0];
|
|
3190
|
+
return /* @__PURE__ */ jsxs6("tr", { children: [
|
|
3191
|
+
/* @__PURE__ */ jsxs6("td", { "data-label": "Submission", children: [
|
|
3192
|
+
/* @__PURE__ */ jsx6("strong", { children: "Original bill" }),
|
|
3193
|
+
submittedAt ? /* @__PURE__ */ jsxs6("span", { children: [
|
|
3194
|
+
"Sent ",
|
|
3195
|
+
defaultFormatDate(submittedAt)
|
|
3196
|
+
] }) : null
|
|
3197
|
+
] }),
|
|
3198
|
+
/* @__PURE__ */ jsx6("td", { "data-label": "Submission payment", children: remittance.payerReportedPaid === null ? "\u2014" : currency(remittance.payerReportedPaid) }),
|
|
3199
|
+
/* @__PURE__ */ jsx6("td", { "data-label": "Payment method", children: payment ? humanize(payment.method) : "\u2014" }),
|
|
3200
|
+
/* @__PURE__ */ jsx6("td", { "data-label": "Reference", children: payment?.checkNumber || "\u2014" }),
|
|
3201
|
+
/* @__PURE__ */ jsx6("td", { "data-label": "Effective date", children: payment ? payment.receivedDate || payment.depositDate || defaultFormatDate(payment.postedAt) : "\u2014" }),
|
|
3202
|
+
/* @__PURE__ */ jsx6("td", { "data-label": "Payment total", children: payment ? currency(payment.amount) : currency(0) }),
|
|
3203
|
+
/* @__PURE__ */ jsx6("td", { "data-label": "Deposit date", children: payment?.depositDate || "Not recorded" }),
|
|
3204
|
+
/* @__PURE__ */ jsx6("td", { "data-label": "Post date", children: payment ? defaultFormatDate(payment.postedAt) : eor ? defaultFormatDate(eor.addedAt) : "\u2014" }),
|
|
3205
|
+
/* @__PURE__ */ jsx6("td", { "data-label": "Source", children: payment ? payment.source.toUpperCase() : eor ? "EOR" : "\u2014" }),
|
|
3206
|
+
/* @__PURE__ */ jsx6("td", { "data-label": "EOR", children: eor && onOpenEor ? /* @__PURE__ */ jsx6("button", { type: "button", className: "mb-eor-link", onClick: () => void onOpenEor(eor), children: eor.filename }) : eor?.filename || "\u2014" })
|
|
3207
|
+
] }, payment?.id ?? `empty-${index}`);
|
|
3208
|
+
}) })
|
|
3209
|
+
] }) }),
|
|
3210
|
+
eors.length > rows.length ? /* @__PURE__ */ jsx6("div", { className: "mb-eor-documents", children: eors.slice(rows.length).map((eor) => /* @__PURE__ */ jsx6("button", { type: "button", onClick: () => void onOpenEor?.(eor), children: eor.filename }, eor.id)) }) : null
|
|
3211
|
+
] });
|
|
3212
|
+
}
|
|
3028
3213
|
function BillRemittanceCard({ remittance, appearance, className, style }) {
|
|
3029
3214
|
return /* @__PURE__ */ jsxs6("section", { className: classes("mb-surface mb-remittance", className), style: mindBillAppearanceStyle(appearance, style), "aria-label": "Remittance summary", children: [
|
|
3030
3215
|
/* @__PURE__ */ jsx6("style", { children: lifecycleSurfaceStyles }),
|
|
@@ -3171,6 +3356,7 @@ var lifecycleSurfaceStyles = `
|
|
|
3171
3356
|
.mb-progress-list{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));list-style:none;margin:0;padding:0}.mb-progress-list li{display:grid;gap:7px;position:relative;text-align:center;color:var(--mb-muted);font-size:12px}.mb-progress-list li:not(:last-child)::after{content:"";position:absolute;left:calc(50% + 14px);right:calc(-50% + 14px);top:13px;height:2px;background:var(--mb-border)}.mb-progress-list li.is-complete:not(:last-child)::after{background:var(--mb-accent)}.mb-progress-list li>span{display:grid;place-items:center;justify-self:center;position:relative;z-index:1;width:28px;height:28px;border:2px solid var(--mb-border);border-radius:50%;background:var(--mb-surface);font-weight:800}.mb-progress-list li.is-complete>span,.mb-progress-list li.is-current>span{border-color:var(--mb-accent);background:var(--mb-accent);color:var(--mb-accent-contrast)}.mb-progress-list li.is-current{color:var(--mb-text)}
|
|
3172
3357
|
.mb-snapshot dl,.mb-remittance dl,.mb-contacts dl{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;margin:0}.mb-remittance dl{grid-template-columns:repeat(4,minmax(0,1fr));row-gap:1px;background:var(--mb-border)}.mb-snapshot dl>div,.mb-remittance dl>div,.mb-contacts dl>div{display:grid;gap:3px;padding:10px 14px;border-left:1px solid var(--mb-border)}.mb-remittance dl>div{border:0;background:var(--mb-surface)}.mb-snapshot dl>div:nth-child(3n+1),.mb-contacts dl>div:first-child{border-left:0}.mb-snapshot dt,.mb-remittance dt,.mb-contacts dt,.mb-payment-list dt{color:var(--mb-muted);font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.mb-snapshot dd,.mb-remittance dd,.mb-contacts dd,.mb-payment-list dd{font-size:14px;font-weight:750;margin:0;overflow-wrap:anywhere}.mb-contacts a{color:var(--mb-accent)}.mb-denial{margin-top:16px;border-left:4px solid var(--mb-danger);border-radius:var(--mb-control-radius);background:color-mix(in srgb,var(--mb-danger) 8%,var(--mb-surface));padding:12px 14px}.mb-denial p{margin:4px 0 0}
|
|
3173
3358
|
.mb-payment-list{display:grid}.mb-payment-list article{display:grid;grid-template-columns:minmax(120px,.35fr) 1fr;gap:14px 24px;padding:16px 0;border-top:1px solid var(--mb-border)}.mb-payment-list article:first-child{border-top:0}.mb-payment-amount{display:grid;align-content:start;gap:2px}.mb-payment-amount strong{font-size:1.2rem}.mb-payment-list article>dl{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:0}.mb-payment-list article>dl>div{display:grid;align-content:start;gap:3px}.mb-payment-list article span{color:var(--mb-muted);font-size:12px}.mb-payment-list article p{grid-column:1/-1;margin:0;color:var(--mb-muted);font-size:13px}
|
|
3359
|
+
.mb-eor-review{border-top:4px solid var(--mb-accent);padding-top:17px}.mb-eor-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin:0 0 18px;border:1px solid var(--mb-border);border-radius:10px;overflow:hidden}.mb-eor-metrics>div{display:grid;gap:4px;padding:13px 15px;border-left:1px solid var(--mb-border);border-top:1px solid var(--mb-border)}.mb-eor-metrics>div:nth-child(-n+4){border-top:0}.mb-eor-metrics>div:nth-child(4n+1){border-left:0}.mb-eor-metrics dt{color:var(--mb-muted);font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.mb-eor-metrics dd{margin:0;font-size:15px;font-weight:800}.mb-eor-metrics .is-balance{background:color-mix(in srgb,var(--mb-accent) 7%,var(--mb-surface))}.mb-eor-table-wrap{overflow-x:auto;border:1px solid var(--mb-border);border-radius:10px}.mb-eor-table{width:100%;min-width:1080px;border-collapse:collapse;font-size:12px}.mb-eor-table th,.mb-eor-table td{padding:10px 12px;border-left:1px solid var(--mb-border);border-top:1px solid var(--mb-border);text-align:left;vertical-align:top}.mb-eor-table th:first-child,.mb-eor-table td:first-child{border-left:0}.mb-eor-table thead th{background:var(--mb-soft);color:var(--mb-muted);font-weight:800}.mb-eor-table .mb-eor-groups th{border-top:0;background:color-mix(in srgb,var(--mb-accent) 13%,var(--mb-surface));color:var(--mb-text);text-align:center}.mb-eor-table td>strong,.mb-eor-table td>span{display:block}.mb-eor-table td>span{margin-top:3px;color:var(--mb-muted)}.mb-eor-link,.mb-eor-documents button{border:0;background:transparent;color:var(--mb-accent);font:inherit;font-weight:750;padding:0;text-align:left;text-decoration:underline;cursor:pointer;overflow-wrap:anywhere}.mb-eor-documents{display:flex;flex-wrap:wrap;gap:12px;margin-top:12px}
|
|
3174
3360
|
@media(max-width:700px){.mb-surface.mb-progress{padding:16px 10px}.mb-progress-list{grid-template-columns:repeat(4,minmax(0,1fr))}.mb-progress-list li{display:grid;grid-template-columns:1fr;align-items:start;gap:6px;text-align:center;font-size:10px;min-width:0}.mb-progress-list li b{font-size:10px;white-space:nowrap}.mb-progress-list li:not(:last-child)::after{left:calc(50% + 12px);right:calc(-50% + 12px);top:11px;bottom:auto;width:auto;height:2px}.mb-progress-list li>span{grid-row:auto;width:24px;height:24px;font-size:11px}.mb-snapshot dl,.mb-remittance dl,.mb-contacts dl{grid-template-columns:1fr 1fr}.mb-snapshot dl>div,.mb-remittance dl>div,.mb-contacts dl>div{border:0;border-top:1px solid var(--mb-border);padding:10px 0}.mb-snapshot dl>div:nth-child(-n+2),.mb-remittance dl>div:nth-child(-n+2),.mb-contacts dl>div:nth-child(-n+2){border-top:0}.mb-payment-list article{grid-template-columns:1fr}.mb-payment-list article>dl{grid-template-columns:1fr 1fr}}
|
|
3175
3361
|
`;
|
|
3176
3362
|
|
|
@@ -3190,23 +3376,24 @@ import {
|
|
|
3190
3376
|
import { createBillLifecycleClient as createBillLifecycleClient2 } from "@mindbill/browser";
|
|
3191
3377
|
import { Fragment as Fragment5, jsx as jsx7, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
3192
3378
|
var DEFAULT_REFRESH_INTERVAL2 = 6e4;
|
|
3193
|
-
function downloadBlob(blob, filename) {
|
|
3194
|
-
const url = URL.createObjectURL(blob);
|
|
3195
|
-
const link = document.createElement("a");
|
|
3196
|
-
link.href = url;
|
|
3197
|
-
link.rel = "noopener noreferrer";
|
|
3198
|
-
link.download = filename;
|
|
3199
|
-
link.click();
|
|
3200
|
-
window.setTimeout(() => URL.revokeObjectURL(url), 6e4);
|
|
3201
|
-
}
|
|
3202
3379
|
function reservePreviewWindow() {
|
|
3203
3380
|
const preview = window.open("about:blank", "_blank");
|
|
3204
|
-
if (preview)
|
|
3381
|
+
if (preview) {
|
|
3382
|
+
preview.opener = null;
|
|
3383
|
+
preview.document.open();
|
|
3384
|
+
preview.document.write('<!doctype html><title>Preparing PDF\u2026</title><meta name=viewport content="width=device-width,initial-scale=1"><style>body{margin:0;display:grid;place-items:center;min-height:100vh;font:16px system-ui;color:#42545a;background:#f5f8f8}</style><p>Preparing PDF preview\u2026</p>');
|
|
3385
|
+
preview.document.close();
|
|
3386
|
+
}
|
|
3205
3387
|
return preview;
|
|
3206
3388
|
}
|
|
3389
|
+
function renderPreview(preview, title, body) {
|
|
3390
|
+
preview.document.open();
|
|
3391
|
+
preview.document.write(`<!doctype html><title>${title}</title><meta name="viewport" content="width=device-width,initial-scale=1"><style>html,body{height:100%;margin:0;background:#202124;font:14px system-ui}iframe{width:100%;height:100%;border:0}.fallback{position:fixed;right:12px;top:12px;z-index:2;border-radius:8px;background:#fff;padding:9px 12px;color:#17282d;text-decoration:none;box-shadow:0 2px 12px #0005}</style>${body}`);
|
|
3392
|
+
preview.document.close();
|
|
3393
|
+
}
|
|
3207
3394
|
function previewBlob(blob, preview) {
|
|
3208
3395
|
const url = URL.createObjectURL(blob);
|
|
3209
|
-
if (preview) preview
|
|
3396
|
+
if (preview) renderPreview(preview, "PDF preview", `<a class="fallback" href="${url}" target="_self">Open PDF directly</a><iframe title="PDF preview" src="${url}"></iframe>`);
|
|
3210
3397
|
else {
|
|
3211
3398
|
const link = document.createElement("a");
|
|
3212
3399
|
link.href = url;
|
|
@@ -3214,7 +3401,16 @@ function previewBlob(blob, preview) {
|
|
|
3214
3401
|
link.rel = "noopener noreferrer";
|
|
3215
3402
|
link.click();
|
|
3216
3403
|
}
|
|
3217
|
-
window.setTimeout(() => URL.revokeObjectURL(url),
|
|
3404
|
+
window.setTimeout(() => URL.revokeObjectURL(url), 36e5);
|
|
3405
|
+
}
|
|
3406
|
+
async function openPdfFromUserGesture(loadPdf) {
|
|
3407
|
+
const preview = reservePreviewWindow();
|
|
3408
|
+
try {
|
|
3409
|
+
previewBlob(await loadPdf(), preview);
|
|
3410
|
+
} catch (error) {
|
|
3411
|
+
if (preview) renderPreview(preview, "PDF unavailable", '<p style="margin:0;padding:32px;color:#fff">The PDF could not be opened. Close this tab and try again.</p>');
|
|
3412
|
+
throw error;
|
|
3413
|
+
}
|
|
3218
3414
|
}
|
|
3219
3415
|
function useBillLifecycle({
|
|
3220
3416
|
billId: providedBillId,
|
|
@@ -3294,27 +3490,21 @@ function useBillLifecycle({
|
|
|
3294
3490
|
}
|
|
3295
3491
|
}, []);
|
|
3296
3492
|
const openAttachment = useCallback3(async (attachment) => {
|
|
3297
|
-
|
|
3298
|
-
try {
|
|
3299
|
-
previewBlob(await client.getAttachment(attachment.id), preview);
|
|
3300
|
-
} catch (error2) {
|
|
3301
|
-
preview?.close();
|
|
3302
|
-
throw error2;
|
|
3303
|
-
}
|
|
3493
|
+
await openPdfFromUserGesture(() => client.getAttachment(attachment.id));
|
|
3304
3494
|
}, [client]);
|
|
3305
3495
|
const openEor = useCallback3(async (document2) => {
|
|
3306
|
-
|
|
3496
|
+
await openPdfFromUserGesture(() => client.getEor(document2.id));
|
|
3497
|
+
}, [client]);
|
|
3498
|
+
const downloadPacket = useCallback3(async () => {
|
|
3499
|
+
setError(null);
|
|
3307
3500
|
try {
|
|
3308
|
-
|
|
3309
|
-
} catch (
|
|
3310
|
-
|
|
3311
|
-
|
|
3501
|
+
await openPdfFromUserGesture(() => client.getPacket());
|
|
3502
|
+
} catch (cause) {
|
|
3503
|
+
const nextError = cause instanceof Error ? cause : new Error("Submission packet could not be opened.");
|
|
3504
|
+
if (mounted.current) setError(nextError);
|
|
3505
|
+
throw nextError;
|
|
3312
3506
|
}
|
|
3313
3507
|
}, [client]);
|
|
3314
|
-
const downloadPacket = useCallback3(async () => {
|
|
3315
|
-
const packet = await client.getPacket();
|
|
3316
|
-
downloadBlob(packet, `mindbill-${data?.bill.billNumber ?? providedBillId}-submission-packet.pdf`);
|
|
3317
|
-
}, [client, data?.bill.billNumber, providedBillId]);
|
|
3318
3508
|
return {
|
|
3319
3509
|
billId: providedBillId,
|
|
3320
3510
|
data,
|
|
@@ -3431,13 +3621,10 @@ function ConnectedBillLifecycle({ appearance, className, style, loadingFallback,
|
|
|
3431
3621
|
/* @__PURE__ */ jsx7(BillLifecycleProgress, { state: data.lifecycle.state, nativeStatus: data.lifecycle.nativeStatus, submittedAt: data.lifecycle.submittedAt ?? null, agingDays: data.lifecycle.agingDays ?? null, ...appearance ? { appearance } : {} }),
|
|
3432
3622
|
/* @__PURE__ */ jsxs7("header", { className: "mb-lifecycle-head", children: [
|
|
3433
3623
|
/* @__PURE__ */ jsxs7("div", { children: [
|
|
3434
|
-
/* @__PURE__ */
|
|
3435
|
-
|
|
3436
|
-
|
|
3437
|
-
|
|
3438
|
-
] }),
|
|
3439
|
-
/* @__PURE__ */ jsx7("span", { children: billLifecycleDisplayLabel(data.lifecycle.state, data.lifecycle.nativeStatus) })
|
|
3440
|
-
] }),
|
|
3624
|
+
/* @__PURE__ */ jsx7("div", { className: "mb-lifecycle-title", children: /* @__PURE__ */ jsxs7("h2", { children: [
|
|
3625
|
+
"Bill #",
|
|
3626
|
+
data.bill.billNumber
|
|
3627
|
+
] }) }),
|
|
3441
3628
|
/* @__PURE__ */ jsxs7("p", { children: [
|
|
3442
3629
|
"Claim ",
|
|
3443
3630
|
data.injury.claimNumber || "\u2014",
|
|
@@ -3450,52 +3637,28 @@ function ConnectedBillLifecycle({ appearance, className, style, loadingFallback,
|
|
|
3450
3637
|
/* @__PURE__ */ jsx7("button", { type: "button", role: "tab", "aria-selected": tab === "details", onClick: () => setTab("details"), children: "Bill details" }),
|
|
3451
3638
|
/* @__PURE__ */ jsx7("button", { type: "button", role: "tab", "aria-selected": tab === "history", onClick: () => setTab("history"), children: "Bill history" })
|
|
3452
3639
|
] }),
|
|
3453
|
-
data.environment === "sandbox" ? /* @__PURE__ */ jsxs7("section", { className: "mb-lifecycle-simulator", "aria-label": "Sandbox lifecycle simulator", children: [
|
|
3454
|
-
/* @__PURE__ */ jsxs7("div", { children: [
|
|
3455
|
-
/* @__PURE__ */ jsx7("span", { children: "Sandbox demo controls" }),
|
|
3456
|
-
/* @__PURE__ */ jsx7("h3", { children: "Simulate the next payer response" }),
|
|
3457
|
-
/* @__PURE__ */ jsx7("p", { children: "This changes sandbox data only. QME Companion receives the result through the same lifecycle API and components partners use." })
|
|
3458
|
-
] }),
|
|
3459
|
-
simulations.length ? /* @__PURE__ */ jsx7("div", { className: "mb-lifecycle-simulator-actions", children: simulations.map((scenario) => /* @__PURE__ */ jsxs7("button", { type: "button", disabled: lifecycle.isMutating, onClick: () => void complete(`${scenario.label} simulated.`, () => lifecycle.simulateSandbox({ scenario: scenario.id })), children: [
|
|
3460
|
-
/* @__PURE__ */ jsx7("strong", { children: scenario.label }),
|
|
3461
|
-
/* @__PURE__ */ jsx7("span", { children: scenario.detail })
|
|
3462
|
-
] }, scenario.id)) }) : /* @__PURE__ */ jsx7("p", { className: "mb-lifecycle-simulator-idle", children: "No simulated payer transition is needed at this stage. Use the bill action below to continue." })
|
|
3463
|
-
] }) : null,
|
|
3464
3640
|
tab === "details" ? /* @__PURE__ */ jsxs7("div", { className: "mb-lifecycle-tabpanel", role: "tabpanel", children: [
|
|
3465
|
-
/* @__PURE__ */ jsx7(
|
|
3466
|
-
/* @__PURE__ */
|
|
3467
|
-
|
|
3468
|
-
|
|
3469
|
-
/* @__PURE__ */ jsx7("h3", { children: "
|
|
3470
|
-
/* @__PURE__ */ jsx7("p", { children: "The
|
|
3471
|
-
] })
|
|
3472
|
-
/* @__PURE__ */ jsx7("
|
|
3473
|
-
/* @__PURE__ */
|
|
3474
|
-
|
|
3475
|
-
|
|
3476
|
-
] }),
|
|
3477
|
-
/* @__PURE__ */ jsx7("button", { type: "button", className: "mb-lifecycle-button secondary", onClick: () => void lifecycle.openEor(eor).catch(() => void 0), children: "View EOR" })
|
|
3478
|
-
] }, eor.id)) })
|
|
3641
|
+
data.eors.length || data.payments.length || ["processed", "denied", "partially_paid"].includes(data.lifecycle.state) ? /* @__PURE__ */ jsx7(BillExplanationOfReview, { remittance: data.remittance, eors: data.eors, payments: data.payments, submittedAt: data.lifecycle.submittedAt ?? null, onOpenEor: lifecycle.openEor, ...appearance ? { appearance } : {} }) : null,
|
|
3642
|
+
data.environment === "sandbox" ? /* @__PURE__ */ jsxs7("section", { className: "mb-lifecycle-simulator", "aria-label": "Sandbox lifecycle simulator", children: [
|
|
3643
|
+
/* @__PURE__ */ jsxs7("div", { children: [
|
|
3644
|
+
/* @__PURE__ */ jsx7("span", { children: "Sandbox demo controls" }),
|
|
3645
|
+
/* @__PURE__ */ jsx7("h3", { children: "Simulate the next payer response" }),
|
|
3646
|
+
/* @__PURE__ */ jsx7("p", { children: "This changes sandbox data only. The host receives the result through the same lifecycle API and components partners use." })
|
|
3647
|
+
] }),
|
|
3648
|
+
simulations.length ? /* @__PURE__ */ jsx7("div", { className: "mb-lifecycle-simulator-actions", children: simulations.map((scenario) => /* @__PURE__ */ jsxs7("button", { type: "button", disabled: lifecycle.isMutating, onClick: () => void complete(`${scenario.label} simulated.`, () => lifecycle.simulateSandbox({ scenario: scenario.id })), children: [
|
|
3649
|
+
/* @__PURE__ */ jsx7("strong", { children: scenario.label }),
|
|
3650
|
+
/* @__PURE__ */ jsx7("span", { children: scenario.detail })
|
|
3651
|
+
] }, scenario.id)) }) : /* @__PURE__ */ jsx7("p", { className: "mb-lifecycle-simulator-idle", children: "No simulated payer transition is needed at this stage. Use the bill action below to continue." })
|
|
3479
3652
|
] }) : null,
|
|
3480
|
-
/* @__PURE__ */ jsx7(
|
|
3481
|
-
viewEor || actions.length ? /* @__PURE__ */ jsx7("button", { type: "button", className: "mb-lifecycle-button secondary mb-lifecycle-actions-trigger", onClick: () => setPanel("actions"), children: "Bill actions" }) : null
|
|
3653
|
+
/* @__PURE__ */ jsx7(BillReadOnlyForm, { data, onOpenAttachment: lifecycle.openAttachment, ...appearance ? { appearance } : {} })
|
|
3482
3654
|
] }) : /* @__PURE__ */ jsx7("div", { className: "mb-lifecycle-tabpanel", role: "tabpanel", children: /* @__PURE__ */ jsx7(BillActivityTimeline, { events: data.activity, ...appearance ? { appearance } : {} }) }),
|
|
3483
|
-
|
|
3484
|
-
/* @__PURE__ */
|
|
3485
|
-
|
|
3486
|
-
|
|
3487
|
-
|
|
3488
|
-
|
|
3489
|
-
|
|
3490
|
-
setPanel("");
|
|
3491
|
-
document.getElementById(`mb-eors-${data.bill.id}`)?.scrollIntoView({ behavior: "smooth" });
|
|
3492
|
-
}, children: viewEor.label }) : null,
|
|
3493
|
-
actions.map((action) => /* @__PURE__ */ jsx7("button", { type: "button", className: action.primary ? "mb-lifecycle-button primary" : "mb-lifecycle-button secondary", onClick: () => {
|
|
3494
|
-
const next = actionPanel(action);
|
|
3495
|
-
if (next) setPanel(next);
|
|
3496
|
-
}, children: action.label }, action.id))
|
|
3497
|
-
] })
|
|
3498
|
-
] }) }) : null,
|
|
3655
|
+
viewEor || actions.length ? /* @__PURE__ */ jsxs7("aside", { className: "mb-lifecycle-actions-sheet", "aria-label": "Bill actions", children: [
|
|
3656
|
+
viewEor && data.eors[0] ? /* @__PURE__ */ jsx7("button", { type: "button", className: "mb-lifecycle-button secondary", onClick: () => void lifecycle.openEor(data.eors[0]).catch(() => void 0), children: viewEor.label }) : null,
|
|
3657
|
+
actions.map((action) => /* @__PURE__ */ jsx7("button", { type: "button", className: action.primary ? "mb-lifecycle-button primary" : "mb-lifecycle-button secondary", onClick: () => {
|
|
3658
|
+
const next = actionPanel(action);
|
|
3659
|
+
if (next) setPanel(next);
|
|
3660
|
+
}, children: action.label }, action.id))
|
|
3661
|
+
] }) : null,
|
|
3499
3662
|
panel === "resubmit" ? /* @__PURE__ */ jsx7(LifecycleDialog, { title: "Correct and resubmit", onClose: () => setPanel(""), children: /* @__PURE__ */ jsxs7("section", { className: "mb-lifecycle-panel", children: [
|
|
3500
3663
|
/* @__PURE__ */ jsxs7("div", { children: [
|
|
3501
3664
|
/* @__PURE__ */ jsx7("h3", { children: "Correct and resubmit" }),
|
|
@@ -3621,9 +3784,9 @@ function ConnectedBillLifecycle({ appearance, className, style, loadingFallback,
|
|
|
3621
3784
|
}
|
|
3622
3785
|
var CONNECTED_LIFECYCLE_STYLES = `
|
|
3623
3786
|
.mb-lifecycle-simulator{display:grid;gap:14px;padding:18px;border:1px solid #b8dadd;border-radius:var(--mb-radius,14px);background:#f2fbfb}.mb-lifecycle-simulator>div:first-child>span{color:var(--mb-accent);font-size:.72rem;font-weight:850;letter-spacing:.09em;text-transform:uppercase}.mb-lifecycle-simulator h3{margin:3px 0 0;font-size:1.05rem}.mb-lifecycle-simulator p{margin:4px 0 0;color:var(--mb-muted)}.mb-lifecycle-simulator-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px}.mb-lifecycle-simulator-actions button{min-height:76px;border:1px solid #a9cccf;border-radius:10px;background:var(--mb-surface);color:var(--mb-text);cursor:pointer;padding:12px 14px;text-align:left;font:inherit}.mb-lifecycle-simulator-actions button:hover{border-color:var(--mb-accent);box-shadow:0 3px 14px rgba(23,108,112,.1)}.mb-lifecycle-simulator-actions button:disabled{cursor:not-allowed;opacity:.55}.mb-lifecycle-simulator-actions button strong,.mb-lifecycle-simulator-actions button span{display:block}.mb-lifecycle-simulator-actions button span{margin-top:3px;color:var(--mb-muted);font-size:.83rem}.mb-lifecycle-simulator-idle{padding:10px 12px;border-radius:8px;background:rgba(255,255,255,.72)}
|
|
3624
|
-
.mb-connected-lifecycle{--mb-accent:#176c70;--mb-text:#17282d;--mb-muted:#607176;--mb-border:#d7e0df;--mb-soft:#f4f7f6;--mb-surface:#fff;display:grid;gap:18px;color:var(--mb-text);font:14px/1.45 var(--mb-font,Inter,ui-sans-serif,system-ui,sans-serif)}.mb-connected-lifecycle *{box-sizing:border-box}.mb-lifecycle-head{display:flex;align-items:center;justify-content:space-between;gap:20px}.mb-lifecycle-title{display:flex;align-items:center;flex-wrap:wrap;gap:10px}.mb-lifecycle-title h2{margin:0;font-size:1.7rem}.mb-lifecycle-
|
|
3787
|
+
.mb-connected-lifecycle{--mb-accent:#176c70;--mb-text:#17282d;--mb-muted:#607176;--mb-border:#d7e0df;--mb-soft:#f4f7f6;--mb-surface:#fff;display:grid;gap:18px;color:var(--mb-text);font:14px/1.45 var(--mb-font,Inter,ui-sans-serif,system-ui,sans-serif)}.mb-connected-lifecycle *{box-sizing:border-box}.mb-lifecycle-head{display:flex;align-items:center;justify-content:space-between;gap:20px}.mb-lifecycle-title{display:flex;align-items:center;flex-wrap:wrap;gap:10px}.mb-lifecycle-title h2{margin:0;font-size:1.7rem}.mb-lifecycle-head p{margin:3px 0 0;color:var(--mb-muted)}.mb-lifecycle-tabs{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--mb-border);border-radius:12px;background:var(--mb-surface);padding:6px}.mb-lifecycle-tabs button{min-height:46px;border:0;border-radius:8px;background:transparent;color:var(--mb-muted);font:inherit;font-size:1rem;font-weight:750;cursor:pointer}.mb-lifecycle-tabs button[aria-selected=true]{background:var(--mb-accent);color:white}.mb-lifecycle-tabpanel{display:grid;gap:18px}.mb-lifecycle-button{min-height:40px;border:1px solid var(--mb-border);border-radius:var(--mb-control-radius,8px);background:var(--mb-input,#fff);color:var(--mb-text);cursor:pointer;font:inherit;font-weight:750;padding:9px 14px}.mb-lifecycle-button.primary{border-color:var(--mb-accent);background:var(--mb-accent);color:var(--mb-accent-contrast,#fff)}.mb-lifecycle-button:disabled{cursor:not-allowed;opacity:.5}.mb-lifecycle-actions-sheet{position:sticky;bottom:12px;z-index:24;display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:9px;padding:10px;border:1px solid var(--mb-border);border-radius:12px;background:color-mix(in srgb,var(--mb-surface) 94%,transparent);box-shadow:0 10px 34px rgba(18,35,43,.16);backdrop-filter:blur(12px)}.mb-lifecycle-card,.mb-lifecycle-panel{padding:20px;border:1px solid var(--mb-border);border-radius:var(--mb-radius,14px);background:var(--mb-surface)}.mb-lifecycle-card header{display:flex;align-items:center;justify-content:space-between;gap:20px}.mb-lifecycle-card h3,.mb-lifecycle-panel h3{margin:0;font-size:1.08rem}.mb-lifecycle-card p,.mb-lifecycle-panel p{margin:3px 0 0;color:var(--mb-muted)}.mb-lifecycle-card header>span{display:grid;place-items:center;min-width:28px;height:28px;border-radius:999px;background:var(--mb-soft);font-weight:750}.mb-lifecycle-documents{list-style:none;margin:14px 0 0;padding:0}.mb-lifecycle-documents li{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 0;border-top:1px solid var(--mb-border)}.mb-lifecycle-documents li>div{display:grid;gap:3px;min-width:0}.mb-lifecycle-documents li span{color:var(--mb-muted);font-size:.85rem}.mb-lifecycle-dialog-backdrop{position:fixed;z-index:2147483000;inset:0;display:grid;place-items:center;padding:20px;background:rgba(18,35,43,.56);backdrop-filter:blur(3px)}.mb-lifecycle-dialog{position:relative;width:min(760px,100%);max-height:calc(100vh - 40px);overflow:auto;outline:0}.mb-lifecycle-dialog-close{position:absolute;z-index:1;top:12px;right:12px;width:34px;height:34px;border:1px solid var(--mb-border);border-radius:8px;background:var(--mb-surface);color:var(--mb-text);cursor:pointer;font:22px/1 inherit}.mb-lifecycle-panel{display:grid;gap:17px;padding-top:24px;box-shadow:0 24px 70px rgba(18,35,43,.22)}.mb-lifecycle-panel label{display:grid;gap:6px;font-size:.85rem;font-weight:750}.mb-lifecycle-panel label small{color:var(--mb-muted);font-weight:500}.mb-lifecycle-panel input,.mb-lifecycle-panel select,.mb-lifecycle-panel textarea{width:100%;min-height:44px;border:1px solid var(--mb-border);border-radius:var(--mb-control-radius,8px);background:var(--mb-input,#fff);color:var(--mb-text);font:inherit;padding:10px 12px}.mb-lifecycle-panel textarea{min-height:100px;resize:vertical}.mb-lifecycle-fields{display:grid;gap:13px}.mb-lifecycle-fields.two{grid-template-columns:repeat(2,minmax(0,1fr))}.mb-lifecycle-fields .full{grid-column:1/-1}.mb-lifecycle-panel-actions{display:flex;justify-content:flex-end;gap:8px}.mb-lifecycle-packet{display:grid;gap:0;margin:0;padding:0;border:0}.mb-lifecycle-packet legend{margin-bottom:7px;font-size:.85rem;font-weight:800}.mb-lifecycle-packet>label{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;padding:10px 2px;border-top:1px solid var(--mb-border)}.mb-lifecycle-packet>label>input{width:16px;min-height:16px}.mb-lifecycle-packet>label>span{display:grid}.mb-lifecycle-packet button{border:0;background:transparent;color:var(--mb-accent);cursor:pointer;font:inherit}.mb-lifecycle-message,.mb-lifecycle-error,.mb-lifecycle-loading{padding:12px 14px;border-radius:9px}.mb-lifecycle-message.success{background:#edf9f2;color:#217449}.mb-lifecycle-message.error,.mb-lifecycle-error{background:#fff0ef;color:#9d3029}.mb-lifecycle-error{display:flex;align-items:center;gap:12px}.mb-lifecycle-error span{flex:1}.mb-lifecycle-error button{border:1px solid currentColor;border-radius:7px;background:transparent;color:inherit;padding:7px 10px}
|
|
3625
3788
|
.mb-payment-total{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border-radius:9px;background:var(--mb-soft)}.mb-payment-total strong{font-size:1.12rem}
|
|
3626
|
-
@media(max-width:700px){.mb-lifecycle-head,.mb-lifecycle-
|
|
3789
|
+
@media(max-width:700px){.mb-lifecycle-head,.mb-lifecycle-card header{align-items:stretch;flex-direction:column}.mb-lifecycle-head>.mb-lifecycle-button{width:100%}.mb-lifecycle-actions-sheet{bottom:calc(var(--mb-host-bottom-offset,72px) + env(safe-area-inset-bottom) + 8px);grid-template-columns:repeat(2,minmax(0,1fr))}.mb-lifecycle-actions-sheet .mb-lifecycle-button:last-child:nth-child(odd){grid-column:1/-1}.mb-lifecycle-fields.two{grid-template-columns:1fr}.mb-lifecycle-fields .full{grid-column:auto}.mb-lifecycle-dialog-backdrop{align-items:end;padding:0}.mb-lifecycle-dialog{max-height:92vh}.mb-lifecycle-dialog .mb-lifecycle-panel{border-radius:18px 18px 0 0}.mb-lifecycle-tabs button{font-size:.9rem}.mb-lifecycle-title h2{font-size:1.4rem}}
|
|
3627
3790
|
`;
|
|
3628
3791
|
|
|
3629
3792
|
// src/index.tsx
|
|
@@ -3673,6 +3836,7 @@ export {
|
|
|
3673
3836
|
BILL_SUBMISSION_REQUIRED_FIELDS,
|
|
3674
3837
|
BillActivityTimeline,
|
|
3675
3838
|
BillAgingSummary,
|
|
3839
|
+
BillExplanationOfReview,
|
|
3676
3840
|
BillLifecycleActions,
|
|
3677
3841
|
BillLifecycleProgress,
|
|
3678
3842
|
BillList,
|