# 한약재 정보 관리 시스템 (K-Drug Information System) ## 1. 개요 ### 1.1 목표 - 양방약 DUR(Drug Utilization Review) 시스템처럼 한약재 정보를 체계적으로 관리 - AI/API를 통한 지속적인 정보 업데이트 - 근거 기반 한의학(Evidence-Based Korean Medicine) 데이터베이스 구축 ### 1.2 벤치마킹 - **건강보험심사평가원 의약품안전사용서비스(DUR)** - **KIMS (대한민국의약정보센터)** - **Micromedex (미국)** - **한국한의학연구원 전통의학정보포털** ## 2. 데이터베이스 설계 ### 2.1 핵심 테이블 구조 ```sql -- 1. 약재 기본 정보 (확장) CREATE TABLE herb_master_extended ( herb_id INTEGER PRIMARY KEY, ingredient_code VARCHAR(10) UNIQUE, -- 기본 명칭 name_korean VARCHAR(100) NOT NULL, name_hanja VARCHAR(100), name_latin VARCHAR(200), name_english VARCHAR(200), name_pharmaceutical VARCHAR(200), -- 약전명 -- 분류 정보 family_latin VARCHAR(100), -- 과명 genus_species VARCHAR(200), -- 학명 origin_plant TEXT, -- 기원식물 medicinal_part VARCHAR(100), -- 약용부위 -- 성미귀경 property VARCHAR(50), -- 성(性): 한/열/온/량/평 taste VARCHAR(100), -- 미(味): 고/감/산/신/함/담 meridian_tropism TEXT, -- 귀경: 입경 경락 -- 효능 효과 main_effects TEXT, -- 주요 효능 indications TEXT, -- 적응증 contraindications TEXT, -- 금기증 precautions TEXT, -- 주의사항 -- 용법 용량 dosage_range VARCHAR(50), -- 상용량 (예: "3-12g") dosage_max VARCHAR(50), -- 극량 preparation_method TEXT, -- 포제법 -- 성분 정보 active_compounds TEXT, -- 주요 성분 chemical_constituents JSON, -- 화학 성분 상세 (JSON) -- 약리 작용 pharmacological_effects TEXT, -- 약리작용 clinical_applications TEXT, -- 임상응용 -- 상호작용 drug_interactions JSON, -- 약물 상호작용 (JSON) food_interactions JSON, -- 음식 상호작용 (JSON) -- 품질 기준 quality_standards TEXT, -- 품질 기준 identification_method TEXT, -- 감별법 -- 메타데이터 created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, data_source VARCHAR(100), -- 데이터 출처 reliability_score INTEGER, -- 신뢰도 점수 (1-10) review_status VARCHAR(20) -- 검토 상태 ); -- 2. 약재 연구 문헌 CREATE TABLE herb_research_papers ( paper_id INTEGER PRIMARY KEY, herb_id INTEGER REFERENCES herb_master_extended(herb_id), title TEXT NOT NULL, authors TEXT, journal VARCHAR(200), publication_year INTEGER, volume VARCHAR(50), pages VARCHAR(50), doi VARCHAR(100), pubmed_id VARCHAR(20), abstract TEXT, keywords TEXT, study_type VARCHAR(50), -- RCT, 관찰연구, 리뷰 등 evidence_level INTEGER, -- 근거수준 (1-5) findings TEXT, -- 주요 발견 clinical_relevance TEXT, -- 임상적 의미 created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, indexed_at TIMESTAMP ); -- 3. 약재 안전성 정보 CREATE TABLE herb_safety_info ( safety_id INTEGER PRIMARY KEY, herb_id INTEGER REFERENCES herb_master_extended(herb_id), -- 독성 정보 toxicity_level VARCHAR(20), -- 독성 등급 ld50_value VARCHAR(50), -- 반수치사량 toxic_compounds TEXT, -- 독성 성분 -- 부작용 common_side_effects TEXT, -- 흔한 부작용 rare_side_effects TEXT, -- 드문 부작용 serious_adverse_events TEXT, -- 중대 이상반응 -- 특수 집단 pregnancy_category VARCHAR(10), -- 임신 등급 pregnancy_safety TEXT, -- 임신 안전성 lactation_safety TEXT, -- 수유 안전성 pediatric_use TEXT, -- 소아 사용 geriatric_use TEXT, -- 노인 사용 -- 모니터링 monitoring_parameters TEXT, -- 모니터링 항목 laboratory_tests TEXT, -- 필요 검사 created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- 4. 처방 구성 규칙 CREATE TABLE prescription_rules ( rule_id INTEGER PRIMARY KEY, -- 배합 규칙 herb1_id INTEGER, herb2_id INTEGER, relationship_type VARCHAR(50), -- 상수/상사/상외/상오/상쇄/상반/상살 description TEXT, clinical_significance TEXT, evidence_source TEXT, severity_level INTEGER, -- 심각도 (1-5) action_required VARCHAR(50), -- 조치사항 is_absolute BOOLEAN, -- 절대 금기 여부 created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- 5. 질병-약재 매핑 CREATE TABLE disease_herb_mapping ( mapping_id INTEGER PRIMARY KEY, disease_code VARCHAR(20), -- KCD 코드 disease_name VARCHAR(200), herb_id INTEGER REFERENCES herb_master_extended(herb_id), indication_type VARCHAR(50), -- 주적응증/부적응증 evidence_level INTEGER, -- 근거수준 recommendation_grade VARCHAR(10), -- 권고등급 clinical_notes TEXT, references TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- 6. AI/API 업데이트 로그 CREATE TABLE data_update_logs ( log_id INTEGER PRIMARY KEY, update_type VARCHAR(50), -- AI/API/MANUAL source VARCHAR(100), -- 데이터 소스 target_table VARCHAR(50), target_id INTEGER, before_data JSON, -- 변경 전 데이터 after_data JSON, -- 변경 후 데이터 update_reason TEXT, confidence_score FLOAT, -- AI 신뢰도 is_reviewed BOOLEAN DEFAULT FALSE, reviewed_by VARCHAR(50), review_notes TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); ``` ## 3. API/AI 연동 방안 ### 3.1 외부 데이터 소스 #### 국내 소스 - **한국한의학연구원 API** - 한약재 데이터베이스 - 처방 데이터베이스 - 임상 연구 자료 - **건강보험심사평가원** - 한약제제 급여 정보 - 안전성 정보 - **식품의약품안전처** - 한약재 품질 기준 - 안전성 정보 #### 국제 소스 - **PubMed API** - 한약재 연구 논문 - 임상시험 결과 - **WHO Traditional Medicine** - 국제 표준 정보 - 안전성 데이터 - **ClinicalTrials.gov** - 진행 중인 임상시험 ### 3.2 AI 활용 방안 ```python # AI 기반 정보 추출 및 업데이트 예시 class HerbInfoAIUpdater: def __init__(self): self.nlp_model = load_korean_medical_nlp() self.ocr_model = load_medical_ocr() def extract_from_literature(self, pdf_path): """의학 문헌에서 약재 정보 추출""" text = self.ocr_model.extract_text(pdf_path) entities = self.nlp_model.extract_entities(text, types=[ 'HERB_NAME', 'DOSAGE', 'INDICATION', 'CONTRAINDICATION', 'SIDE_EFFECT', 'INTERACTION' ]) return self.validate_and_structure(entities) def update_from_clinical_data(self, clinical_records): """임상 데이터에서 패턴 분석""" # 처방 패턴 분석 prescription_patterns = self.analyze_prescription_patterns(clinical_records) # 효능 검증 efficacy_data = self.validate_efficacy(clinical_records) # 안전성 모니터링 safety_signals = self.detect_safety_signals(clinical_records) return { 'patterns': prescription_patterns, 'efficacy': efficacy_data, 'safety': safety_signals } def cross_reference_validation(self, herb_info): """교차 검증""" sources = [ self.query_kmri_api(herb_info['name']), self.query_pubmed(herb_info['latin_name']), self.query_who_database(herb_info['code']) ] return self.reconcile_information(sources) ``` ## 4. 기능 구현 ### 4.1 약재 정보 조회 API ```python @app.route('/api/herbs//full-info', methods=['GET']) def get_herb_full_info(herb_id): """약재 종합 정보 조회""" return { 'basic_info': get_basic_info(herb_id), 'pharmacology': get_pharmacology(herb_id), 'safety': get_safety_info(herb_id), 'interactions': get_interactions(herb_id), 'research': get_research_papers(herb_id), 'clinical_use': get_clinical_applications(herb_id) } @app.route('/api/herbs/search', methods=['POST']) def search_herbs_advanced(): """고급 검색""" criteria = request.json # 증상으로 검색 if criteria.get('symptoms'): return search_by_symptoms(criteria['symptoms']) # 성분으로 검색 if criteria.get('compounds'): return search_by_compounds(criteria['compounds']) # 처방 호환성 검색 if criteria.get('compatibility'): return check_prescription_compatibility(criteria['herbs']) ``` ### 4.2 안전성 검증 시스템 ```python class HerbSafetyChecker: def check_prescription_safety(self, herbs, patient_info): """처방 안전성 종합 검증""" results = { 'is_safe': True, 'warnings': [], 'contraindications': [], 'interactions': [], 'dosage_alerts': [] } # 1. 약재 간 상호작용 확인 for herb1, herb2 in combinations(herbs, 2): interaction = self.check_herb_interaction(herb1, herb2) if interaction: results['interactions'].append(interaction) # 2. 환자 특성별 금기 확인 if patient_info.get('pregnancy'): self.check_pregnancy_safety(herbs, results) if patient_info.get('allergies'): self.check_allergy_risk(herbs, patient_info['allergies'], results) # 3. 용량 검증 self.validate_dosages(herbs, results) # 4. 질병-약물 상호작용 if patient_info.get('conditions'): self.check_disease_interactions(herbs, patient_info['conditions'], results) return results ``` ### 4.3 데이터 품질 관리 ```python class DataQualityManager: def validate_herb_data(self, herb_data): """데이터 품질 검증""" scores = { 'completeness': self.check_completeness(herb_data), 'accuracy': self.verify_accuracy(herb_data), 'consistency': self.check_consistency(herb_data), 'timeliness': self.check_timeliness(herb_data) } herb_data['quality_score'] = sum(scores.values()) / len(scores) herb_data['quality_details'] = scores return herb_data def reconcile_conflicts(self, data_sources): """데이터 충돌 해결""" # 신뢰도 기반 가중 평균 weighted_data = {} for source in data_sources: weight = source['reliability_score'] for field, value in source['data'].items(): if field not in weighted_data: weighted_data[field] = [] weighted_data[field].append((value, weight)) # 최종 값 결정 final_data = {} for field, values in weighted_data.items(): final_data[field] = self.select_best_value(values) return final_data ``` ## 5. 사용자 인터페이스 ### 5.1 약재 정보 대시보드 - 약재 상세 정보 카드 - 효능/효과 시각화 - 안전성 정보 알림 - 연구 논문 목록 - 처방 활용 통계 ### 5.2 처방 안전성 검증 - 실시간 DUR 체크 - 약재 조합 검증 - 용량 적정성 평가 - 환자별 맞춤 알림 ### 5.3 지식 관리 도구 - 새로운 연구 결과 알림 - 데이터 품질 모니터링 - AI 제안 검토 - 전문가 협업 도구 ## 6. 구현 로드맵 ### Phase 1: 기반 구축 (1-2개월) - [ ] 확장 데이터베이스 스키마 구현 - [ ] 기본 CRUD API 개발 - [ ] 데이터 마이그레이션 ### Phase 2: 외부 연동 (2-3개월) - [ ] 한의학연구원 API 연동 - [ ] PubMed API 연동 - [ ] 자동 업데이트 스케줄러 ### Phase 3: AI 통합 (3-4개월) - [ ] NLP 모델 훈련 - [ ] 문헌 자동 분석 - [ ] 패턴 인식 시스템 ### Phase 4: 안전성 시스템 (2개월) - [ ] DUR 체크 시스템 - [ ] 실시간 경고 시스템 - [ ] 보고서 생성 ### Phase 5: 고도화 (지속) - [ ] 사용자 피드백 수집 - [ ] 모델 개선 - [ ] 새로운 데이터 소스 추가 ## 7. 기대 효과 1. **근거 기반 처방** - 최신 연구 결과 반영 - 객관적 데이터 기반 의사결정 2. **환자 안전성 향상** - 실시간 안전성 검증 - 부작용 예방 3. **업무 효율성** - 자동화된 정보 관리 - 빠른 정보 검색 4. **지식 축적** - 체계적인 데이터베이스 - 지속적인 학습 시스템 5. **표준화** - 한약재 정보 표준화 - 품질 관리 체계화