Insurance Eligibility Checks | Medplum

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

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 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 are designed to do.

Preparing an Eligibility Check

FHIR follows a request/response pattern for eligibility checks. This uses two resources: the CoverageEligibilityRequest to model the request to the insurer and the CoverageEligibilityResponse to model their response.

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

Creating a Request

FHIR provides the CoverageEligibilityRequest resource to model a request for an insurance eligibility check.

Element Description Code System Example
patient A reference to the Patient the request is for. Patient/homer-simpson
provider A reference to the Practitioner or Organization that will be providing the service. This is the party that is submitting the request, but is not necessarily the specific Practitioner who will be providing the service detailed within. Practitioner/dr-alice-smith
insurer A reference to the insurance Organization 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:
- auth-requirements: A check of prior authorization that is required for the specified product or service.
- benefits: The benefits on the plan or the benefits consumed by the specified product or service.
- discovery: A request for the insurer to report any coverages they are aware of in addition to the ones specified.
- validation: A check that the specified coverages are in-force.
validation
insurance.coverage A reference to the Coverage resource that is being checked. Coverage/example-coverage
item Details about the items, services, or procedures for which eligibility is being checked. See below
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 Vision Coverage
productOrService The product, drug, service, etc. that is being provided. CPT Codes 92340 - Fitting of eyeglasses
diagnosis The diagnosis for which care is being sought. ICD-10 Codes Condition/reduced-vision
provider A reference to the Practitioner 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 or Organization where the service will be provided. Organization/example-hospital
detail A reference to the CarePlan with details describing the service. CarePlan/improve-vision

Example: A coverage eligibility request for a consultation

{

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

{

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, 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, Availity, Change Healthcare, Waystar and Candid Health allow you to send them eligibility checks directly.

Unfortunately, these companies format their requests based on X12 EDI Format rather than FHIR, so you will need to convert your CoverageEligibilityRequest to the correct format. This is a good workflow to implement Bots to convert your request, interface with the company's API, and send the request. Additionally, you can have a Subscription 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.

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
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 resource. Coverage/example-coverage
request A reference to the original CoverageEligibilityRequest 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 for the allowed valueset. validation
status The status of the response. active
insurer A reference to the Organization that is providing coverage and that sent the response. Organization/blue-cross
patient A reference to the Patient the response is for. Patient/homer-simpson

The Covered Items

Like its request counterpart, the CoverageEligibilityResponse 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 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 in
unit Indicates whether the benefits apply to an individual or to a family. Unit Type Codes individual
term The term or duration during which service is covered. Benefit Term Codes annual
productOrService The product, drug, service, etc. that is being provided. CPT Codes 92340 - Fitting of eyeglasses
provider A reference to the Practitioner 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 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

{

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

{

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',

},

],

},

},

],

},

],

};