-
Notifications
You must be signed in to change notification settings - Fork 814
Claims, Payers, and Insurance
This page provides a brief overview of the "health economics" built into Synthea, covering claims, costs, payers, insurance, and related details.
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.00The 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.
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 (where0.95is 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:GovernmentorPrivate.
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 EligibleHow 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).
The other available selection_behavior is best_rates -- where a patient will select a new insurer on the best available cost. However, keep in mind that research has shown that this is not how patients in the United States select insurance plans in practice (e.g. in the United States it is often tied to employment).
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 = randomAnother set of parameters to consider are the mandate parameters. These represent something like the Affordable Care Act, the Massachusetts Individual Mandate, or other foreign Universal Healthcare plans.
# in Massachusetts, the individual insurance mandate became law in 2006
# in the US, the Affordable Care Act become law in 2010,
# and individual and employer mandates took effect in 2014.
# mandate.year will determine when individuals with an occupation score above mandate.occupation
# receive employer mandated insurance (aka "private" insurance).
# prior to mandate.year, anyone with income greater than the annual cost of an insurance plan
# will purchase the insurance.
generate.insurance.mandate.year = 2006
generate.insurance.mandate.occupation = 0.2If you want compulsory insurance plans for everyone (regardless of the historical accuracy), change the mandate year to something like 1900 and the mandate occupation to 0.