From abridge-pack
Configures Abridge AI credentials, Epic/Athena EHR integrations, and SMART on FHIR OAuth for clinical documentation apps.
npx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin abridge-packThis skill is limited to using the following tools:
Configure Abridge ambient AI platform credentials and EHR integration tokens. Abridge is an enterprise clinical documentation platform — it does not have a public npm/pip SDK. Integration happens through EHR-embedded workflows (Epic Pal, Athena, eClinicalWorks) and partner API access.
Provides reference architecture for Abridge clinical AI integration with EHRs (Epic/Athena) via FHIR R4 APIs. Includes HIPAA-compliant data flows, project structure for multi-site health systems.
Installs @openevidence/sdk via npm or pip and configures API key authentication for clinical decision support in Node.js or Python projects.
End-to-end onboarding for the HealthClaw + OpenClaw personal-health-agent stack. Walks anyone — not just developers — through (1) installing OpenClaw as the local AI gateway, (2) standing up an open-source FHIR server (HAPI or Medplum) on their machine, (3) connecting their EHR records via HealthEx, Josh Mandel's fhir-skills, Flexpa, or any patient-right-of-access / TEFCA IAS service, (4) installing HealthClaw Guardrails with the OpenClaw personas pre-wired, and (5) pulling + reviewing health data end-to-end. Triggers when a user asks "how do I get started", "how do I set this up", "what do I need to use HealthClaw", "first time setup", "install everything", or any first-run question. Use this before any other HealthClaw skill when the user hasn't yet built their stack.
Share bugs, ideas, or general feedback.
Configure Abridge ambient AI platform credentials and EHR integration tokens. Abridge is an enterprise clinical documentation platform — it does not have a public npm/pip SDK. Integration happens through EHR-embedded workflows (Epic Pal, Athena, eClinicalWorks) and partner API access.
# Abridge uses partner-issued credentials, not self-service API keys
# Contact your Abridge sales engineer for:
# 1. Partner API client_id and client_secret
# 2. Organization ID (org_id)
# 3. Sandbox environment URL
# Store credentials securely (never in source control)
cat > .env.local << 'EOF'
ABRIDGE_CLIENT_ID=partner_xxxxxxxxxxxx
ABRIDGE_CLIENT_SECRET=secret_xxxxxxxxxxxx
ABRIDGE_ORG_ID=org_xxxxxxxxxxxx
ABRIDGE_BASE_URL=https://api.abridge.com/v1
ABRIDGE_SANDBOX_URL=https://sandbox.api.abridge.com/v1
EOF
chmod 600 .env.local
echo ".env.local" >> .gitignore
// src/config/abridge-ehr.ts
// Abridge is Epic's first "Pal" — integration uses Epic's FHIR R4 APIs
interface AbridgeEpicConfig {
epicClientId: string; // From Epic App Orchard registration
epicFhirBaseUrl: string; // e.g., https://fhir.epic.com/interconnect-fhir-oauth
abridgeOrgId: string; // From Abridge partner portal
abridgeApiBaseUrl: string; // Partner API endpoint
smartLaunchUrl: string; // SMART on FHIR launch URL
}
const config: AbridgeEpicConfig = {
epicClientId: process.env.EPIC_CLIENT_ID!,
epicFhirBaseUrl: process.env.EPIC_FHIR_BASE_URL!,
abridgeOrgId: process.env.ABRIDGE_ORG_ID!,
abridgeApiBaseUrl: process.env.ABRIDGE_BASE_URL!,
smartLaunchUrl: `${process.env.EPIC_FHIR_BASE_URL}/oauth2/authorize`,
};
export default config;
// src/auth/smart-fhir-auth.ts
import axios from 'axios';
interface SmartTokenResponse {
access_token: string;
token_type: 'Bearer';
expires_in: number;
scope: string;
patient?: string; // Patient context from EHR launch
encounter?: string; // Encounter context from EHR launch
}
async function getAbridgeToken(
authCode: string,
redirectUri: string
): Promise<SmartTokenResponse> {
const tokenUrl = `${process.env.EPIC_FHIR_BASE_URL}/oauth2/token`;
const response = await axios.post(tokenUrl, new URLSearchParams({
grant_type: 'authorization_code',
code: authCode,
redirect_uri: redirectUri,
client_id: process.env.EPIC_CLIENT_ID!,
client_secret: process.env.EPIC_CLIENT_SECRET!,
}), {
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
});
return response.data;
}
export { getAbridgeToken, SmartTokenResponse };
// src/auth/verify-connection.ts
import axios from 'axios';
async function verifyAbridgeConnection(): Promise<boolean> {
try {
// Verify partner API access
const response = await axios.get(
`${process.env.ABRIDGE_BASE_URL}/health`,
{
headers: {
'Authorization': `Bearer ${process.env.ABRIDGE_CLIENT_SECRET}`,
'X-Org-Id': process.env.ABRIDGE_ORG_ID!,
},
timeout: 5000,
}
);
console.log('Abridge connection verified:', response.data.status);
return response.status === 200;
} catch (error) {
console.error('Abridge connection failed:', error);
return false;
}
}
.env.local with partner credentials (chmod 600, gitignored)| Error | Cause | Solution |
|---|---|---|
401 Unauthorized | Invalid partner credentials | Contact Abridge sales engineer for new credentials |
403 Forbidden | Org not provisioned | Verify org_id matches your Abridge contract |
| SMART launch failure | Epic App Orchard not configured | Register app in Epic App Orchard first |
| CORS errors | Wrong redirect URI | Update allowed redirect URIs in Epic portal |
| Certificate error | Self-signed cert in sandbox | Use Abridge-provided sandbox CA certificate |
.env.local is gitignored and chmod 600After authentication is configured, proceed to abridge-hello-world for your first ambient session test.