Data quality checks for extracted claims test every value read from a claim form before anyone relies on it. Format checks confirm that codes, identifiers, dates and amounts have a valid shape. Cross-field checks confirm the claim agrees with itself. Duplicate checks stop the same claim from entering twice. Claims that fail go to a person.
Format checks for extracted claim codes and identifiers
Format checks for extracted claim codes and identifiers test each value on its own against the published shape for its type. An ICD-10-CM code, a CPT code, an NPI, a date and a dollar amount each follow a pattern. A value that breaks its pattern was misread, mistyped or put in the wrong field.
The patterns come from the organizations that own each code set:
- ICD-10-CM diagnosis codes. The FY 2026 ICD-10-CM Official Guidelines say codes are 3 to 7 characters, letters or numbers, and that a code needing a 7th character is invalid without it. A shape check is a start. A lookup against the current year's code file from the CMS ICD-10 codes page is the real test.
- CPT and HCPCS codes. The CMS HCPCS overview says CPT codes are 5 numeric digits, and HCPCS Level II codes are one letter followed by 4 digits.
- NPI. The CMS NPI check digit requirements define an NPI as 9 digits plus a check digit computed with the Luhn formula. Any single misread digit fails the check.
- Dates. The CMS Medicare Claims Processing Manual, chapter 26 requires 8-digit birth dates on the 1500 form and allows 6 or 8 digits in other date fields. After extraction, every date should parse as a real calendar date.
- Amounts. The NUCC 1500 Reference Instruction Manual says negative dollar amounts are not allowed in the charge fields.
Format checks are cheap and fast, so run them first. They catch the misreads that produce nonsense, such as a letter inside an NPI or a 13th month. They do not catch a misread that produces a different valid value, which is why the next group of checks exists.
Cross-field checks that catch inconsistent extracted claims
Cross-field checks test whether the values on an extracted claim agree with each other. Line charges should add up to the total, every diagnosis pointer should lead to a filled diagnosis line, and dates should fall in a sensible order. A claim can pass every format check and still fail here, which is where valid-looking misreads show up.
The main cross-field rules, with the source for each:
- Charges sum to the total. Chapter 26 defines item 28 as the total of all charges in item 24F. On a UB-04, the CMS Medicare Claims Processing Manual, chapter 25 puts the sum of charges on the revenue code 0001 line in FL 47.
- Pointers resolve. Chapter 26 says item 24E holds a letter from A to L on the 02/12 form that refers to a diagnosis in item 21. A pointer to an empty letter is an error.
- Code set matches the indicator. Chapter 26 says the ICD indicator in item 21 is 0 for ICD-10-CM and 9 for ICD-9-CM, and that the two code sets must not be mixed on one claim.
- Dates in order. A service date should not fall before the birth date or after the date the claim was signed. On a UB-04, each line date should fall within the statement covers period in FL 6.
- Units present. Chapter 26 says the numeral 1 must be entered in item 24G when a single service is performed, so a blank units field is a gap.
The sum check deserves the most attention because it catches the misread format checks miss. A charge read as $65.00 instead of $85.00 passes every format rule. The total does not lie: the lines come up $20.00 short, and the claim stops for review.
How does duplicate claim detection work on extracted data?
Duplicate claim detection on extracted data compares each new claim against claims already captured, using a key built from fields that together identify one billed encounter. A good key combines the patient's ID, the date of service, the billing provider, the procedure codes and the total charge. A match means the same claim may have been scanned or sent twice.
Exact duplicates are the easy case. The same paper scanned twice, or the same PDF uploaded by two people, produces identical values. A key match with identical charges and codes can be held automatically.
Near-duplicates are harder, and many are legitimate:
- Corrected claims. The NUCC manual says item 22 carries a frequency code of 7 for a replacement of a prior claim or 8 for a void, with the original reference number. A claim with a code 7 in item 22 is supposed to look like an earlier one.
- UB-04 frequency codes. Chapter 25 says the fourth digit of the type of bill in FL 4 indicates the sequence of the bill in the episode of care. Two bills with the same stay but different frequency digits are not duplicates.
- Repeated services. Two identical services on the same day, such as two units of the same therapy, are not a duplicate claim.
- Misread keys. A single misread digit in the member ID turns a true duplicate into two different claims. Score the key fields, and when one is doubtful, compare the rest.
Near-duplicates belong in review, not in a silent block. Show the reviewer both claims side by side with the fields that match and the ones that differ.
What should happen when an extracted claim fails a check?
An extracted claim that fails a check should go to one of three places depending on the failure: blocked, sent to a person for review, or passed with a flag. Block what cannot be right, review what might be wrong, and flag what is unusual but likely fine. Every outcome should be recorded.
A simple rule of thumb maps check types to actions:
| Failure | Action | Reason |
|---|---|---|
| Exact duplicate of a captured claim | Block | The claim already exists |
| NPI fails its check digit | Review | Likely misread; a person can read the page |
| Line charges do not match the total | Review | One value is wrong; the page shows which |
| Diagnosis pointer to an empty line | Review | Misread pointer or missing code |
| Near-duplicate with a frequency code | Pass with flag | Probably a correction; confirm later |
Review works best when the reviewer sees the value on the page. A failed sum check should open the claim with every line charge highlighted, so the reviewer finds the misread in one look. Record what was changed, by whom and when, so the correction can be traced later.
Schema Care handles uncertain fields this way: a field under your threshold waits for review instead of entering your system, the reviewer approves or corrects it on the highlighted page, and each decision is logged with the reviewer and the time, as the review workflow on the homepage describes.
Thresholds, queue design and reviewer workload are the subject of the human review category, which covers how to size the queue these checks feed.
A checklist of 12 checks
The checklist groups checks by type. Each example failure uses invented values.
| # | Group | Check | Field tested | Example failure |
|---|---|---|---|---|
| 1 | Format | ICD-10-CM code exists in the current list | Item 21, FL 67 | M54S0 (S read for 5) |
| 2 | Format | CPT is 5 digits; HCPCS II is a letter and 4 digits | Item 24D, FL 44 | 9921 (digit dropped) |
| 3 | Format | NPI passes the Luhn check | Items 24J, 33a, FL 56 | 1234567898 |
| 4 | Format | Dates parse as real dates | Items 3, 24A, FL 45 | 13 02 26 |
| 5 | Format | Charges are not negative and have no symbols | Item 24F, FL 47 | -45 00 |
| 6 | Cross-field | Line charges sum to the total | Items 24F and 28; FL 47 0001 line | Lines $290.00, total $310.00 |
| 7 | Cross-field | Each pointer leads to a filled diagnosis | Items 24E and 21 | Pointer C, no code on line C |
| 8 | Cross-field | Service dates fall in order and in range | Items 3, 24A, 31; FL 6, FL 45 | Service date after signature date |
| 9 | Cross-field | ICD indicator matches the codes | Item 21 indicator | Indicator 9 with ICD-10 codes |
| 10 | Duplicate | Exact key match | ID, date, NPI, codes, total | Same scan uploaded twice |
| 11 | Duplicate | Near match without a frequency code | Same key, one field differs | Charge differs by one digit |
| 12 | Duplicate | Replacement claim has an original reference | Item 22 | Code 7 with no reference number |
Over-strict claim data checks that block good claims
Over-strict claim data checks block valid claims by treating an unusual value as an error. Each rule added to catch a misread can also catch a claim that is correct but uncommon. When a check fails good claims often, reviewers learn to approve its failures without looking, and the check stops protecting anything.
Common over-strict rules and what they catch by mistake:
- Requiring every field. Many fields are situational. Chapter 25 marks some UB-04 locators as situational, and chapter 26 says some 1500 items are left blank for Medicare. A rule that requires them blocks claims that are complete.
- Date windows that are too tight. A rule that service dates must be within the past 30 days fails late claims that are still valid for the payer.
- Treating repeated lines as duplicates. Chapter 25 says outpatient bills list a revenue code once for each date it was performed, so repeated codes are expected.
- Exact text matching on names. Names are truncated, hyphenated and abbreviated. Match on ID and birth date, and use the name as a hint.
- One rule for every payer. The NUCC manual tells readers to refer to the instructions of their payer, clearinghouse or vendor. A rule that suits one payer may be wrong for another.
Two questions decide whether a rule belongs. Does it catch errors that would otherwise reach the billing system? And how often does it fail claims that turn out to be fine? Count both for a few weeks. A rule with many false failures and few real catches should be loosened, turned into a flag or removed.
Checks on extracted data are one layer. The payer runs its own edits after submission, and the reasons they reject claims overlap only partly with what extraction checks catch. The list of claim form errors that cause the most rejections shows the payer side. For the full paper workflow these checks sit inside, from mailroom to submission, read the guide to paper claims processing.