Skip to content

ohcnetwork/cdci

Repository files navigation

Clinical Codes Browser

An open-source, frontend-only web app to search and browse India's NRCeS (C-DAC, MoHFW) clinical terminologies, and export them for CARE. Two peer sections:

  • Drug codesCommon Drug Codes for India (CDCI), the SNOMED CT national drug terminology. Export as CARE ProductKnowledge.
  • Lab test codesCommon Lab Codes for India (CLCI), a curated subset of LOINC v2.82. Every test's cryptic LOINC Fully-Specified Name is decoded into plain English.

No backend: the whole thing is a static site built from the NRCeS releases.

NRCeS TSV (drugs)  ─┐
                    ├─▶  build pipeline  ──▶  JSON + search index + CARE export  ──▶  static site
NRCeS CSV (labs)   ─┘          ▲
                      community enrichment overlay (PR-reviewed, drugs)

What it does

Drugs (SNOMED CT)

  • Search ~186k concepts (substances, generics, brands, products) with sub-50 ms prefix typeahead.
  • Browse the substance → generic → brand hierarchy with shareable permalinks (/concept/?id=<sctid>).
  • Copy any concept as a SNOMED code, a FHIR Coding, or a CARE ProductKnowledge resource — generated client-side from the concept doc (no pre-built export artifacts).
  • Enrich the sparse clinical fields (indication, contraindication, …) via in-app Suggest edit → GitHub PR.

Labs (LOINC)

  • Search 1,473 lab tests by name, long common name, or LOINC code (/labs).
  • Decode each test's LOINC FSN into its six axes — component, property, time, specimen, scale, method — with a curated plain-English glossary (/lab/?code=<loinc>).
  • Browse by specimen, scale, and derived clinical discipline (Chemistry, Hematology, Microbiology, …).
  • Copy the LOINC code or a FHIR Coding. A CARE observation export is planned for v2.

DDI / interaction checking is intentionally out of scope for v1 — see the plan. The build still computes a SNOMED→RxNorm bridge seed so a future CDSS can be layered on.

Data model (verified against the release)

Master Rows Notes
Substance 3,274 SCTID + CAS/UNII/SMILES/InChI (sparse). SNOMED International.
Generic 10,174 SCTID, +-joined combo substances (20.7%), routes, dose form, clinical fields.
Brand 93,019 SCTID → generic/supplier/product. India extension.
Product / Supplier / Dose form / Route 71,503 / 8,121 / 422 / 160 lookups.

Strengths are parsed from the SNOMED names (97.5% clean) and marked derived/unverified; the original name is always the source of truth.

Lab tests (CLCI · LOINC)

Field Notes
1,473 lab tests Keyed by LOINC code (http://loinc.org), a separate identity space from SNOMED — hence a self-contained module.
FSN split Component:Property:Time:System:Scale[:Method] decomposed + validated (98.5% / 1,451 parse cleanly; 22 fall back to the Long Common Name).
Specimen / scale facets Derived straight from the FSN.
Discipline categories Derived by a transparent heuristic, correctable via data/source/clci/categories.json. Best-effort.

The Long Common Name is always the authoritative display; the FSN breakdown is derived.

Develop

npm install
npm run build:data          # drugs (TSV → bucketed JSON) + labs (CSV → JSON) into public/data/*
npm run dev                 # http://localhost:3000
npm run build               # build:data + static export to out/
npm run test:labs           # unit checks for the LOINC parse/derive helpers
npm run validate:enrichments

build:data chains build:data:drugs then build:data:labs; each scopes its cleanup to its own output subtree. The NRCeS drug TSVs live in data/source/, the CLCI lab CSV in data/source/clci/. Generated artifacts (public/data/) are git-ignored and produced by the build.

Repo layout

data/source/        NRCeS drug TSV flat files (+ NOTICE/LICENSE)
data/source/clci/   NRCeS CLCI lab CSV (+ NOTICE/README) + categories.json overrides
enrichments/        community overlay, one JSON per drug concept keyed by SCTID
scripts/            build pipelines (build-data = drugs, build-labs = labs) + validators
src/lib/labs/       self-contained lab module: types, LOINC glossary, categories, data layer
src/components/labs/  LabsBrowser (search + facets) + LabTestView (the FSN "split")
src/                Next.js app (App Router) + shared drug types/data layer
.github/            CI: validate PRs, build & deploy

Contributing & governance

See CONTRIBUTING.md and GOVERNANCE.md. In short: enrichment is kept strictly separate from the immutable source, every PR is schema-validated in CI, and safety-affecting fields require clinician/pharmacist sign-off before they go live.

Licence & attribution

Drug data © C-DAC / NRCeS under CC BY 4.0; contains SNOMED CT® content used under the SNOMED CT Affiliate Licence (SNOMED CT® is a trademark of SNOMED International). Brand/trade names belong to their owners. Lab data contains content from LOINC® (loinc.org), © Regenstrief Institute, Inc. and the LOINC Committee, used under the LOINC licence (LOINC® is a registered trademark of Regenstrief Institute, Inc.); Regenstrief and the LOINC Committee do not endorse the CLCI subset. Intended for Indian healthcare use. See DATA_LICENSE.md and NOTICE. App code is MIT; community enrichment is contributed under CC BY 4.0.

Not a clinical decision-support tool. Community content is shown with its review status and must not be relied on for prescribing.

About

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors