ediverse Explore the platform

Spotlight PEPPOL BIS Billing 3.0 The EU e-invoicing mandate is here — France Sept 2026, Belgium Jan 2026, Germany 2025.

Coverage — detail: insurance coverage

Representation of a patient's health insurance coverage: Primary insurance (Medicare/Medicaid in US, national systems elsewhere), secondary/complementary (Medigap, mutuelles), private contracts. Links with InsurancePlan, CoverageEligibilityRequest, Claim, ExplanationOfBenefit.

Primary vs Secondary insurance

Most healthcare systems combine two coverage levels modelled as distinct Coverage resources linked to the same Patient:

  • Primary — Public scheme (Medicare, national health). type.code=PUBLICPOL, order=1.
  • Secondary/Complementary — mutual insurance, supplemental policy. type.code=EHCPOL, order=2+.

The order tag is crucial: order determines reimbursement sequence (primary first, then secondary on remaining out-of-pocket).

Key fields

FieldCardinalityRole
status1..1active / cancelled / draft / entered-in-error.
kind1..1R5 NEW: insurance / self-pay / other.
type0..1v3-ActCode (PUBLICPOL, EHCPOL, DENTPOL, PHARMPOL…).
policyHolder0..1Person who subscribes (employer, spouse).
subscriber0..1Primary insured person.
subscriberId0..*Identification number (MBI in US, NIR in FR).
beneficiary1..1Effective Patient beneficiary.
relationship0..1self / spouse / child / parent / other.
period0..1Validity period.
insurer0..*Insurance organization.
class0..*plan / group / subgroup / subplan / subclass.
order0..1Reimbursement order (primary=1, secondary=2).
costToBeneficiary0..*Structured out-of-pocket (copay, deductible, OON).

Class & relationship

The class element allows hierarchy of insurance plans:

  • plan — main plan level (e.g. MEDICARE_PART_B).
  • group — group (employer, association).
  • subgroup — sub-group (employer department).
  • subplan — specific option within the plan.
  • subclass — fine granularity.

Example: Medicare Part B coverage

json coverage-medicare.json
{
  "resourceType": "Coverage",
  "id": "cov-medicare-marie-887",
  "status": "active",
  "kind": "insurance",
  "type": {
    "coding": [{
      "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode",
      "code": "PUBLICPOL",
      "display": "Public healthcare"
    }]
  },
  "policyHolder": { "reference": "Patient/marie-durand-887" },
  "subscriber": { "reference": "Patient/marie-durand-887" },
  "subscriberId": [{
    "value": "1EG4-TE5-MK72"
  }],
  "beneficiary": { "reference": "Patient/marie-durand-887" },
  "relationship": {
    "coding": [{
      "system": "http://terminology.hl7.org/CodeSystem/subscriber-relationship",
      "code": "self"
    }]
  },
  "period": {
    "start": "2026-01-01"
  },
  "insurer": [{
    "reference": "Organization/cms-medicare",
    "display": "Medicare Part B"
  }],
  "class": [{
    "type": {
      "coding": [{
        "system": "http://terminology.hl7.org/CodeSystem/coverage-class",
        "code": "plan"
      }]
    },
    "value": { "value": "MEDICARE_PART_B" },
    "name": "Medicare Part B"
  }],
  "order": 1,
  "network": "Original Medicare nationwide",
  "costToBeneficiary": [{
    "type": {
      "coding": [{
        "system": "http://terminology.hl7.org/CodeSystem/coverage-copay-type",
        "code": "copay"
      }]
    },
    "valueQuantity": {
      "value": 20,
      "unit": "%",
      "system": "http://unitsofmeasure.org",
      "code": "%"
    }
  }, {
    "type": {
      "coding": [{
        "system": "http://terminology.hl7.org/CodeSystem/coverage-copay-type",
        "code": "deductible"
      }]
    },
    "valueQuantity": {
      "value": 240,
      "unit": "USD",
      "system": "urn:iso:std:iso:4217",
      "code": "USD"
    }
  }]
}

Common pitfalls

  • Confusion subscriber vs beneficiary — a parent can be subscriber (pays premium) with their children as distinct beneficiary. Always properly document relationship.
  • subscriberId malformed — Medicare MBI must follow MBI format (4 alphanumeric + 3 chars). Strict format.
  • order missing in multi-coverage — without order, the reimbursement engine doesn't know who pays first. Top error source for COB.
  • Static costToBeneficiary — copay/deductible must be refreshed via CoverageEligibilityResponse to respect variations (network, plan year).