Standardized Codesets
Status: concept, demonstrated — the prototype uses these vocabularies (with deliberate fabricated exceptions).
PRISM invents no medical vocabulary. Every coded cell in the patient timeline comes from a finite, documented billing standard that the American healthcare system already speaks — the same codes every insurer processes and every provider bills with.
One vocabulary per column
Medical billing codes emerged from the mundane necessity of getting claims paid, but the result is something more useful: a closed, hierarchical, precisely documented representation of nearly everything that happens in medical care. PRISM assigns one code system (or a small set of them) to each timeline column:
| column | code system | rendered as | names |
|---|---|---|---|
| WHERE | CMS Place of Service | POS- | the care setting: office, emergency department, inpatient hospital, independent laboratory, treatment facility |
| WHO | NUCC Provider Taxonomy | NUCC- | the provider's specialty and subspecialty |
| WHAT | CPT | CPT- | procedures and services, the bulk of outpatient care |
| WHAT | HCPCS Level II | HCPCS- | supplies, equipment, and services beyond CPT's scope |
| WHAT | ICD-10-PCS | PCS- | inpatient hospital procedures |
| WHAT | ATC + RxNorm RxCUI | ATC-{atc}-{rxcui}: {name} [#units DS:days] | dispensed medications |
| WHY | ICD-10-CM | ICD- | the diagnosis justifying the row, ;-joined when there are several |
Every code is paired with its short official description in the rendered row, so a model reads CPT-93785: Ambulatory blood pressure monitoring rather than a bare number. The two remaining columns need no codeset: PERSON is age and sex, WHEN is a date.
The medication format
Medications are the one place PRISM departs from the code that appears on the raw claim. Pharmacy claims identify drugs by NDC — an 11-digit National Drug Code keyed to manufacturer, formulation, and package size. NDC is precise about the wrong things for pattern recognition: it has no therapeutic hierarchy, and the same pill from two manufacturers gets two unrelated codes.
So a medication row is rendered as ATC-{atc}-{rxcui}: {name} [#units DS:days] — for example, the prototype's ATC-C03DZ01-211582: veladrostat 12.5 MG Oral Tablet [#90 DS:90]. The ATC classification code comes first because its leading characters encode therapeutic class: two drugs in the same family share a prefix, exactly the way related diagnoses share an ICD stem. This keeps everything before the colon at uniform granularity across the WHAT column — a medication's code portion is as classifiable-at-a-glance as a CPT or PCS code, rather than an opaque package identifier. The RxCUI (RxNorm concept identifier) then pins the specific clinical drug, and the human-readable name, quantity, and days' supply follow after the colon.
In production, this implies a translation layer — NDC to RxNorm to ATC — sitting between raw claims and the timeline. The prototype sidestepped it by generating medications directly in the target format, with an honest side effect: many generated medication codes are hallucinated rather than real, and were treated as opaque tokens throughout (one of the accepted quirks of the synthetic data).
Hierarchy carries meaning
These vocabularies are not flat lists; their structure encodes clinical relationships, and that structure is load-bearing for pattern recognition. In ICD-10-CM, codes beginning with I are circulatory: I10 is essential hypertension, I11 is hypertensive heart disease — the progression from one to the other is legible in the codes themselves. CPT groups related work into ranges (the 80000s are laboratory tests), so different labs still read as the same kind of clinical action. NUCC taxonomy nests subspecialties under specialties, so an endocrinology code and a nephrology code visibly share an internal-medicine stem. Even place-of-service codes tell trajectory stories: care drifting from office visits to emergency departments to a treatment facility is a severity arc written in the WHERE column alone.
Because similar things sit near each other in code space, a model can recognize a familiar pattern even when the exact codes differ — which matters when the same condition is coded slightly differently across providers, insurers, and years.
Finite, documented, and already familiar
Unlike natural language, these are closed sets with published definitions: on the order of 70,000 ICD-10-CM codes, around 10,000 CPT codes. Vast by human standards, but trivially small vocabularies for a language model — and stable enough in meaning that a clinician can audit any pattern PRISM surfaces by looking up exactly what each code denotes. There are no mystery tokens.
Better still, large language models arrive pre-exposed. Billing guides, clinical documentation, research papers, and coding-education material saturate pre-training corpora, so a base model already associates I10 with essential hypertension and lab CPT ranges with diagnostic workups before PRISM training begins. Primary training does not teach what codes mean from scratch; it teaches the temporal sequences they form. That said, pre-exposure is a head start, not a guarantee — the specialization itself is what the training rounds exist to build.
The deliberate exceptions
The 2026 synthetic prototype fabricated every code belonging to its invented condition, Primary Veladrin Excess, to sit outside all of these real vocabularies — CPT numbers in unused ranges, letter-bearing ICD suffixes like E27.A5, invented ATC/RxCUI pairs. That is not a compromise; it is the point. A fired suggestion containing CPT-82197 can only have come from the injected pattern, because the code exists nowhere else — a grep, not a judgment call. The full rationale lives in the isolated signal. Production PRISM, on real claims, uses only the real codesets above.
See also
- The patient timeline format — the six columns these codes fill
- The isolated signal — why the prototype's codes are fabricated on purpose
- Primary Veladrin Excess — the invented condition and its code inventory
- Building the data — how synthetic timelines were generated, quirks included