openapi: 3.0.3
info:
title: CMS Beneficiary Claims Data API (BCDA)
description: |
BCDA enables Medicare Shared Savings Program ACOs to retrieve bulk Medicare Parts A, B,
and D claims data for assigned and assignable beneficiaries via the HL7 FHIR Bulk Data
Access (Flat FHIR) specification.
version: '2.0'
contact:
name: BCDA Help
url: https://bcda.cms.gov/
email: [email protected]
license:
name: Public Domain (U.S. Government Work)
url: https://www.usa.gov/government-works
servers:
- url: https://api.bcda.cms.gov/api/v2
description: Production
- url: https://sandbox.bcda.cms.gov/api/v2
description: Sandbox
security:
- BearerAuth: []
paths:
/metadata:
get:
summary: Get FHIR Capability Statement
operationId: getCapabilityStatement
tags: [Metadata]
security: []
responses:
'200': { description: CapabilityStatement, content: { application/fhir+json: { schema: { type: object } } } }
/Patient/$export:
get:
summary: Initiate Bulk Patient Export
operationId: exportPatient
description: Asynchronously export Patient resources for the ACO's beneficiary population.
tags: [Bulk Export]
parameters:
- { name: _type, in: query, schema: { type: string, description: 'Comma-delimited list: Patient,Coverage,ExplanationOfBenefit' } }
- { name: _since, in: query, schema: { type: string, format: date-time } }
- { name: _outputFormat, in: query, schema: { type: string, default: 'application/fhir+ndjson' } }
- { name: Prefer, in: header, required: true, schema: { type: string, enum: ['respond-async'] } }
- { name: Accept, in: header, required: true, schema: { type: string, enum: ['application/fhir+json'] } }
responses:
'202':
description: Export job accepted; poll Content-Location for status.
headers:
Content-Location: { schema: { type: string, format: uri } }
/Group/{groupId}/$export:
get:
summary: Initiate Group Bulk Export
operationId: exportGroup
tags: [Bulk Export]
parameters:
- { name: groupId, in: path, required: true, schema: { type: string, enum: [all, runout, new] } }
- { name: _type, in: query, schema: { type: string } }
- { name: _since, in: query, schema: { type: string, format: date-time } }
- { name: Prefer, in: header, required: true, schema: { type: string } }
responses:
'202': { description: Accepted }
/jobs/{jobId}:
get:
summary: Get Bulk Export Job Status
operationId: getJob
tags: [Bulk Export]
parameters:
- { name: jobId, in: path, required: true, schema: { type: string } }
responses:
'200':
description: Job complete, output manifest returned.
content:
application/json:
schema:
type: object
properties:
transactionTime: { type: string, format: date-time }
request: { type: string }
requiresAccessToken: { type: boolean }
output:
type: array
items:
type: object
properties:
type: { type: string }
url: { type: string, format: uri }
error: { type: array, items: { type: object } }
'202': { description: Still processing }
delete:
summary: Cancel Bulk Export Job
operationId: cancelJob
tags: [Bulk Export]
parameters:
- { name: jobId, in: path, required: true, schema: { type: string } }
responses:
'202': { description: Job cancelled }
/jobs:
get:
summary: List Bulk Export Jobs
operationId: listJobs
tags: [Bulk Export]
responses:
'200': { description: List of jobs, content: { application/json: { schema: { type: array, items: { type: object } } } } }
/attribution_status:
get:
summary: Get Attribution Status
operationId: getAttributionStatus
description: Retrieve the date of the last attribution and runout file ingestion.
tags: [Metadata]
responses:
'200': { description: Attribution status, content: { application/json: { schema: { type: object } } } }
components:
securitySchemes:
BearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
description: BCDA uses SMART Backend Services authentication — token obtained from /auth/token.