Treatment plan
A React block (a whole screen) in Beamline's Clinic app.
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 said, never zero); each phase totals them, says how much of it is booked and how long it takes, and the plan totals below. Completed and rejected procedures can be hidden, said with how many. Choosing a phase's unbooked procedures makes an appointment draft with the phase's length; it reads as booked only when the booking comes back, and a clipboard draft books nothing. A phase's fees lock for some days or until a date (one or the other) and keep their amounts when estimates are recalculated, until the lock ends or is undone. A phase with booked or completed work can't be deleted, said with why. Procedures a template added without their details are listed until filled in; Done with some left says so. Notes and the plan's history are apart; a note that fails keeps its text and adds nothing to the history.
Use it for
- Planning a patient's procedures in phases with estimates, then booking them phase by phase.
- Any staged plan of priced work where some is booked, some done and some still to be decided.
Not for
- Putting procedures on teeth (procedure-picker).
- Following up many patients' plans (plan-follow-up).
Anatomy
- header: the product's mark, the title, patient and coordinator, the plan chosen and its status
- toolbar: hide completed and rejected, recalculate estimates
- phases: name, booked count, length, fee lock, make an appointment, lock fees, delete; procedures with code, name, tooth, status, fee, patient and insurance estimates; the phase total
- appointment draft: the chosen procedures and length, book it or save to the clipboard
- fee lock: days or a date, what locking does
- plan total
- template: procedures still needing details, set and done
- notes and history
States
- procedure: proposed, accepted (info), booked with its date (info), completed (success), rejected (danger, dimmed)
- estimates: not known said
- phase: none, some or all booked; length not set; fees locked (info) or the lock ended (warning)
- delete: blocked with why, or asked
- booked: only after the booking returns; clipboard: books nothing; refused: said
- template: some or none left; done with some left said
- note: added, or refused with the text kept
- phone: one column, the tables scroll sideways
- right to left: the layout mirrors
- reduced motion: nothing animates
Keyboard
- Tab through the plan, the toolbar, each phase's actions and the procedures' boxes when drafting; Space ticks a procedure; Enter presses buttons
Motion
Nothing moves. Nothing runs at rest.
Props
| Prop | Type | Default | Description |
|---|---|---|---|
patient (required) | string | — | |
plans (required) | TreatmentPlanData[] | — | |
defaultPlanId | string | — | |
me (required) | string | — | Who is working, named on notes. |
now | string | — | |
currency | string | — | ISO 4217 for every amount. Default USD. |
onBook | ((planId: string, phaseId: string, codeIds: string[]) => Promise<{ date: string; }>) | — | Book the chosen procedures; resolve with the appointment's ISO date. Only then do they read as booked. |
onRecalculate | ((plan: TreatmentPlanData) => Promise<Record<string, { fee: number; patient: number | n… | — | Fresh estimates per procedure; locked phases keep theirs. |
onLock | ((planId: string, phaseId: string, until: string | null) => Promise<unknown>) | — | |
onNote | ((planId: string, text: string) => Promise<unknown>) | — | |
product | string | — | Your product's name, shown as its mark. |
className | string | — | Classes on the documented visual root; no override by default. |
ref | Ref<HTMLDivElement> | — | Receives the documented native target or imperative handle; omitted by default. |
Built from
- Avatar
- Button
- Calendar
- Checkbox
- Date picker
- Dropdown menu
- Empty state
- Input
- Label
- Number field
- Segmented control
- Select
- Skeleton
- Spinner
- Switch
- Text morph
- Textarea
- Tooltip
Import
import { TreatmentPlan } from "@beamline/treatment-plan";
Get it
Treatment plan 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…
- 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…
- Insurance claims: 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…
- 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…