Skip to content
faceela

The Code Was Valid the Day You Treated. That Is the Only Day That Counts.

A clinic validates its coding against the list on the screen today, and files a claim for a visit that happened three weeks ago. Between those two dates the drug code list was republished several times and something on the claim was deactivated. The denial arrives in a remittance advice weeks later.

· 6 min read · Written by Faceela Research & Editorial Team

Medical coding rests on reference data that is not static. ICD, CPT, HCPCS, dental codes and — most volatile of all — the drug code list used in Dubai are republished on their own schedules, and entries are deactivated in them. The drug list in particular changes frequently enough that a code current when a patient was seen can be gone by the time the claim is assembled.

So a clinic that validates coding against today's list is validating against the wrong list. The claim describes a visit that happened in the past, and its codes have to be legal as at that past date. A claim carrying a code deactivated since the visit is unpayable, and the clinic finds out weeks later in a remittance advice — by which point the resubmission window has already been consuming itself. The fix is structural rather than procedural: code sets are held as versioned, date-effective records, and validation resolves against the service date of the visit rather than against the current state of a table.

Why the wrong model is so nearly universal, what date-effective actually requires of a system, and the licensing question that catches clinics buying software — in that order.

This is one of the quieter reasons a clinic's revenue arrives weeks after the patient left and smaller than expected, and it is invisible from inside the practice.

Why almost every system gets this wrong

Because reference data is boring, and because the wrong model works perfectly in a demo.

The default way to build a code list is a table of codes with an active flag. Somebody loads the current file, ticks the new ones, unticks the retired ones, and the system validates against what is ticked. It is simple, it is fast, and on the day you demonstrate it, it behaves identically to the correct design. The divergence only appears across time, which is precisely when nobody is watching.

There is a second reason, and it is more uncomfortable. The wrong model is self-concealing. A claim denied for an invalid code comes back with a denial reason, the biller looks up the code, sees it is inactive, and concludes that somebody coded it wrongly. The conclusion is reasonable and it is false — the code was right on the day and the system was asked the wrong question. Nothing in the loop ever reveals the real cause, so the clinic keeps solving it as a training problem. Denials that recur without an obvious cause are precisely the ones that need grouping by code and clinician before they are worked individually.

What date-effective actually requires

Four things, and the fourth is the one that gets left out.

Every code carries a validity period, not a flag. Effective from, effective to. A code that was retired last month is not deleted and is not inactive — it is a record that was valid until a date, and it remains valid for any service before that date, forever.

The visit carries its service date as the anchor, and that date is what validation resolves against. Not the claim assembly date, not the submission date, not today.

Codes are loaded as versions rather than edited in place. A load is an event with a date on it, and the previous state survives. This is what lets you answer the question you will eventually be asked: what did the system believe on the fourteenth of last month?

Historical claims are never revalidated against current data. This is the one that breaks in practice. Someone runs a data-quality report, it checks every claim against the current list, and it produces a list of thousands of "invalid" codes on claims that were entirely correct. Worse, a well-meaning cleanup then "fixes" historical records, which destroys the evidence that they were right. Any validation routine has to take a date, and any report that does not is producing noise with an authoritative face on it.

This is a specific case of a general principle worth stating plainly: a system that records what is cannot answer questions about what was, and clinical and claims data is almost entirely made of questions about what was. It is the same modelling decision that decides whether a business can reconstruct any historical position at all, which is the subject of owning your data domains rather than letting each one drift.

Where the codes come from, and why it is your problem

A practical point that surprises buyers. Code sets are licensed. Some are free to use, some are not, and the terms differ by set and by the way you use them. The lists you must file against are published by your regulator, and your entitlement to them generally runs through your own facility licence.

Which means: a software vendor that ships you the code sets as part of the product has a licensing question to answer, and it is not one you want to inherit quietly. The safer arrangement is that the system loads the lists from your own regulator entitlement — the loading is a feature, the content is yours. When a vendor cannot explain which of those two is happening, that is worth pursuing before signing rather than after, and it belongs on the same list as the other questions in what to make a vendor demonstrate rather than describe.

The multi-emirate problem sitting underneath

If you operate in more than one emirate, this stops being one problem and becomes several.

The regulators differ. Dubai, Abu Dhabi and the Northern Emirates each maintain their own requirements, their own lists, their own enumerations and their own submission arrangements, and the same numeric value can mean different things in two of them. So "the code list" is not a global table — it is a table per regulator, versioned, and resolved by the facility that provided the service as well as by the date.

Anything that hardcodes one emirate's rules is a product that works until your second branch opens. That is a stronger statement than it sounds, because the failure is not a crash: a Dubai-configured system filing into Abu Dhabi produces claims that are structurally valid and semantically wrong, which the payer declines and the clinic experiences as a mysterious run of denials at the new branch. The correct design treats the regulator as a record — its code lists, its enumerations, its endpoints and its deadlines as configuration a rule change can be loaded into, and a facility licensed in one emirate simply refused when it tries to file into another. That refusal is one of the things we build into CLINX rather than leave to a setting, because it is exactly the error that nobody makes deliberately.

Five questions for a demonstration

Ask for these on a database with real history, not on a fresh install:

  1. Back-date a visit to before a code was retired and code it with that code. It should be accepted. If the system refuses, it is validating against today.
  2. Then date the same visit after the retirement. It should be refused, at the point of coding, not at submission.
  3. Ask what the system believed on a date three months ago. If there is no answer, there are no versions, only a current state.
  4. Run the data-quality report over historical claims and see whether it flags correct historical coding as invalid.
  5. Ask where the code lists come from and who holds the licence. Listen for whether the answer is "we ship them" or "we load yours".

Those five separate a system built on date-effective reference data from one that has a table and good intentions. The difference is invisible for the first few months of operation and expensive for every month afterwards, which is the general shape of most of the decisions in this area. Settling them while the answer still changes what you buy is the cheapest version of the work, and it is what the first stage of an implementation scoped properly is for.

Code-set publication schedules, licensing terms and per-emirate requirements change. Nothing here quotes a specific list, version or frequency for that reason; confirm the current position with your own regulator and against your facility's licence entitlements.

Next step

Is this happening in your company?

If the article described your situation, the useful next move is a diagnosis rather than another article. Tell us the one thing that is not working.

Monday to Friday, 9:00 AM – 6:00 PM (GST)

Prefer we call you?

Leave your WhatsApp number and we will reach out.

We reply on WhatsApp first. Include your country code.

No newsletter, no reselling your number. We use it to reply to you — see our privacy policy.

WhatsApp us