Appointment Manager
⤳ Flow generated 2026-05-13 09:07 by bulk-flow-scriptAppointment Manager — diary view, Find Next, and booking confirmation
Covers the primary staff scheduling journey: opening the diary, discovering available slots via Find Next, confirming a booking, and the governed automation paths for waitlist offers and absence-driven rescheduling. Patient-facing self-booking and offer engagement are also tagged where applicable.
Show platforms:
click pills to fade out platform-specific steps
💡 Suggested from here:
All journeys →
22 steps
· 8 actors
· model:
claude-sonnet-4-6
flowchart TD
s1(["Open Appointment Manager diary"])
s1:::user
s4{"Change view or lens?"}
s4:::user
s6("Open Find Next finder")
s6:::user
s13("Confirm slot selection")
s13:::user
subgraph self_lane["Appointment Manager"]
direction TB
s2("Fetch rota entries for availability")
s2:::self
s3("Render Day View (practitioner-first)")
s3:::self
s5("Re-render Week / Month / Surgery lens")
s5:::self
s7("Show Find Next modal (constraints pane)")
s7:::self
s8("Check delegated patient access")
s8:::self
s9("Search compliant slots (window ∩ rota ∩ rules)")
s9:::self
s10{"Slots found?"}
s10:::self
s11("Render ranked results with diary preview")
s11:::self
s12("Explain no-availability reason")
s12:::self
s14("Create and confirm appointment; write audit log")
s14:::self
s15{"Absence-driven reschedule triggered?"}
s15:::self
s16("Create Reschedule Job; show Job Monitor")
s16:::self
s17{"Staff override per patient?"}
s17:::self
s18("Broadcast waitlist offer; show Offer Monitor")
s18:::self
s20("Lock slot; start engagement window")
s20:::self
s21{"Confirmation received in window?"}
s21:::self
s_end(["End"])
s_end:::self
end
subgraph patient_lane["Patient"]
direction TB
s19("Patient engages with offer")
s19:::module
end
subgraph rota_manager_lane["Rota Manager"]
direction TB
rota_manager_recv_1["fetch generated rota entries"]
rota_manager_recv_1:::ext
rota_manager_recv_2["consume confirmed absence"]
rota_manager_recv_2:::ext
end
subgraph family_profiles_lane["Family Profiles"]
direction TB
family_profiles_recv_1["verify delegation rights"]
family_profiles_recv_1:::ext
end
subgraph ai_assistant_aiden_lane["AI Assistant (Aiden)"]
direction TB
ai_assistant_aiden_recv_1["surface availability / risk advisory"]
ai_assistant_aiden_recv_1:::ext
end
subgraph communication_hub_lane["Communication Hub"]
direction TB
communication_hub_recv_1["send booking confirmation"]
communication_hub_recv_1:::ext
communication_hub_recv_2["broadcast waitlist offer"]
communication_hub_recv_2:::ext
end
s1 --> s2
s2 --> s3
s3 --> s4
s4 -- "switch view" --> s5
s4 -- "book appointment" --> s6
s5 --> s4
s6 --> s7
s7 --> s8
s8 --> s9
s9 --> s10
s10 -- "yes" --> s11
s10 -- "no" --> s12
s11 --> s13
s12 --> s_end
s13 --> s14
s14 --> s15
s15 -- "yes" --> s16
s15 -- "no — cancellation backfill" --> s18
s16 --> s17
s17 -- "manual takeover" --> s9
s17 -- "automation completes" --> s_end
s18 --> s19
s19 --> s20
s20 --> s21
s21 -- "confirmed" --> s14
s21 -- "expired — return to pool" --> s18
s2 -. "fetch generated rota entries" .-> rota_manager_recv_1
s8 -. "verify delegation rights" .-> family_profiles_recv_1
s11 -. "surface availability / risk advisory" .-> ai_assistant_aiden_recv_1
s14 -. "send booking confirmation" .-> communication_hub_recv_1
s16 -. "consume confirmed absence" .-> rota_manager_recv_2
s18 -. "broadcast waitlist offer" .-> communication_hub_recv_2
classDef user fill:#fef3c7,stroke:#b45309,stroke-width:2.5px,color:#1f2937;
classDef self fill:#dbeafe,stroke:#1d4ed8,stroke-width:2.5px,color:#0f172a;
classDef module fill:#fce7f3,stroke:#be185d,stroke-width:2.5px,color:#1f2937;
classDef ext fill:#f3e8ff,stroke:#7e22ce,stroke-width:2.5px,stroke-dasharray: 6 3,color:#1f2937;
100%
drag to pan · scroll to zoom
💬 Comment thread
Mermaid source (advanced — copy/paste into any Mermaid renderer)
Tip: you can hand-edit and re-render with the Mermaid live editor. To persist edits back into Primoro Specs, paste the edited source back here and we'll save it (coming in 30B-5).