Demo seeding used i%3 for both branch and paid status, so Ridge Clinic only got paid invoices. Cashiers now default to outstanding balances and Call next is secondary to the walk-up unpaid list.
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>
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>
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>
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>
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>
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>
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>
Free and real onboarding stay opt-in; Pro/Enterprise demos activate every catalog specialty and seed waiting appointments so module pages are populated.
Co-authored-by: Cursor <cursoragent@cursor.com>
Demo Pro was left as an empty workflow shell after lock-timeout races; clear leftover rollout flags on seed, sync-reseed empty tenants on login, and repair missing facility workflow indexes.
Co-authored-by: Cursor <cursoragent@cursor.com>
Async reseed alone still left the first Care request without an onboarded org; ensure the shell synchronously, then refresh demo data afterResponse().
Co-authored-by: Cursor <cursoragent@cursor.com>
Avoid the onboarding flash when reset-on-login deletes the tenant before the afterResponse() reseed finishes.
Co-authored-by: Cursor <cursoragent@cursor.com>
Provision one consultation point per doctor (room + identity) and role-based
points for pharmacy, lab, billing, and triage. Fixed-doctor appointments and
walk-ins issue only to the assigned point; Call next respects that assignment
and flags unresolved patients rather than random routing.
Co-authored-by: Cursor <cursoragent@cursor.com>
Demo/pre-integration waiting lists showed patients but Call next hit an empty Queue and flashed a red error. Backfill missing tickets on Call next and queue load, and treat empty Call next as info.
Co-authored-by: Cursor <cursoragent@cursor.com>
When Queue integration is on, role pages issue tickets into their own
department queues and drive Call next → Serve → Complete on the native
lists. Integration off leaves existing UI unchanged.
Co-authored-by: Cursor <cursoragent@cursor.com>
Wire module activation to the Queue create/upsert APIs, persist
queue and counter UUIDs on Care stubs, and soft-deactivate on
module off so embedded service counters work without manual setup.
Co-authored-by: Cursor <cursoragent@cursor.com>
Remove the standalone Service Queues nav so call-next/now-serving lives on clinical queue, appointments, pharmacy, lab, and specialty surfaces; Pro orgs can activate dentistry and related modules with branch departments and queue stubs.
Co-authored-by: Cursor <cursoragent@cursor.com>
Branch-scoped Care devices with hashed agent tokens, patient barcode lookup/labels, and provenance-aware vitals from a minimal device agent (Pro for agent hardware; wedge free).
Co-authored-by: Cursor <cursoragent@cursor.com>
DemoWorld seeding already used deterministic catalogs; the last randomElement calls blocked production demo:seed without fakerphp/faker.
Co-authored-by: Cursor <cursoragent@cursor.com>
Patients, branches, and org identity now match suite continuity keys; staff Members are created for training SSO without login reseed.
Co-authored-by: Cursor <cursoragent@cursor.com>