Premium · 10 payers, 8 facilities, calendar 2025
Healthcare Claims and Denials
A year of revenue cycle with the reason behind every denial
356,609 rows in 8 linked tables: 24,000 patients, 85,659 visits, 85,659 claims and 161,097 service lines across ten payers and eight facilities for calendar 2025, following each claim from the visit to the payer's answer, the rework and the money that came back.
Real claims data is locked behind HIPAA, and even inside a provider the remittance says what the payer decided, never the whole why. Here every claim carries the upstream facts that caused its denial (coverage that had ended, a clinician not yet enrolled with the plan, a claim filed after the plan's limit, a missing prior authorization, a diagnosis that does not support the service, another plan that pays first, a registration error, a missing modifier), so a model can be trained on causes that are really there and scored against them.
Uses
What it is built for
Denial prediction
before submission, with the true cause and a preventable flag as labels; features are the payer, plan type, facility, clinician, service lines, diagnosis, authorization and charge lag.
Denial management and root cause dashboards
denial rate by payer, facility, service and CARC category; preventable share; rework success by category; dollars at risk and recovered.
Accounts receivable and cash forecasting
days to remit by payer, days in A/R, pending and not-yet-submitted claims at year end, the late-filing tail.
Patient responsibility
deductibles that reset on 1 January and fill during the year (here and with other providers), copays that stand in for the deductible on office and telehealth visits, coinsurance; the patient share of allowed falls from 35% in January to 18% in the autumn.
Payer contract analysis
billed against contracted against allowed, contractual adjustments, commercial above Medicare above Medicaid.
Teaching and demos
an RCM course, a healthcare analytics portfolio, a Power BI/Tableau dashboard, or a billing-system demo database, with no PHI anywhere.
Project kit
A portfolio project you can check yourself
A brief from the VP of Revenue Cycle at a regional outpatient network, 18 questions from warm-up to stretch, and an answer key to grade against. Every answer was worked out twice on these files, in DuckDB SQL and separately in pandas, and the kit was written only when the two agreed.
The brief
2025 denials review for the January leadership meeting
From the VP of Revenue Cycle at a regional outpatient network · calendar 2025, as at 31 December 2025
- BRIEF.mdthe request, from the VP of Revenue Cycle at a regional outpatient network
- QUESTIONS.md18 questions, each asking for one value in a stated form
- load.sqlevery table into DuckDB with the right types
- check.pygrades your answers, names the misreading a wrong one matches
- solutions/the answer key and the SQL behind every answer
- WRITEUP_TEMPLATE.mdthe two pages a hiring manager reads
What the checker says
$ python kit/check.py kit/my_answers.csv
Q05 wrong that is the answer when you divide by every claim, including those not yet answeredA wrong answer is named for the mistake it matches, such as the wrong rows in a denominator or a mean where a median is asked, without giving the answer away. --reveal shows one answer and its SQL when you want it.
- Warm-up
- 4
- Core
- 8
- Stretch
- 6
Read all 18 questions
Warm-up
- Q01. Claims sent. How many claims had been submitted to a payer by the cut, 31 December 2025?
- Q02. Patients seen. How many distinct patients had at least one visit in 2025?
- Q03. Charges on answered claims. What is the total billed amount on claims the payers had answered by the cut?
- Q04. Charge lag. What is the median charge lag (days from service to submission) on submitted claims?
Core
- Q05. Initial denial rate. Of the claims the payers had answered by the cut, what share were denied in full on first pass?
- Q06. The payer that denies most. Which payer (its payer_code) has the highest initial denial rate on its answered claims?
- Q07. Imaging. What is the initial denial rate on answered imaging claims?
- Q08. Preventable share. What share of full denials (on answered claims) were preventable?
- Q09. Denied dollars by cause. Which denial cause (denial_cause) carries the most billed dollars in full denials?
- Q10. Gross collection rate. On answered claims, what did the payers pay as a share of what was billed?
- Q11. January's patient share. For answered claims with a January 2025 service date, what share of the allowed amount was the patient's responsibility?
- Q12. How long Medicaid takes. What is the median number of days to remittance on answered claims from Medicaid managed care plans?
Stretch
- Q13. Filed too late. How many submitted claims went out after their payer's timely filing limit (charge lag in days greater than the limit)?
- Q14. Where rework does not pay. Among denials whose rework (appeal, corrected claim or bill to the other payer) was resolved by the cut, which denial category has the lowest recovery rate?
- Q15. What prevention is worth. What is the total contracted amount of the full denials that were preventable?
- Q16. Open at year end. How many claims were still open at the cut: sent and not yet answered, or denied and not yet resolved (not yet worked, or rework in progress)?
- Q17. The front desk that slips. Which facility (its facility_code) has the highest share of its answered claims denied in full for eligibility and registration?
- Q18. New clinicians and enrollment. For answered claims of clinicians who joined in 2025, what share were denied in full because the provider was not yet enrolled with the plan?
In the data
What the full files show
Computed from every row of the full dataset when it was packaged, not drawn as a target. The free preview is a slice of the same data.
First-pass denial rate, by month of service
Denials by their true cause
- provider not enrolled19.9%
- payer policy review19.1%
- coverage inactive15.5%
- diagnosis mismatch9.1%
- registration error8.9%
- other payer primary8.2%
- duplicate claim5.9%
- no prior authorization5.5%
- missing modifier5.2%
- filed late2.7%
Denial rate, by type of plan
- Medicaid managed care15.3%
- commercial HMO14.6%
- Medicare Advantage13.5%
- commercial PPO12.8%
- traditional Medicare10%
Recovered after rework, by denial category
- coordination of benefits88.1%
- coding87.2%
- eligibility and registration79.4%
- medical necessity53.7%
- authorization53.2%
- timely filing11.5%
Answer key
The truth, in its own columns
What a model, a control chart or an analyst is trying to find ships next to the data, so you can score an answer instead of guessing at it. Each line is measured from the full files.
- claims.cause_coverage_inactiveOne of nine cause_* flags: every problem present on the claim, denied or not.true on 2.5% of rows
- claims.denial_causeThe cause the denial was really for, behind the CARC code the payer sent.10 values: provider not enrolled, payer policy review, coverage inactive…, 88% empty
- claims.preventableWhether the denial could have been prevented at the front end or in coding.true on 80.9% of rows, 88% empty
- encounters.expected_dx_categoryThe diagnosis the visit should have been coded with.6 values: chronic condition, musculoskeletal, preventive or screening…
- encounters.dx_coded_wrongWhether the coded diagnosis departs from it.true on 1.8% of rows
- encounters.needs_prior_authWhether the service needed prior authorisation, next to whether it was obtained.true on 12.9% of rows
- claim_lines.modifier_missingA line that needed a modifier and went without one.true on 1.9% of rows
- claims.recoveredWhether a reworked denial was paid in the end, with the amount recovered.true on 75% of rows, 94.1% empty
- patients.outside_allowed_monthlyWhat the plan allows a month for the patient's care elsewhere; it fills the same deductible, out of the provider's sight.3.54 to 5,872.6, mean 224
How it behaves
Measured on the files you download
Each of these is computed from the delivered rows when the dataset is packaged, not written as a target.
- 13% of answered claims were denied in full on first pass; 81% of denials were preventable at the front end or in coding. Billed $53,542,169, allowed $20,950,467, paid by the plans $16,236,948.
- Imaging, procedures and therapy are denied more than office visits; traditional Medicare pays fastest and Medicaid managed care slowest.
- Median charge lag is 4 days with a tail that waits months, which is where late-filing denials come from. Median days in A/R: 24.
- Of reworked denials resolved by year end, 75% were recovered; coding and coordination-of-benefits denials come back far more often than late filing.
- At the cut-off (31 December 2025) 7,380 claims were still with the payer and 1,972 not yet submitted.
Audit
99 of 99 checks pass
Re-run on the delivered files by an independent script with plain pandas. The results ship in INTEGRITY.json.
- every key resolves and every primary key is unique; one claim per visit; each claim's patient, plan, clinician and facility are the visit's; a patient's plan type is their plan's;
- every service suits its visit type; line charges are base rate x facility markup x units and contracted amounts base rate x plan fee level x units; claim totals re-add from their lines;
- allowed, deductible, copay, coinsurance, patient share and paid re-add exactly; the deductible accumulator is rebuilt in service order from 1 January (with the care the patient had elsewhere) and no patient pays past their plan's deductible; on a copay plan an office or telehealth visit costs the copay alone;
- every cause flag is recomputed from the rows it comes from (coverage end date, enrollment date, charge lag against the plan's limit, authorization, the coded diagnosis); every denial's cause is present on its claim and its CARC code and category match it; every ICD-10-CM code belongs to its diagnosis group;
- no visit before its clinician joined; nothing that happened is dated after the cut-off, and a claim not yet answered carries no answer; rework after the answer; days in A/R recompute.
All 99 checks
- ✓ payers.payer_id unique
- ✓ facilities.facility_id unique
- ✓ providers.provider_id unique
- ✓ services.service_id unique
- ✓ patients.patient_id unique
- ✓ encounters.encounter_id unique
- ✓ claims.claim_id unique
- ✓ claim_lines.line_id unique
- ✓ providers.facility_id -> facilities: 0 orphans of 140
- ✓ patients.payer_id -> payers: 0 orphans of 24,000
- ✓ encounters.patient_id -> patients: 0 orphans of 85,659
- ✓ encounters.provider_id -> providers: 0 orphans of 85,659
- ✓ encounters.facility_id -> facilities: 0 orphans of 85,659
- ✓ encounters.payer_id -> payers: 0 orphans of 85,659
- ✓ claims.encounter_id -> encounters: 0 orphans of 85,659
- ✓ claims.patient_id -> patients: 0 orphans of 85,659
- ✓ claims.payer_id -> payers: 0 orphans of 85,659
- ✓ claims.provider_id -> providers: 0 orphans of 85,659
- ✓ claim_lines.claim_id -> claims: 0 orphans of 161,097
- ✓ claim_lines.service_id -> services: 0 orphans of 161,097
- ✓ claim_number unique
- ✓ one claim per encounter
- ✓ every claim has a line
- ✓ claim patient, payer, provider and facility are the encounter's
- ✓ encounter payer is the patient's
- ✓ patient payer type matches their payer
- ✓ provider's facility on the encounter
- ✓ line's service is in the line's category
- ✓ every service suits its visit type
- ✓ clinic visits within opening hours, emergency around the clock
- ✓ line charge = base rate x facility markup x units
- ✓ line contracted = base rate x payer fee multiplier x units
- ✓ charge exceeds contracted on every line
- ✓ only timed services bill more than one unit
- ✓ a denied line allows nothing and carries CARC 4
- ✓ a line is denied only for a missing modifier
- ✓ a modifier is present exactly when needed and not missing
- ✓ line_count = lines
- ✓ billed = sum of line charges
- ✓ contracted = sum of line contracted
- ✓ allowed = allowed lines, zero when denied
- ✓ patient share = deductible + copay + coinsurance
- ✓ paid = allowed - patient share
- ✓ no negative money
- ✓ contractual adjustment = billed - allowed on paid claims
- ✓ denied amount = billed when denied, denied lines' charges otherwise
- ✓ on a copay plan an office or telehealth visit costs the copay alone (no deductible, no coinsurance)
- ✓ copay only on those visits
- ✓ coinsurance = plan rate x (allowed - deductible) on everything else
- ✓ deductible met before = allowed so far this year, here outside copay visits and with other providers (capped): 1377 same-day claims left out
- ✓ no patient pays more deductible than their plan's
- ✓ patients carry more of the bill in January than in autumn (deductibles reset): Jan 35%, Sep-Nov 18%
- ✓ coverage inactive = served after coverage ended
- ✓ provider not enrolled = served before payer enrollment
- ✓ filed late = charge lag beyond the payer's limit
- ✓ no prior auth = needed and not obtained
- ✓ diagnosis mismatch = the encounter's coding error
- ✓ other payer primary only for patients with other coverage
- ✓ every denial's cause is present on the claim
- ✓ a claim with no cause present is never denied
- ✓ CARC code matches the cause
- ✓ denied claims have a category and a preventable flag
- ✓ not denied, no denial fields
- ✓ a claim not answered by the cut shows no answer yet: 9,352 claims
- ✓ nor do its lines
- ✓ an answered claim and its lines carry the whole answer
- ✓ every ICD-10-CM code belongs to its category
- ✓ a wrong diagnosis only where coverage turns on it
- ✓ a coded-right diagnosis is the one expected
- ✓ prior auth only asked by payers that require it
- ✓ no visit before its provider joined
- ✓ submitted = service date + charge lag
- ✓ nothing that happened is dated after the cut
- ✓ not yet submitted claims have no submission or answer
- ✓ pending claims are submitted and not yet answered
- ✓ a denial not yet worked at the cut has no rework
- ✓ rework follows the answer, resolution follows the rework
- ✓ rework only on denied claims
- ✓ recovered only once resolved
- ✓ days in A/R recompute
- ✓ initial denial rate 8-18% of answered claims: 13%
- ✓ most denials preventable: 81%
- ✓ no single cause over 30% of denials: top provider not enrolled 20%
- ✓ imaging and procedures denied more than office visits: emergency 10%, imaging 22%, lab only 13%, office visit 10%, outpatient procedure 23%, physical therapy 25%, telehealth visit 12%
- ✓ commercial pays above Medicare, Medicaid below
- ✓ traditional Medicare pays fastest, Medicaid slowest: Medicaid managed care 38d, Medicare Advantage 23d, commercial HMO 24d, commercial PPO 21d, traditional Medicare 15d
- ✓ most claims go out within a week, a tail waits for months: median 4d, >30d 2.8%
- ✓ clinic visits rare at weekends, emergency visits not
- ✓ claims go out on working days
- ✓ payers answer on working days
- ✓ days to remit = answer date - submission date
- ✓ an answer keeps its own clock, not the submission's: 0.02% share a clock time
- ✓ appeals and corrections are worked on working days
- ✓ coverage ends on the last day of a month
- ✓ office visits on US public holidays at 0%-0% of the same weekday: 0%
- ✓ emergency visits on US public holidays at 60%-140% of the same weekday: 114%
- ✓ coding denials recovered more often than timely filing: authorization 53%, coding 87%, coordination of benefits 88%, eligibility and registration 79%, medical necessity 54%, timely filing 11%
- ✓ 65+ patients are mostly Medicare
- ✓ children never on Medicare
- ✓ claims: 85,659; answered 76,307; pending 7,380; not yet submitted 1,972
- ✓ denial causes: provider not enrolled 20%, payer policy review 19%, coverage inactive 15%, diagnosis mismatch 9%, registration error 9%, other payer primary 8%, duplicate claim 6%, no prior authorization 5%, missing modifier 5%, filed late 3%
- ✓ billed / allowed / paid: $53,542,169 / $20,950,467 / $16,236,948
Tables
8 tables, 356,609 rows
Every table in the zip with what it holds, its rows and its columns. The bars are on a log scale, so the small reference tables still show.
- claim_linesService lines: units, modifier present or missing, charge, contracted and allowed amounts, line-level denials161,097 rows · 17 cols
- claimsOne claim per visit through its whole life: charge lag, submission, every cause that was present, the denial with CARC code and category, remittance, deductible, copay, coinsurance, paid, adjustments, rework and recovery, days in A/R85,659 rows · 54 cols
- encountersEvery visit: type, time (clinic hours or around the clock), the diagnosis expected and the ICD-10-CM code actually coded85,659 rows · 15 cols
- patientsAge, sex, plan, member id, annual deductible, what the plan allows a month for their care with other providers (it fills the same deductible), the date their coverage ended if it did, and other coverage24,000 rows · 14 cols
- providersClinicians by facility and specialty; the ones who joined during the year, with the date and the day their payer enrollment took effect140 rows · 9 cols
- services36 billable services with an illustrative base rate, whether they bill in timed units and whether they need a modifier (own codes, not CPT)36 rows · 7 cols
- payersTen health plans across commercial PPO and HMO, Medicare Advantage, traditional Medicare and Medicaid managed care: timely-filing limit, fee level against a base rate, days to pay, prior-auth policy, coinsurance and copay10 rows · 10 cols
- facilitiesClinics, hospital outpatient departments, an emergency department, imaging and therapy sites: chargemaster markup, front-desk registration error rate, billing backlog8 rows · 8 cols
Explore
Every table, profiled
Each column's type, spread, empties and most common values, measured from the full CSVs. Switch to the first rows to see the data as it sits in the file.
claim_lines.csv
161,097 rows · 17 columns · 5 foreign keys
- office visit46%
- lab only14%
- imaging11%
- telehealth visit8.9%
- emergency8.0%
- 2 more values · 12%
- office E/M32%
- laboratory26%
- imaging13%
- telehealth E/M8.9%
- procedure5.7%
- 3 more values · 14%
- 9534%
- 2520%
- GP19%
- LT14%
- RT13%
Keys
Every join resolves
16 foreign keys, 1,600,556 references checked against the table each one points at. None points at a row that does not exist.
claim_lines
- claim_idclaims.claim_id161,097 rows checked0 orphans
- service_idservices.service_id161,097 rows checked0 orphans
- provider_idproviders.provider_id161,097 rows checked0 orphans
- facility_idfacilities.facility_id161,097 rows checked0 orphans
- payer_idpayers.payer_id161,097 rows checked0 orphans
claims
- encounter_idencounters.encounter_id85,659 rows checked0 orphans
- patient_idpatients.patient_id85,659 rows checked0 orphans
- payer_idpayers.payer_id85,659 rows checked0 orphans
- provider_idproviders.provider_id85,659 rows checked0 orphans
- facility_idfacilities.facility_id85,659 rows checked0 orphans
encounters
- patient_idpatients.patient_id85,659 rows checked0 orphans
- provider_idproviders.provider_id85,659 rows checked0 orphans
- facility_idfacilities.facility_id85,659 rows checked0 orphans
- payer_idpayers.payer_id85,659 rows checked0 orphans
patients
- payer_idpayers.payer_id24,000 rows checked0 orphans
providers
- facility_idfacilities.facility_id140 rows checked0 orphans
In the zip
What you get
- CSVs: one file per table, with a header row and ISO dates.
- README.md: what each table holds, how the data behaves (measured), what was checked and what to know.
- ANSWER_KEY.md: what happened at the plant, when, where it shows and the query that finds it.
- INTEGRITY.json: the 99 audit checks and their results.
- RECIPE.json: the Misata blueprint that made these exact rows, seed 20250101.
- kit/: the project kit: the brief, 18 questions, load.sql for DuckDB, check.py, the answer key with its SQL, and the write-up template.
All 22 files
- payers.csv700 B
- facilities.csv621 B
- providers.csv6 KB
- services.csv3 KB
- patients.csv2.0 MB
- encounters.csv11.2 MB
- claims.csv25.5 MB
- claim_lines.csv13.3 MB
- README.md9 KB
- INTEGRITY.json13 KB
- RECIPE.json55 KB
- kit/BRIEF.md2 KB
- kit/QUESTIONS.md4 KB
- kit/README.md1 KB
- kit/WRITEUP_TEMPLATE.md2 KB
- kit/check.py3 KB
- kit/load.sql970 B
- kit/my_answers.csv100 B
- kit/questions.json5 KB
- kit/solutions/ANSWER_KEY.md9 KB
- kit/solutions/key.json7 KB
- kit/solutions/solutions.sql3 KB
Before you use it
Things to know
- The files show the claims as they stood at the close of 31 December 2025. A claim still with the payer has no answer yet: no remittance date, no denial and no allowed amount. A denial the billing office had not started working has no rework. The industry's initial denial rate is over answered claims.
- CARC codes (Claim Adjustment Reason Codes) and ICD-10-CM codes are the real public code sets. Services use this dataset's own codes and illustrative base rates, not CPT (which is licensed) or any real fee schedule.
- A claim can have several causes present; the one recorded is the first a payer's edits reach, and a present cause does not always fire (a payer may back-date an enrollment). The
cause_*columns are every cause present. - One claim per visit; secondary claims to the other payer and appeals beyond one rework are not modelled.
- Payers, facilities, clinicians and patients are invented; no real plan, organization or person is represented, and no record is derived from real patient data.
Questions
Before you buy
Is this real data?
What do I get?
Can I try it before buying?
How was it checked?
Is there a project to do with it?
Can I use it commercially?
What should I know before using it?
Can I get a bigger or different version?
Want it bigger, in another setting, or with your own columns? Have us build it or make it in Studio.
More premium datasets
All 9How much of each month was paid by the cut
12,000 members, four products, calendar 2025
A payer's year with its incurred truth
Answer key
- unpaid_at_cut
- not_received_at_cut
- cause_no_prior_auth
- +4 more
- Rows
- 284,051
- Tables
- 7
- Checks
- 107 of 107
Free preview18-question projectProfile and previewCard spending each month, debit and credit
2,500 US households at five banks and seven card issuers, two years
Five banks' raw statement lines, with every label behind them
Answer key
- description
- merchant_name
- category
- +6 more
- Rows
- 7,627,186
- Tables
- 14
- Checks
- 50 of 50
Free previewProfile and preview- transactions, rows per monthMay 2025 – Oct 2026
AML Transaction Monitoring
$5launch priceOne UAE bank, 10,000 customers, eighteen months
A UAE bank's whole trail from KYC to STR, with the laundering nobody caught
Answer key
- is_suspicious
- typology
- ring_id
- +7 more
- Rows
- 11,711,393
- Tables
- 16
- Checks
- 129 of 129
Free previewProfile and preview

