HexAI_Demo / scripts /build_rxnorm_db.py
Ankit Thakur
Resolve merge conflicts
12f2295
#!/usr/bin/env python3
import sqlite3, csv, argparse
from metaphone import doublemetaphone
import sys, os
sys.path.append(os.getcwd())
from config import DB_PATH, RXNORM_CSV
def build_db(db_path: str, csv_path: str):
conn = sqlite3.connect(db_path)
c = conn.cursor()
c.execute("DROP TABLE IF EXISTS drugs")
c.execute("DROP TABLE IF EXISTS metaphone")
c.execute("CREATE TABLE drugs(name TEXT PRIMARY KEY, cui TEXT)")
c.execute("CREATE TABLE metaphone(meta TEXT, name TEXT, cui TEXT)")
with open(csv_path, newline='', encoding='utf-8') as f:
reader = csv.DictReader(f)
for row in reader:
nm, cui = row['name'], row['cui']
c.execute("INSERT OR IGNORE INTO drugs VALUES(?,?)", (nm, cui))
meta = doublemetaphone(nm)[0]
c.execute("INSERT INTO metaphone VALUES(?,?,?)", (meta, nm, cui))
conn.commit()
conn.close()
if __name__ == "__main__":
build_db(DB_PATH, RXNORM_CSV)
print(f"✅ RxNorm DB built at {DB_PATH}")