On this page

Insurance eligibility checks determine whether a patient's insurance is active, in-network, and has applicable benefits. They ensure that the provider will ultimately get compensated by the patient's insurer for a specific product or service.

## Use Cases

Insurance eligibility checks cover a variety of use cases, but generally they are used to answer three questions:

1. Is this insurance active?
2. Does this insurance cover basic visits to a provider?
3. Does this insurance cover a specific service type?

The most basic use case for an eligibility check is simply seeing if the policy is active and in force.

Adding a second layer is checking if the policy is active and also covers basic visits to a provider. These include appointments like physicals and check-ups and is the most common type of eligibility request.

Because it is so common, these types of requests are defined by the [X12 Service Type Codes](https://x12.org/codes/service-type-codes) in **service code 30**. This service type is "Plan Coverage and General Benefits", and checks for active basic coverage.

Two common use cases for this service type are:

- Checking that a new patient's coverage is active and has general benefits.
- Checking coverage directly prior to a visit to ensure that the policy has not changed and the patient is still covered.

Finally, checking that insurance covers a specific service type adds a third layer to an eligibility check. These are done to ensure that a patient is covered for more complex care. It is recommended to use the [X12 Service Type Codes](https://x12.org/codes/service-type-codes) to illustrate the type of care that is being checked.

For example, if a patient needs to purchase durable medical equipment, you would use **service code 12**. This code represents "Durable Medical Equipment Purchased".

It is important to note that you should be checking the _service type_ to be provided, not the _specific service_, which is exactly what the [X12 Service Type Codes](https://x12.org/codes/service-type-codes) are designed to do.

## Preparing an Eligibility Check

FHIR follows a request/response pattern for eligibility checks. This uses two resources: the [`CoverageEligibilityRequest`](/content/docs/api/fhir/resources/coverageeligibilityrequest/index.html) to model the request to the insurer and the [`CoverageEligibilityResponse`](/content/docs/api/fhir/resources/coverageeligibilityresponse/index.html) to model their response.

To complete an eligibility check, you will need the following information:

- Patient demographic info, modeled as a reference to a [`Patient`](/content/docs/api/fhir/resources/patient/index.html) resource.
- Patient insurance coverage, modeled as a reference to a [`Coverage`](/content/docs/api/fhir/resources/coverage/index.html) resource (see our [insurance guide](/content/docs/billing/patient-insurance/index.html) for more info).
- Provider info, modeled as a reference to the relevant [`Practitioner`](/content/docs/api/fhir/resources/practitioner/index.html), [`PractitionerRole`](/content/docs/api/fhir/resources/practitionerrole/index.html), or [`Organization`](/content/docs/api/fhir/resources/organization/index.html) (see the [provider network guide](/content/docs/administration/provider-directory/provider-networks/index.html) for more info).
- The procedure/service to be provided and the diagnosis. This information should be on the relevant [`Encounter`](/content/docs/api/fhir/resources/encounter/index.html).

## Creating a Request

FHIR provides the [`CoverageEligibilityRequest`](/content/docs/api/fhir/resources/coverageeligibilityrequest/index.html) resource to model a request for an insurance eligibility check.

| **Element** | **Description** | **Code System** | **Example** |
| --- | --- | --- | --- |
| `patient` | A reference to the [`Patient`](/content/docs/api/fhir/resources/patient/index.html) the request is for. |  | Patient/homer-simpson |
| `provider` | A reference to the [`Practitioner`](/content/docs/api/fhir/resources/practitioner/index.html) or [`Organization`](/content/docs/api/fhir/resources/organization/index.html) that will be providing the service. This is the party that is submitting the request, but is not necessarily the specific [`Practitioner`](/content/docs/api/fhir/resources/practitioner/index.html) who will be providing the service detailed within. |  | Practitioner/dr-alice-smith |
| `insurer` | A reference to the insurance [`Organization`](/content/docs/api/fhir/resources/organization/index.html) that is providing coverage and will be evaluating the request. |  | Organization/blue-cross |
| `purpose` | The reason the request is being made. Must be one of the following: <br>- `auth-requirements`: A check of prior authorization that is required for the specified product or service.<br>- `benefits`: The benefits on the plan or the benefits consumed by the specified product or service.<br>- `discovery`: A request for the insurer to report any coverages they are aware of in addition to the ones specified.<br>- `validation`: A check that the specified coverages are in-force. |  | validation |
| `insurance.coverage` | A reference to the [`Coverage`](/content/docs/api/fhir/resources/coverage/index.html) resource that is being checked. |  | Coverage/example-coverage |
| `item` | Details about the items, services, or procedures for which eligibility is being checked. |  | [See below](/content/docs/billing/insurance-eligibility-checks#the-item-being-checked-for-coverage/index.html) |
| `status` | The status of the request. |  | active |
| `supportingInfo` | Additional information about the request. This could include a patient's condition, more details about the situation, special considerations, or more. |  |  |

### The Item Being Checked for Coverage

As mentioned in the table above, the `item` element provides details about the eligibility being checked. This includes what procedure, product, or service is being provided as well as _why_ it is being provided.

The `item` field also provides additional data about the procedure, product, or service.

| **Property** | **Description** | **Code System** | **Example** |
| --- | --- | --- | --- |
| `category` | The general type of the service or product being checked for eligibility. | [X12 Codes](https://x12.org/codes/service-type-codes) | Vision Coverage |
| `productOrService` | The product, drug, service, etc. that is being provided. | [CPT Codes](https://www.ama-assn.org/topics/cpt-codes) | 92340 - Fitting of eyeglasses |
| `diagnosis` | The diagnosis for which care is being sought. | [ICD-10 Codes](https://www.icd10data.com/ICD10CM/Codes) | Condition/reduced-vision |
| `provider` | A reference to the [`Practitioner`](/content/docs/api/fhir/resources/practitioner/index.html) who is responsible for providing the service. |  | Practitioner/dr-alice-smith |
| `quantity` | The number of repetitions of the service that will be performed. |  | 2 |
| `unitPrice` | The price charged to the patient for a single unit of the service. This is the price that the provider charges for the service. |  | $200 |
| `facility` | A reference to the [`Location`](/content/docs/api/fhir/resources/location/index.html) or [`Organization`](/content/docs/api/fhir/resources/organization/index.html) where the service will be provided. |  | Organization/example-hospital |
| `detail` | A reference to the [`CarePlan`](/content/docs/api/fhir/resources/careplan/index.html) with details describing the service. |  | CarePlan/improve-vision |

Example: A coverage eligibility request for a consultation

```ts
{

resourceType: 'CoverageEligibilityRequest',

id: 'coverage-validation-request',

status: 'active',

purpose: ['validation'],

created: '2021-01-01T00:00:00.000Z',

patient: {

reference: 'Patient/homer-simpson',

},

provider: {

reference: 'Practitioner/dr-alice-smith',

},

insurer: {

reference: 'Organization/blue-cross-blue-shield',

},

insurance: [

{

coverage: {

reference: 'Coverage/homer-simpson-coverage',

},

},

],

item: [

{

category: {

coding: [

{

system: 'https://x12.org/codes/service-type-codes',

code: '3',

display: 'Consultation',

},

],

},

productOrService: {

coding: [

{

system: 'http://www.ama-assn.org/go/cpt',

code: '80504',

display: 'Consultation for a moderately complex clinical problem',

},

],

},

},

],

};
```

Example: A plan coverage and general benefits check

```ts
{

resourceType: 'CoverageEligibilityRequest',

id: 'general-benefits-check',

status: 'active',

purpose: ['benefits', 'discovery'],

created: '2021-01-01T00:00:00.000Z',

patient: {

reference: 'Patient/jane-doe',

},

provider: {

reference: 'Organization/example-hospital',

},

insurer: {

reference: 'Organization/kaiser-permanente',

},

insurance: [

{

coverage: {

reference: 'Coverage/jane-doe-coverage',

},

},

],

item: [

{

category: {

coding: [

{

system: 'https://x12.org/codes/service-type-codes',

code: '30',

display: 'Plan Coverage and General Benefits',

},

],

},

},

],

};
```

## Sending an Eligibility Check Request

Once you have created your [`CoverageEligibilityRequest`](/content/docs/api/fhir/resources/coverageeligibilityrequest/index.html), you need to send it to the insurer.

In addition to sending it directly to the insurer, there are services that simplify the process. Companies such as [Opkit](https://www.opkit.co/), [Availity](https://www.availity.com/), [Change Healthcare](https://www.changehealthcare.com/), [Waystar](https://www.waystar.com/) and [Candid Health](https://www.joincandidhealth.com/) allow you to send them eligibility checks directly.

Unfortunately, these companies format their requests based on [X12 EDI Format](https://x12.org/examples/005010x279) rather than FHIR, so you will need to convert your [`CoverageEligibilityRequest`](/content/docs/api/fhir/resources/coverageeligibilityrequest/index.html) to the correct format. This is a good workflow to implement [Bots](/content/docs/bots/bot-basics/index.html) to convert your request, interface with the company's API, and send the request. Additionally, you can have a [Subscription](/content/docs/subscriptions/index.html) to listen for a response and have a bot handle that as well.

## Receiving a Response

When you send your request, the insurer will review it and respond. This response will be modeled as a [`CoverageEligibilityResponse`](/content/docs/api/fhir/resources/coverageeligibilityresponse/index.html).

| **Element** | **Description** | **Example** |
| --- | --- | --- |
| `outcome` | The outcome of the _processing_ of the request. Does NOT answer if the patient is eligible for coverage. | complete |
| `disposition` | A human-readable description of the status of the request. | The policy is currently in-force. |
| `error` | Documents any errors that encountered during the eligibility check. Describes why a check may not have been able to be completed. | Missing Identifier |
| `insurance.item` | Details about the benefits, authorization requirements, and current benefits of the insurance. | [See below](/content/docs/billing/insurance-eligibility-checks#the-item-being-checked-for-coverage/index.html) |
| `insurance.inforce` | A boolean indicating if the coverage is in force for the requested period. | true |
| `insurance.benefitPeriod` | The term period of the benefits documented in the response. | 2023-01-01 – 2023-12-31 |
| `insurance.coverage` | A reference to the patient's [`Coverage`](/content/docs/api/fhir/resources/coverage/index.html) resource. | Coverage/example-coverage |
| `request` | A reference to the original [`CoverageEligibilityRequest`](/content/docs/api/fhir/resources/coverageeligibilityrequest/index.html) this is in response to. | CoverageEligibilityRequest/check-for-vision-coverage |
| `purpose` | The reason the initial request was made. [See the `purpose` field in the above table](/content/docs/billing/insurance-eligibility-checks#creating-a-request/index.html) for the allowed valueset. | validation |
| `status` | The status of the response. | active |
| `insurer` | A reference to the [`Organization`](/content/docs/api/fhir/resources/organization/index.html) that is providing coverage and that sent the response. | Organization/blue-cross |
| `patient` | A reference to the [`Patient`](/content/docs/api/fhir/resources/patient/index.html) the response is for. | Patient/homer-simpson |

### The Covered Items

Like its request counterpart, the [`CoverageEligibilityResponse`](/content/docs/api/fhir/resources/coverageeligibilityresponse/index.html) also has an `item` element, however it is a property on the `insurance` element rather than directly on the resource (e.g. `CoverageEligibilityResponse.insurance.item` vs `CoverageEligibilityRequest.item`). The `item` property contains details about allowed products and services under the insurance policy.

This field has some overlap with the request resource, but there are also significant differences between the two.

| **Property** | **Description** | **Code System** | **Example** |
| --- | --- | --- | --- |
| `benefit` | A description of the benefits allowed and used to date under the coverage. |  | allowedMoney: $10000, usedMoney: $645.99 |
| `description` | A more detailed description of the benefits or services that are covered. |  | Vision is covered in this policy. |
| `authorizationRequired` | A boolean indicating if authorization is required before providing service. |  | true |
| `authorizationSupporting` | Details about additional information or material needed to get authorization. | [`CoverageEligibilityResponse` Auth Support Codes](https://build.fhir.org/valueset-coverageeligibilityresponse-ex-auth-support.html) | Lab Report |
| `excluded` | A boolean indicating if the service is excluded from the plan. |  | false |
| `network` | Indicates whether the benefits apply to in-network or out-of-network providers. | [Network Type Codes](https://build.fhir.org/valueset-benefit-network.html) | in |
| `unit` | Indicates whether the benefits apply to an individual or to a family. | [Unit Type Codes](https://build.fhir.org/valueset-benefit-unit.html) | individual |
| `term` | The term or duration during which service is covered. | [Benefit Term Codes](https://build.fhir.org/valueset-benefit-term.html) | annual |
| `productOrService` | The product, drug, service, etc. that is being provided. | [CPT Codes](https://www.ama-assn.org/topics/cpt-codes) | 92340 - Fitting of eyeglasses |
| `provider` | A reference to the [`Practitioner`](/content/docs/api/fhir/resources/practitioner/index.html) who is responsible for providing the service. |  | Practitioner/dr-alice-smith |
| `category` | The general type of the service or product being checked for eligibility. |  | Vision Coverage |

Coordination of Benefits

FHIR makes the `insurance` field on both the request and response an array, allowing for coordination of benefits across multiple insurance policies.

When sending a request, if there are multiple insurances, the `CoverageEligibilityRequest.insurance.focal` field should be set to `true` on the specific coverage being checked.

The `item` field is also an array on the `insurance` element of a [`CoverageEligibilityResponse`](/content/docs/api/fhir/resources/coverageeligibilityresponse/index.html) because it can represent multiple items that are covered under a specific insurance. When coordinating care among multiple policies, it can be common for multiple items from multiple coverages to be relevant to the check.

Example: A coverage eligibility response for a basic consultation

```ts
{

resourceType: 'CoverageEligibilityResponse',

status: 'active',

purpose: ['validation'],

created: '2021-01-01T00:00:00.000Z',

patient: {

reference: 'Patient/homer-simpson',

},

request: {

reference: 'CoverageEligibilityRequest/coverage-validation-request',

},

outcome: 'complete',

disposition: 'Coverage is currently in-force',

insurer: {

reference: 'Organization/blue-cross-blue-shield',

},

insurance: [

{

coverage: {

reference: 'Coverage/homer-simpson-coverage',

},

inforce: true,

item: [

{

category: {

coding: [

{

system: 'https://x12.org/codes/service-type-codes',

code: '3',

display: 'Consultation',

},

],

},

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: [

{

code: 'copay-maximum',

},

],

},

allowedMoney: {

value: 100,

currency: 'USD',

},

},

],

},

],

},

],

};
```

Example: A plan coverage and general benefits check response

```ts
{

resourceType: 'CoverageEligibilityResponse',

status: 'active',

purpose: ['benefits', 'discovery'],

created: '2021-01-01T00:00:00.000Z',

patient: {

reference: 'Patient/jane-doe',

},

request: {

reference: 'CoverageEligibilityRequest/general-benefits-check',

},

outcome: 'complete',

disposition: 'Coverage is currently in-force',

insurer: {

reference: 'Organization/kaiser-permanente',

},

insurance: [

{

coverage: {

reference: 'Coverage/jane-doe-coverage',

},

inforce: true,

item: [

{

category: {

coding: [

{

system: 'https://x12.org/codes/service-type-codes',

code: '30',

display: 'Plan Coverage and General Benefits',

},

],

},

},

],

},

],

};
```
