v0.2.0: RxNorm drug crosswalks + offline NDC decode
RxNorm drug crosswalks + offline NDC decode
RxNorm joins the bundled corpus, closing the one gap from v1 — the drug-crosswalk directions and a first-class offline NDC decode go live. Runtime stays offline and keyless; RxNorm is acquired once at build time over the keyless RxNav REST API.
Added:
- RxNorm bundled — current normalized drug set (55,867 concepts, 77,199 edges, 248,093 NDC maps) with NDC and ingredient/brand edges, reported by medcode_list_systems (#9)
- medcode_map_codes drug directions live: name_to_rxcui, ndc_to_rxcui, rxcui_to_ndc, rxcui_to_ingredients, rxcui_to_brands (#9)
- medcode_get_code decodes an NDC (hyphenated or 10/11-digit) directly to its RxNorm product, tagged source: NDC, via a new optional source result field (#10)
- scripts/ingest/fetch-rxnav.ts — build-time RxNav fetcher caching concepts, NDCs, and edges under /rxnav/
Changed:
- RxNorm acquisition moved off the UMLS-gated RRF files to the keyless RxNav REST API; parseRxNorm() replaced by parseRxNav() reading the JSON cache (#9)
- direction_unavailable is now a fallback for builds without RxNorm tables, not the default; phase-2 caveats dropped across tool descriptions, instructions, and README
- medcode_browse_hierarchy on RXNORM returns empty with a steering notice — RxNorm is a flat vocabulary
99 tests pass; bun run devcheck clean.