Skip to content

Plans inbox

Inbox of the clinic's treatment plans. Organized into five tabs aligned with the plan state machine, plus a pipeline view that surfaces the follow-up queue.

At a glance

  • Tabs by state. Drafts (not confirmed), Pending (waiting for patient acceptance), Active (treatment in progress), Completed, Closed (rejected, expired, cancelled, abandoned, or other).
  • Pipeline. Aggregate inbox view (GET /pipeline) with totals per column and plans that need front-desk action (pending with no recent contact, unsent budget, etc.).
  • Search and filters. Search by patient or plan number; filter by assigned professional, creation date, and closure reason.
  • Budget sync. Each plan has a linked budget (or creates one on confirm). Plan changes propagate to the budget via snapshot events — no need to edit the budget by hand.
  • Clinical notes. Since issue #60, notes are not stored on the plan: they are delegated to the clinical_notes module. The plan only logs executions.

Find a plan

  1. Switch tabs or enter the pipeline.
  2. Filter by professional, date, or closure reason as needed.
  3. Click a row to open the detail.

Create a plan

Requires treatment_plan.plans.write.

  1. Click New plan (top right) → goes to /treatment-plans/new.
  2. Pick patient, professional, and add treatments.

Log a contact

Requires treatment_plan.plans.write.

  1. On the row or detail, use Log contact to record a phone / WhatsApp / email touchpoint by the front desk.
  2. These contacts feed the pipeline view so plans don't go too long without activity.

Permissions

What you see / can doPermission
View inbox, pipeline, and detailtreatment_plan.plans.read
Create, edit, add items, log contactstreatment_plan.plans.write
Confirm (draft → pending)treatment_plan.plans.confirm
Close a plantreatment_plan.plans.close
Reactivate a closed plantreatment_plan.plans.reactivate

Troubleshooting

  • Plan is pending but the patient accepted. The budget.accepted event moves it to active automatically. If it hasn't, check that the budget is actually accepted and both modules are installed.
  • Closed plan is missing. On the Closed tab, filter by closure reason. The default includes all.
  • No Confirm button. Your role lacks treatment_plan.plans.confirm or the plan is already in pending or later.