Data Quality: How Much Is Actually Comparable?

Hospital price files contain many rows that cannot support a fair cross-hospital comparison. This page counts how many rows pass each comparison rule and reports why other rows are excluded from rankings.

Definition
"Blocked" never means hidden. Every published row stays visible somewhere on this site; blocking only controls whether a row is allowed into cross-hospital rankings and market statistics.

The comparability funnel

Loading...
No Results

The five stages, in plain language:

  1. Published — every price row we classified from the hospitals' current files.
  2. Code usable across hospitals — the row carries a billing code from a standard code system (MS-DRG, CPT, HCPCS, …), not an internal chargemaster code only one hospital understands.
  3. Full service context — the code is specific and the row says which care setting and billing type it covers, so we know we are comparing the same economic thing.
  4. Rankable dollar price — the row is an actual dollar amount, not a percentage, formula, or estimate.
  5. Meets the 3-hospital floor — at least 3 hospitals report the exact same context, our minimum for any market statistic.

Blocked rows by hospital

A single row can carry several blockers at once, so counts overlap across reasons.

Loading...
No Results

Every blocker, explained

The comparison framework names 12 blockers. Ten apply to individual rows; the other two are properties of a whole service context or insurer contract, so they appear as the "Too few hospitals" status and the excluded-contract counts on service pages rather than in the table above. For each blocker we also say whose limitation it is — the hospital's file, our framework's strictness, or this project's current coverage.

Row-level blockers:

  • From an outdated file version (not_current_snapshot) — the row came from a superseded file. Framework rule: only current files enter comparisons.
  • Billing code can't be matched across hospitals (code_not_cross_hospital_comparable) — internal chargemaster or local codes mean something only inside one hospital. Hospital's file.
  • Code too general to identify one service (code_not_specific) — e.g. a broad revenue-center code covering many different services. Hospital's file, applied by a framework rule.
  • No usable billing code (missing_match_code) — the row has no normalized code at all. Hospital's file.
  • Not a dollar price (non_rankable_amount) — the "price" is a percentage of charges, an algorithm description, or an estimate. Visible as context, never ranked. Hospital's file, protected by a framework rule.
  • Dollar value calculated, not directly quoted (derived_dollar) — a dollar figure derived from a percentage or formula. We refuse to rank it against directly quoted prices. Framework strictness.
  • Modifier changes what's being priced (modifier_context_required) — billing modifiers (like professional-only or technical-only components) change the economic object; such rows are compared only against identical modifier contexts. Framework strictness.
  • Drug price without dose/unit information (drug_unit_context_missing) — a drug price without units cannot be compared per-dose. Hospital's file.
  • Insurer name couldn't be identified (payer_unmatched) — we could not confidently match the published payer string to a canonical insurer. The row is excluded from insurer views but counted here. This project's current matching coverage.
  • Insurance market type unknown (market_segment_unknown) — the row does not say whether it covers commercial, Medicare Advantage, etc. It is excluded only from market-segment cuts. Hospital's file.

Context-level blockers:

  • Too few hospitals (below_min_hospital_denominator) — fewer than 3 hospitals have a safely representable price for the exact service context. The context stays fully visible with its individual prices, but no median, percentile, or ranking is computed. Framework rule protecting against false precision.
  • Contract has mixed amounts (multiple_amounts_per_contract_context) — one insurer contract carries several different dollar amounts for the exact same service context, usually a hidden distinction (a revenue-code or network difference) the published file does not label. We refuse to average those into one number: the contract's rows stay visible and downloadable, but the contract is excluded from every statistic, and service pages show how many hospitals were excluded this way. Hospital's file, protected by a framework rule.

Statistics are hospital-weighted. Every market median and percentile is computed over ONE representative price per hospital — a rate repeated across dozens of rows (for example one per-diem published against 56 revenue-code variants) counts exactly once, and negotiated methodologies (fee schedule / case rate / per diem) are never mixed in one distribution.

Thin contexts (below the 3-hospital floor)

183,057 of 217,357 published service contexts are currently below the floor. They are labeled, never silently dropped. The largest ones by published volume:

Showing the top 100 thin contexts by row volume.

Scope
A context clears the floor only when at least three hospitals publish the same code, setting, billing type, modifiers, and price type. Adding hospitals can increase the number of qualifying contexts without changing the methodology.
© 2026 Hospital Price Lens · An independent portfolio project by Jake Gussler · GitHub · LinkedIn