diff --git a/backend/app.py b/backend/app.py index 31cc21a..8449cb8 100644 --- a/backend/app.py +++ b/backend/app.py @@ -4233,12 +4233,22 @@ def api_kims_interaction_check(): # 3. 상호작용 결과 파싱 interactions = [] - severity_text = {1: '심각', 2: '중등도', 3: '경미', 4: '참고', 5: '일반'} - severity_color = {1: '#dc2626', 2: '#f59e0b', 3: '#3b82f6', 4: '#6b7280', 5: '#9ca3af'} + severity_color = {'1': '#dc2626', '2': '#f59e0b', '3': '#3b82f6', '4': '#6b7280', '5': '#9ca3af'} + + # 상호작용 있는 약품 코드 수집 + interaction_drug_codes = set() for alert in kims_data.get('AlertList', []): for item in alert.get('AlertInfo', []): - severity = item.get('SeverityLevel', 5) + severity = str(item.get('SeverityLevel', '5')) + severity_desc = item.get('SeverityDesc', '') # API에서 직접 제공 (중증, 경미 등) + + # 상호작용 약품 코드 수집 + if item.get('DrugCode1'): + interaction_drug_codes.add(item.get('DrugCode1')) + if item.get('DrugCode2'): + interaction_drug_codes.add(item.get('DrugCode2')) + interactions.append({ 'drug1_code': item.get('DrugCode1'), 'drug1_name': item.get('ProductName1'), @@ -4247,7 +4257,7 @@ def api_kims_interaction_check(): 'generic1': item.get('GenericName1'), 'generic2': item.get('GenericName2'), 'severity': severity, - 'severity_text': severity_text.get(severity, '알 수 없음'), + 'severity_text': severity_desc or ('심각' if severity == '1' else '중등도' if severity == '2' else '경미' if severity == '3' else '참고'), 'severity_color': severity_color.get(severity, '#9ca3af'), 'description': item.get('Observation', ''), 'management': item.get('ClinicalMng', ''), @@ -4262,6 +4272,10 @@ def api_kims_interaction_check(): total_pairs = len(kd_codes) * (len(kd_codes) - 1) // 2 safe_count = total_pairs - len(interactions) + # 약품 목록에 상호작용 여부 표시 + for drug in drugs_info: + drug['has_interaction'] = drug['kd_code'] in interaction_drug_codes + logging.info(f"KIMS 상호작용 체크 완료: {len(kd_codes)}개 약품, {len(interactions)}건 발견 (처방: {pre_serial})") return jsonify({ @@ -4270,7 +4284,8 @@ def api_kims_interaction_check(): 'interaction_count': len(interactions), 'safe_count': max(0, safe_count), 'total_pairs': total_pairs, - 'drugs_checked': drugs_info + 'drugs_checked': drugs_info, + 'interaction_drug_codes': list(interaction_drug_codes) # 상호작용 있는 약품 코드 }) except Exception as e: diff --git a/backend/templates/admin_members.html b/backend/templates/admin_members.html index 894ebe5..51607dd 100644 --- a/backend/templates/admin_members.html +++ b/backend/templates/admin_members.html @@ -1193,10 +1193,15 @@ const interactions = data.interactions || []; const drugsChecked = data.drugs_checked || []; - // 약품 목록 - const drugsHtml = drugsChecked.map(d => - `${escapeHtml(d.name.slice(0,20))}` - ).join(''); + // 약품 목록 (상호작용 있는 약품은 빨간색/주황색 배경) + const drugsHtml = drugsChecked.map(d => { + const hasInteraction = d.has_interaction; + const bgColor = hasInteraction ? '#fef2f2' : '#f1f5f9'; // 연한 빨강 vs 회색 + const borderColor = hasInteraction ? '#fca5a5' : '#e2e8f0'; + const textColor = hasInteraction ? '#dc2626' : '#334155'; + const icon = hasInteraction ? '⚠️ ' : ''; + return `${icon}${escapeHtml(d.name.slice(0,20))}`; + }).join(''); // 상호작용 목록 let interactionsHtml = '';