45 CFR § 170.315(g)(10) Standardized API — Public Documentation (800) 868-1923
HL7 FHIR R4 · ONC § 170.315(g)(10) Certified

FHIR R4 API for Patient &
Population Services

AllegianceMD's veracity standardized FHIR R4 API enables secure, interoperable access to patient health data through OAuth 2.0 and SMART-on-FHIR protocols.

🔗 Service Base URL

Production FHIR R4 endpoint and server metadata

FHIR R4 Base URL

GET https://fhir.allegiancemd.io/R4
ℹ️ Integration is simplified through a global base URL; There is no need for clinic-specific endpoints; the base URL is globally valid, with request destination managed by our smart routing layer

CapabilityStatement (metadata)

GET https://fhir.allegiancemd.io/R4/metadata

📋 Developer / Application Registration

How to register your application and obtain OAuth credentials

Registration Portal

Registration Procedure for Patient-Facing Applications

1

Register the application. Store your OAuth credentials securely (do not embed secrets in client-side code).

2

AllegianceMD will verify and approve the application.

3

After approval, it will be listed and activated across all clinics by default, except where a clinic opts out.

Registration Procedure for Clinical User-Facing Applications

1

Register the application. Store your OAuth credentials securely (do not embed secrets in client-side code).

2

AllegianceMD will review and approve the application.

3

After approval, it will be listed on the app gallery.

ℹ️ Clinical User-Facing Apps: These applications require clinical-level credentials and may involve business Associate Agreements (BAA) or service contracts between the PHI Provider and the App Developer. Therefore, these apps are available in the Veracity Gallery for Provider-led activation to ensure compliance with the Provider's internal HIPAA policies and workflow requirements.

system-to-system (B2B) Registration Process

1

Contact the healthcare organization (PHI Provider) that uses Veracity as their EMR.

2

The Provider supplies a registration link and reviews your request.

3

The Provider approves or denies your registration.

4

If approved, your application receives OAuth client credentials (client_id and, when applicable, client_secret).

ℹ️ Each PHI Provider is a separate entity and administers access for their own deployment — including approvals, denials, user provisioning, and credential revocation.

Application Verification & Transparency

Non-discriminatory verification process in accordance with the 21st Century Cures Act and 45 CFR § 170.315(g)(10), and the information blocking regulations and exceptions at 45 CFR Part 171 · Last updated February 9, 2026

In accordance with the 21st Century Cures Act and 45 CFR § 170.315(g)(10), AllegianceMD is committed to a transparent, objective, and non-discriminatory process for verifying third-party applications. We verify applications solely to ensure the security of our platform and the privacy of the patients served by our providers.

1. Verification Scope & Timeline

AllegianceMD reviews all registration requests within 10 business days after receipt of complete submission materials. Our review is limited to technical conformance and security safety. We do not evaluate an application's business model, clinical utility, or competitive status.

2. Technical Conformance Criteria

To be verified for production use, applications must meet the following objective standards:

CriterionRequirement
IdentityDevelopers must provide verifiable identity (e.g., EIN, state registration, or equivalent documentation).
Individual PathwayFor independent developers, a government-issued ID or equivalent identity verification documentation, plus a verified permanent address.
ProtocolFull support for SMART-on-FHIR (v2.0.0) and OpenID Connect.
SecurityMandatory use of PKCE (Proof Key for Code Exchange) for public/mobile clients.
Credential SafetyApplications are strictly prohibited from requesting or storing EHR user credentials (password harvesting).

3. Privacy & Disclosure Requirements

We do not "approve" a developer's privacy practices, but we require transparency so users can make informed choices. All applications must:

RequirementDetails
Privacy PolicyProvide a publicly accessible Privacy Policy and Terms of Service.
Data Practices DisclosureDisclose retention, sharing, and revocation practices in a clear, user-accessible manner (e.g., in-app and/or prior to authorization).

4. Performance & Fair Use Standards

To ensure the stability of the healthcare environment, all API clients must adhere to our published rate limits.

ParameterValue
Standard Limit60 requests per minute per user session
Throttle ResponseClients must support 429 Too Many Requests status codes and implement exponential backoff.
DoS ProtectionAllegianceMD may temporarily suspend or throttle API access to the minimum extent necessary to mitigate an active security or performance threat and will restore access once mitigated.

5. Non-Discrimination & Appeals

If an application fails verification, AllegianceMD will provide a written Notice of Non-Conformance detailing the specific technical criteria that were not met. Developers are invited to remediate the issues and re-submit for verification at no additional cost. We will respond to resubmissions within 5 business days.

AllegianceMD's verification process is objective and non-discriminatory. We do not evaluate competitive status, business model, or clinical utility — only technical conformance and security safety.

📐 Standards & Technology

Underlying specifications and protocols

ComponentStandard
FHIR VersionHL7 FHIR R4 (4.0.x)
TransportHTTPS / TLS
AuthorizationOAuth 2.0 (SMART-on-FHIR authorization model)
🔒 All protected FHIR requests require a valid OAuth 2.0 access token transmitted as a Bearer token in the Authorization header.

🔑 OAuth 2.0 Grant Types

Supported authorization flows for application access

Grant TypeUse CaseClient Type
Authorization CodeUser-facing applications (patient/provider portals, mobile apps)Public or Confidential
Client CredentialsApproved system-to-system integrations (backend services)Confidential

Public vs. Confidential Clients

Confidential clients (able to securely store secrets) may be issued a client_secret for use in authorization grants and token requests.

Public clients (unable to securely store secrets, e.g., native/mobile apps) are not issued a client_secret. They use the Authorization Code flow with PKCE as required by RFC 7636.

Refresh Tokens

Client apps using the authorization code flow may request refresh tokens by including the offline_access scope. Refresh token lifetime defaults to 90 days. Each refresh token may be used once; a replacement is issued upon use. Refresh tokens are not issued for client credentials flows.

⚙️ SMART Configuration Discovery

Discover OAuth endpoints and SMART capabilities programmatically

GET https://fhir.allegiancemd.io/R4/.well-known/smart-configuration

This endpoint returns a JSON document containing the authorization_endpoint, token_endpoint, supported capabilities, token auth methods, scopes, grant types, and PKCE code challenge methods.

# Retrieve SMART configuration
curl -s -H "Accept: application/json" \
  https://fhir.allegiancemd.io/R4/.well-known/smart-configuration | python -m json.tool

🛡️ Authentication, Authorization & Scopes

User authentication and scope configuration

User Authentication

For authorization code flows, end users authenticate using credentials provided by the PHI Provider. Organizations may re-use existing patient portal or EHR credentials, mapping the authenticated user to a unique patient portal or EHR account.

Scopes

Your application requests scopes during the OAuth authorization step. Supported scopes depend on Provider configuration and the access context (patient, workforce, or system level).

Offline Access

Apps that can securely store refresh tokens may request the offline_access scope to receive a long-lived refresh token, subject to user and Provider approval.

⚠️ End users may modify or revoke scopes during the authorization process. Always verify the scopes returned in the token response.

📖 API Documentation & Reference

Interactive tools and human-readable documentation

ResourceURL
API Documentationallegiancemd.com/fhir/api-doc.html

📜 Terms of Use

Developer agreement and usage terms

All developers must agree to the Application Access Developer Agreement prior to integration.

🎧 Support & Change Management

Getting help and staying up to date

Support & Onboarding

Start with the PHI Provider that granted your application access. The Provider administers your registration and user provisioning and can coordinate escalation to AllegianceMD as needed.

Change Management

Integrations should be designed to tolerate routine platform updates. Where changes affect API compatibility, monitor the published documentation and the /metadata CapabilityStatement for current behavior and supported features.

🚀 Quick Start — Developer Checklist

Get up and running in 5 steps

1

Register your application

URL https://fhir-register.allegiancemd.com
2

Obtain OAuth client detailsclient_id and client_secret (if applicable).

3

Discover SMART endpoints

GET https://fhir.allegiancemd.io/R4/.well-known/smart-configuration
4

Perform OAuth flow — Authorization Code or Client Credentials as approved.

5

Call the FHIR server

GET https://fhir.allegiancemd.io/R4/metadata
GET https://fhir.allegiancemd.io/R4/Patient/{id}

📡 Appendix A.1 — CapabilityStatement

Live, authoritative conformance declaration for the FHIR R4 server

GET https://fhir.allegiancemd.io/R4/metadata

Key Fields

FieldDescription
fhirVersionSupported FHIR version
rest[].resource[].typeSupported resource types
rest[].resource[].interaction[].codeInteractions per resource (read, search-type, vread, etc.)
rest[].resource[].searchParam[]Supported search parameters (name, type, docs)
rest[].resource[].operation[]Resource-level operations ($)
formatSupported MIME types (json, xml)

List Supported Resource Types

# Retrieve and list all supported resource types
curl -s -H "Accept: application/fhir+json" \
  https://fhir.allegiancemd.io/R4/metadata \
  | python - <<'PY'
import json, sys
cs = json.load(sys.stdin)
types = set()
for rest in cs.get("rest", []):
    for r in rest.get("resource", []):
        t = r.get("type")
        if t: types.add(t)
for t in sorted(types): print(t)
PY

List Interactions Per Resource

# List interactions available for each resource type
curl -s -H "Accept: application/fhir+json" \
  https://fhir.allegiancemd.io/R4/metadata \
  | python - <<'PY'
import json, sys
cs = json.load(sys.stdin)
for rest in cs.get("rest", []):
    for r in rest.get("resource", []):
        rtype = r.get("type")
        interactions = [i.get("code") for i in r.get("interaction", []) if i.get("code")]
        if rtype:
            print(f"{rtype}: {', '.join(interactions)}")
PY
ℹ️ The /metadata response may vary by deployment configuration. Treat it as the authoritative source of truth at connection time. If the server requires authorization for /metadata, supply an access token in the Authorization header.

🔍 Appendix A.2 — SMART Discovery

Programmatic discovery of SMART-on-FHIR endpoints and capabilities

GET https://fhir.allegiancemd.io/R4/.well-known/smart-configuration

Typical Response Fields

FieldDescription
authorization_endpointURL for user authorization
token_endpointURL for token exchange
capabilitiesSMART capabilities list
token_endpoint_auth_methods_supportedSupported token auth methods
scopes_supportedPublished scopes (where available)
grant_types_supportedPublished grant types (where available)
code_challenge_methods_supportedPKCE methods (S256)
# Pretty-print SMART configuration
curl -s -H "Accept: application/json" \
  https://fhir.allegiancemd.io/R4/.well-known/smart-configuration | python -m json.tool

🔐 Appendix A.3 — PKCE Requirement

Proof Key for Code Exchange for authorization code flows

If your application uses the authorization code flow, PKCE is required. Use the S256 code challenge method as defined by RFC 7636.

StepParameterSent With
Authorization Requestcode_challengeAuthorization endpoint
Token Requestcode_verifierToken endpoint

⚠️ Appendix A.4 — Error Handling

HTTP status codes and OperationOutcome responses

Errors are returned as standard HTTP status codes. For FHIR-level processing errors, the server may return an OperationOutcome resource with details in the issue[] element.

Always Log

ItemDetails
HTTP Status401, 403, 400, 500, etc.
Response HeadersIncluding correlation / request IDs if present
OperationOutcome.issue[]Severity, code, diagnostics text

⏱️ Appendix A.5 — Rate Limiting / Fair Use

Handling throttling and retry behavior

If rate limits are applied, clients should honor server responses and implement exponential backoff for retryable failures. Providers may apply additional contractual or operational controls consistent with the published Terms of Use.

💻 Appendix B — Request Examples

Minimum request examples for FHIR + OAuth

FHIR Request (Bearer Token Required)

GET https://fhir.allegiancemd.io/R4/Patient/{id}
Authorization: Bearer <access_token>
Accept: application/fhir+json

CapabilityStatement Request

GET https://fhir.allegiancemd.io/R4/metadata
Accept: application/fhir+json

SMART Config Request

GET https://fhir.allegiancemd.io/R4/.well-known/smart-configuration
Accept: application/json