# openfda-spider **Repository Path**: bill_law6/openfda-spider ## Basic Information - **Project Name**: openfda-spider - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-06 - **Last Updated**: 2026-01-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # OpenFDA 药物安全预测平台 ## 项目概述 OpenFDA 药物安全预测平台是一个高鲁棒性的"AI 协同科学家"平台,用于药物安全性预测。该平台处理和分析来自 FDA 开放平台的数据,生成可审计的、有证据支撑的预测结果,以辅助药物研发决策。 ### 核心特性 - **多智能体系统 (MAS)** - 采用类似 DiscoVerse 的多智能体架构 - **证据可追溯性** - 每个预测都有完整的推理链和来源链接 - **GMLP 合规** - 符合 FDA 良好机器学习实践指南 - **TDD 测试驱动** - 所有功能都经过测试驱动开发验证 ## 项目架构 平台遵循 5 阶段架构设计: ``` ┌─────────────────────────────────────────────────────────────────┐ │ OpenFDA 药物安全预测平台 │ ├─────────────────────────────────────────────────────────────────┤ │ Phase 5: 验证、可追溯性与合规性 │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ GMLP Metrics | 结构化报告 | 风险评估 | Human-in-loop │ │ │ └─────────────────────────────────────────────────────────┘ │ ├─────────────────────────────────────────────────────────────────┤ │ Phase 4: AI/ML 建模与架构 │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ SafetyPredictor | PreclinicalAgent | ClinicalAgent │ │ │ │ StrategicAgent | SupervisorAgent | EvidenceTrace │ │ │ └─────────────────────────────────────────────────────────┘ │ ├─────────────────────────────────────────────────────────────────┤ │ Phase 3: 分析与特征工程 │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ ROR 计算 | IC 计算 | PK/PD 分析 | 信号检测 │ │ │ └─────────────────────────────────────────────────────────┘ │ ├─────────────────────────────────────────────────────────────────┤ │ Phase 2: 数据清洗与标准化 │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ 药物名称标准化 | MedDRA 编码 | 报告去重 | 文本分块 │ │ │ └─────────────────────────────────────────────────────────┘ │ ├─────────────────────────────────────────────────────────────────┤ │ Phase 1: 数据获取与摄入 │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ FAERS | OpenFDA | Drug@FDA | ICH E2B 兼容 │ │ │ └─────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────┘ ``` ### Phase 1: 数据获取与摄入 从监管机构发布的公开数据平台获取和整合多维度、异构的数据源。 **支持的数据源:** - **OpenFDA** - FDA 药物批准和标签数据 - **FAERS** - FDA 不良事件报告系统 - **Drug@FDA** - FDA 药物批准审评文档 **数据标准:** - FAERS 报告结构遵循 ICH E2B(R3) 标准 - 确保与国际药品监管数据交换兼容 ### Phase 2: 数据清洗与标准化 消除数据异构性、错误和冗余,确保数据适合模型训练和分析。 **主要功能:** - **药物名称标准化** - 将品牌名称转换为通用名称 - **MedDRA 编码** - 使用标准化术语对不良事件进行编码 - **报告去重** - 根据 FDA 指南删除重复报告 - **文本分块** - 分割文档同时保留上下文 ### Phase 3: 分析与特征工程 深入的数据分析和特征准备,为建模做准备。 **信号检测方法:** - **ROR (Reporting Odds Ratio)** - 报告优势比 - **IC (Information Component)** - 信息组件 - **PK/PD 分析** - 药代动力学/药效学数据处理 ### Phase 4: AI/ML 建模与架构 构建覆盖"临床前-临床"全链条的 AI 安全性预测模型。 **多智能体系统:** - **PreclinicalAgent** - 处理动物和体外研究 - **ClinicalAgent** - 处理人体试验数据 - **StrategicAgent** - 高层决策和跨项目比较 - **SupervisorAgent** - 协调流程,集成发现 ### Phase 5: 验证、可追溯性与合规性 严格的验证流程,并确保满足监管机构对 GMLP 的要求。 **关键功能:** - **GMLP 指标计算** - 准确率、精确率、召回率、F1 - **结构化报告生成** - 符合监管要求 - **风险评估** - 标记潜在偏差 - **Human-in-loop** - 确保最终判断由领域专家完成 ## 安装 ### 环境要求 - Rust 1.70+ - Cargo ### 构建项目 ```bash # 克隆项目 git clone cd openfda-spider # 构建项目(不含可视化功能) cargo build --no-default-features # 构建项目(含可视化功能) cargo build --features visualization # 运行测试 cargo test --no-default-features ``` ## 使用方法 ### 命令行接口 平台提供以下 CLI 命令: ```bash # 分析数据 cargo run -- analyze --file-path # 可视化数据 cargo run -- visualize --file-path # 信号检测分析 cargo run -- signal-detection \ --drug "Cerivastatin" \ --event "Rhabdomyolysis" \ --tp 42 \ --fp 78 \ --tn 1500 \ --fn 15 # 药物名称标准化 cargo run -- standardize-drug --name "Lipitor" # MedDRA 编码 cargo run -- meddra-code --term "Rhabdomyolysis" # GMLP 验证 cargo run -- validate --tp 80 --tn 90 --fp 10 --fn 5 ``` ### 作为库使用 ```rust use openfda_spider::analytics::AnalyticsEngine; use openfda_spider::cleaning::{DrugNameStandardizer, MedDRACoder}; use openfda_spider::validation::ValidationEngine; // 信号检测 let engine = AnalyticsEngine::new(); let result = engine.detect_signal( "Cerivastatin", "Rhabdomyolysis", 42, 78, 1500, 15, // ROR 参数 0, 0.0, 0.0 // IC 参数 ); println!("{}", result.format()); // 药物名称标准化 let standardizer = DrugNameStandardizer::new(); let generic = standardizer.standardize("Lipitor"); // 返回 "atorvastatin" // MedDRA 编码 let coder = MedDRACoder::new(); if let Some(coded) = coder.code("Rhabdomyolysis") { println!("PT Code: {}", coded.pt_code); println!("SOC: {}", coded.soc); } // GMLP 验证 let engine = ValidationEngine::new(); let metrics = engine.calculate_gmlp_metrics(80, 90, 10, 5); let compliance = engine.validate_gmlp_compliance(&metrics); ``` ## 信号检测示例 ### Cerivastatin - Rhabdomyolysis Cerivastatin(拜耳)因横纹肌溶解风险撤市的案例: ```bash cargo run -- signal-detection \ --drug "Cerivastatin" \ --event "Rhabdomyolysis" \ --tp 42 \ --fp 78 \ --tn 1500 \ --fn 15 ``` 输出示例: ``` 🔍 Running signal detection for Cerivastatin - Rhabdomyolysis Signal Detection for Cerivastatin - Rhabdomyolysis ROR: 53.85 (95% CI: 28.62 - 101.30), Signal: POSITIVE IC: 0.00, IC025: 0.00, Signal: NEGATIVE Signal Score: 10.00, Confidence: Moderate Recommendations: - Further investigation recommended - Review individual case safety reports ``` **解读:** - ROR = 53.85(远大于 1,表明强正相关信号) - CI 下界 = 28.62(大于 1,统计显著) - 这与 Cerivastatin 因横纹肌溶解风险撤市的历史事实相符 ## 测试驱动开发 (TDD) 项目遵循 TDD "红-绿-重构" 周期: 1. **Red (红)** - 编写失败的测试代码 2. **Green (绿)** - 编写刚好能通过测试的生产代码 3. **Refactor (重构)** - 优化代码结构 运行所有测试: ```bash cargo test --no-default-features ``` ### TDD 测试示例 ```rust // Phase 1: 测试 FAERS 报告结构 #[test] fn test_faers_report_structure() { let report = FAERSReport { case_number: Some(CaseNumber("123456".to_string())), // ... }; assert!(report.is_valid()); } // Phase 2: 测试药物名称标准化 #[test] fn test_drug_name_standardization() { let standardizer = DrugNameStandardizer::new(); assert_eq!(standardizer.standardize("Lipitor"), "atorvastatin"); } // Phase 3: 测试 ROR 计算 #[test] fn test_ror_calculation() { let result = RORResult::new(42, 78, 1500, 15); assert!(result.ror > 0.0); assert!(result.ci_lower > 1.0); } ``` ## 文件结构 ``` openfda-spider/ ├── Cargo.toml ├── README.md ├── CLAUDE.md ├── src/ │ ├── lib.rs # 库入口 │ ├── main.rs # CLI 入口 │ ├── error.rs # 错误类型定义 │ ├── config.rs # 配置加载 │ ├── common/ # 通用工具模块 │ │ └── mod.rs │ ├── ingestion/ # Phase 1: 数据获取 │ │ └── mod.rs │ ├── cleaning/ # Phase 2: 数据清洗 │ │ └── mod.rs │ ├── analytics/ # Phase 3: 分析 │ │ └── mod.rs │ ├── ai/ # Phase 4: AI 建模 │ │ └── mod.rs │ └── validation/ # Phase 5: 验证 │ └── mod.rs └── tests/ └── integration_tests.rs ``` ## GMLP 合规 平台遵循 FDA 良好机器学习实践 (GMLP) 指南: 1. **数据质量** - 确保训练、验证和测试数据的代表性 2. **模型文档** - 详细记录模型架构、训练过程和性能指标 3. **可追溯性** - 每个预测都有完整的证据链 4. **Human-in-loop** - 最终判断由领域专家完成 5. **风险管理** - 包含预定义的风险评估框架 ### GMLP 指标 ```rust let metrics = GMLPMetrics::new(tp, tn, fp, fn_); // metrics.accuracy - 准确率 // metrics.precision - 精确率 // metrics.recall - 召回率 // metrics.f1_score - F1 分数 ``` ## 贡献指南 1. 遵循 TDD 流程 2. 添加中文注释 3. 更新相关文档 4. 确保所有测试通过 ## 许可证 本项目遵循相关开源许可证。 ## 参考资料 - [OpenFDA API](https://open.fda.gov/) - [FAERS](https://www.fda.gov/drugs/fda-adverse-event-reporting-system-faers) - [MedDRA](https://www.meddra.org/) - [ICH E2B(R3)](https://www.ich.org/page/e2br3) - [GMLP Guidelines](https://www.fda.gov/medical-devices/software-medical-device-samd/good-machine-learning-practice-medical-device-development)