CoverageEligibilityResponse — détail
Réponse de l'assureur à une CoverageEligibilityRequest. Contient le détail benefit allowed/used, les exigences d'autorisation préalable, plafonds annuels, exclusions, copay/déductible. Pierre angulaire de la tarification temps-réel pour la préadmission, le tiers-payant, l'estimation patient.
Outcome values
Le champ outcome indique le résultat du processing :
queued— réception OK mais traitement asynchrone (réponse complète plus tard).complete— traitement OK avec résultat complet (peut être positif ou négatif).error— erreur de processing (cf.errorarray pour détail).partial— traitement partiel (certains items OK, d'autres non).
Champs clés
| Champ | Cardinalité | Rôle |
|---|---|---|
status | 1..1 | active / cancelled / draft / entered-in-error. |
purpose | 1..* | Echo du purpose de la request. |
patient | 1..1 | Patient évalué. |
request | 0..1 | Référence à la CoverageEligibilityRequest. |
outcome | 1..1 | queued / complete / error / partial. |
disposition | 0..1 | Message humain (statut texte libre). |
insurance | 0..* | Détail par couverture évaluée. |
insurance.inforce | 0..1 | Couverture active à la date demandée ? |
insurance.benefitPeriod | 0..1 | Période de validité du benefit. |
insurance.item | 0..* | Détail par acte/produit demandé. |
preAuthRef | 0..* | Référence(s) d'autorisation préalable accordée. |
form | 0..1 | Format de réponse (PDF, XML legacy...). |
benefitBalance (allowed/used)
L'élément insurance.item.benefit est la richesse de cette ressource.
Chaque benefit a :
type— benefit / copay / deductible / room / lifetime / visit-cap...allowed[x]— montant ou quantité autorisée (Money, UnsignedInt, String).used[x]— déjà consommé sur la période.
Permet au système préadmission de calculer instantanément le reste à charge patient : RAC = unitPrice − benefit.allowed − used.
Exemple : ALD couvert à 100% prothèse hanche
CNAM répond à Hôpital Bichat : prothèse couverte 100% au titre de l'ALD 30 coxarthrose, pas d'autorisation préalable requise :
{
"resourceType": "CoverageEligibilityResponse",
"id": "elig-resp-orthopedie-marie-887",
"status": "active",
"purpose": ["validation", "benefits"],
"patient": { "reference": "Patient/marie-durand-887" },
"servicedDate": "2026-06-15",
"created": "2026-05-19T17:30:08+02:00",
"requestor": { "reference": "Organization/hopital-bichat" },
"request": { "reference": "CoverageEligibilityRequest/elig-req-orthopedie-marie-887" },
"outcome": "complete",
"disposition": "Patient ALD30 - coxarthrose - prise en charge 100% TIPS sans depassement honoraires.",
"insurer": { "reference": "Organization/cnam-paris-75" },
"insurance": [{
"coverage": { "reference": "Coverage/cov-cnam-marie-887" },
"inforce": true,
"benefitPeriod": {
"start": "2026-01-01",
"end": "2026-12-31"
},
"item": [{
"category": {
"coding": [{
"system": "http://terminology.hl7.org/CodeSystem/ex-benefitcategory",
"code": "47"
}]
},
"productOrService": {
"coding": [{
"system": "http://www.ameli.fr/ccam",
"code": "NEKA020"
}]
},
"excluded": false,
"network": {
"coding": [{
"system": "http://terminology.hl7.org/CodeSystem/benefit-network",
"code": "in"
}]
},
"unit": {
"coding": [{
"system": "http://terminology.hl7.org/CodeSystem/benefit-unit",
"code": "individual"
}]
},
"term": {
"coding": [{
"system": "http://terminology.hl7.org/CodeSystem/benefit-term",
"code": "annual"
}]
},
"benefit": [{
"type": {
"coding": [{
"system": "http://terminology.hl7.org/CodeSystem/benefit-type",
"code": "benefit"
}]
},
"allowedMoney": { "value": 7500.00, "currency": "EUR" }
}, {
"type": {
"coding": [{
"system": "http://terminology.hl7.org/CodeSystem/benefit-type",
"code": "copay"
}]
},
"allowedMoney": { "value": 0.00, "currency": "EUR" }
}],
"authorizationRequired": false
}]
}]
} Pièges courants
- inforce vs benefit absent — si
inforce=truemais aucun benefit, l'ASIH ne sait pas ce qui est couvert. Réponses incomplètes fréquentes côté tiers. - preAuthRef requis non-fourni — si
authorizationRequired=truesans preAuthRef, le système doit appeler une seconde requête `priorAuthorization`. - Confusion allowedMoney vs unitPrice request — allowedMoney = ce que l'assureur paiera ; unitPrice (request) = prix demandé. Différence = reste à charge patient.
- Pas de cache — les réponses statiques (plan benefits) peuvent être cachées 24h pour réduire les coûts API. Vérifier les conditions d'invalidation.