@mindbill/react 0.52.0 → 0.52.1
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 +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +19 -15
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -214,7 +214,7 @@ The component includes the interaction model, not just the markup:
|
|
|
214
214
|
- complete, server-backed ICD-10 search with an alphabetized 100-code first page, automatic 100-code scroll paging, common-injury quick picks, and removable chips;
|
|
215
215
|
- an authenticated claims-administrator browser that opens to an alphabetized 50-item page, loads later pages on scroll, searches from the first character, and preserves exact-name and claim-number evidence;
|
|
216
216
|
- explicit routing-payer selection when the administrator requires it, with aliases, affiliated entities, claim-number hints, delivery type, clearinghouse routes, and payer identifiers shown in context;
|
|
217
|
-
- QME, AME, and Psych
|
|
217
|
+
- QME, AME, Psych QME, and Psych AME evaluation modes with medical-legal modifier defaults; psychiatric QME evaluations combine `95` and `96`, while psychiatric AME evaluations combine `94` and `96`. Both psychiatric modes seed `Z04.6` when no more specific diagnosis was supplied, and exposes it as a Psych quick pick;
|
|
218
218
|
- a searchable rendering-provider taxonomy combobox that accepts either a human-readable specialty search or an exact 10-character taxonomy code;
|
|
219
219
|
- searchable workers-comp procedure/modifier controls, medical-legal fee-schedule amounts, totals, valid manual CPT/HCPCS entry, and an automatically maintained empty line;
|
|
220
220
|
- removable source documents with new-tab previews and a full-width click, panel-drop, or whole-page PDF upload area. Auto-attached documents can be removable when the host sets `removable: true`; otherwise they remain locked by default. Med-legal mode assigns every document to `J4 - Med-Legal Report` without showing another control; professional mode shows the complete searchable PWK01 report-type directory. Override that presentation with `attachmentReportTypeMode`, `attachmentReportTypes`, and `defaultAttachmentReportType`.
|
package/dist/index.d.ts
CHANGED
|
@@ -188,7 +188,7 @@ type BillSubmissionReportTypeOption = {
|
|
|
188
188
|
};
|
|
189
189
|
declare const MED_LEGAL_REPORT_TYPE_CODE = "OZ:J4";
|
|
190
190
|
declare const BILL_SUBMISSION_REPORT_TYPES: readonly BillSubmissionReportTypeOption[];
|
|
191
|
-
type BillSubmissionEvaluationType = "qme" | "ame" | "psych_qme";
|
|
191
|
+
type BillSubmissionEvaluationType = "qme" | "ame" | "psych_qme" | "psych_ame";
|
|
192
192
|
type BillSubmissionAddress = {
|
|
193
193
|
line1: string;
|
|
194
194
|
line2?: string;
|
|
@@ -441,7 +441,7 @@ declare function parseBillSubmissionDate(value: string): string | undefined;
|
|
|
441
441
|
declare function formatBillSubmissionDate(value: string | null | undefined): string;
|
|
442
442
|
declare function applyBillSubmissionEvaluationModifiers(lines: BillSubmissionInput$1["serviceLines"], type: BillSubmissionEvaluationType): BillSubmissionInput$1["serviceLines"];
|
|
443
443
|
declare const PSYCH_QME_DEFAULT_DIAGNOSIS = "Z04.6";
|
|
444
|
-
/** Seed
|
|
444
|
+
/** Seed the psychiatric examination code only when no diagnosis was supplied. */
|
|
445
445
|
declare function applyBillSubmissionEvaluationDiagnoses(diagnoses: string[] | undefined, type: BillSubmissionEvaluationType): string[];
|
|
446
446
|
declare function validateBillSubmission(bill: BillSubmissionInput$1): BillSubmissionValidation;
|
|
447
447
|
declare function normalizeClaimsAdministratorName(value: string): string;
|
package/dist/index.js
CHANGED
|
@@ -2474,27 +2474,31 @@ function formatBillSubmissionDate(value) {
|
|
|
2474
2474
|
const [year, month, day] = parsed.split("-");
|
|
2475
2475
|
return `${month}/${day}/${year}`;
|
|
2476
2476
|
}
|
|
2477
|
-
function
|
|
2478
|
-
|
|
2479
|
-
if (
|
|
2480
|
-
|
|
2481
|
-
return "95";
|
|
2477
|
+
function evaluationModifiers(type, code) {
|
|
2478
|
+
const normalizedCode = code.toUpperCase();
|
|
2479
|
+
if (!/^ML(?:200|201|202|203|PRR)$/.test(normalizedCode)) return [];
|
|
2480
|
+
const isAme = type === "ame" || type === "psych_ame";
|
|
2481
|
+
if (normalizedCode === "ML200" || normalizedCode === "MLPRR") return isAme ? [] : ["95"];
|
|
2482
|
+
const modifiers = [isAme ? "94" : "95"];
|
|
2483
|
+
if (type === "psych_qme" || type === "psych_ame") modifiers.push("96");
|
|
2484
|
+
return modifiers;
|
|
2482
2485
|
}
|
|
2483
2486
|
function applyBillSubmissionEvaluationModifiers(lines, type) {
|
|
2484
2487
|
return lines.map((line) => {
|
|
2485
|
-
const auto =
|
|
2488
|
+
const auto = evaluationModifiers(type, line.code);
|
|
2486
2489
|
const modifiers = (line.modifiers ?? []).filter((item) => !["94", "95", "96"].includes(item.replace(/^-/, "")));
|
|
2487
|
-
return { ...line, modifiers:
|
|
2490
|
+
return { ...line, modifiers: [...auto, ...modifiers] };
|
|
2488
2491
|
});
|
|
2489
2492
|
}
|
|
2490
2493
|
var PSYCH_QME_DEFAULT_DIAGNOSIS = "Z04.6";
|
|
2491
2494
|
function applyBillSubmissionEvaluationDiagnoses(diagnoses, type) {
|
|
2492
2495
|
const current = [...diagnoses ?? []];
|
|
2493
|
-
return type === "psych_qme" && !current.some((code) => code.trim()) ? [PSYCH_QME_DEFAULT_DIAGNOSIS] : current;
|
|
2496
|
+
return (type === "psych_qme" || type === "psych_ame") && !current.some((code) => code.trim()) ? [PSYCH_QME_DEFAULT_DIAGNOSIS] : current;
|
|
2494
2497
|
}
|
|
2495
2498
|
function initialEvaluationType(bill) {
|
|
2496
|
-
|
|
2497
|
-
|
|
2499
|
+
const isPsych = bill.renderingProvider?.specialty?.toLowerCase().includes("psych");
|
|
2500
|
+
if (bill.renderingProvider?.isAme) return isPsych ? "psych_ame" : "ame";
|
|
2501
|
+
return isPsych ? "psych_qme" : "qme";
|
|
2498
2502
|
}
|
|
2499
2503
|
function cloneInitialBill(bill) {
|
|
2500
2504
|
const cloned = cloneBill(bill);
|
|
@@ -3069,7 +3073,7 @@ function BillSubmissionForm({
|
|
|
3069
3073
|
};
|
|
3070
3074
|
const changeEvaluation = (type) => {
|
|
3071
3075
|
setEvaluationType(type);
|
|
3072
|
-
setBill((current) => ({ ...current, diagnoses: applyBillSubmissionEvaluationDiagnoses(current.diagnoses, type), renderingProvider: { ...current.renderingProvider, isAme: type === "ame", isQme: type
|
|
3076
|
+
setBill((current) => ({ ...current, diagnoses: applyBillSubmissionEvaluationDiagnoses(current.diagnoses, type), renderingProvider: { ...current.renderingProvider, isAme: type === "ame" || type === "psych_ame", isQme: type === "qme" || type === "psych_qme", ...(type === "psych_qme" || type === "psych_ame") && !current.renderingProvider?.specialty ? { specialty: "Psychiatry" } : {} }, serviceLines: applyBillSubmissionEvaluationModifiers(current.serviceLines, type) }));
|
|
3073
3077
|
};
|
|
3074
3078
|
const lineCharge = (line) => calculateBillSubmissionAllowedAmount(line, procedures) ?? (Number.isFinite(line.charge) ? Number(line.charge) : void 0);
|
|
3075
3079
|
const total = submittedLines(bill.serviceLines).reduce((sum, line) => sum + (lineCharge(line) ?? 0), 0);
|
|
@@ -3393,8 +3397,8 @@ function BillSubmissionForm({
|
|
|
3393
3397
|
const serviceLinesSection = /* @__PURE__ */ jsxs6("fieldset", { className: "mbsf-card", disabled: locked, children: [
|
|
3394
3398
|
/* @__PURE__ */ jsx6("legend", { className: "mbsf-legend", children: "Evaluation & service lines" }),
|
|
3395
3399
|
/* @__PURE__ */ jsx6("p", { className: "mbsf-help", children: "Sets the evaluator/specialty modifier on medical-legal evaluation lines." }),
|
|
3396
|
-
/* @__PURE__ */ jsx6("div", { className: "mbsf-segments", role: "group", "aria-label": "Evaluation type", children: [["qme", "QME (default)"], ["ame", "AME"], ["psych_qme", "Psych QME"]].map(([type, label]) => /* @__PURE__ */ jsx6("button", { className: "mbsf-segment", type: "button", "aria-pressed": evaluationType === type, onClick: () => changeEvaluation(type), children: label }, type)) }),
|
|
3397
|
-
/* @__PURE__ */ jsx6("p", { className: "mbsf-help", children: evaluationType === "ame" ? "Agreed Medical Evaluator \u2014 eligible ML evaluation codes default to modifier -94." : evaluationType === "psych_qme" ? "Psychiatric QME \u2014 eligible ML evaluation codes default to
|
|
3400
|
+
/* @__PURE__ */ jsx6("div", { className: "mbsf-segments", role: "group", "aria-label": "Evaluation type", children: [["qme", "QME (default)"], ["ame", "AME"], ["psych_qme", "Psych QME"], ["psych_ame", "Psych AME"]].map(([type, label]) => /* @__PURE__ */ jsx6("button", { className: "mbsf-segment", type: "button", "aria-pressed": evaluationType === type, onClick: () => changeEvaluation(type), children: label }, type)) }),
|
|
3401
|
+
/* @__PURE__ */ jsx6("p", { className: "mbsf-help", children: evaluationType === "psych_ame" ? "Psychiatric or psychological AME \u2014 eligible ML evaluation codes default to modifiers -94 and -96." : evaluationType === "ame" ? "Agreed Medical Evaluator \u2014 eligible ML evaluation codes default to modifier -94." : evaluationType === "psych_qme" ? "Psychiatric or psychological QME \u2014 eligible ML evaluation codes default to modifiers -95 and -96 (-95 only for ML200 and MLPRR)." : "Qualified Medical Evaluator \u2014 eligible ML evaluation codes default to modifier -95." }),
|
|
3398
3402
|
/* @__PURE__ */ jsxs6("div", { className: "mbsf-lines", "data-field-path": "serviceLines", "data-invalid": Boolean(errors.serviceLines), children: [
|
|
3399
3403
|
/* @__PURE__ */ jsxs6("div", { className: "mbsf-line-head", children: [
|
|
3400
3404
|
/* @__PURE__ */ jsxs6("span", { children: [
|
|
@@ -3414,8 +3418,8 @@ function BillSubmissionForm({
|
|
|
3414
3418
|
bill.serviceLines.map((line, index) => /* @__PURE__ */ jsxs6("div", { className: "mbsf-line", children: [
|
|
3415
3419
|
/* @__PURE__ */ jsxs6("div", { "data-label": "Procedure code", "data-field-path": `serviceLines.${index}.code`, "data-invalid": Boolean(errors[`serviceLines.${index}.code`]), children: [
|
|
3416
3420
|
/* @__PURE__ */ jsx6(ComboBox, { ariaLabel: `Procedure code ${index + 1}`, invalid: Boolean(errors[`serviceLines.${index}.code`]), disabled: locked, value: line.code, placeholder: "Search or enter code\u2026", options: procedures.map((item) => ({ id: item.code, label: item.code, detail: item.description })), createOption: customProcedureOption, onSelect: (option) => {
|
|
3417
|
-
const
|
|
3418
|
-
setLine(index,
|
|
3421
|
+
const [updated] = applyBillSubmissionEvaluationModifiers([{ ...line, code: option.id }], evaluationType);
|
|
3422
|
+
setLine(index, updated);
|
|
3419
3423
|
} }),
|
|
3420
3424
|
line.code ? /* @__PURE__ */ jsx6("small", { className: "mbsf-help", children: procedures.find((item) => item.code === line.code)?.description ?? "Custom CPT, HCPCS, or medical-legal code" }) : null,
|
|
3421
3425
|
errors[`serviceLines.${index}.code`] ? /* @__PURE__ */ jsx6("small", { className: "mbsf-error", role: "alert", children: errors[`serviceLines.${index}.code`] }) : null
|