Hospital billing was supposed to be made easier to decipher, but that's not what's happened, Sun-Times finds - Insurance News | InsuranceNewsNet

InsuranceNewsNet — Your Industry. One Source.™

Sign in
  • Subscribe
  • About
  • Advertise
  • Contact
Home Now reading Newswires
Topics
    • Advisor News
    • Annuity Index
    • Annuity News
    • Companies
    • Earnings
    • Fiduciary
    • From the Field: Expert Insights
    • Health/Employee Benefits
    • Insurance & Financial Fraud
    • INN Magazine
    • Insiders Only
    • Life Insurance News
    • Newswires
    • Property and Casualty
    • Regulation News
    • Sponsored Articles
    • Washington Wire
    • Videos
    • ———
    • About
    • Meet our Editorial Staff
    • Advertise
    • Contact
    • Newsletters
  • Exclusives
  • NewsWires
  • Magazine
  • Newsletters
Sign in or register to be an INNsider.
  • AdvisorNews
  • Annuity News
  • Companies
  • Earnings
  • Fiduciary
  • Health/Employee Benefits
  • Insurance & Financial Fraud
  • INN Exclusives
  • INN Magazine
  • Insurtech
  • Life Insurance News
  • Newswires
  • Property and Casualty
  • Regulation News
  • Sponsored Articles
  • Video
  • Washington Wire
  • Life Insurance
  • Annuities
  • Advisor
  • Health/Benefits
  • Property & Casualty
  • Insurtech
  • About
  • Advertise
  • Contact
  • Editorial Staff

Get Social

  • Facebook
  • X
  • LinkedIn
Health/Employee Benefits News
Newswires RSS Get our newsletter
Order Prints
June 19, 2026 Newswires
Share
Share
Post
Email

Hospital billing was supposed to be made easier to decipher, but that's not what's happened, Sun-Times finds

Chicago Sun-Times

Five patients are at Advocate Lutheran General Hospital in Park Ridge for a diagnostic echocardiogram.For the same noninvasive test of the heart, the five patients could each get different prices — as little as $973 or as much as $1,721, depending on their insurance provider and plan.If a patient is uninsured, they’d get a "discounted cash price” of $1,155 — hundreds of dollars less than those with certain insurance plans, according to the hospital’s publicly posted data.The wildly varying prices for the same procedure are emblematic of a medical pricing system that some say is far too complicated and the result of secret negotiations between hospitals and insurance companies that occur before patients even walk in the door.To try to shed light on this system, the Chicago Sun-Times and the University of Chicago’s Mansueto Institute for Urban Innovation gathered 2025 pricing data on thousands of medical procedures, which hospitals publish to comply with a federal transparency law.Their analysis found large differences in prices for procedures throughout the Chicago area, whether comparing across hospitals or between different insurance plans at one hospital.The price differences were repeated again and again in the data — from colonoscopies and hemodialysis to x-rays and ultrasounds — revealing a billing system that is opaque, inconsistent and difficult for most consumers to understand.“You have a bunch of insurers; you have a bunch of hospitals. They don’t all reach the same pricing deal,” economist and University of Chicago professor Joshua Gottlieb says. Gottlieb is also co-director of UChicago’s Becker-Friedman Institute’s Health Economics Initiative and consulted with the Mansueto data team.“Although the hospitals and the insurers have negotiated this, now it’s the consumer who sees that price and says, ‘Where did this come from?’” he says.The differences can be stress-inducing for consumers who encounter a higher-than-expected price.Emily Kostecka, 29, has had several MRIs over the years, related to her epilepsy diagnosis, and says her portion of the bill is usually a few hundred dollars.So the Logan Square resident was floored last year when Northwestern Memorial Hospital’s billing department called to alert her that an upcoming outpatient MRI appointment would cost about $6,000 after her insurance handled the claim.“I was kind of freaking out,” says Kostecka, who has a high-deductible insurance plan with Blue Cross Blue Shield.She briefly considered taking out a loan to pay for the test but decided to shop around. She chose Humboldt Park Health, a small safety-net hospital that charged her far less. Her portion of the bill was $115.While it was a bit of a hassle to pick up the disc with her results in Humboldt Park and find the right place at Northwestern’s Streeterville campus to drop it off for her doctor, she says it was worth it.Still, she says the experience was eye-opening: “Why is this on me to look for a better price for this thing that I need?”Patients without controlAmerica’s byzantine system of healthcare pricing is a mystery to most consumers.While polls show most people are concerned about their ability to afford healthcare, many know little about the mechanics behind the bills they receive.Those who pay high premiums for gold-plated insurance plans might not even notice the prices billed for their care because the insurer picks up most of the billed cost. Same for patients who’ve already met their annual deductible.“For people well-covered, the price — high or low — will not affect whether they go to the hospital or not,” says Ge Bai, a Johns Hopkins University professor who researches healthcare costs. “They don’t have skin in the game.”But for consumers with high-deductible insurance plans — including nearly half of privately insured Americans under age 65, who choose these plans for more affordable premiums — the high prices for hospital procedures can make a huge dent in their budgets.Until they meet their high deductible, these patients shoulder much of the cost of any procedure.Healthcare can include some of the biggest purchases consumers make, on par with a car, rent or mortgage payments. But unlike those transactions, in which the consumer could negotiate the price they’re willing to pay, healthcare prices are largely beyond consumers’ control.That’s because the prices of procedures are negotiated between the hospital and insurer.Hospitals determine what’s essentially their sticker price for each of the thousands of procedures and tests they offer. The prices are just a starting point for negotiations with insurers. Hospitals also set discounted cash prices, which are the amounts they’re willing to accept from people with no health insurance.Each procedure is classified with a Current Procedural Terminology, or CPT, code. The codes are used by private insurance companies, as well as Medicare and Medicaid.Insurance companies negotiate with hospitals on the prices they’re willing to pay for procedures under their various plans, such as HMOs or PPOs, that are offered to consumers.Large insurers can leverage patient volumes to get a better price. And hospitals with highly specialized care can command top prices.“Healthcare is certainly not a normal marketplace,” Christopher Whaley, associate professor at Brown University’s School of Public Health, says. “Where there’s a mystery, there’s a margin.”With fully-insured private commercial plans, insurers are allowed to keep 20% of the premiums they collect to spend on administrative, overhead and marketing costs. Critics claim this provides a disincentive for insurers to drive a hard bargain for patients because if healthcare costs more, premiums will go up and the value of insurers’ 20% slice also rises.“The insurance companies often benefit from the high price,” Bai says.The prices of procedures are influenced by the patient population of each hospital, which typically includes a mix of people with private insurance, those on Medicare or Medicaid and uninsured patients.Findings in the dataThe Sun-Times and the Mansueto Institute found it’s common for negotiations to result in varying prices. But the data is presented in a way that makes it difficult to do apples-to-apples price comparisons between hospitals, as there can be hundreds of different plans under a single insurer and hospitals use different names to identify these plans in their data. As a result, the researchers typically used median prices.Here are some of the findings found in the data:Advocate Lutheran General Hospital in Park Ridge: The median price for a diagnostic echocardiogram was $973 under United Healthcare, $1,258 under Aetna, $1,524 under Cigna, $1,710 under Blue Cross Blue Shield and $1,721 under Humana. The discounted cash price for uninsured patients was $1,155.

function window {

'use strict';

window._cpmGfxDotPlotData = window._cpmGfxDotPlotData || {};

window._cpmGfxDotPlotData['93306'] = {

procedure: 'Diagnostic echocardiogram',

detail: 'Advocate Lutheran General Hospital, by insurer',

footnote: 'Each listed price is the median for all of thatu00a0insurer’s plans.',

dots: [

{price: 973, insurer: 'uhc', label: 'United Healthcare'},

{price: 1258, insurer: 'aetna', label: 'Aetna'},

{price: 1524, insurer: 'cigna', label: 'Cigna'},

{price: 1710, insurer: 'bcbs', label: 'Blueu00a0Cross Blueu00a0Shield'},

{price: 1721, insurer: 'humana', label: 'Humana'},

{price: 1155, insurer: 'CASH', label: 'Cash price, no insurance'}

]

};

} this ;

Northwest Community Hospital in Arlington Heights: An uninsured person getting hemodialysis would be billed $741, according to hospital data. The median prices for patients with private insurance included $1,715 under Blue Cross Blue Shield, $1,970 with Humana, $2,050 with Cigna, $2,413 with United Healthcare and $2,769 with Aetna.

function window {

'use strict';

window._cpmGfxDotPlotData = window._cpmGfxDotPlotData || {};

window._cpmGfxDotPlotData['90935'] = {

procedure: 'Hemodialysis',

detail: 'Northwest Community Hospital',

footnote: 'Each listed price is the median for all of thatu00a0insurer’s plans.',

dots: [

{price: 741, insurer: 'CASH', label: 'Cash price, no insurance'},

{price: 1715, insurer: 'bcbs', label: 'Blueu00a0Cross Blueu00a0Shield'},

{price: 1970, insurer: 'humana', label: 'Humana'},

{price: 2050, insurer: 'cigna', label: 'Cigna'},

{price: 2413, insurer: 'uhc', label: 'United Healthcare'},

{price: 2769, insurer: 'aetna', label: 'Aetna'}

]

};

} this ;

Northwestern Medicine Palos Hospital: The median price for a colonoscopy across all Blue Cross Blue Shield plans was $980. But the median price under Aetna or United Healthcare plans was $3,371.

function window {

'use strict';

window._cpmGfxDotPlotData = window._cpmGfxDotPlotData || {};

window._cpmGfxDotPlotData['45378'] = {

procedure: 'Colonoscopy',

detail: 'Northwestern Medicine Palos Hospital',

footnote: 'Each listed price is the median for all of thatu00a0insurer’s plans.',

dots: [

{price: 980, insurer: 'bcbs', label: 'Blueu00a0Cross Blueu00a0Shield'},

{price: 3371, insurer: 'uhc', label: 'United Healthcare'},

{price: 3371, insurer: 'aetna', label: 'Aetna'}

]

};

} this ;

Something as simple as an X-ray of the foot had wide variations in price. At Advocate Lutheran General, the median price under Aetna was $97, $118 under Cigna, $167 under Blue Cross Blue Shield, $287 under United Healthcare and $551 under Humana.

function window {

'use strict';

window._cpmGfxDotPlotData = window._cpmGfxDotPlotData || {};

window._cpmGfxDotPlotData['73630'] = {

procedure: 'Foot X-ray',

detail: 'Advocate Lutheran General Hospital',

footnote: 'Each listed price is the median for all of thatu00a0insurer’s plans.',

dots: [

{price: 97, insurer: 'aetna', label: 'Aetna'},

{price: 118, insurer: 'cigna', label: 'Cigna'},

{price: 167, insurer: 'bcbs', label: 'Blueu00a0Cross Blueu00a0Shield'},

{price: 287, insurer: 'uhc', label: 'United Healthcare'},

{price: 551, insurer: 'humana', label: 'Humana'}

]

};

} this ;

The same hospital system accepting the same insurance plans also had widely varying prices. A hand X-ray under Blue Cross Blue Shield’s Managed Care plan was $330 at Advocate Christ Medical Center in Oak Lawn; $424 at Advocate Illinois Masonic in Lake View; $521 at Advocate Good Samaritan Hospital in Downers Grove and $647 at Advocate South Suburban Hospital in Hazel Crest — even though all are owned by Advocate Health Care.

function window {

'use strict';

window._cpmGfxDotPlotData = window._cpmGfxDotPlotData || {};

window._cpmGfxDotPlotData['73130'] = {

procedure: 'Hand X-ray',

detail: 'Blueu00a0Cross Blueu00a0Shield Managedu00a0Care plan',

dots: [

{price: 330, hospOwner: 'advocate', label: 'Advocate Christ Medicalu00a0Center Oaku00a0Lawn '},

{price: 424, hospOwner: 'advocate', label: 'Advocate Illinois Masonic Medicalu00a0Center Lakeu00a0View '},

{price: 521, hospOwner: 'advocate', label: 'Advocate Goodu00a0Samaritan Hospital Downersu00a0Grove '},

{price: 647, hospOwner: 'advocate', label: 'Advocate Southu00a0Suburban Hospital Hazelu00a0Crest '}

]

};

} this ;

The price differences are felt most keenly by consumers with high-deductible plans, who made up about 42% of the private insurance market in 2023, according to a survey by the CDC’s National Center for Health Statistics.Gottlieb says if more people had high-deductible plans, you might see greater pressure from patients and eventually less overall healthcare spending. But the marketplace is a hodgepodge of payers who don’t share the same focus.“You’ve got some people who are really insensitive to price because they don’t have a high-deductible plan, and they’re in the same market as those who have a high-deductible plan,” Gottlieb says.“The hope with high-deductible plans was that it would push the market to account for patients’ price sensitivity, but I think not enough people have these plans. And even if you have one, some people meet that deductible by the end of the year, and so then they don’t care about price. So there’s just not much pressure on hospitals to make the pricing transparent or attractive.”Even industry leaders admit there’s frustration.“Pricing in healthcare certainly is complicated. From a hospital’s perspective, we really understand patients’ desire to have clarity about what their potential costs are going to be,” Molly Smith, group vice president for policy at the American Hospital Association, says.Smith says in negotiations, hospitals are trying to reach contracts with insurance companies that will reimburse them fairly overall.“Hospitals, unlike really any other provider in the healthcare system, have a lot more overhead that has to get shared across services. They have to figure out how to finance their emergency departments. There are a lot of services where hospitals lose money. Any maternity care, behavioral health, pediatrics, infectious disease — these are all services where you get underpaid substantially. And so you have to then build in the overhead costs to maintain those services,” she says.Smith says most consumers never pay the price listed in the data.About 92% of Americans have some form of health insurance, whether private or government-run. For those with private insurance, the amount they owe is affected by their coverage, what’s left on their deductible and proprietary discounts that insurers may make based on bundles of services involved in a procedure.“What a patient ultimately ends up getting billed is not going to be what you see in the [pricing] files,” she says.A Northwestern Medicine spokesman declined to comment, but provided the hospital’s online price estimator.Advocate Health didn’t respond to requests for comment.Endeavor Health declined an interview request, but a spokesman said in a statement: “We recognize that healthcare affordability is a significant concern for many in our community and navigating billing for services can be challenging. Endeavor Health is focused on providing high-quality care while ensuring patients are aware of the resources available to them, including financial assistance programs and various payment options. We encourage patients with questions about their bills to contact our billing department for assistance.”‘Can’t make heads or tails’Hospitals are required to publicly post their prices for the procedures and tests they offer, using CPT codes, under the landmark Hospital Price Transparency Rule that took effect in 2021.The idea was that pricing transparency would empower consumers and drive competition.But compliance has been spotty and much of the data isn’t consumer friendly.Since June 2022, the federal Centers for Medicare & Medicaid Services has notified 28 hospitals that they're out of compliance, taking steps including issuing a 2023 civil penalty of $847,740 against Community First Medical Center in Portage Park and a $51,615 fine against Pinnacle Hospital of Crown Point, Indiana, in February.

Community First Medical Center at 5645 W. Addison St. in Portage ParkPat Nabong/Sun-Times file

Even when prices have been posted, complicated and unwieldy datasets make it unhelpful for the average consumer trying to comparison shop for, say, the best price for an MRI. And insurers’ bundling and discounting can change the final price.The federal government is working on reforms to streamline how data is presented in hopes of making it more useful. But research shows consumers don’t typically comparison shop for healthcare, usually opting for whatever their doctor recommends.“The average consumer can’t access the data, can’t make heads or tails of it. You have to be able to compare one hospital to another. Without comparisons, you don’t have anything actionable,” Jeanne Pinder, founder and CEO of ClearHealthCosts.com, says.The biggest beneficiaries of the 2021 federal transparency rule seem to be insurers and hospitals, who use it to see what their competitors are doing, Pinder says.Smith, of the American Hospital Association, says her group is looking ahead to the coming Advanced Explanation of Benefits provision mandated by the No Surprises Act, a federal law enacted in 2020 to help prevent consumers from receiving unexpected medical bills.Under the provision, patients will receive a good faith estimate of what they’ll owe ahead of any scheduled medical service.The reform was supposed to take effect in January 2022 but has been delayed while industry stakeholders wrangle over the best way to execute it.“We think this is going to be kind of the gold standard for scheduled services. It’s just been complicated to figure out how exactly to make this happen,” Smith says.Laura Minzer, president of the Illinois Life & Health Insurance Council, admits the system is “very flawed. It is complex and difficult for consumers, as much as [for] insurers and other parties within the healthcare system.”Adding to an already complicated system are requirements that insurance companies provide network adequacy, or reasonable access to hospitals, doctors and specialists for everyone under the insurer’s plans, Minzer says.In less-served areas of Illinois, these requirements can give hospitals an upper hand in price negotiations, she says.Minzer says insurers worry that expected federal cuts to reduce Medicaid spending by $911 billion over 10 years will push hospitals to jack up prices across the board for private insurance plans.“The costs have to be recouped somewhere,” she says.Some websites are trying to shed light on price differences, including PatientRightsAdvocate.org, which has an online price comparison tool, and ClearHealthCosts.com, which has undertaken its own deep dives into healthcare pricing in a handful of metro areas.Consumer advocates suggest that for planned diagnostic tests, patients shop around using area hospitals’ online price tools — with the understanding that the tools are only estimates.To make sure a lower price is worth it, patients can research hospitals’ quality metrics at hospitalsafetygrade.org.The UChicago researchers found numerous instances of discounted cash prices that were lower than prices under private insurance plans.The cash price for a minimally invasive balloon angioplasty at Endeavor Health’s Northwest Community Hospital was $7,962.But the median prices under insurance plans were $18,423 for Blue Cross Blue Shield, $21,155 for Humana, $22,014 with Cigna, $25,917 with United Healthcare and $29,742 with Aetna.

function window {

'use strict';

window._cpmGfxDotPlotData = window._cpmGfxDotPlotData || {};

window._cpmGfxDotPlotData['92920'] = {

procedure: 'Balloon angioplasty',

detail: 'Northwest Community Hospital',

footnote: 'Each listed price is the median for all of thatu00a0insurer’s plans.',

dots: [

{price: 7962, insurer: 'CASH', label: 'Cash price, no insurance'},

{price: 18423, insurer: 'bcbs', label: 'Blueu00a0Cross Blueu00a0Shield'},

{price: 21155, insurer: 'humana', label: 'Humana'},

{price: 22014, insurer: 'cigna', label: 'Cigna'},

{price: 25917, insurer: 'uhc', label: 'United Healthcare'},

{price: 29742, insurer: 'aetna', label: 'Aetna'}

]

};

} this ;

Some consumer groups, like Patients Rights Advocate, advise getting the CPT codes before planned procedures or tests and asking hospitals for their discounted cash price to compare against your insurance plan’s price.People with high deductible plans who find the cash price to be lower could ask the hospital to not run the transaction through their insurance, the group says.But consumers should be aware that if they pay cash, it won’t apply to their annual insurance deductible — which could make any cost savings less attractive in the long run.Kostecka, the Logan Square woman who saved thousands on her MRI, says she’s glad she shopped around.In a perfect world, healthcare pricing would be a lot more uniform, she says.“Just having it be more transparent, easier to find out the difference — that would be helpful, too.”

Tell us what you seeHave you received a confusing hospital bill? Or seen a sharp price increase for a procedure or test you’ve had in the past?Have you ever tried to bargain down a hospital bill? What happened?What aspect of the system would you like to see investigated?Sun-Times consumer investigations reporter Stephanie Zimmermann would like to hear from you. Click here to share your story, or email [email protected].

How we analyzed prices at Chicago-area hospitalsThis project was done through a program at the Mansueto Institute for Urban Innovation at the University of Chicago that pairs data scientists with journalists to examine issues of local importance.Led by University of Chicago professors Christopher Berry and Joshua Gottlieb, graduate students Divij Sinha, Sarah Hussain, Anoushka Gehani and Kalysa Blunt spent most of summer 2025 extracting and standardizing pricing data from hospitals throughout the Chicago metro area. They created a large dataset that included more than 208 million rows with billions of cells listing prices. The team ran queries on prices for various surgical procedures and diagnostic tests using Current Procedural Terminology, or CPT, codes used in medical billing.The researchers analyzed the prices from several angles, including across hospitals by calculating the median prices under major insurers’ plans and by delving into individual hospitals using various insurance plans.A sample of the work can be found at healthcare.miurban-dashboards.org. The full dataset is available upon request by contacting the Mansueto Institute at [email protected].

Related

Chicago mom fought Lurie Children’s Hospital 3 years to get overbilling for newborn reversed

St. Charles woman’s $2,700 ambulance bill wiped out after news stories

Surprise medical bills hit some uninsured hard

Car insurance nightmare: After wreck, hospitalized patient crashes again, into $700,000 bill for spinal surgery

.cpm-gfx-dot-plot-wrapper {

margin: 2rem 0 2rem 3rem;

}

.cpm-gfx-dot-plot-wrapper h3 {

margin-bottom: 0.5rem;

margin-top: 0;

}

.cpm-gfx-dot-plot-wrapper h4 {

margin-bottom: 0.5rem;

margin-top: 0;

}

.cpm-gfx-dot-plot-wrapper p:last-of-type {

font-size: 1.5rem;

}

.cpm-gfx-dot-plot-wrapper p:last-of-type:before {

content: 'Note: ';

font-weight: bold;

}

.cpm-gfx-dot-plot-wrapper .cpm-gfx-amount {

fill-opacity: 0.7;

stroke: #000;

stroke-opacity: 0.5;

stroke-width: 1;

}

.cpm-gfx-dot-plot-wrapper .cpm-gfx-amount.cpm-gfx-shading-by-insurer.cpm-gfx-shading-uhc {

fill: #002677; /* Brand color for United Healthcare */

}

.cpm-gfx-dot-plot-wrapper .cpm-gfx-amount.cpm-gfx-shading-by-insurer.cpm-gfx-shading-aetna {

fill: #7d3f98; /* Brand color for Aetna */

}

.cpm-gfx-dot-plot-wrapper .cpm-gfx-amount.cpm-gfx-shading-by-insurer.cpm-gfx-shading-cigna {

fill: #0033ff; /* Brand color for Cigna */

}

.cpm-gfx-dot-plot-wrapper .cpm-gfx-amount.cpm-gfx-shading-by-insurer.cpm-gfx-shading-bcbs {

fill: #007cbf; /* Brand color for Blue Cross Blue Shield */

}

.cpm-gfx-dot-plot-wrapper .cpm-gfx-amount.cpm-gfx-shading-by-insurer.cpm-gfx-shading-humana {

fill: #5c9a1b; /* Brand color for Humana */

}

.cpm-gfx-dot-plot-wrapper .cpm-gfx-amount.cpm-gfx-shading-by-insurer.cpm-gfx-shading-CASH {

fill: #788f6f; /* Sample from a $1 bill */

}

.cpm-gfx-dot-plot-wrapper .cpm-gfx-amount.cpm-gfx-shading-by-hospOwner.cpm-gfx-shading-advocate {

fill: #7e82c2; /* Brand color for Advocate */

}

.cpm-gfx-dot-plot-wrapper .cpm-gfx-dot-plot {

height: 8rem;

width: 100%;

z-index: 1;

}

.cpm-gfx-dot-plot-wrapper .cpm-gfx-positioner {

position: relative;

}

.cpm-gfx-dot-plot-wrapper .cpm-gfx-tooltip {

background-color: #fff;

border: 1px solid #666;

box-shadow: 2px 2px 6px rgba 0, 0, 0, 0.4 ;

display: none;

font-family: sans-serif;

font-size: 1.5rem;

left: 0;

line-height: 1;

padding: 0.5rem;

pointer-events: none;

position: absolute;

top: 0;

max-width: 50%;

min-width: 10rem;

z-index: 9001;

}

.cpm-gfx-dot-plot-wrapper .cpm-gfx-tooltip.cpm-gfx-tooltip-active {

display: block;

}

.cpm-gfx-dot-plot-wrapper .cpm-gfx-tooltip .cpm-gfx-tooltip-name {

font-weight: normal;

}

.cpm-gfx-dot-plot-wrapper .cpm-gfx-tooltip .cpm-gfx-tooltip-value {

font-weight: bold;

}

function window {

'use strict';

// CONSTANTS -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

const ATTRIB_NAME_DATA = 'data-gfx-cpt';

const CLASS_NAME_AMOUNT = 'cpm-gfx-amount';

const CLASS_NAME_DATA = 'cpm-gfx-dot-plot-data';

const CLASS_NAME_PLOT = 'cpm-gfx-dot-plot';

const CLASS_NAME_POSITIONER = 'cpm-gfx-positioner';

const CLASS_NAME_TOOLTIP = 'cpm-gfx-tooltip';

const CLASS_NAME_TOOLTIP_ACTIVE = 'cpm-gfx-tooltip-active';

const CLASS_NAME_TOOLTIP_NAME = 'cpm-gfx-tooltip-name';

const CLASS_NAME_TOOLTIP_VALUE = 'cpm-gfx-tooltip-value';

const MARGINS = {

top: convertRemToPixels 2 , right: convertRemToPixels 2 ,

bottom: convertRemToPixels 2 , left: convertRemToPixels 2 };

const SHADE_BY_CHOICES = ['insurer', 'hospOwner'];

const TICK_COUNT = 5;

const TRANSITION_DURATION = 1000 * 1;

const Y_HEIGHT = 4;

// HELPER FUNCTIONS =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

function convertRemToPixels rem {

// Source - https://stackoverflow.com/a/42769683

// Posted by etham

// Retrieved 2026-06-02, License - CC BY-SA 3.0

return rem * parseFloat getComputedStyle document.documentElement .fontSize ;

}

// PLOT SETUP AND RENDERING =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

const plotsByCPT = {};

function createContainer siblingBefore, cpt, data {

const wrapper = window.document.createElement 'div' ;

wrapper.classList.add `${CLASS_NAME_PLOT}-wrapper` ;

function _addText text, tagName {

if text == null {

return;

}

const elem = window.document.createElement tagName ;

elem.innerText = text;

wrapper.appendChild elem ;

}

_addText data.procedure, 'h3' ;

_addText data.detail, 'h4' ;

const positioner = window.document.createElement 'div' ;

positioner.classList.add CLASS_NAME_POSITIONER ;

wrapper.appendChild positioner ;

const tooltip = window.document.createElement 'div' ;

tooltip.classList.add CLASS_NAME_TOOLTIP ;

positioner.appendChild tooltip ;

const frame = window.document.createElement 'div' ;

frame.classList.add CLASS_NAME_PLOT ;

frame.setAttribute ATTRIB_NAME_DATA, cpt ;

positioner.appendChild frame ;

_addText data.footnote, 'p' ;

siblingBefore.insertAdjacentElement 'afterend', wrapper ;

return {frame, tooltip};

}

function buildScales data, dims {

const sortedValues = data.dots.map d => d.price ;

sortedValues.sort a, b => a - b ;

const max = sortedValues.slice -1 [0];

const niceTicks = d3.nice 0, max, TICK_COUNT ;

const x = d3.scaleLinear

.domain niceTicks

.range [MARGINS.left, dims.width - MARGINS.right]

const y = d3.scaleLinear

.domain [- Y_HEIGHT / 2 , Y_HEIGHT / 2 ]

.range [dims.height - MARGINS.bottom, MARGINS.top] ;

return {x, y};

}

function renderBase data, dims, scales {

const svg = d3.create 'svg'

.attr 'width', dims.width

.attr 'height', dims.height ;

svg.append 'g'

.attr 'transform', `translate 0,${MARGINS.top} `

.classed 'cpm-gfx-axis cpm-gfx-axis-x', true

.call

d3.axisTop scales.x

.ticks TICK_COUNT ;

return svg;

}

function renderInitialCircles data, scales, svg {

svg.selectAll `circle.${CLASS_NAME_AMOUNT}`

.data data.dots

.join 'circle'

.attr 'cx', scales.x 0

.attr 'cy', scales.y 0 // FIXME?

.attr 'r', Math.abs scales.y 0.75 - scales.y 0

.attr 'class', function setCircleClasses d {

const baseClasses = [CLASS_NAME_AMOUNT];

const shadingBy = SHADE_BY_CHOICES.find

choice => d[choice] != null ;

if shadingBy == null {

return baseClasses.join ' ' ;

}

const shadingValue = d[shadingBy];

return baseClasses.concat [

`cpm-gfx-shading-by-${shadingBy}`,

`cpm-gfx-shading-${shadingValue}`] .join ' ' ;

} ;

}

function setupPlot placeholder {

const cpt = placeholder.getAttribute ATTRIB_NAME_DATA ;

const data = window._cpmGfxDotPlotData[cpt];

const {frame: container, tooltip} = createContainer

placeholder, cpt, data ;

const dims = {

height: container.clientHeight,

width: container.clientWidth};

const scales = buildScales data, dims ;

const svg = renderBase data, dims, scales ;

container.append svg.node ;

renderInitialCircles data, scales, svg ;

const circles = svg.selectAll `circle.${CLASS_NAME_AMOUNT}` ;

bindEvents circles, dims, scales, tooltip ;

function fire {

circles.transition newTransition

.attr 'cx', d => scales.x d.price

.attr 'cy', d => scales.y randomY ;

}

function reset {

circles.transition newTransition

.attr 'cx', 0

.attr 'cy', scales.y 0 ;

}

plotsByCPT[cpt] = {

container, circles, cpt, data, dims,

fire, reset, scales, svg, tooltip};

};

// ANIMATION AND INTERACTION -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

const _interpolator = d3.interpolate -0.75, 0.75 ;

const _randSampler = d3.randomUniform ;

function randomY {

return _interpolator _randSampler ;

}

function newTransition {

return d3.transition

.duration TRANSITION_DURATION

.ease d3.easeCubicInOut ;

}

function bindEvents circles, dims, scales, tooltip {

circles

.on 'mouseenter', listenForShow dims, scales, tooltip

.on 'mouseleave', listenForHide tooltip ;

}

function listenForShow dims, scales, tooltip {

function _showTooltip e, d {

tooltip.innerHTML = renderTooltipBody d ;

tooltip.classList.add CLASS_NAME_TOOLTIP_ACTIVE ;

const priceX = scales.x d.price ;

const tooltipWidth = tooltip.clientWidth;

if priceX + tooltipWidth > scales.x.range [1] {

tooltip.style.setProperty 'left', `${priceX - tooltipWidth}px` ;

} else {

tooltip.style.setProperty 'left', `${priceX}px` ;

}

const pointY = scales.y 0 ; // FIXME

tooltip.style.setProperty 'top', `${pointY}px` ;

}

return _showTooltip;

}

function listenForHide tooltip {

function _hideTooltip {

tooltip.classList.remove CLASS_NAME_TOOLTIP_ACTIVE ;

}

return _hideTooltip;

}

const formatCurrency = d3.format '$,.0d' ;

function renderTooltipBody d {

return `

${d.label}:

${formatCurrency d.price }

`;

}

// INITIALIZATION =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

function _initAll {

Array.from window.document.querySelectorAll

`.${CLASS_NAME_PLOT}-wrapper` .map elem => elem.remove ;

// VISUALIZATIONS =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

const placeholders = window.document.querySelectorAll

`.${CLASS_NAME_DATA}` ;

Array.from placeholders .forEach setupPlot ;

// OBSERVERS -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

const plots = window.document.querySelectorAll `.${CLASS_NAME_PLOT}` ;

const observerCallback = function observerFire entries, observer {

entries.forEach function checkObservedEntry entry {

const entryCPT = entry.target.getAttribute ATTRIB_NAME_DATA ;

const plot = plotsByCPT[entryCPT];

if entry.isIntersecting {

plot.fire ;

} else {

plot.reset ;

}

} ;

};

const observer = new IntersectionObserver observerCallback, {

root: null, threshold: 0.7} ;

Array.from plots .forEach function bindObserver plotElem {

observer.observe plotElem ;

} ;

}

const initAll = _.debounce _initAll, 1000 * 1, {trailing: true} ;

window.document.addEventListener

'DOMContentLoaded',

function initWithResize {

window.addEventListener 'resize', initAll ;

initAll ;

} ;

} this ;

Older

FACT FOCUS: Trump says illegal immigration increased car insurance premiums. Experts say otherwise

Newer

Polling shows Midwestern voters concerned about home insurance cost

Advisor News

  • Help child-free clients plan for their later years
  • When new investment trends emerge, Gen Z is most likely generation to be first in
  • Could ‘plain English’ become an advisor’s secret weapon?
  • IRI urges Senate action on 403(b) parity legislation
  • Three estate planning ideas to protect your clients and their wealth
More Advisor News

Annuity News

  • Nationwide adds mutual fund-linked strategy to New Heights Select FIA
  • NUNN INTRODUCES BILL TO CUT RED TAPE, GIVE IOWANS CLEARER INSURANCE INFORMATION
  • NAIC working group pressed to accelerate annuity illustration overhaul
  • State Auditor James Brown Kicks Off Life Insurance Awareness Month With Policy Locator Tool
  • Wink: Annuity sales post strong Q2, led by MYGAs and structured products
More Annuity News

Health/Employee Benefits News

  • Starbucks raises health insurance premiums, sparking worker tension
  • Opinion: The Colorado Option is failing to meet the needs of small businesses for healthcare coverage
  • New Managed Care Study Results from Brown University School of Public Health Described (Roles and Priorities Guiding Medicare Advantage Postacute Home Health Referrals): Managed Care
  • Reports Summarize Managed Care Findings from University of Arkansas for Medical Sciences (Potentially Inappropriate Medication Use Following Hospital Discharge Among Medicare Beneficiaries): Managed Care
  • New Cancer Findings from Anuraag R. Kansal and Colleagues Discussed (State Medicaid Budgetary Implications of New Cancers): Cancer
Sponsor
More Health/Employee Benefits News

Life Insurance News

  • TDCI reminds consumers to focus on future during Life Insurance Awareness Month
  • TDCI reminds consumers to focus on the future during Life Insurance Awareness Month
  • AM Best Affirms Credit Ratings of Zurich Insurance Group Ltd and Its Main Rated Subsidiaries
  • Best’s Market Segment Report: AM Best Maintains Stable Outlook on China’s Non-Life Insurance Segment
  • Understanding Nonequity Split-Dollar
Sponsor
More Life Insurance News

- Presented By -

NEWS INSIDE

  • Companies
  • Earnings
  • Economic News
  • INN Magazine
  • Insurtech News
  • Newswires Feed
  • Regulation News
  • Washington Wire
  • Videos

FEATURED OFFERS

Press Releases

  • Classic Car Insurer OpenRoad Insurance Expands to 40 U.S. States in Two Years
  • How Aspire General Turned an Early Technology Bet Into Claims Automation at Scale with Kyber
  • Adjusto launches AI-Native contents claims services powered by its technology platform
  • URL Insurance Group Celebrates 40 Years of Service, Growth, and Industry Leadership
  • MassMutual Ascend Surpasses $2 Billion in Lifetime Advisory Annuity Sales, Reflecting Continued Momentum in RIA Channel
More Press Releases > Add Your Press Release >

How to Write For InsuranceNewsNet

Find out how you can submit content for publishing on our website.
View Guidelines

Topics

  • Advisor News
  • Annuity Index
  • Annuity News
  • Companies
  • Earnings
  • Fiduciary
  • From the Field: Expert Insights
  • Health/Employee Benefits
  • Insurance & Financial Fraud
  • INN Magazine
  • Insiders Only
  • Life Insurance News
  • Newswires
  • Property and Casualty
  • Regulation News
  • Sponsored Articles
  • Washington Wire
  • Videos
  • ———
  • About
  • Meet our Editorial Staff
  • Advertise
  • Contact
  • Newsletters

Top Sections

  • AdvisorNews
  • Annuity News
  • Health/Employee Benefits News
  • InsuranceNewsNet Magazine
  • Life Insurance News
  • Property and Casualty News
  • Washington Wire

Our Company

  • About
  • Advertise
  • Contact
  • Meet our Editorial Staff
  • Magazine Subscription
  • Write for INN

Sign up for our FREE e-Newsletter!

Get breaking news, exclusive stories, and money- making insights straight into your inbox.

select Newsletter Options
Facebook Linkedin Twitter
© 2026 InsuranceNewsNet.com, Inc. All rights reserved.
  • Terms & Conditions
  • Privacy Policy
  • InsuranceNewsNet Magazine

Sign in with your Insider Pro Account

Not registered? Become an Insider Pro.