Home/Technology/API & FHIR Integration
6 EHRs native FHIR · 12 via HL7/837 · REST + webhooks

API and FHIR-native integration.

Six EHRs connected with native FHIR R4 bidirectional. Twelve more via HL7 v2 and 837 EDI for the long tail. A unified REST API in front of every engine in the platform. Webhook events, OAuth2 with RS256 JWT, sandbox plus production tenants, and per-tenant rate limits. Same mask-by-default, audit-log, and row-level RBAC discipline as the rest of the platform. No EHR is too old to connect.

FHIR R4 bidirectional read and write OAuth2 + RS256 JWT Sandbox to production promotion
The architecture

Three tiers. One credential of truth.

The integration surface is a three-tier architecture. The edge layer handles TLS termination, rate limiting, and the RS256 passport verification. The gateway layer routes by tenant and endpoint, applies mask-by-default to PHI fields, and writes the audit-log row before the response returns. The service layer carries the engines: coding, eligibility, denial prediction, prior auth automation, CredPro v6 credentialing.

The architecture is what makes one credential of truth work across the platform. The same passport authorizes every call. The same audit log captures every PHI access. The same mask-by-default protects every response. A change in CredPro v6 provider enrollment fires a webhook the coding engine listens for and updates the three-way match before the next claim line runs.

Reference architecture · edge to engine
Tier 01 · Edge
TLS, rate limit, passport verify
TLS 1.3 termination · HSTS · per-tenant rate limit · RS256 JWT verify with public key · 429 on burst · DDoS shield
Tier 02 · Gateway
Tenant route, mask, audit
Tenant scope resolve · endpoint route · mask-by-default on PHI · write audit-log row · webhook fan-out · versioned schema
Tier 03 · Services
Engines and credential of truth
Coding engine · eligibility engine · denial prediction · prior auth · CredPro v6 · row-level RBAC · per-tenant DEK · GCM encryption
Same architecture · sandbox and production · promotion via tenant config
What the API surface looks like

Versioned endpoints. Predictable shapes.

The REST API in front of the engines. All endpoints are versioned. JSON envelopes are consistent. The example below is a redacted view of the most-used endpoints in the partner integration set.

api.asprcmsolutions.com · /v1 · sample endpoints · partner integration tier
POST
/v1/eligibility/verify Real-time 270/271. Returns parsed benefit, prior-auth requirement, deductible remaining, COB.
200 OK · 280ms P95
{ status: active, copay: 30, ... }
POST
/v1/coding/code-chart Submit chart payload. Returns CodingCase with per-line confidence, rule, snippet.
200 OK · sub-second P95
{ lines: [{cpt, dx, mod, conf}] }
POST
/v1/denial/score-line Pre-submit risk score. Returns CARC prediction, recommended action, source data.
200 OK · sub-200ms P95
{ risk: 0.68, carc: CO-50, ... }
GET
/v1/credpro/providers/:id CredPro v6 provider read. PHI masked by default. Audit row written before return.
200 OK
{ npi, name, tin: XXX-XX-1234 }
POST
/v1/credpro/providers/:id/reveal Reveal unmasked PHI. Elevated role required. Justification required. Audit row written.
200 OK
{ tin: 12-3456789 }
PUT
/v1/webhooks/:partner/subscriptions Register webhook URL per event class. HMAC-SHA256 signed payload, retry with backoff, 7-day replay.
201 Created
{ id, secret, events: [...] }
The capabilities

Six capabilities. One integration surface.

Each capability ships across sandbox and production. The promotion path is a tenant configuration change, not a code change. Partners build and verify in sandbox; production tenants pick up the same surface.

01 · FHIR R4 bidirectional

Six EHRs, native.

Native FHIR R4 with bidirectional resource read and write across Epic, Cerner/Oracle Health, Athena, NextGen, eClinicalWorks, and MEDITECH. Patient, Coverage, Encounter, Claim, CoverageEligibilityRequest/Response, Practitioner, Organization, ServiceRequest. Read clinical and eligibility context; write coding output and claim status back. HL7-FHIR compliant, not a screen-scrape with FHIR branding.

02 · REST API + webhooks

Unified surface, versioned.

Unified REST API in front of coding, eligibility, denial prediction, prior auth, and CredPro v6 credentialing. Same JSON envelope, same OAuth2 auth, same audit log, same mask-by-default. Endpoints versioned with deprecation policy. Webhook events for state changes, signed payloads with HMAC-SHA256, exponential-backoff retry, 7-day replay.

03 · HL7 v2 fallback

Twelve more EHRs, the long tail.

HL7 v2 handles clinical and demographic feeds for EHRs without FHIR endpoints: ADT for admit/discharge/transfer, SIU for scheduling, MDM for clinical documents, DFT for billing events. Twelve additional EHRs connect this way. No production EHR is too old to integrate.

04 · 837/835 EDI

Clearinghouse fallback, every payer.

837 for outbound claim submission, 835 for inbound remittance posting. Standard clearinghouse routes and direct payer connections. Acts as the final fallback for any EHR that exports an 837 even without FHIR or HL7 v2 endpoint. Same audit and validation layer applies to the EDI path as to the FHIR path.

05 · OAuth2 + RS256 JWT

Asymmetric tokens, short TTL.

OAuth2 client-credentials grant for service integrations, authorization-code with PKCE for user-facing apps. Access tokens are RS256-signed JWTs with short TTL: 15 minutes for user sessions, 5 minutes for service-to-service. Refresh tokens stored separately with their own audit trail. Asymmetric signing means partners verify with the public key, no shared secret distribution.

06 · Sandbox + rate limit

Same surface, isolated data.

Sandbox carries the same API surface, same auth, same FHIR shapes, synthetic test data covering 200 patient personas and 30 payer scenarios. Promotion to production is a tenant configuration change. Per-tenant rate limits at the gateway: 100 RPS sustained, 500 burst, with a separate higher-priority queue for eligibility 270s at the registration desk. 429 responses include retry-after headers.

How a partner integrates

Four phases. Thirty days standard.

From contract to production traffic. The four phases are what we run with every partner. Promotion between phases is gated; nothing automatic that the partner has not signed off on.

Phase 01

Sandbox setup.

Sandbox tenant provisioned with synthetic data. OAuth2 client credentials issued. Partner integration team gets API documentation, the FHIR shape reference for the connected EHRs, and the webhook event catalog. First call lands in the sandbox within 24 hours.

Phase 02

Build against the surface.

Partner builds against the sandbox. Same endpoints, same auth, same shapes as production. Synthetic data covers 200 patient personas, 30 payer scenarios, and the CARC patterns the denial engine watches for. Integration team available for review and clarification.

Phase 03

Verify the integration.

Acceptance test against the documented behavior: eligibility roundtrip, coding case roundtrip, denial score roundtrip, webhook delivery, mask and reveal boundaries, audit log entries. UAT report shared. Gaps fixed before promotion.

Phase 04

Promote to production.

Tenant configuration flips from sandbox to production. Production credentials issued. Real PHI flows under the security architecture documented. Production traffic ramps with monitoring on rate-limit headroom, error rates, and webhook delivery success. Standard partner integration runs in 30 days.

What integrators see

Measured posture from the API.

Across active integrations. Numbers below are honest measurement.

18
EHRs in production
Six EHRs via native FHIR R4, twelve via HL7 v2 and 837 EDI. The two tiers together cover the systems where our active book runs, and the clearinghouse fallback ensures the long tail of smaller systems can still feed the platform. No production EHR has been too old to integrate.
30d
Partner integration timeline
From sandbox provisioning to production traffic. The four-phase pattern (setup, build, verify, promote) is what makes 30 days repeatable. Sandbox parity with production removes the most common integration-delay cause: surprises at promotion. Partners build once, promote with confidence.
100RPS
Default tier rate limit
100 requests per second sustained, 500 burst per tenant. Eligibility 270 requests at the registration desk run on a higher-priority queue so live verification never gets queue-throttled. Limits tunable by contract for high-volume tenants and load tested against the production volume of the largest active customer.
Common questions

Frequently asked: API and FHIR.

What is the FHIR-native integration?
Six EHRs (Epic, Cerner/Oracle Health, Athena, NextGen, eClinicalWorks, MEDITECH) are connected via native FHIR R4 with bidirectional resource read and write. Patient, Coverage, Encounter, Claim, Coverage Eligibility Request and Response, Practitioner, Organization, and ServiceRequest are the resources that flow. Bidirectional means we read from the EHR for eligibility and clinical context and write back claim status and coding output. The integration is HL7-FHIR compliant, not a screen-scrape with FHIR branding.
What about EHRs that do not have a FHIR endpoint?
Twelve more EHRs are connected via HL7 v2 and 837 EDI. HL7 v2 handles the clinical and demographic feeds (ADT for admit/discharge/transfer, SIU for scheduling, MDM for clinical documents, DFT for billing events). 837 handles the claim submission and 835 the remittance posting. The clearinghouse fallback ensures we can integrate with any EHR that exports an 837 even if there is no FHIR or HL7 v2 endpoint. No EHR is too old to connect.
What is the REST API surface?
A unified REST API in front of the coding engine, eligibility engine, denial-prediction engine, prior-auth automation, and CredPro v6 credentialing. Same JSON envelope, same OAuth2 authentication, same audit log on every PHI access, same mask-by-default on PHI fields, same RS256 JWT. Endpoints are versioned (/v1/) with deprecation policy. The API is what an integration partner sees; the engines are what the API serves.
How do webhook events work?
For any event in the platform that a partner wants to react to (claim submitted, claim accepted, claim denied, eligibility verification posted, prior auth approved, credentialing status changed), partners register a webhook URL with a per-event filter. Events post as signed payloads with HMAC-SHA256 over a shared secret. Retry with exponential backoff on non-2xx. Replay endpoint for the last 7 days. Standard webhook hygiene, nothing exotic.
What does OAuth2 with RS256 JWT mean?
OAuth2 client-credentials grant for service integrations, authorization-code with PKCE for user-facing apps. Access tokens are RS256-signed JWTs with short TTL (15 minutes for user sessions, 5 minutes for service-to-service). Refresh tokens stored separately with their own audit trail. The asymmetric signing means partners can verify tokens with the public key, no shared-secret distribution. Same passport architecture documented in security architecture.
Is there a sandbox environment?
Yes. The sandbox carries the same API surface, same authentication, same FHIR resource shapes, and synthetic test data covering 200 patient personas, 30 payer scenarios, and the CARC patterns the denial engine watches for. Partners build and test in the sandbox before promotion to production. Promotion is a tenant configuration change, not a code change. The sandbox is what makes 30-day integrations possible.
What is rate limiting and what are the limits?
Per-tenant rate limits at the API gateway. Default tier: 100 requests per second sustained, 500 burst, with separate higher-priority queue for eligibility 270 requests at the registration desk so live verification never gets queue-throttled. Webhook fan-out has separate per-partner egress quotas. Limits are tunable per tenant by contract and load tested for the production volume of the largest active customer. 429 responses include retry-after headers.
How does the API integrate with CredPro v6?
CredPro v6 is one of the engines served by the API. Provider read, write, mask, and reveal endpoints with the same row-level RBAC, audit log, and PHI mask discipline as the rest of the surface. The credentialing status webhook fires on provider enrollment changes so downstream coding and claim systems pick up the new active credential before the next claim line runs through three-way match. Same integration surface, one credential of truth.

Need API access for an integration? Send us the use case.

We will provision a sandbox tenant within 24 hours, share the documentation, the FHIR shape reference for the connected EHRs, and the webhook event catalog. Standard partner integration runs in 30 days from sandbox to production. An ASP-RCM senior partner on the call.