CMS Blue Button 2.0 API

Blue Button 2.0 is a developer-friendly, OAuth 2.0-enabled, HL7 FHIR R4 standard data API that delivers Medicare Part A, B, and D claims data for 60+ million Medicare beneficiaries to applications, services, and research programs. Includes Patient, Coverage, and ExplanationOfBenefit resources for the beneficiary's consented data.

OpenAPI Specification

cms-gov-blue-button-2-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: CMS Blue Button 2.0 API
  description: |
    The CMS Blue Button 2.0 API is a developer-friendly, OAuth 2.0-enabled HL7 FHIR R4 API
    that delivers Medicare Part A, B, and D claims data for 60+ million Medicare beneficiaries
    to applications, services, and research programs after the beneficiary grants consent.
  version: '2.0'
  contact:
    name: CMS Blue Button Developer Help
    url: https://bluebutton.cms.gov/developers/
    email: bluebuttonapi@cms.hhs.gov
  license:
    name: Public Domain (U.S. Government Work)
    url: https://www.usa.gov/government-works
servers:
- url: https://api.bluebutton.cms.gov/v2/fhir
  description: Production FHIR R4 endpoint
- url: https://sandbox.bluebutton.cms.gov/v2/fhir
  description: Sandbox FHIR R4 endpoint
security:
- OAuth2: [read]
paths:
  /metadata:
    get:
      summary: Get FHIR Capability Statement
      operationId: getCapabilityStatement
      tags: [Metadata]
      security: []
      responses:
        '200':
          description: FHIR CapabilityStatement
          content:
            application/fhir+json:
              schema: { $ref: '#/components/schemas/CapabilityStatement' }
  /Patient:
    get:
      summary: Search Patient Resources
      operationId: searchPatient
      description: Returns the Patient resource for the currently authorized beneficiary.
      tags: [Patient]
      parameters:
      - { name: _id, in: query, schema: { type: string } }
      - { name: _format, in: query, schema: { type: string, enum: [application/fhir+json, application/fhir+xml] } }
      responses:
        '200':
          description: Bundle of Patient resources
          content:
            application/fhir+json:
              schema: { $ref: '#/components/schemas/Bundle' }
  /Patient/{id}:
    get:
      summary: Read Patient by ID
      operationId: readPatient
      tags: [Patient]
      parameters:
      - { name: id, in: path, required: true, schema: { type: string } }
      responses:
        '200':
          description: Patient resource
          content:
            application/fhir+json:
              schema: { $ref: '#/components/schemas/Patient' }
  /Coverage:
    get:
      summary: Search Coverage Resources
      operationId: searchCoverage
      tags: [Coverage]
      parameters:
      - { name: beneficiary, in: query, schema: { type: string } }
      - { name: _format, in: query, schema: { type: string } }
      responses:
        '200':
          description: Bundle of Coverage resources
          content:
            application/fhir+json:
              schema: { $ref: '#/components/schemas/Bundle' }
  /Coverage/{id}:
    get:
      summary: Read Coverage by ID
      operationId: readCoverage
      tags: [Coverage]
      parameters:
      - { name: id, in: path, required: true, schema: { type: string } }
      responses:
        '200':
          description: Coverage resource
          content:
            application/fhir+json:
              schema: { $ref: '#/components/schemas/Coverage' }
  /ExplanationOfBenefit:
    get:
      summary: Search Explanation Of Benefit Resources
      operationId: searchExplanationOfBenefit
      description: Returns Medicare claims as FHIR ExplanationOfBenefit resources for the authorized beneficiary.
      tags: [ExplanationOfBenefit]
      parameters:
      - { name: patient, in: query, schema: { type: string } }
      - { name: type, in: query, schema: { type: string, description: 'Claim type: carrier, dme, hha, hospice, inpatient, outpatient, pde, snf' } }
      - { name: service-date, in: query, schema: { type: string, description: 'FHIR date or date range' } }
      - { name: _lastUpdated, in: query, schema: { type: string } }
      - { name: startIndex, in: query, schema: { type: integer } }
      - { name: _count, in: query, schema: { type: integer, maximum: 50 } }
      responses:
        '200':
          description: Bundle of ExplanationOfBenefit resources
          content:
            application/fhir+json:
              schema: { $ref: '#/components/schemas/Bundle' }
  /ExplanationOfBenefit/{id}:
    get:
      summary: Read Explanation Of Benefit by ID
      operationId: readExplanationOfBenefit
      tags: [ExplanationOfBenefit]
      parameters:
      - { name: id, in: path, required: true, schema: { type: string } }
      responses:
        '200':
          description: ExplanationOfBenefit resource
          content:
            application/fhir+json:
              schema: { $ref: '#/components/schemas/ExplanationOfBenefit' }
  /userinfo:
    get:
      summary: Get Beneficiary User Info
      operationId: getUserinfo
      description: OpenID Connect userinfo endpoint returning beneficiary identity claims.
      tags: [Auth]
      responses:
        '200':
          description: User info claims
          content:
            application/json:
              schema:
                type: object
                properties:
                  sub: { type: string }
                  patient: { type: string }
                  name: { type: string }
                  given_name: { type: string }
                  family_name: { type: string }
components:
  securitySchemes:
    OAuth2:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: https://api.bluebutton.cms.gov/v2/o/authorize/
          tokenUrl: https://api.bluebutton.cms.gov/v2/o/token/
          scopes:
            patient/Patient.read: Read Patient resource
            patient/Coverage.read: Read Coverage resources
            patient/ExplanationOfBenefit.read: Read ExplanationOfBenefit resources
            profile: OpenID profile claims
  schemas:
    Bundle:
      type: object
      properties:
        resourceType: { type: string, enum: [Bundle] }
        type: { type: string }
        total: { type: integer }
        link: { type: array, items: { type: object } }
        entry:
          type: array
          items:
            type: object
            properties:
              resource: { type: object }
              fullUrl: { type: string }
    Patient:
      type: object
      properties:
        resourceType: { type: string, enum: [Patient] }
        id: { type: string }
        identifier: { type: array, items: { type: object } }
        name: { type: array, items: { type: object } }
        gender: { type: string, enum: [male, female, other, unknown] }
        birthDate: { type: string, format: date }
        address: { type: array, items: { type: object } }
    Coverage:
      type: object
      properties:
        resourceType: { type: string, enum: [Coverage] }
        id: { type: string }
        status: { type: string, enum: [active, cancelled, draft, entered-in-error] }
        type: { type: object }
        beneficiary: { type: object }
        relationship: { type: object }
        period: { type: object }
        payor: { type: array, items: { type: object } }
    ExplanationOfBenefit:
      type: object
      properties:
        resourceType: { type: string, enum: [ExplanationOfBenefit] }
        id: { type: string }
        status: { type: string }
        type: { type: object }
        use: { type: string }
        patient: { type: object }
        billablePeriod: { type: object }
        created: { type: string, format: date-time }
        insurer: { type: object }
        provider: { type: object }
        diagnosis: { type: array, items: { type: object } }
        procedure: { type: array, items: { type: object } }
        item: { type: array, items: { type: object } }
        total: { type: array, items: { type: object } }
        payment: { type: object }
    CapabilityStatement:
      type: object
      properties:
        resourceType: { type: string, enum: [CapabilityStatement] }
        status: { type: string }
        fhirVersion: { type: string, enum: ['4.0.1'] }
        format: { type: array, items: { type: string } }
        rest: { type: array, items: { type: object } }