models.py•2.75 kB
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
中西藥交互作用資料模型
定義中藥、西藥和交互作用的資料結構
"""
from dataclasses import dataclass
from typing import Optional, List, Dict, Any
from datetime import datetime
@dataclass
class ChineseMedicine:
"""中藥資料模型"""
id: Optional[int] = None
name: str = ""
name_pinyin: str = ""
category: str = ""
properties: str = "" # 性味歸經
functions: str = "" # 功效主治
side_effects: str = "" # 副作用
contraindications: str = "" # 禁忌症
dosage: str = "" # 用法用量
interactions_count: int = 0
created_at: Optional[datetime] = None
updated_at: Optional[datetime] = None
@dataclass
class WesternMedicine:
"""西藥資料模型"""
id: Optional[int] = None
name: str = ""
generic_name: str = ""
brand_name: str = ""
category: str = ""
therapeutic_class: str = ""
mechanism: str = "" # 作用機制
side_effects: str = "" # 副作用
contraindications: str = "" # 禁忌症
dosage: str = "" # 用法用量
interactions_count: int = 0
created_at: Optional[datetime] = None
updated_at: Optional[datetime] = None
@dataclass
class DrugInteraction:
"""藥物交互作用資料模型"""
id: Optional[int] = None
chinese_medicine_id: Optional[int] = None
western_medicine_id: Optional[int] = None
chinese_name: str = ""
western_name: str = ""
interaction_type: str = "" # 交互作用類型
severity: str = "" # 嚴重程度 (輕度/中度/重度/致命)
mechanism: str = "" # 交互作用機制
clinical_effects: str = "" # 臨床效果
recommendation: str = "" # 建議
evidence_level: str = "" # 證據等級
ref_sources: str = "" # 參考文獻
created_at: Optional[datetime] = None
updated_at: Optional[datetime] = None
@dataclass
class SearchResult:
"""搜尋結果資料模型"""
chinese_medicines: List[ChineseMedicine]
western_medicines: List[WesternMedicine]
interactions: List[DrugInteraction]
total_count: int
@dataclass
class InteractionSummary:
"""交互作用摘要資料模型"""
medicine_name: str
medicine_type: str # 'chinese' 或 'western'
total_interactions: int
severity_distribution: Dict[str, int] # 嚴重程度分布
high_risk_interactions: List[DrugInteraction]
recommendations: List[str]
@dataclass
class BatchCheckResult:
"""批次查詢結果模型"""
chinese_medicines: List[str]
western_medicines: List[str]
interactions_found: List[DrugInteraction]
total_checked_pairs: int
high_risk_pairs: int
warnings: List[str]