ExplanationOfBenefit — Relevé de prestations
Le récapitulatif patient des prestations remboursées, refusées ou ajustées par l'assureur. La pièce maîtresse du CMS Patient Access API.
Objet de la ressource
ExplanationOfBenefit (EOB) est le relevé patient produit par l'assureur après traitement d'un Claim. C'est ce que reçoit le patient pour comprendre :
- quels actes ont été facturés ;
- quel montant a été remboursé ;
- quel reste à charge il doit payer (co-pay, deductible, non couvert) ;
- quel paiement a été émis au provider.
En 2026, l'EOB est devenu central dans l'écosystème US : le règlement CMS 9115-F (depuis 2021, étendu en 2024 sous CMS-0057-F) impose à tout payor public et privé de mettre à disposition les EOB historiques de leurs assurés via une Patient Access API conforme à CARIN BB 2.0.
Champs clés
| Champ | Type | Cardinalité | Rôle |
|---|---|---|---|
identifier | Identifier[] | 0..* | Identifiant métier de l'EOB. |
status | code | 1..1 | active, cancelled, draft, entered-in-error. |
type | CodeableConcept | 1..1 | Catégorie (matchant le Claim source). |
use | code | 1..1 | claim, preauthorization, predetermination. |
patient | Reference(Patient) | 1..1 | Bénéficiaire. |
billablePeriod | Period | 0..1 | Période de service. |
created | dateTime | 1..1 | Date de génération de l'EOB. |
insurer | Reference(Organization) | 1..1 | Assureur émetteur. |
provider | Reference(Practitioner | PractitionerRole | Organization) | 1..1 | Provider de l'acte. |
outcome | code | 1..1 | queued, complete, error, partial. |
disposition | string | 0..1 | Disposition humaine. |
claim | Reference(Claim) | 0..1 | Lien vers le Claim original. |
claimResponse | Reference(ClaimResponse) | 0..1 | Lien vers la ClaimResponse. |
diagnosis | BackboneElement[] | 0..* | Diagnostics. |
procedure | BackboneElement[] | 0..* | Actes. |
insurance | BackboneElement[] | 1..* | Coverage(s) appliquée(s). |
item | BackboneElement[] | 0..* | Lignes facturées avec adjudication. |
total | BackboneElement[] | 0..* | Totaux par catégorie d'adjudication. |
payment | BackboneElement | 0..1 | Paiement réalisé. |
benefitBalance | BackboneElement[] | 0..* | Solde de prestations (deductible consommé / restant, out-of-pocket). |
Différences avec ClaimResponse
| Aspect | ClaimResponse | ExplanationOfBenefit |
|---|---|---|
| Destinataire principal | Provider (B2B) | Patient (B2C, via Patient Access API) |
| Format | Technique, focalisé sur paiement | Lisible, contextualisé, historique |
| Cycle | Émis dès traitement du Claim | Émis périodiquement (ex : tous les 7 jours) |
| Persistance | Souvent transitoire | Conservé en archive (souvent 7 ans+ par la loi) |
Champ benefitBalance | Non | Oui — soldes annuels (deductible, OOP) |
Exemple JSON
EOB pour le Claim professional-2026-001 remboursé : facturé 120,
co-pay 20, payé 80 au provider. Le patient reçoit ce relevé une semaine après
sa visite :
{
"resourceType": "ExplanationOfBenefit",
"id": "eob-2026-001",
"status": "active",
"type": {
"coding": [{
"system": "http://terminology.hl7.org/CodeSystem/claim-type",
"code": "professional"
}]
},
"use": "claim",
"patient": { "reference": "Patient/example" },
"billablePeriod": {
"start": "2026-05-14",
"end": "2026-05-14"
},
"created": "2026-05-21T08:00:00+01:00",
"insurer": { "reference": "Organization/aetna" },
"provider": { "reference": "Practitioner/dr-jones" },
"outcome": "complete",
"disposition": "Processed.",
"claim": { "reference": "Claim/professional-2026-001" },
"claimResponse": { "reference": "ClaimResponse/response-2026-001" },
"insurance": [{
"focal": true,
"coverage": { "reference": "Coverage/primary-aetna" }
}],
"item": [{
"sequence": 1,
"productOrService": {
"coding": [{
"system": "http://www.ama-assn.org/go/cpt",
"code": "99213"
}]
},
"servicedDate": "2026-05-14",
"adjudication": [{
"category": {
"coding": [{
"system": "http://terminology.hl7.org/CodeSystem/adjudication",
"code": "submitted"
}]
},
"amount": { "value": 120.00, "currency": "USD" }
}, {
"category": {
"coding": [{
"system": "http://terminology.hl7.org/CodeSystem/adjudication",
"code": "copay"
}]
},
"amount": { "value": 20.00, "currency": "USD" }
}, {
"category": {
"coding": [{
"system": "http://terminology.hl7.org/CodeSystem/adjudication",
"code": "benefit"
}]
},
"amount": { "value": 80.00, "currency": "USD" }
}]
}],
"total": [{
"category": {
"coding": [{
"system": "http://terminology.hl7.org/CodeSystem/adjudication",
"code": "submitted"
}]
},
"amount": { "value": 120.00, "currency": "USD" }
}, {
"category": {
"coding": [{
"system": "http://terminology.hl7.org/CodeSystem/adjudication",
"code": "benefit"
}]
},
"amount": { "value": 80.00, "currency": "USD" }
}],
"payment": {
"amount": { "value": 80.00, "currency": "USD" }
}
} claim+claimResponsetracent le lien complet vers les ressources amont.- L'
item[0].adjudicationrecopie le détail de la ClaimResponse pour que le patient comprenne en autonomie. payment.amountindique au patient combien a été versé au provider.billablePerioddocumente la période de service (ici, une journée unique).
API REST
GET /ExplanationOfBenefit?patient=Patient/example&_sort=-created— relevés patient triés.GET /ExplanationOfBenefit?patient=Patient/example&billable-period-start=ge2026-01-01— relevés 2026.GET /ExplanationOfBenefit/eob-2026-001— relevé spécifique.GET /ExplanationOfBenefit?coverage=Coverage/primary-aetna— relevés liés à une coverage.GET /ExplanationOfBenefit?_include=ExplanationOfBenefit:claim&_include=ExplanationOfBenefit:claim-response— relevé + amont complet.POST /Patient/example/$everything?_type=ExplanationOfBenefit— historique financier complet patient.
Profils
| Profil | Régulateur | Particularité |
|---|---|---|
| CARIN BB EOB Inpatient Institutional | HL7 CARIN Alliance | Pour CMS Patient Access API — hospitalisations. |
| CARIN BB EOB Outpatient Institutional | HL7 CARIN Alliance | Soins ambulatoires institutionnels. |
| CARIN BB EOB Professional NonClinician | HL7 CARIN Alliance | Soins professionnels (cabinet, spécialistes). |
| CARIN BB EOB Pharmacy | HL7 CARIN Alliance | Pharmacie. |
| CARIN BB EOB Oral | HL7 CARIN Alliance | Dentaire. |
| Da Vinci PDex EOB | HL7 Da Vinci | Patient Data Exchange (payor-to-payor). |
Pièges courants
- EOB sans
claimniclaimResponse— un EOB déconnecté de ses pièces sources n'est ni auditable ni rapprochable. - Profil CARIN BB non respecté — pour l'usage CMS Patient Access API, il faut choisir le bon profil parmi les six CARIN BB et porter les éléments imposés (types, identifiants, adjudication categories).
benefitBalancemanquant — pour permettre au patient de suivre son out-of-pocket, ce bloc doit être renseigné (deductible-met, out-of-pocket-met, etc.).- Disposition technique en clair — éviter d'exposer des codes internes assureur (denial reason codes propriétaires) sans traduction lisible.
- Item adjudication categories non standard — utiliser strictement le CodeSystem
adjudication+ extension CARINadjudicationDenialReasonselon le profil.
Ressources liées
- Claim — source amont.
- ClaimResponse — décision interbancaire / B2B.
- Coverage — couverture appliquée.
- PaymentReconciliation — réconciliation des paiements multiples.
- Patient — bénéficiaire.
- X12 835 — équivalent legacy interbancaire.