340B FHIR Exchange Implementation Guide
0.1.0-ballot - ci-build United States of America flag

340B FHIR Exchange Implementation Guide - Local Development build (v0.1.0-ballot) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

Conformance Quick Start

340B FHIR Exchange — Conformance Quick Start

This page provides the minimum information a partner needs to integrate with the 340B FHIR Exchange.


Actors and Roles

Actor Role
Covered Entity (CE) Records dispenses; owns eligibility and accumulator state
Pharmacy Submits dispense records to CE or TPA on behalf of CE
TPA Aggregates dispense data; submits chargebacks to manufacturers on behalf of CEs
Manufacturer Adjudicates chargebacks; initiates or responds to disputes

Transaction Lifecycle

All transactions share a 340b-correlation-id (links every event in a single dispense lifecycle) and a 340b-exchange-transaction-id (uniquely identifies each individual message).

# Event Direction
1 Dispense recorded Pharmacy / CE → TPA
2 Eligibility evaluated TPA (internal)
3 Accumulator updated TPA (internal)
4 Replenishment requested TPA → Manufacturer
5 Chargeback submitted TPA → Manufacturer
6 Chargeback adjudicated Manufacturer → TPA
7 Transaction reversed Any party
8 Dispute opened TPA or CE → Manufacturer
9 Dispute resolved Manufacturer → TPA

Minimum Conformance by Actor

Covered Entity / Pharmacy

  • SHALL create and submit 340BMedicationDispense resources with 340b-correlation-id, 340b-exchange-transaction-id, and 340b-ce-id populated
  • SHALL support 340BAuditEvent for local compliance logging
  • SHOULD populate 340b-accumulator-bucket-id when accumulator tracking is active

TPA

  • SHALL submit chargebacks using 340BClaim with all four required extensions
  • SHALL accept and process 340BClaimResponse adjudication responses
  • SHALL create and manage 340BDisputeTask for exception cases
  • SHALL route all transactions as 340BMessageBundle with a populated Bundle.identifier

Manufacturer

  • SHALL accept 340BClaim submissions and return a 340BClaimResponse for every claim
  • SHALL populate 340b-rule-set-version on every 340BClaimResponse
  • SHALL create 340BProvenance records capturing the rule set applied to each adjudication decision
  • SHALL create 340BAuditEvent records for every adjudication and dispute resolution
  • SHALL accept and respond to 340BDisputeTask resources

Message Transport

Every exchange is wrapped in a 340BMessageBundle (FHIR Bundle with type = message):

  • Bundle.identifier carries the exchange transaction ID at the envelope level
  • Bundle.entry[0] is always a MessageHeader with an event code from the 340b-event-type CodeSystem
  • Individual payload resources inside the bundle carry 340b-correlation-id and 340b-exchange-transaction-id extensions

Getting Started

  1. Review the Artifacts page for all profiles, extensions, and terminology.
  2. Download the CapabilityStatement for your actor role and validate your server against it.
  3. Use the example bundles (bundle-chargeback-submitted, bundle-chargeback-adjudicated) as integration test fixtures.
  4. Validate all resources using the FHIR Validator against this IG package (org.340b.fhir.exchange#0.1.0-ballot).