Hide the patient-flow Queue board from nurses, reception, and other
non-doctors; specialty home routes now render the queue board list
instead of auto-opening the first open visit.
Co-authored-by: Cursor <cursoragent@cursor.com>
Single-desk specialists already reach their workspace via dashboard cards; the Specialty → Dentistry nav group was redundant. GPs and multi-module roles keep the section.
Co-authored-by: Cursor <cursoragent@cursor.com>
Specialty seeder looked up members by email user_ref only, so remapped
demo logins never got practitioner.member_id and saw every module.
Also stop short keywords like "ent" matching "dentistry".
Co-authored-by: Cursor <cursoragent@cursor.com>
GPs keep broad general/limited manage and restricted view/refer; dentists and other desk specialists only see modules that match their specialty.
Co-authored-by: Cursor <cursoragent@cursor.com>
care_departments has no organization_id; match the Blood Bank seeder pattern so demo:seed no longer fails on dental specialty data.
Co-authored-by: Cursor <cursoragent@cursor.com>
Pro/enterprise DemoTenantSeeder now upserts visit-scoped facility stock so the Inventory tab and reports show unit counts and a low-stock alert without manual entry.
Co-authored-by: Cursor <cursoragent@cursor.com>
Assigned doctors could see board waiters while Call next returned empty because ensure() early-returned without provisioning a newly linked desk. Re-provision on point miss, recover stale tickets, and align empty messaging with visible waiters.
Co-authored-by: Cursor <cursoragent@cursor.com>
Call next now picks the next board appointment, issues or reclaims its ticket onto the calling desk, and still fires display/voice announcements — so patients are not left stuck when tickets sit on the wrong point after sync-on-GET was removed.
Co-authored-by: Cursor <cursoragent@cursor.com>
Stop issuing missing tickets and refreshing financial gates on every GET;
eager-load advances, cap board rows, and cache specialty department maps.
Co-authored-by: Cursor <cursoragent@cursor.com>
Shared queue-board is now a Waiting/Called/In care/Done stage board with prominent tickets and Call next; nurses lose queue.manage and canAccessPatientQueue so /queue and queue nav are gated while specialty workspaces stay available.
Co-authored-by: Cursor <cursoragent@cursor.com>
Pay-before-service holds now create a billing queue ticket (via an open bill) so cashiers can Call next / Serve; clearance completes the ticket and releases the clinical line as before.
Co-authored-by: Cursor <cursoragent@cursor.com>
Resolve staff memberships by invite/demo email as well as public_id so nurses stay on their employer org; block staff from owner onboarding; keep Documents viewable with module access while upload stays manage-gated.
Co-authored-by: Cursor <cursoragent@cursor.com>
Icon names live on the specialty catalog; SVG paths resolve through a shared map and render in sidebar, dashboard, settings, and the specialty shell.
Co-authored-by: Cursor <cursoragent@cursor.com>
Give nurses, lab techs, pharmacists, and GPs broad access to day-to-day modules, keep restricted specialties for specialists (with support nurses), and let GPs view results or refer without full clinical edit.
Co-authored-by: Cursor <cursoragent@cursor.com>
Admin dashboard module cards open per-module settings with editable service prices; GP consultation and clinic fees live under Settings → GP pricing (inventory drugs unchanged).
Co-authored-by: Cursor <cursoragent@cursor.com>
Branch-scoped staff could 404 on charts when the patient's home branch differed from the visit site; Orders also linked doctors to a lab index they could not access.
Co-authored-by: Cursor <cursoragent@cursor.com>
Move timeline into a workspace tab, surface Complete consultation and Call again in Actions, and make Call next end the current encounter then open the next called patient.
Co-authored-by: Cursor <cursoragent@cursor.com>
Remove Dentistry and other specialty modules from the sidebar; Queue now uses each doctor's specialty desk context for Call next, waiting lists, and Start into specialty clinical workspaces.
Co-authored-by: Cursor <cursoragent@cursor.com>
Specialty homes now use the shared Waiting/In care board with Call next, Start routes specialty tickets into specialty workspaces, and redundant Dentistry/Specialty module chrome is removed.
Co-authored-by: Cursor <cursoragent@cursor.com>
Demo GP appointments now use core desk departments, and the doctor waiting list excludes specialty queue contexts so MAT/PHY tickets stay on specialty modules.
Co-authored-by: Cursor <cursoragent@cursor.com>
Demo cover desks on non-home branches now use specialty doctor names so Practitioners lists people, not departments.
Co-authored-by: Cursor <cursoragent@cursor.com>
Show the current invoice book by status so Paid/Partial are not hidden when create dates fall outside MTD.
Co-authored-by: Cursor <cursoragent@cursor.com>
Facility admins see analytics overviews instead of operational directories; floor roles keep list UIs, with optional ?view=list for admins who need records.
Co-authored-by: Cursor <cursoragent@cursor.com>
Hospital admins no longer see specialty/queue floor nav; Call next is a full-width button; specialty encounters open module-specific clinical forms instead of the general consultation page.
Co-authored-by: Cursor <cursoragent@cursor.com>
Admins without a desk now scan all specialty service points, KPIs use the same branch as queue ops, and empty Call next flashes explain tickets vs other branches.
Co-authored-by: Cursor <cursoragent@cursor.com>
Visit-scoped structured forms for Emergency triage, Blood Bank requests,
and Dentistry odontogram with derived alerts, document upload, and KPI counts.
Co-authored-by: Cursor <cursoragent@cursor.com>
Overview/Visits/History/Billing/Workspace layout with stage maps, KPIs,
patient header/timeline, and service catalogs seeded into Billing on activate.
Emergency, Blood Bank, and Dentistry ship first-class shell configs.
Co-authored-by: Cursor <cursoragent@cursor.com>
Issue, call-next, serve, and complete tickets locally so Care Pro no longer
needs QUEUE_API_* when CARE_QUEUE_DRIVER=native (default). Remote Ladill Queue
remains available for cutover; PHPUnit keeps the remote driver for existing fakes.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add Cardiology through Child Welfare to the specialty catalog, keep Emergency and Blood Bank always enabled on Pro/Enterprise sidebars, and generate matching demo specialty doctors.
Co-authored-by: Cursor <cursoragent@cursor.com>
Seed investigation types early (before clinical data), expand the default catalog, scope Lab → Catalog by organization, and harden practitioner-branch sync so a mid-reseed failure cannot wipe the catalog.
Co-authored-by: Cursor <cursoragent@cursor.com>
Replace optional “All branches” with required branch checkboxes; doctors may switch only among assigned sites, never org-wide by default.
Co-authored-by: Cursor <cursoragent@cursor.com>
Doctors were treated as multi-branch when Identity cleared branch_id; now they stay on their assigned/desk site, specialty desks are home-branch only, and the queue shows site name as text only.
Co-authored-by: Cursor <cursoragent@cursor.com>
Nav and pages require a linked practitioner desk in the module department; demo seeds specialty doctors and stops overwriting their assigned waiters.
Co-authored-by: Cursor <cursoragent@cursor.com>
Doctors no longer see branch/practitioner pickers; queue, appointments, patients, and dashboard only include visits on their linked desk.
Co-authored-by: Cursor <cursoragent@cursor.com>
Demo doctors were querying their own public_id, so branches/patients/queues looked empty even though the Pro tenant had data.
Co-authored-by: Cursor <cursoragent@cursor.com>
Patient queue syncs consultation and specialty waiters; specialty contexts now provision desks so check-in/onboarding no longer leaves half the list on local positions only.
Co-authored-by: Cursor <cursoragent@cursor.com>
Specialty demo seed reused slot+1 per module; repair duplicates on queue load and renumber after demo seed so waiting lists show 1..n.
Co-authored-by: Cursor <cursoragent@cursor.com>
Admins pick a working branch once; session keeps Pharmacy Call Next and lists scoped to that site so ticket numbers no longer collide across branches.
Co-authored-by: Cursor <cursoragent@cursor.com>
Link DemoWorld doctor staff to practitioners, clear unresolved routing, distribute staff across branches, and restore scoped consultation/pharmacy ticket sync so demos are not left Unassigned.
Co-authored-by: Cursor <cursoragent@cursor.com>
Provision one branch/context at a time instead of the whole org, fall back to a desk when doctor counters are catching up, sync pharmacy tickets in Care list order on page load, and seed waiting_at/queue_position for demos.
Co-authored-by: Cursor <cursoragent@cursor.com>
Defer Queue provision and ticket backfill after the settings response, harden messaging credential creation against lock races, and stop wrapping demo seed in a long-held transaction.
Co-authored-by: Cursor <cursoragent@cursor.com>
Enterprise reseeds were blocked for minutes on queue.ladill.com calls; local specialty data still seeds, and Queue tickets can backfill on first visit.
Co-authored-by: Cursor <cursoragent@cursor.com>
Enterprise reseeds were hanging on per-module Queue HTTP; activate specialties locally first, then provision once, and limit ticket sync to core contexts.
Co-authored-by: Cursor <cursoragent@cursor.com>