stn 02 · rec 2026 · orrery — home health compliance
Turning a Medicare Manual into 108 Testable Rules
Compiled the Medicare home-health pre-claim review requirement set into 108 machine-readable rules, each carrying its own regulatory quote, citation and pass/fail contract — so an agency can see what is missing before it submits, not after it is denied.
sec 01 · brief
The problem
Medicare's Review Choice Demonstration puts home health agencies in Florida on a pre-claim footing: under Choice 1 the documentation goes to the contractor before the claim does, and a non-affirmed request is a denial. Staying on the light-touch path means holding at least 90% full affirmation over a minimum of ten requests every six-month cycle. Florida reached full implementation in September 2021, and the demonstration now runs to May 2029.
The trouble is that no single document says what a compliant request looks like. The requirement set is spread across a manual chapter, four sections of the Code of Federal Regulations, an operational guide, 115 published FAQs, a contractor audit form and three therapy coverage determinations — several of which disagree with each other. Nobody holds that in their head, so a chart audit is a person reading a hundred pages against a checklist they half-remember.
The ask was a system that checks a case against the requirement set and says exactly what is missing, with the citation and the fix beside it — before the request goes out the door.
sec 02 · approach
What I built
A rulepack, not a prompt. One YAML file per rule, compiled and validated by a Python build script into a single JSON artifact that anything downstream can read. A rule that cannot be pointed at its own line of regulation does not compile.
The load-bearing decision was to type each check by how it decides rather than treating the whole set as a language problem. 64 of the 108 rules are deterministic — dates, presence of a document, identifier equality — and run as pure functions at no model cost. 30 are genuine judgment calls, and 14 are hybrids with an arithmetic prong and a judged one. Naive per-rule model execution of the full set was estimated at $3–5 a case; typing them this way puts most of the answer on the free side of the line.
Rules are graph nodes rather than a flat list: 351 typed edges across seven relations carry definition dependencies, sibling links, G-code activation and escalation from the always-on core tier into the deep one. Two relations do real regulatory work — `defeats`, which lets a carve-out shield a rule it would otherwise fail (a death exception over the face-to-face timing rule), and a document index that makes "which rules rest on this manual section" a query instead of a grep.
sec 03 · method
Method
01
Build the corpus and rank its authority
Nineteen documents, registered with a version and a currency date, arranged in four tiers: statute, the Code of Federal Regulations, sub-regulatory manuals and the demonstration notices. The tiering is not decoration — it decides which instrument wins when two disagree, and Azar v. Allina Health Services is the warrant for resolving conflicts in favour of the manual over an unpublished contractor position.
02
Extract requirement candidates with their quotes
A first pass over the corpus produced roughly 190 requirement candidates, each captured with the verbatim sentence that creates it and a page reference. The same pass registered five outright conflicts between documents — a retired review option, a decision window that moved from twenty business days to ten, a postpayment window quoted two ways, two incompatible task numberings and a swapped criteria order — so that later disagreements were known rather than discovered.
03
Design the rule schema against the evaluation literature
Judgment rules answer a checklist of binary questions rather than producing a score, which is CheckEval's finding: decomposition raised average agreement across evaluator models by 0.45 and cut score variance. The grader contract — a boolean plus a quoted evidence span plus a one-sentence explanation — is HealthBench's. And because small models in boolean output default to "compliant" regardless of what they detected, chain-of-thought is off, three samples vote, and disagreement routes to a human instead of being averaged away.
04
Author, consolidate and conserve
121 fine-grained proto-rules were consolidated into a coherent pack, with 35 retired identifiers conserved in supersedes entries so that nothing quietly vanished in the merge and any historical reference still resolves. Rules split into a 25-rule core tier that always runs and an 83-rule deep tier a reviewer can call per area.
05
Compile, validate, then audit against the sources
The build script is the gate: filenames must match ids, folders must match areas, every edge target must resolve, and the superseded index must account for every retired id. Two audits then read every rule back against the document it cites — one for fidelity to the regulation, one for internal consistency across the pack.
sec 04 · legend
Instruments
legend · methods
legend · language & data
legend · models
legend · review surface
sec 05 · readings
Results
rules in the pack
108
25 core · 83 deep
deterministic checks
64 of 108
run with no model call
auto non-affirm rules
18 of 108
all 18 sit in the core tier
source documents registered
19
7 cited by no rule
typed graph edges
351
7 relations · 18 definition nodes
legacy ids conserved
35
each mapped forward in a supersedes entry
fabricated quotes found
0
95 rules · two full audits
fidelity audit
1 blocker
64 clean · 30 advisory · of 95 rules
judgment rules calibrated
0 of 44
κ null · 0 labelled examples · 0 of 108 reviewed
plate 01
Most of the pack needs no model at all
deterministic
llm judgment
hybrid
Rules by how they decide. The deterministic 64 are pure functions over dates, document presence and identifier equality — they cost nothing to run and cannot hallucinate. Only the 30 judgment rules and the judged prong of the 14 hybrids reach a model.
source
Compiled rulepack, check.type across all 108 rules. Accent marks the share that runs free.
plate 02
Eighteen rules can sink a request on their own
auto non-affirm
high
medium
advisory
Rules by severity. An auto non-affirm rule is one where a single failure denies the request outright, so those eighteen decide what has to be checked every time — and they are exactly the rules that make up the core tier, alongside seven high-severity date checks.
source
Compiled rulepack, severity across all 108 rules. Ordered by severity rank, not by count.
plate 03
One manual chapter carries the pack
Benefit Policy Manual ch.7
Medical record audit form
Claims Processing Manual ch.10
RCD FAQs
Operational Guide
How many rules cite each source document. Chapter 7 of the Benefit Policy Manual grounds 77 of 108 rules; nothing else reaches twenty. Building the index that produced this also surfaced the inverse — seven of the nineteen registered documents are cited by no rule at all.
source
Compiled rulepack, distinct rules per document in the document index. Twelve documents have at least one citation; the other seven are plotted nowhere because they have none.
sec 06 · reference
The core rules
The core tier — 25 of the 108 rules, with the 12 shared definitions they depend on. This is not a sample: the core tier is a real division in the pack, the rules that run on every request, and it is exactly the 18 auto non-affirm rules plus 7 high-severity date checks. The other 83 are deep-tier and run when a reviewer asks for an area. Drag the graph around; click any node to open what it actually says.
source
Compiled rulepack artifact, built 2026-07-29. Ids, labels, severities, check types, checklist items and quotes are transcribed verbatim. No case is evaluated, so no rule carries a verdict.
graph · core subgraph · drag a node, click to open
The same 25 rules as a graph, with the 12 shared definitions they depend on — 85 edges over 81 node pairs. Mark size is degree. Position encodes connectivity and nothing else: there are no axes here, and two marks sitting close together means they pull on each other, not that they measure anything. The layout is computed once at build time from a fixed seed, so it is the same drawing on every build. What it shows is that the pack is held together by its definitions rather than by its rules — the busiest node is not a rule at all but the two-clocks definition, the 30-day billing period against the 60-day episode, which six rules depend on and three other definitions cross-reference.
The two clocks - 30-day billing period vs 60-day episode
text
Since PDGM (1/1/2020) the unit of payment is the 30-DAY BILLING PERIOD: one PCR request per 30-day period, each generating its own 14-byte UTN; claims are per period; each period is reviewed independently with the full episode documentation. Certification, recertification, the F2F encounter, POC review, and OASIS remain on the 60-DAY EPISODE: two billing periods nest inside each 60-day certification period; the POC must account for all dates on the request (a POC covering only the first 30 days gets the second period non-affirmed); no new F2F is required mid-episode absent discharge and readmission; a new Start-of-Care OASIS triggers a new PCR. Every dated rule must declare which clock it runs on.
authority Operational Guide Ch.4 · p.9 · RCD FAQs Q103-Q109
sec 07 · findings
What the data said
finding · result
Most of a compliance-AI problem is not AI
Sixty-four of the 108 checks resolve without a model: is the document in the packet, does the encounter date fall inside the window, do the identifiers match across the OASIS, the 485 and the request. Typing the pack this way, rather than sending every rule to a model, is what moves the cost of a case from an estimated $3–5 to a fraction of it — and the free checks are the ones that catch the most common denials.
finding · negative result
A stricter-than-regulation rule is a false-denial hazard
The fidelity audit found one blocker in 95 rules: the homebound absences rule had encoded "infrequent OR of short duration" as a conjunction. The manual disqualifies an absence only when it is both frequent and prolonged, so the rule would have failed cases the regulation permits — the direction of error that costs an agency money for nothing. Fixed in the same session, and the reason the audit reads the source rather than the rule.
finding · negative result
A search summary invented a requirement, and the audit caught it
An earlier pass, working from a summarised search result rather than the document, recorded that therapy goals must carry an expected date of accomplishment. Reading the physical therapy coverage determination directly showed that revision R11, in October 2016, deleted that phrase. Encoding it would have manufactured a denial reason that no longer exists.
finding · result
One document carries the pack, and the index proves it both ways
Chapter 7 of the Benefit Policy Manual grounds 77 of 108 rules. Building a document index to establish that also answered the question nobody asks: seven of the nineteen registered documents are cited by no rule at all — either a coverage gap or a corpus that carries weight it does not need.
finding · result
Closed technical sets and open genera cannot route the same way
"Supportive devices such as crutches, canes, wheelchairs, and walkers" is an open genus — the enumeration is illustrative, so a walker-equivalent the manual never names still qualifies, and the check has to be judged. The 19 therapy G-codes look similar on the page and are the opposite: a closed set where membership is decidable, and deterministic. An earlier analysis had grouped them together, which would have sent a decidable check to a model and a judgement call to an equality test.
finding · negative result
Transitive definition closure was measured, then rejected
Rules inject the definitions they depend on into the judge's context, and promoting that transitively looked obviously correct. Measuring first killed it: the 18-definition graph carries 29 cross-references including nine mutual pairs, so blanket promotion would inject up to seven extra definitions into a single rule's context — diluting the prompt to satisfy a tidiness argument.
sec 08 · forward
Recommendations
01
Calibrate against real decision letters. Every judgment rule ships uncalibrated, and historical pre-claim review outcomes with their unique tracking numbers and reason codes are the one input that would turn agreement from an assumption into a measurement.
02
Map non-affirmation reason codes back to rule ids, so a denial teaches the pack instead of only teaching the reviewer.
03
Cite or retire the seven uncited documents. Each is either a gap in coverage or weight the corpus does not need, and the index cannot tell you which.
04
Obtain Chapter 6 of the Program Integrity Manual, the one instrument in the authority stack still missing from the corpus.
05
Put a human sign-off on every rule. The reviewer field is empty across all 108, which is honest and is not a resting state.
06
Pilot the pack to replace the cost and latency estimates with measurements, and to test the routing thresholds against cases where a reviewer disagrees with the panel.
sec 09 · notes
Notes
disclosure
The organisation this work was done for ships under a pseudonym, ORRERY, and no individual is named. Everything else on this page is real: every rule id, label, severity, check type, citation and quote is transcribed from the compiled rulepack, and every count and audit figure is the measured one. The regulatory material is public federal regulation and is named as itself. No patient data appears — the product view this catalogue is drawn from evaluates a case, and no case, real or invented, is shown here.
limits
- The engagement delivered the rulepack, the corpus and the system design. No product application was built in this phase, so nothing here has been observed running against live cases.
- All 44 judgment and hybrid rules ship uncalibrated — agreement kappa null, zero labelled examples — and no rule carries a human reviewer. That is recorded in the artifact rather than papered over, but it means no accuracy claim is available.
- Cost and latency figures are design estimates from the model pricing and the prompt sizes, not pilot measurements.
- The pack is grounded in the Florida jurisdiction and its contractor. The demonstration runs in six states, and the others would need their coverage determinations re-read before any of this transfers.
- The two audit figures quoted above were run against a 95-rule snapshot; the pack has since grown to 108. They are reported with that denominator rather than restated against a set they never covered.
- The corpus is copyright-bound and not redistributable, so the quotes shown in the reference below are the short operative excerpts each rule already carries.