medical-ontology-code-mapping — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited medical-ontology-code-mapping (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Healthcare data is only as interoperable as its vocabularies. The same condition may be a free-text string in one feed, an ICD-9 code in another, and a SNOMED CT concept in a third. This skill builds the terminology normalization layer mapping messy inputs to canonical concepts and crosswalking between code systems so that records become joinable, groupable, and analyzable. It is the "healthcare-specific business ontology" backbone for data-quality and analytics work.
diagnosis, procedure, or drug free-text into coded concepts.local codes → standard codes.
| System | Domain | Typical use |
|---|---|---|
| ICD-10-CM / PCS | Diagnoses / inpatient procedures | Claims, risk adjustment |
| CPT / HCPCS | Professional procedures / supplies | Claims |
| SNOMED CT | Clinical concepts (broad) | EHR, interoperability |
| RxNorm | Normalized drug names | Medication reconciliation |
| NDC | Packaged drug products | Pharmacy claims |
| LOINC | Labs & observations | Results data |
| UMLS CUI | Cross-vocabulary concept hub | Mapping across systems |
(free-text vs. coded, which system).
parse ingredient/strength/form.
(e.g., RxNorm approximateTerm, UMLS MetaMap-style), keeping a confidence score.
NDC↔ingredient, SNOMED→ICD-10 map).
appropriate; flag retired or non-billable codes.
# RxNorm + ICD via public APIs (no key required for RxNav / Clinical Tables)
import requests
def ndc_to_rxnorm(ndc):
r = requests.get(f"https://rxnav.nlm.nih.gov/REST/ndcstatus.json?ndc={ndc}").json()
return r.get("ndcStatus", {}).get("rxcui")
def normalize_drug(text):
r = requests.get("https://rxnav.nlm.nih.gov/REST/approximateTerm.json",
params={"term": text, "maxEntries": 1}).json()
cand = r["approximateGroup"]["candidate"][0]
return cand["rxcui"], cand["score"]
def search_icd10(query): # NLM Clinical Tables typeahead
r = requests.get("https://clinicaltables.nlm.nih.gov/api/icd10cm/v3/search",
params={"sf": "code,name", "terms": query}).json()
return r[3] # [[code, name], ...]
rxcui, conf = normalize_drug("lipitor 20 mg tab") # -> ('617312', 95)
codes = search_icd10("type 2 diabetes") # -> [['E11.9','Type 2 diabetes...'], ...]mapped_codes.parquet input value → canonical code, system, display, confidence.crosswalk.parquet source code/system → target code/system with map provenance.unmapped_review.csv low-confidence or unresolved inputs for clerical review.mapping_report.md coverage %, confidence distribution, top unmapped terms.This is the vocabulary layer that makes claims/EHR data trustworthy and joinable. It feeds healthcare-data-quality-profiling (validity rules), patient-record-entity- resolution (standardized coded fields), and downstream modeling. Map confidence should be retained end-to-end so low-confidence mappings can be audited.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.