| |
| """Build local drug knowledge artifact.""" |
|
|
| from __future__ import annotations |
|
|
| import json |
| from pathlib import Path |
|
|
| from app.knowledge.ddi_knowledge import top_risky_pairs |
| from app.knowledge.drug_catalog import DRUG_CLASSES |
| from app.knowledge.hepatic_rules import is_hepatic_unsafe |
| from app.knowledge.renal_rules import is_renal_unsafe |
| from app.knowledge.side_effect_ontology import SIDE_EFFECT_TAGS |
| from app.knowledge.substitution_rules import SUBSTITUTIONS |
| from app.knowledge.taper_rules import requires_taper |
|
|
|
|
| def main() -> None: |
| root = Path(__file__).resolve().parents[1] |
| out_dir = root / "data" / "raw" / "knowledge" |
| out_dir.mkdir(parents=True, exist_ok=True) |
| payload = { |
| "drug_classes": DRUG_CLASSES, |
| "example_top_pairs": top_risky_pairs(list(DRUG_CLASSES.keys())), |
| "side_effect_tags": SIDE_EFFECT_TAGS, |
| "substitutions": SUBSTITUTIONS, |
| "taper_required": {drug: requires_taper(drug) for drug in DRUG_CLASSES}, |
| "renal_flags": {drug: is_renal_unsafe(drug, 25.0) for drug in DRUG_CLASSES}, |
| "hepatic_flags": {drug: is_hepatic_unsafe(drug, 120.0, 90.0) for drug in DRUG_CLASSES}, |
| } |
| (out_dir / "drug_knowledge.json").write_text(json.dumps(payload, ensure_ascii=True, indent=2), encoding="utf-8") |
| print("wrote drug_knowledge.json") |
|
|
|
|
| if __name__ == "__main__": |
| main() |
|
|