C03 follow-ups (concurrent session): clinical-role clinician filter, dashboard permission gating, calendar metrics, ward/patient status

Work finished by a concurrent session, committed here explicitly by file
list. The two shared files are staged WITHOUT the DEC19 edits that also sit
in the working tree: PatientAppointmentsController carries the clinical-role
filter (RoleTemplates::clinicalRoleKeys) on the portal clinician list, and
AppointmentBookingTest carries the portal booking, 403-vs-404 and
cross-tenant service tests. DashboardMetrics decides revenue, availability,
leave and foundation counts per permission and dashboard.blade refuses in
words; DashboardPermissionGatingTest pins it. BitmedFoundationSeeder gains
the tenant-2 patient portal (pharmacy modules, nurse, two appointments).
Evidence: outputs/feature-evidence/C03-appointment-booking/rev-20261015-001/
and rev-20261015-002/. Verified as part of the combined tree that ends this
day: 695 tests / 2899 assertions, green.