application/fhir+json format.
Service Base URL:
https://api.commure.com/fhirFHIR Version: R4B (4.0.1) · US Core Version: 6.1.0 · Content Type: application/fhir+jsonSMART on FHIR Configuration
The server publishes its SMART App Launch v2.0 discovery document at the well-known path below. This is an unauthenticatedGET — no token required.
Example .well-known/smart-configuration output
SMART Endpoint Reference
CapabilityStatement
The server’s FHIRCapabilityStatement (the “conformance statement”) lists every supported resource, interaction, search parameter, supported US Core profile, and the SMART security configuration. It is available as an unauthenticated GET and can be exported directly:
fhirVersion: 4.0.1, the application/fhir+json format, the SMART OAuth URIs (via the oauth-uris security extension), and one rest.resource entry per supported resource with its supportedProfile, interactions, and searchParam list.
Example CapabilityStatement (abridged)
Application Registration & Onboarding Guide
Follow these steps to onboard a new application against the Commure EHR FHIR API.Review the documentation and Terms of Use
Read this reference and the API Terms of Use. Confirm the FHIR resources and SMART scopes your application requires (see Scopes and the Resource-to-USCDI Mapping Matrix).
Request application registration
Applications are registered in AWS Cognito. Self-serve registration is planned for a future release; today, contact Commure (d/b/a Athelas) to register.Provide the following:
- Organization name and technical contact
- Description of the application and the FHIR resources / scopes needed
- Whether the app is patient-facing, provider-facing, or a backend service
- Client type: public (no secret, uses PKCE), confidential (has secret), or backend service (
private_key_jwt) - Redirect URI(s)
- SMART Launch URI (for EHR launch apps)
- JWKS URL (for backend-service / asymmetric clients)
Receive your credentials
Upon approval you will receive:
client_id— used in all OAuth flowsclient_secret— for confidential clients only
Configure SMART discovery
Point your client at the
.well-known/smart-configuration document to discover the authorization and token endpoints, then implement the Authorization flow that matches your client type.Test your integration
Use the production Service Base URL (
https://api.commure.com/fhir) to exercise the authorization flows, scope enforcement, resource reads/searches, and bulk export. No separate sandbox environment is required — no registration or production fees apply.Validate conformance
Validate your integration with the ONC Inferno (g)(10) Standardized API test kit against the US Core Conformance Statement and SMART App Launch v2.0 / Bulk Data v2.0 suites.
Go live
Once validated, request production access from Commure (d/b/a Athelas). Production access to the certified API capabilities is granted on non-discriminatory terms (see API Terms of Use).
Authorization
The server implements SMART on FHIR v2 (§170.215(a)(3)) using AWS Cognito as the identity provider.Supported Grant Types
authorization_code— Standalone and EHR launch (patient and provider apps)client_credentials— Backend Services Authorization (bulk data, system-level access)refresh_token— Token refresh for offline access
Token Authentication Methods
SMART Standalone Launch Flow
- App redirects the user to
GET /authorizewithresponse_type=code,client_id,redirect_uri,scope,state,aud, and PKCEcode_challenge. - The server presents a consent page where the user selects which scopes to grant.
- After consent, the server redirects to the app’s
redirect_uriwith an authorizationcode. - App exchanges the code via
POST /tokento receiveaccess_token,id_token, and optionallyrefresh_token. - App includes the access token as
Authorization: Bearer <token>on all FHIR API requests.
EHR Launch Flow
- EHR initiates launch via
GET /launch/{patient_id}?app_launch_url=<url>(optionally withencounter_id). This redirects to the app’s launch URL with alaunchparameter. - App redirects to
GET /authorizeincluding thelaunchparameter in addition to the standard OAuth params. - The rest of the flow follows the standalone flow. The resulting token includes
patientand optionallyencounterlaunch context claims.
Backend Services Authorization (Bulk Data)
For system-level access (e.g., bulk export):- App generates a signed JWT (
client_assertion) using its private key registered with Cognito. - App calls
POST /tokenwith:grant_type=client_credentialsclient_assertion=<signed_jwt>client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearerscope=system/*.*
- The server returns a bearer access token valid for system-level operations.
Token Introspection
token=<access_token>
Token Revocation
token=<token>, client_id=<client_id>, optionally client_secret, token_type_hint.
Token Refresh
Includegrant_type=refresh_token and refresh_token=<token> in the POST /token body.
Note: Refresh tokens are issued only when the offline_access scope is granted. Tokens issued to confidential clients are valid for a minimum of 3 months.
Scopes
The server supports SMART v2 granular scopes. All resource scopes use the.rs (read-search) action.
Context Scopes
Patient-Level Resource Scopes
Granular Scopes
For Condition and Observation, category-level granular scopes are supported:US Core Conformance Statement
The Commure EHR FHIR API conforms to the HL7 US Core Implementation Guide STU 6.1.0 on FHIR R4 (4.0.1), supporting the USCDI v3 data set, as required by the ONC §170.315(g)(10) Standardized API certification criterion.
Terminology / vocabulary standards used to satisfy US Core bindings: LOINC, SNOMED CT, RxNorm, CVX (immunizations), ICD-10-CM, CPT/HCPCS, UCUM (units), and HL7 / FHIR code systems.
How to verify conformance: retrieve the live
/metadata CapabilityStatement, and run the ONC Inferno (g)(10) test kit against the Service Base URL.
Resource-to-USCDI Mapping Matrix
This matrix shows where each USCDI v3 data class (the data set supported by US Core 6.1.0) is available through the API — the conformant US Core profile, the FHIR resource, and the endpoint a client calls to retrieve it. See Resource Endpoints for the full search parameters of each endpoint.Resource Endpoints
All resource endpoints require a valid Bearer token with the appropriate scope. Searches return a FHIRBundle of type searchset; single-resource reads return the resource directly.
Date parameters support FHIR comparator prefixes:
eq, ne, gt, lt, ge, le.All search endpoints support both GET (query parameters) and POST /_search (form-encoded body) forms.Patient
Required scope:patient/Patient.rs
Search Parameters:
_id, identifier, name, birthdate, gender, _count (default 50, max 200), _revinclude
Supported combination searches: birthdate + name, gender + name
AllergyIntolerance
Required scope:patient/AllergyIntolerance.rs
Search Parameters:
_id, patient, clinical-status, _count, _revinclude
CarePlan
Required scope:patient/CarePlan.rs
Search Parameters:
_id, patient, category, identifier, _count, _revinclude
CareTeam
Required scope:patient/CareTeam.rs
Search Parameters:
patient, status, _include, _revinclude
Condition
Required scope:patient/Condition.rs (or a granular category scope)
Search Parameters:
_id, patient, category, clinical-status, code, identifier, _count, _revinclude
Coverage
Required scope:patient/Coverage.rs
Search Parameters:
_id, patient, identifier, _count, _revinclude
Device
Required scope:patient/Device.rs
Search Parameters:
_id, patient, type, _count, _revinclude
DiagnosticReport
Required scope:patient/DiagnosticReport.rs
Search Parameters:
_id, patient, category, type, code, status, date, _count, _revinclude
DocumentReference
Required scope:patient/DocumentReference.rs
Covers clinical documents and chart notes (consultation notes, progress notes, discharge summaries, etc.).
Search Parameters:
_id, patient, category, type, status, date, _count, _revinclude
Encounter
Required scope:patient/Encounter.rs
Search Parameters:
_id, patient, date, identifier, _count, _revinclude
Goal
Required scope:patient/Goal.rs
Search Parameters:
_id, patient, lifecycle-status, target-date, _count, _revinclude
Immunization
Required scope:patient/Immunization.rs
Search Parameters:
_id, patient, date, status, vaccine-code, lot-number, manufacturer, identifier, _count, _revinclude
Location
Required scope:patient/Location.rs
MedicationDispense
Required scope:patient/MedicationDispense.rs
Search Parameters:
_id, patient, whenhandedover, status, medication, identifier, _count, _revinclude
MedicationRequest
Required scope:patient/MedicationRequest.rs
Search Parameters:
_id, patient, authoredon, status, intent, encounter, medication, identifier, _count, _revinclude
Observation
Required scope:patient/Observation.rs (or a granular category scope)
Search Parameters:
_id, patient, category, code, date, _count, _revinclude
Supported category values:
Organization
Required scope:patient/Organization.rs
Practitioner
Required scope:patient/Practitioner.rs
Search Parameters:
_id, name, family, given, telecom, address, address-city, address-state, address-postalcode, identifier, _count
Procedure
Required scope:patient/Procedure.rs
Search Parameters:
_id, patient, date, code, status, category, performer, identifier, _count, _revinclude
Provenance
Required scope: valid Bearer token (JWT) Provenance resources are returned inline via_revinclude=Provenance:target on any resource search. They can also be read directly by ID.
Note: To include Provenance in a search response, add
_revinclude=Provenance:target to any resource search. Provenance entries appear in the Bundle with search.mode = include.
RelatedPerson
Required scope:patient/RelatedPerson.rs
Search Parameters:
_id, patient
ServiceRequest
Required scope:patient/ServiceRequest.rs
Search Parameters:
_id, patient, category, code, authored, status, intent, identifier, _count, _revinclude
Specimen
Required scope:patient/Specimen.rs
Bulk Data API
The server implements the HL7 FHIR Bulk Data Access (Flat FHIR) v2.0 specification.Export Endpoints
All export requests require the
Prefer: respond-async header and a valid Bearer token. The server returns 202 Accepted with a Content-Location header pointing to the status endpoint._outputFormat, _since
Export Job Management
Status responses:
202 AcceptedwithX-Progressheader — job in progress200 OKwith JSON manifest — job complete; manifest includesoutput[]URLs for each resource type500withOperationOutcome— job failed
application/fhir+ndjson format, one resource per line.
Group Management
Responses and Error Handling
Successful Responses
Error Responses
All error responses return a JSON body with adetail field (non-FHIR endpoints) or a FHIR OperationOutcome resource (bulk data endpoints).
Additional Notes
- Read-only API: All resource interactions are read (
search-type,read) only. Write operations are not supported. - Provenance via
_revinclude: To retrieve Provenance alongside any resource, append_revinclude=Provenance:targetto any search query. - FHIR Version: FHIR R4B (
4.0.1) - US Core Version: 6.1.0
- Content Type: All responses use
application/fhir+json - Connections: TLS 1.2 or higher required; connections below 1.2 are rejected.
API Terms of Use
These Terms of Use govern access to the Commure EHR FHIR API (the “API”). By registering for or accessing the API, the developer (“you”) agrees to these terms. They are published in accordance with the ONC Health IT Certification Program API Conditions of Certification (45 CFR §170.404).Permitted use
- The API provides read-only access to electronic health information for authorized patients, their personal representatives, and authorized third-party applications, consistent with the scopes granted at authorization.
- Access is limited to the data authorized by the patient (or the authorizing user) and the granted SMART scopes. You must not attempt to access data beyond your authorized scope.
Fees and non-discrimination
- There are no fees for application registration, sandbox access, or production use of the certified API capabilities.
- Access is provided on non-discriminatory terms consistent with §170.404. Fair-and-reasonable fees under §170.404(a)(4) may apply only to optional value-added services beyond the certified capabilities.
Developer responsibilities
- Comply with all applicable laws, including HIPAA and the 21st Century Cures Act information-blocking provisions.
- Protect
client_secretvalues, private keys, and tokens. Do not embed secrets in distributable public clients; use PKCE for public clients. - Use TLS 1.2 or higher for all connections; connections below TLS 1.2 are rejected.
- Honor the patient’s authorization decisions and granted scopes, and provide a clear privacy notice describing how your application uses and discloses data.
- Do not use the API to disrupt, overload, or circumvent the security of the service, and respect published rate limits and acceptable-use expectations.
Suspension and changes
- Commure (d/b/a Athelas) may suspend or revoke access that poses a security risk, violates these terms, or harms patients or the service, consistent with §170.404 permitted exceptions.
- These terms and the API may change over time; material changes will be reflected on this page. The API is provided “as is” without warranties except as required by law.
Service Base URL
The published Service Base URL directory (FHIR Endpoint Bundle) for the Commure EHR FHIR API is available at: https://api.commure.com/fhir/onc/base.jsonFAQ
Where do I find the CapabilityStatement and SMART configuration?
Where do I find the CapabilityStatement and SMART configuration?
Both are unauthenticated
GET endpoints on the Service Base URL: the FHIR CapabilityStatement at /metadata and the SMART discovery document at /.well-known/smart-configuration. Examples of each output are included on this page.How do I register an application?
How do I register an application?
Self-serve registration is planned for a future release. Today, contact Commure (d/b/a Athelas) to register — see the Application Registration & Onboarding Guide. There are no registration, sandbox, or production fees.
Which version of US Core and USCDI does the API support?
Which version of US Core and USCDI does the API support?
The API conforms to US Core 6.1.0 on FHIR R4 (4.0.1) and supports the USCDI v3 data set. See the US Core Conformance Statement and the Resource-to-USCDI Mapping Matrix.
How do I validate my integration for ONC (g)(10)?
How do I validate my integration for ONC (g)(10)?
Run the ONC Inferno (g)(10) Standardized API test kit against the Service Base URL. It exercises SMART App Launch v2.0, US Core 6.1.0, and Bulk Data v2.0 conformance.
Can I write data back through the API?
Can I write data back through the API?
No. The API is read-only — all interactions are
read and search-type. Write operations are not supported.