#!/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}")