Channel partners
Operating the partner tier: onboarding, per-practice authorisation, suspension and termination.
#The BAA question, decided per partner
| Model | Who holds the BAA with the practice | Consequence |
|---|---|---|
| Direct | We do | Cleanest. The practice can terminate us without leaving the partner. |
| Subcontractor | The partner does | The practice has no direct paper with us, which constrains what we may do on our own initiative. |
Recorded per partner because the answer changes who is liable, who notifies on a breach, and whose paper the practice signs.
#Credentials live at the channel
One app registration serves many practices, and no practice ever holds it. The platform stores a reference to a secret manager entry - secretsmanager://veradigm/unity-app - and refuses anything that is not a recognised vault scheme.
#Suspension and termination
- Suspend stops every practice on the channel at once, checked per call. The reason is recorded and surfaced in the denial.
- Terminate does not delete the practices. They are separate covered entities that arrived by a shared route, and each must be migrated or offboarded on its own terms. The operation returns the orphaned practice list explicitly.
A defect worth knowing about
Un-ticking a blocking checklist item once marked it complete -
setChecklist(..., false) stored a record object, and the view read the record instead of the flag, so a truthy object read as done. A channel with no recorded cassettes could activate and connect live practices. Every unit test set true, so none of them saw it; the console seed set one to false and it surfaced in seconds.