Insurance claims
A React block (a whole screen) in Beamline's Clinic app.
Insurance claims as a queue: every claim at first, in the order a person works them (rejected by the clearinghouse, denied by the payer, partly paid, not sent, sent, marked paid, closed), each state a chip with its count that narrows the queue. Every claim shows its date of service apart from the day it was made, where its status came from (set by hand and by whom, imported from a remittance, or reported by the clearinghouse, and when) and what the client still owes, which is not known until the payer answers and never shown as nothing. A sync older than a day says statuses may have changed since. A status never stands for money: a claim marked paid with no payment recorded says so. A claim opens beside the queue with its status (changed by hand from a menu, which says so) and its money as a statement: billed, less the discount, each reimbursement with the day it was received and what the client paid (each amount opens its own field), equals what the client owes, computed with its sum; a payer payment is recorded from its own short form; it doesn't change the client's invoices, and a refused save keeps everything typed. From appointments shows each appointment type's insurance default beside each appointment's own choice, why an appointment won't become a draft claim (cancelled, no attendance recorded, a group session, not billed), and the next batch's time in its zone; drafts are never sent on their own.
Use it for
- A practice's biller working through insurance claims by state, with what each client still owes.
- Any queue where a status can come from a person or an import and must never be mistaken for money received.
Not for
- Client invoices and payments (invoices).
- Booking or editing appointments (appointment-book).
Anatomy
- header: Insurance claims, Claims and From appointments
- sync line: synced with the clearinghouse, how long ago (stale after a day, said in the warning role), Sync now
- states: All with its count, then one chip per state in the work order with its count; what the view shows under them
- queue: client and payer; date of service and Created <day>; status badge and where it came from; billed; client owes (Not known yet until the payer answers; Overpaid <amount>; a warning dot when marked paid with no payment recorded)
- at rest: what clients owe on answered claims and how many claims wait for the payer
- claim: client · service, payer, practitioner and date; the status badge with Change status (a menu; set by hand, said with who and when) and where it came from; the payer's or clearinghouse's reason; the money as a statement (billed; discount, reimbursements with received dates and client paid, each amount opening its own field or a menu with Remove); Client owes as the largest figure with its sum or why it isn't known; copay and that invoices are apart; Record a payer payment (amount and received on, in a short form); a save bar
- from appointments: types with Bills insurance; the next batch's time and zone, drafts never sent on their own, how many become drafts; appointments with their type and time, This appointment's own choice over the type default, and why it does or doesn't become a draft claim
States
- not sent, sent, rejected, denied, partly paid, marked paid, closed
- status set by hand, imported from a remittance, reported by the clearinghouse
- client owes known, not known yet, overpaid
- marked paid with no payment recorded
- sync fresh, stale, syncing, refused
- claim edited, saving, save refused (everything typed kept)
- appointment: draft made, becomes a draft, cancelled, no attendance recorded, group session, not billed by type or by its own choice
- narrow room: the queue in two columns; an open claim takes the screen with Close
Keyboard
- Tab through the header, the sync line, the states, the rows and the open claim
- a state is a toggle button; a row opens its claim with Enter
- the open claim's fields are ordinary fields; Close returns to the queue
Motion
Rows and state buttons take their hover and selection in the fast duration; badges ease their colours when a status changes. Nothing runs at rest.
Props
| Prop | Type | Default | Description |
|---|---|---|---|
claims | Claim[] | — | |
defaultClaims | Claim[] | — | |
onClaimsChange | ((claims: Claim[]) => void) | — | |
onSave | ((claim: Claim, previous: Claim) => void | Promise<unknown>) | — | Saves one claim; reject with the reason to keep everything typed. |
syncedAt (required) | string | — | When the queue last synced with the clearinghouse (ISO). Older than a day is said as stale. |
onSync | (() => Promise<string>) | — | Syncs now; resolve with the new time (ISO), reject with the reason. |
types | AppointmentType[] | — | Appointment types and their insurance defaults. |
defaultTypes | AppointmentType[] | — | |
onTypesChange | ((types: AppointmentType[]) => void) | — | |
appointments | BillableAppointment[] | — | Appointments that may become draft claims. |
defaultAppointments | BillableAppointment[] | — | |
onAppointmentsChange | ((appointments: BillableAppointment[]) => void) | — | |
nextBatch (required) | string | — | When the next batch makes draft claims (ISO), and its zone. |
timezone (required) | string | — | |
currency (required) | string | — | ISO 4217 code amounts are in. |
user (required) | string | — | Who is setting statuses by hand. |
view | "automation" | "queue" | — | |
defaultView | "automation" | "queue" | — | |
onViewChange | ((view: "automation" | "queue") => void) | — | |
defaultStatus | ClaimStatus | — | The state shown first. Default: the first with claims needing work (rejected, then denied). |
defaultClaim | string | — | The claim open first. Default: the first claim of the state shown first. |
now | Date | — | Now, for "synced 3 hours ago". Default: now. |
locale | string | — | |
className | string | — | Classes on the documented visual root; no override by default. |
style | CSSProperties | — | Inline styles on the documented visual root; no overrides by default. |
ref | Ref<HTMLDivElement> | — | Receives the documented native target or imperative handle; omitted by default. |
onGenerate | ((criteria: BatchCriteria) => Promise<{ made: number; held: number; }>) | — | Makes draft claims in a batch from criteria; resolve with how many were made and held, reject with the reason. Shows the batch form on the automation view. |
batchLocations | { value: string; label: string; }[] | — | The locations and practitioners a batch can be narrowed to. |
batchProviders | { value: string; label: string; }[] | — | |
batches | BatchRun[] | — | Batches that ran, newest first; the form starts where the newest stopped. |
defaultBatches | BatchRun[] | — | |
onBatchesChange | ((batches: BatchRun[]) => void) | — |
Built from
- badge
- button
- segmented-control
- select
- number-field
- date-picker
- switch
- alert
Dependencies
lucide-react
Import
import { ClaimsQueue } from "@beamline/claims-queue";
Get it
Insurance claims is part of Beamline UI. Install the parts you need in your React app as compiled packages or editable source. Get Beamline · Connect your agent
More in Clinic
- Appointment book: The desk's day with the appointment editor beside it. The appointment being edited is a block on the day like any other, drawn in the accent while it is…
- Book an appointment: A client books an appointment on the practice's own site: a service (length and price beside it), who gives it or anyone free, and where; a day with…
- Services and hours: A practice's services and the hours its practitioners can be booked, one relation seen from both ends. A service reads as values and changes on demand…
- Patient overview: One patient's record on a page. A search finds patients by name, chart number or birth date (recent patients when empty; same names told apart by birth…
- Patient chart: A clinic's chart for one client and their animals. The client's header (phone, email, contact preferences, the balance with what it means and as of when…
- Health questionnaire: A patient's medical history as a versioned questionnaire. Every question takes Yes, No or I don't know, and one not answered says so, never read as No; a…
- Case workspace: A patient's clinical cases and how cases work at the practice. A case shows its status, type, teeth, staff, location and start; its checklist counts…
- Care plan: A client's care plan composed beside what the client will see of it. Every field says who sees it (the care team only, or the client too) and the…
- Treatment plan: A patient's treatment plan in named phases. Each procedure shows its tooth, status and fee beside the patient's and the insurer's estimate (not known…
- Plan templates: Reusable treatment-plan templates. A template reads as words at rest and changes on demand: its name edits in place; the status its procedures start as…
- Plan acceptance: A treatment plan presented for acceptance, from both sides. The practice chooses the agreement (the account's default or this location's own) and how…
- Plan follow-up: The practice's follow-up lists, for the person who turns accepted treatment into booked chairs. Treatment plans lead with what's at stake: the value…
- Session notes and tasks: A session's note beside its follow-up tasks, each task tied to the exact words it came from: choose a task and its words light in the note or the…
- Note templates: A practitioner's note templates in one library with three ways in. My templates lists their own by kind, favourites first, each with when it was last…
- Probing chart: A periodontal probing chart. Six sites per tooth (three buccal, three lingual) across both arches as you face the patient, each depth in its cell and…
- Procedure picker: Procedures, conditions and bundles put on a patient's teeth from the chair. The mode (existing, planned, completed) is chosen before adding and each…
- Results notebook: A notebook entry's structured results. The entry's text above a bounded results table with typed columns: a sample link, numbers in their unit with their…
- Account ledger: A patient's account. All transactions or the ones needing attention, each dated with its type in a word, its amount and the running balance; entries that…
- Dispensing: Dispensing from the shelf by lot. A product is found with its stock and prices (consumables left out unless asked); the quantity is drawn across its…
- Record sharing: Records sent out of a clinic. Several visits' records and their documents (record, invoice, plan, lab result, image) are chosen separately, with how much…
- Client journal: A client's journal from both ends. The client's side is their home, built around their day: today's goals with how many are done and a mark each, done…