Medication list comparison and reconciliation-support methodology for Claude — plus a bundled zero-egress offline tool for the lists you can't paste into chat.
Not affiliated with, endorsed by, or approved by The Joint Commission, CMS, NCQA, or any vendor. Not clinical decision support: no interaction checking, no dosing recommendations, no safety determinations. Findings support — never replace — pharmacist, prescriber, and abstractor judgment.
Two skills:
med-list-normalization— parse messy lists: sig-line filtering, stopped-med detection, alias extraction, salt/release-form normalization, brand↔generic equivalence, dedup. Filtered lines are always surfaced for rescue, never silently dropped.med-discrepancy-classification— tiered comparison: Match / Equivalent (with the salt, release, brand, or combination note that earned the tier) / Not Found (omission candidate vs. addition), plus the stopped-but-active risk flag — a med discontinued on one list but active on the other, rendered before everything else.
One command: /med-compare — paste two labeled lists, get the full
tiered comparison. Synthetic or de-identified text only.
One offline tool: tools/med-compare-tool.html — the same comparison
as a single-file browser tool that runs entirely client-side with no data
egress. This is the path for PHI-containing lists: open the file locally,
paste, compare; nothing leaves the machine. Built with a deterministic
parser (dose/frequency/route detection, equivalence lookup, junk-term
flagging with exportable exclusion lists).
- Abstractors — discharge medication elements (stroke measures), HEDIS MRP/TRC documentation review
- Nurses & pharmacy techs — admission/discharge med rec worklists, meds-to-beds programs
- Quality teams — transitions-of-care audits, readmission reviews
- CDI — therapy present in one source, absent from the discharge summary → query candidate
tests/cases.json + tests/run-tests.js — a TC-numbered regression suite
of clinical documentation scenarios (brand/generic, salt forms, stopped-med
conflicts, duplicate merging, sig-line noise, raw EHR-export text, chart
abbreviations, HEDIS med-rec review). Three-layer validation: tests/run-tests.js (golden suite — every bug
becomes a permanent TC with provenance), tests/fuzz.js (deterministic
format-permutation fuzzing; baseline 99.4% at 12k iterations, may never
decrease), and tests/oracle-rxnorm.js (validates every brand/generic
pair in the RxNorm-derived dictionary — coverage as a measured number).
Per-release measured coverage: docs/COVERAGE.md (generated by tests/coverage.js). Full strategy: docs/VALIDATION-ARCHITECTURE.md. Deliberate boundaries:
docs/KNOWN-LIMITATIONS.md.
The bundled tool reads an optional rx_lookup.js generated from the NLM
RxNorm Prescribable Content release (public domain, no UMLS license
required; monthly releases). Staleness is disclosed in the tool footer and
is low-risk by construction: equivalence mappings don't become wrong with
age — an old snapshot misses newly launched brands (Not Found, human
reviews) rather than producing false matches. A monthly GitHub Actions cron
can regenerate the snapshot automatically.
In-chat comparison is for synthetic or de-identified lists only. The command enforces a PHI gate and routes identifiable content to the offline tool. Your organization's policies govern all PHI handling.
MIT (plugin content and bundled tool).