One row per logical RPA run. Only columns we filter/sort/scope by are typed;
everything else (provider, workflow id, etc.) lives in raw_payload, which
stores the provider webhook exactly as received so the superadmin portal can
render it without a bespoke schema. Runs are standalone — not linked to
job_executions — so queue-row purging never affects run history. Optional
facility_id / treatment_episode_id scope patient-specific runs.
One row per logical RPA run. Only columns we filter/sort/scope by are typed; everything else (provider, workflow id, etc.) lives in
raw_payload, which stores the provider webhook exactly as received so the superadmin portal can render it without a bespoke schema. Runs are standalone — not linked tojob_executions— so queue-row purging never affects run history. Optionalfacility_id/treatment_episode_idscope patient-specific runs.