fix: KIMS 심각도 매핑 수정 (SeverityDesc 사용) + 상호작용 약품 pill 색상 강조

This commit is contained in:
thug0bin 2026-02-28 13:29:53 +09:00
parent 67e576736d
commit 8c20c8b8db
2 changed files with 29 additions and 9 deletions

View File

@ -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:

View File

@ -1193,10 +1193,15 @@
const interactions = data.interactions || [];
const drugsChecked = data.drugs_checked || [];
// 약품 목록
const drugsHtml = drugsChecked.map(d =>
`<span style="display:inline-block;background:#f1f5f9;padding:4px 8px;border-radius:4px;margin:2px;font-size:12px;">${escapeHtml(d.name.slice(0,20))}</span>`
).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 `<span style="display:inline-block;background:${bgColor};border:1px solid ${borderColor};color:${textColor};padding:4px 8px;border-radius:4px;margin:2px;font-size:12px;">${icon}${escapeHtml(d.name.slice(0,20))}</span>`;
}).join('');
// 상호작용 목록
let interactionsHtml = '';