340B FHIR Exchange Implementation Guide
0.1.0-ballot - ci-build
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
This page provides the minimum information a partner needs to integrate with the 340B FHIR Exchange.
| 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 |
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 |
340BMedicationDispense resources with 340b-correlation-id, 340b-exchange-transaction-id, and 340b-ce-id populated340BAuditEvent for local compliance logging340b-accumulator-bucket-id when accumulator tracking is active340BClaim with all four required extensions340BClaimResponse adjudication responses340BDisputeTask for exception cases340BMessageBundle with a populated Bundle.identifier340BClaim submissions and return a 340BClaimResponse for every claim340b-rule-set-version on every 340BClaimResponse340BProvenance records capturing the rule set applied to each adjudication decision340BAuditEvent records for every adjudication and dispute resolution340BDisputeTask resourcesEvery exchange is wrapped in a 340BMessageBundle (FHIR Bundle with type = message):
Bundle.identifier carries the exchange transaction ID at the envelope levelBundle.entry[0] is always a MessageHeader with an event code from the 340b-event-type CodeSystem340b-correlation-id and 340b-exchange-transaction-id extensionsbundle-chargeback-submitted, bundle-chargeback-adjudicated) as integration test fixtures.org.340b.fhir.exchange#0.1.0-ballot).