Why eClinicalWorks integration comes up so often
eClinicalWorks (eCW) is one of the largest ambulatory EHR vendors in the United States, with a footprint concentrated in independent practices, multi-site physician groups, community health centers, and specialty networks. If you build software that touches ambulatory care — care management, RCM, lab, imaging, digital front door, analytics, population health — you will eventually be asked to connect to an eCW instance.
The good news: eClinicalWorks (eCW) is ONC-certified and publishes FHIR R4 endpoints aligned to US Core and USCDI, so the read path is standards-based and well documented. The part teams underestimate is everything around the endpoints — which developer program you belong to, how each practice authorizes you, which resources are actually writable, and which capabilities carry a separate contract and cost.
This guide covers what's available, how authorization works, and the design decisions that determine whether your integration scales past the first customer.
The short version
What determines scope, cost, and timeline
- Three surfaces, not one. FHIR R4 APIs (read), bulk/backend export (
$export), and HL7 v2 interfaces. Most production integrations use at least two.
- Reading is the cheap part. Certified FHIR read access and bulk export cover the USCDI data classes and are the least costly way in.
- Writing costs money. FHIR create endpoints are licensed separately, cover a limited resource set, and require a commercial agreement. HL7 instances and channels are chargeable per instance and per channel.
- Two developer portals. Provider-facing and backend apps go through the eCW FHIR portal; patient-facing apps go through healow. Picking wrong costs weeks.
- Authorization is per-practice. Registering your app grants nothing until each customer authorizes it against their own instance, at their own base URL. This is what makes multi-tenant products expensive to build alone.
- The biggest architectural mistake is polling FHIR for near-real-time workflow. That belongs on HL7.
What integration capabilities does eClinicalWorks (eCW) offer?
There are three distinct surfaces, and most real deployments use more than one:
01 — Read
FHIR R4 APIs
Standards-based RESTful access to USCDI data classes — demographics, problems, medications, allergies, immunizations, labs, vitals, encounters, documents, care plans, coverage. This is the certified surface and the cheapest path to data.
02 — Bulk
Bulk / backend services (FHIR $export)
Asynchronous, population-scale export for analytics, data warehousing, migration, and quality reporting. Server-to-server, no user in the loop.
03 — Real Time
HL7 v2 interfaces
The traditional interface engine path — ADT, ORU, SIU, MDM, DFT, ORM. This is where real-time, event-driven, and high-volume bidirectional workflow actually lives.
Note the process
The practice initiates an HL7 interface request through its eClinicalWorks (eCW) account manager — a vendor partner cannot open it on the practice's behalf. Instances and channels are a chargeable line item, priced per instance and per channel. Get the request started early and budget for it at project kickoff rather than discovering it during scoping.
Alongside these sit C-CDA document exchange and the EHI export capability certified at 45 CFR §170.315(b)(10), which is designed for full-record export rather than for building a product on.
Which developer portal do I register with?
This is the first fork in the road, and getting it wrong costs weeks.
- Provider-facing applications — SMART on FHIR apps launched in clinical context, plus bulk and backend service applications — register through the eClinicalWorks FHIR developer portal (fhir.eclinicalworks.com).
- Patient-facing applications — patient data access, scheduling, engagement — register through the healow FHIR developer portal (connect4.healow.com).
healow is eClinicalWorks' patient engagement platform. If your app is used by a patient, you are in the healow program regardless of what data you need. If it is used by staff or runs headless, you are in the eCW program. Registering in the wrong one means a second intake cycle and a second developer agreement.
Plan for lead time
The intake, review, and execution of the eClinicalWorks (eCW) FHIR API developer agreement is a real dependency on your project timeline — treat it as a critical-path item, not paperwork.
How does authentication and authorization work with eCW?
eClinicalWorks (eCW) uses OAuth 2.0 under the SMART on FHIR framework. There are three flows you'll encounter, and which one you use is determined by your app type — not by preference.
Flow 01
SMART App Launch (EHR launch)
Your app is launched from inside the eCW chart. The EHR passes a launch token, you exchange it via the authorization endpoint, and you receive an access token scoped to the current user and patient context. Scopes take the patient/Resource.read form. This is the flow for clinical decision support, in-workflow tooling, and anything a provider opens during a visit.
Flow 02
Standalone launch
Your app initiates authorization outside the EHR; a user authenticates and consents. Scopes take the user/Resource.read form. Refresh tokens are typically available so you can maintain a session beyond the short access-token lifetime.
Flow 03
SMART Backend Services (client credentials)
The flow for bulk export and any unattended, server-to-server integration. You register a public key (via JWKS URL or direct upload), sign a JWT client assertion with your private key, and exchange it at the token endpoint for a short-lived access token. Scopes take the system/Resource.read form. There is no refresh token — you mint a fresh assertion each time, which is a feature, not a limitation.
Three practical points that catch teams out
- Authorization is per-practice, not per-vendor. Registering your app once does not grant access to anything. Each eClinicalWorks (eCW) customer must authorize your application against their instance, and each instance has its own FHIR base URL. Your architecture needs a tenant registry from day one — base URL, client credentials, scopes, token state, and status per practice. Multi-tenant apps that hardcode a single base URL get rebuilt.
- The capability statement is the source of truth. Query
/metadata on each practice's endpoint. Resource coverage, supported search parameters, and USCDI version vary with the customer's build and upgrade cadence. Do not assume the documentation matches the instance in front of you.
- Scope requests should be minimal. Broad scope requests slow review and raise questions during the practice's authorization. Request only what your use case defends.
What are the bulk export endpoints, and when should I use them?
Bulk export follows the HL7 FHIR Bulk Data Access (Flat FHIR) implementation guide. The pattern is asynchronous:
- Kick off — issue a GET to the export operation (commonly group-level,
Group/[id]/$export) with Prefer: respond-async. Narrow the payload with _type to request only the resources you need, and _since for incremental pulls.
- Poll — the server returns a
Content-Location status URL. Poll it; it returns 202 Accepted while the job runs and 200 OK with a manifest when complete.
- Download — the manifest lists per-resource file URLs in
application/fhir+ndjson. Download, then process line by line.
Export duration scales with population size, number of resource types, and date range. A first full pull on a large practice is measured in hours, not minutes.
Use bulk export for: initial data loads, seeding a warehouse or lakehouse, migration off eCW or onto a new platform, population health and risk stratification, quality measure calculation, ML training sets, periodic full reconciliation.
Do not use bulk export for: real-time workflow, single-patient lookups, or same-day synchronization. Those belong on the single-resource FHIR reads or, more often, on HL7 v2.
What USCDI FHIR resources can I retrieve from eClinicalWorks (eCW)?
The read surface is the strongest part of the eClinicalWorks (eCW) API. Coverage is aligned to US Core profiles across USCDI data classes, and typically includes:
| Data class | FHIR resources |
| Patient demographics | Patient |
| Problems | Condition |
| Medications | MedicationRequest, MedicationStatement, Medication |
| Allergies | AllergyIntolerance |
| Immunizations | Immunization |
| Labs and results | Observation, DiagnosticReport |
| Vitals and smoking status | Observation |
| Procedures | Procedure |
| Encounters | Encounter |
| Clinical notes and documents | DocumentReference |
| Care coordination | CarePlan, CareTeam, Goal |
| Coverage | Coverage |
| Provider directory | Practitioner, PractitionerRole, Organization, Location |
| Devices | Device |
| Provenance | Provenance |
Two caveats worth designing around. First, this is a subset — it is not every FHIR R4 resource, and gaps in scheduling, financial, and order data are common. Second, USCDI v1 versus USCDI v3 / HTI-1 coverage depends on the practice's build. If your product depends on newer data elements, confirm against the instance before you commit to a scope.
Can I write data back into an eCW instance?
Yes, but selectively — and this is the single most important scoping question in any eClinicalWorks (eCW) project.
Path 01
FHIR create endpoints
eClinicalWorks (eCW) supports POST create operations for a defined subset of FHIR resources — considerably narrower than the read surface. Which resources are writable changes over time and by build, so confirm the current list directly with eClinicalWorks (eCW) rather than relying on any published summary, including this one. Create access is not part of the default read entitlement: it is licensed separately, carries a cost, and requires a commercial conversation before production access is granted.
Path 02
HL7 v2 inbound channels
For most write-back at volume, HL7 v2 remains the more capable path. Inbound ADT for registration and demographic updates, ORU for results, SIU for scheduling, MDM for documents, and DFT for charges cover workflows that FHIR create does not reach. The practice opens this request with its eCW account manager, and each instance and channel is chargeable.
Path 03
Documents
Writing a C-CDA or PDF into the chart via DocumentReference is frequently the pragmatic middle path when structured create isn't available for your data. It gets clinically relevant information in front of the provider without waiting on a resource-level write entitlement.
The design implication
Decide your write path before you build your data model. If your product's core value is structured data landing in the chart, validate that the specific resource is writable, on that customer's build, under a contract that exists — before you architect around it. Teams that assume write parity with read end up redesigning mid-project.
What does eCW integration cost?
Three cost centers to plan for:
- HL7 instances and channels — requested by the practice through its eClinicalWorks (eCW) account manager, priced per instance and per interface channel. Bidirectional workflows multiply this.
- FHIR create / write endpoints — licensed separately from read access, with their own commercial terms.
- Your own build and run cost — per-practice onboarding, credential and token management, monitoring, error handling, reconciliation, and version drift across customers.
Read-only FHIR and bulk export are the least expensive way in. Every write path has a price attached. Sequence your roadmap accordingly: prove value on reads, then fund the write path with revenue.
Integration design decisions that matter
Batch or event-driven?
FHIR reads are pull-based. If you need to know within seconds that a patient checked in or a result posted, that is an HL7 feed, not a polling loop. Polling FHIR for near-real-time is the most common architectural mistake in eClinicalWorks (eCW) integrations and it does not survive scale.
One practice or many?
Single-tenant integrations tolerate manual credential handling. Multi-tenant products need per-practice base URLs, credential vaulting, token lifecycle automation, capability-statement drift detection, and per-tenant observability. Build it once, early.
Patient matching
Decide your identifier strategy up front: eCW patient ID, MRN, and your own internal ID, with explicit precedence and a documented handling path for mismatches and duplicates. Every downstream data-quality problem traces back to this decision.
Reconciliation
Deltas drift. Plan a periodic full reconciliation — bulk export is well suited to it — against your incremental feed, plus alerting when counts diverge.
Terminology
Map to standard code sets (ICD-10, SNOMED, LOINC, RxNorm, CVX) at the boundary, not in your application logic. eCW instances carry local codes; normalize once.
Sandbox to production
Sandbox data does not reflect a live practice's volume, custom fields, or build version. Budget a real validation cycle with the customer's instance before go-live.
Common use cases eCW integration supports
- Population health and analytics — bulk export into a warehouse, refreshed incrementally
- Practice acquisition and data migration — extract and reconcile a full clinical record set between instances or platforms
- Care management and risk — continuous USCDI read with document or task write-back
- Lab and imaging — inbound ORU results, outbound orders via HL7
- RCM and charge capture — DFT and encounter data out, charge corrections in
- Digital front door — scheduling and demographics via healow and SIU
- Clinical decision support — SMART on FHIR app launched in the eCW chart
- Registry and quality reporting — periodic bulk pulls mapped to measure specifications
Connecting to eClinicalWorks (eCW) with Intely
Intely is an integration platform built for exactly this problem: connecting to eClinicalWorks (eCW) instances without your team absorbing the full cost of the developer program, the per-practice authorization lifecycle, and the HL7 channel build.
With Intely you get
- A managed eClinicalWorks (eCW) connector covering FHIR R4 read, bulk export orchestration, and the supported create endpoints, with OAuth and SMART Backend Services credential and token handling built in
- HL7 v2 channel management alongside FHIR in one platform, so event-driven and batch paths live in the same monitored pipeline
- Multi-tenant scaling — per-practice endpoints, credentials, and capability differences handled as configuration, not code
- Mapping and normalization between eCW's data and your target schema, including terminology crosswalks
- Migration tooling for practice acquisitions and platform moves, where bulk extraction and reconciliation are the whole job
- Monitoring, error handling, and reconciliation as platform features rather than things you build twice
Teams typically use Intely to go live on their first eClinicalWorks (eCW) customer in a fraction of the time a from-scratch build takes, and — more importantly — to onboard the next twenty without linear engineering cost.
Frequently asked questions
Does eClinicalWorks have an API?
Yes. eClinicalWorks (eCW) exposes ONC-certified FHIR R4 APIs for provider-facing and backend/bulk access, plus HL7 v2 interfaces and C-CDA document exchange.
Is the eCW API free?
FHIR read access under the certified endpoints is the least costly path. HL7 instances and channels are chargeable and are requested by the practice through its eCW account manager, and FHIR create/write endpoints are licensed separately at additional cost.
What FHIR version does eClinicalWorks use?
FHIR R4, with US Core profiles aligned to USCDI. Confirm the exact USCDI version supported on each practice's instance via its capability statement.
Can I write data back into eClinicalWorks?
Yes, for a limited subset of FHIR resources under a separate commercial agreement, and more broadly through inbound HL7 v2 channels.
How long does eCW API access take to set up?
Plan for the developer agreement intake and review as a critical-path item, plus per-practice authorization for each customer instance. HL7 interface requests add their own lead time and must be initiated by the practice with its eCW account manager.
Should I use bulk export or single-resource FHIR reads?
Bulk export for initial loads, migrations, and population-scale analytics. Single-resource reads for patient-in-context workflows. HL7 v2 for anything that must be real time.