| name | abridge-webhooks-events |
| description | Implement Abridge webhook handling for clinical documentation events.
Use when receiving note completion notifications, encounter status changes,
provider enrollment events, or quality alert callbacks from Abridge.
Trigger: "abridge webhook", "abridge events", "abridge notifications",
"abridge note completed event", "abridge encounter event".
|
| allowed-tools | Read, Write, Edit, Bash(curl:*) |
| version | 1.4.0 |
| license | MIT |
| author | Jeremy Longshore <jeremy@intentsolutions.io> |
| tags | ["saas","healthcare","ai","abridge","webhooks"] |
| compatibility | Designed for Claude Code |
Abridge Webhooks & Events
Overview
Handle Abridge webhook events for clinical documentation lifecycle: note completion, encounter status changes, quality alerts, and provider enrollment notifications. All webhook payloads are HIPAA-scoped (contain session IDs but no PHI).
Abridge Event Types
| Event | Trigger | Use Case |
|---|
encounter.session.completed | Note generation finished | Push note to EHR |
encounter.session.failed | Note generation failed | Alert clinical team |
encounter.note.reviewed | Clinician reviewed/edited note | Update EHR with final version |
encounter.note.signed | Clinician signed the note | Lock note in EHR |
patient.summary.ready | Patient summary generated | Push to patient portal |
provider.enrolled | Provider onboarded | Update provider roster |
quality.alert | Low confidence or missing content | Flag for clinical review |
Instructions
Step 1: Webhook Endpoint with Signature Verification
import express from 'express';
import crypto from 'crypto';
const router = express.Router();
router.post('/webhooks/abridge',
express.raw({ type: 'application/json' }),
async (req, res) => {
const signature = req.headers['x-abridge-signature'] ;
timestamp = req.[] ;
(!(req., signature, timestamp)) {
res.().({ : });
}
event = .(req..());
( (event.)) {
res.().({ : });
}
(event).(
.(, err)
);
res.().({ : });
}
);
(): {
secret = process..!;
maxAge = ;
(.() - (timestamp) * > maxAge) {
.();
;
}
expected = crypto
.(, secret)
.()
.();
crypto.(.(signature), .(expected));
}