File size: 1,380 Bytes
fd0c71a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/usr/bin/env python3
"""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()