CoverageEligibilityResponse — detail
Insurer's response to a CoverageEligibilityRequest. Contains benefit allowed/used detail, prior authorization requirements, annual caps, exclusions, copay/deductible. Cornerstone of real-time pricing for preadmission, third-party payer, patient estimation.
Outcome values
The outcome field indicates the processing result:
queued— receipt OK but async processing (complete response later).complete— processing OK with complete result (positive or negative).error— processing error (seeerrorarray for detail).partial— partial processing (some items OK, others not).
Key fields
| Field | Cardinality | Role |
|---|---|---|
status | 1..1 | active / cancelled / draft / entered-in-error. |
purpose | 1..* | Echo of request purpose. |
patient | 1..1 | Evaluated patient. |
request | 0..1 | Reference to CoverageEligibilityRequest. |
outcome | 1..1 | queued / complete / error / partial. |
disposition | 0..1 | Human message (free text status). |
insurance | 0..* | Detail by evaluated coverage. |
insurance.inforce | 0..1 | Coverage active at requested date? |
insurance.benefitPeriod | 0..1 | Benefit validity period. |
insurance.item | 0..* | Detail by requested procedure/product. |
preAuthRef | 0..* | Granted prior authorization reference(s). |
form | 0..1 | Response format (PDF, legacy XML…). |
benefitBalance (allowed/used)
The insurance.item.benefit element is the richness of this resource.
Each benefit has:
type— benefit / copay / deductible / room / lifetime / visit-cap…allowed[x]— allowed amount or quantity (Money, UnsignedInt, String).used[x]— already consumed in the period.
Allows preadmission system to instantly compute patient out-of-pocket: OOP = unitPrice − benefit.allowed − used.
Example: hip prosthesis fully covered
Medicare responds to Bichat Hospital: prosthesis 100% covered, no prior auth required:
{
"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 covered - hip replacement covered at 100% TIPS with no out-of-pocket.",
"insurer": { "reference": "Organization/cms-medicare" },
"insurance": [{
"coverage": { "reference": "Coverage/cov-medicare-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.cms.gov/Medicare/Coding/ICD10",
"code": "0SR9019"
}]
},
"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": "USD" }
}, {
"type": {
"coding": [{
"system": "http://terminology.hl7.org/CodeSystem/benefit-type",
"code": "copay"
}]
},
"allowedMoney": { "value": 0.00, "currency": "USD" }
}],
"authorizationRequired": false
}]
}]
} Common pitfalls
- inforce vs benefit missing — if
inforce=truebut no benefit, requesting system doesn't know what's covered. Incomplete responses frequent on third-party side. - preAuthRef required not provided — if
authorizationRequired=truewithout preAuthRef, system must make a second `priorAuthorization` call. - Confusion allowedMoney vs request unitPrice — allowedMoney = what insurer will pay; unitPrice (request) = price asked. Difference = patient out-of-pocket.
- No cache — static responses (plan benefits) can be cached 24h to reduce API costs. Check invalidation conditions.