Seventy-five payments in the 2024 Open Payments file are dated before the year 1900. Three are dated November 30 in the year 2. The file went through CMS validation, got published, and sat on a public website. The dates parse. Nobody tested whether a payment date can be two thousand years old.
That’s from our test of the full 2024 general payments file, 15,498,687 rows. Every finding below traces to a rule somebody wrote down. Most came from 16 SQL tests written from those rules; the 75 dates came from a direct query, because none of the 16 tests checks dates. The fix is to write those rules as tests and run them before your file goes to CMS, not after a reporter downloads it in July.
The calendar you’re testing against
| Window | Dates | Source |
|---|---|---|
| Data collection | January 1 to December 31 of the program year | CMS data collection |
| Submit and attest | By March 31 the following year | CMS submission and attestation |
| Recipient review and dispute | April 1 to May 15 | CMS dispute and correction |
| Your correction window | May 16 to May 30 | Same page. Unresolved disputes publish as disputed. |
CMS says reporting “is considered complete when the official attestation is received.” The attestation covers accuracy. So February is when your tests earn their keep.
The pre-submission checklist
Each row is a SQL query that returns the rows breaking the rule. The national counts are what the same tests found in the 2024 public file, across every manufacturer, except the payment-date row: DataKitchen wrote no date test, and the 75 came from a direct query against the full national table.
| Check | Rule behind it | 2024 national file |
|---|---|---|
| Physician and practitioner records carry NPI, license state, and specialty | Reporting rule, 42 CFR 403.904 | 13,890 missing |
| Covered products carry an NDC or device identifier (only where the covered indicator says covered) | 42 CFR 403.904 | 949,435 missing |
| Payment date falls inside the program year | Common sense, written down | 75 before 1900 (direct query, not one of the 16 tests) |
| Form of payment is a current CMS value | CMS form-of-payment categories | 131 on retired Stock forms |
| Third-party indicator agrees with the third-party name field | Field consistency | 1 |
| Teaching hospital records carry a CCN and no physician fields | 42 CFR 403.904 | 0 |
| Travel records state a city, state, or country | 42 CFR 403.904 | 0 |
| Sub-threshold payments apply that year’s de minimis amounts | CMS thresholds | 114,082 (legal, voluntary) |
| No entertainment payments | PhRMA and AdvaMed codes | 6,562 |
| Meals over $500 per person | OIG speaker-program alert | 3,450 |
The $500 meal line is a screening threshold DataKitchen chose, not a regulatory number. The OIG alert cites a $500 average in one case; the industry codes say “modest.”
Two of those counts need context before anyone repeats them. The device identifier gap is a backlog, since the field only recently became mandatory. And sub-threshold rows are legal. Treat both as warnings.
Count rows with a dispute status separately. A disputed record may already be under correction.
Validate the identifiers, not just their presence
A present NPI can still be wrong. An NPI’s tenth digit is a Luhn check digit, so two transposed digits break the arithmetic while a ten-digit pattern test passes it. The same applies to the NDC, which comes in three segment configurations that pad to different 11-digit values. If your HCP master feeds the submission, test the master for duplicates and broken identifiers first.
The NP and PA gap is the one to fix upstream. 7,729 of the 13,890 records missing a required field belonged to nurse practitioners and physician assistants, covered recipients since 2021. Most HCP master data was built around physicians and still doesn’t hold them cleanly.
Why generated tests aren’t enough here
DataOps TestGen profiled the 220,865 Massachusetts rows in 3 minutes 24 seconds and generated 353 tests. 349 passed. Generated tests learn what your data looks like. To them a year-2 date is just the minimum, and Entertainment is just a valid category.
Then the tests moved to the national table and 33 generated tests broke, because their baselines came from Massachusetts. The 16 rule tests held, because their thresholds came from the law. That’s the argument for writing the rules down: your best rules live in somebody’s head, here the transparency lead’s, and they belong in a test with a severity and a run history.
The same shape shows up in the commercial feeds most likely to be wrong: many submitters, one template, nobody checking rows against the rules.
Open Payments is a CMS program, not an FDA records rule, so Part 11 doesn’t govern it. Here’s where Part 11 does apply in commercial data.
A year-2 date is cheaper to find in February than in a news story.