Skip to content

Claims, Payers, and Insurance

Jason Walonoski edited this page Jun 25, 2021 · 14 revisions

This page provides a brief overview of the "health economics" built into Synthea, covering claims, costs, payers, insurance, and related details.

Costs

Let's start with costs. Dollars and cents.

Every piece of care provided to our synthetic patients costs some synthetic money.

If you are using default settings, this synthetic money is USD. If you are running with synthea-international configuration files, the synthetic money can be Canadian Dollars, British Pounds Sterling, Euros, or whatever synthetic money you want. We don't care.

The base prices can be found in src/main/resources/costs, where there are CSV files for encounters, immunizations, medications, and procedures.

Each of these CSV files contains a code with associated min, mode, and max costs. Whenever care is provided that matches the code, the price is randomly drawn from a Triangular Distribution using the min, mode, and max costs.

If no code was a match, then default costs are used, which are defined in synthea.properties:

# Default Costs, to be used for pricing something that we don't have a specific price for
# -- $500 for procedures is completely invented
generate.costs.default_procedure_cost = 500.00
# -- $255 for medications - also invented
generate.costs.default_medication_cost = 255.00
# -- Encounters billed using avg prices from https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3096340/
# -- Adjustments for initial or subsequent hospital visit and level/complexity/time of encounter
# -- not included. Assume initial, low complexity encounter (Tables 4 & 6)
generate.costs.default_encounter_cost = 125.00
# -- https://www.nytimes.com/2014/07/03/health/Vaccine-Costs-Soaring-Paying-Till-It-Hurts.html
# -- currently all vaccines cost $136.
generate.costs.default_immunization_cost = 136.00

The randomly drawn (or default) cost is then adjusted, using geographic adjustment factors (by State) that are located in the adjustmentFactors.csv file.

Costs may be paid by insurance or out of pocket, depending on the situation.

Payers

If there are costs, they have to be paid some how or by someone. These can be out of pocket expenses, but typically they are covered by a "payer" or insurance plan. Synthetic patients can purchase private insurance, or be covered by government/public insurance. The available payers are configurable in the src/main/resources/payers/insurance_companies.csv file.

The keys fields in the payer file are deductible, default_coinsurance, default_copay, monthly_premium, and ownership.

  • deductible: a threshold of how much a synthetic patient has to pay out of pocket before medical expenses are covered by insurance.
  • default_coinsurance: the percentage of the cost paid by the insurer (where 0.95 is 95%).
  • default_copay: how much a synthetic patient has to pay up front, out of pocket, for each visit.
  • monthly_premium: the monthly cost paid by the synthetic patient to maintain insurance coverage.
  • ownership: Government or Private.

I have read criticisms that the financial model of Synthea is US-centric and doesn't allow for situations like Universal Health Care. This is false: simply remove all payers, then make a single Government payer named with 0 for the deductible, default_coinsurance, default_copay, and monthly_premium, and set the default_coinsurance to 1.0 (or 100%).

Be sure to adjust insurance parameters in synthea.properties if required:

# Payers
generate.payers.insurance_companies.default_file = payers/insurance_companies.csv
generate.payers.insurance_companies.medicare = Medicare
generate.payers.insurance_companies.medicaid = Medicaid
generate.payers.insurance_companies.dual_eligible = Dual Eligible

Insurance Market

How do our synthetic patients select insurance?

If Medicare or Medicaid are contained in the insurance_companies.csv files, then eligibility criteria are used for enrollment.

Otherwise, synthetic patients will select plans (or no insurance) based on selection_behavior and mandates.

The default selection_behavior is random -- where a patient will select a new insurer for every qualifying life event (e.g. adulthood, marriage, job change).

If a "Universal Health Coverage" model was implemented (see Payers above) then the same plan will be selected each time, regardless of selection_behavior.

# Payer selection behavior
# How patients select a payer:
#  best_rates - select insurance with best rates for person's existing conditions and medical needs
#  random  - select randomly.
generate.payers.selection_behavior = random

Clone this wiki locally