""" Statin 근육병증의 스펙트럼 분석 왜 CK 측정이 중요한가? """ import sys import os if sys.platform == 'win32': import io sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8') sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8') from Bio import Entrez from dotenv import load_dotenv load_dotenv() Entrez.email = os.getenv('PUBMED_EMAIL', 'test@example.com') def search_statin_myopathy_spectrum(): """Statin 근육병증의 심각도 스펙트럼 관련 논문 검색""" print("=" * 80) print("Statin 근육병증의 종류와 CK의 관계") print("=" * 80) # 검색: Statin myopathy classification query = "statin myopathy classification creatine kinase" try: handle = Entrez.esearch( db="pubmed", term=query, retmax=3, sort="relevance" ) record = Entrez.read(handle) handle.close() pmids = record["IdList"] if pmids: handle = Entrez.efetch( db="pubmed", id=pmids, rettype="medline", retmode="xml" ) papers = Entrez.read(handle) handle.close() print(f"\n관련 논문 {len(pmids)}건 발견:\n") for idx, paper in enumerate(papers['PubmedArticle'], 1): article = paper['MedlineCitation']['Article'] pmid = str(paper['MedlineCitation']['PMID']) title = article.get('ArticleTitle', '') # 초록 abstract_parts = article.get('Abstract', {}).get('AbstractText', []) if abstract_parts: if isinstance(abstract_parts, list): abstract = ' '.join([str(part) for part in abstract_parts])[:300] else: abstract = str(abstract_parts)[:300] else: abstract = "(초록 없음)" print(f"[{idx}] PMID: {pmid}") print(f"제목: {title}") print(f"초록: {abstract}...") print(f"링크: https://pubmed.ncbi.nlm.nih.gov/{pmid}/") print("-" * 80) except Exception as e: print(f"[ERROR] 검색 실패: {e}") def print_myopathy_spectrum(): """Statin 근육병증 스펙트럼 설명""" print("\n\n" + "=" * 80) print("Statin 근육병증의 스펙트럼 (경증 → 중증)") print("=" * 80) spectrum = [ { "type": "1. Myalgia (근육통)", "prevalence": "5-10%", "ck_level": "정상 (Normal)", "symptoms": "근육 통증, 뻐근함", "severity": "경증", "management": "CoQ10, 용량 조절" }, { "type": "2. Myopathy (근육병증)", "prevalence": "0.1-0.5%", "ck_level": "경도 상승 (<10배)", "symptoms": "근육 약화, 통증", "severity": "중등도", "management": "Statin 변경/중단" }, { "type": "3. Rhabdomyolysis (횡문근융해증)", "prevalence": "0.01%", "ck_level": "심각한 상승 (>10배, 수천~수만)", "symptoms": "심한 근육 통증, 갈색 소변, 급성 신부전", "severity": "중증 (응급)", "management": "즉시 중단, 입원 치료" } ] for item in spectrum: print(f"\n【{item['type']}】") print(f" 발생률: {item['prevalence']}") print(f" CK 수치: {item['ck_level']}") print(f" 증상: {item['symptoms']}") print(f" 심각도: {item['severity']}") print(f" 관리: {item['management']}") print("-" * 80) print("\n\n" + "=" * 80) print("왜 논문에서 CK를 측정했는가?") print("=" * 80) reasons = [ { "이유": "1. 안전성 확인", "설명": """ CoQ10 보충이 단순히 '증상을 가리는 것'인지, 아니면 '실제로 근육을 보호하는 것'인지 확인하기 위함. 만약 CK가 계속 상승한다면? → 근육 손상이 진행 중이므로 위험 → 증상만 완화되면 환자가 모르고 계속 복용 → 횡문근융해증 위험 CK가 정상이면? → 실제 근육 손상은 없음 → CoQ10으로 증상만 관리하면 안전 """ }, { "이유": "2. 메커니즘 이해", "설명": """ 결과: 증상 개선 (O), CK 변화 없음 (-) → 이것이 의미하는 것: CoQ10은 "근육 재생" 효과가 아님 대신 "미토콘드리아 기능 회복" 효과 Statin 근육통 = 구조적 손상(X), 기능적 문제(O) """ }, { "이유": "3. 객관적 평가", "설명": """ 문제: 근육 통증은 주관적 증상 (placebo 효과 가능) 해결: CK는 객관적 바이오마커 - 환자가 "덜 아프다"고 느낌 (주관적) - CK 정상 유지 (객관적) → 실제로 안전함을 증명 """ }, { "이유": "4. 임상 지침 반영", "설명": """ 미국심장학회(ACC/AHA) Statin 안전성 가이드라인: 【CK 측정 시점】 - 치료 전 베이스라인 - 근육 증상 발생 시 - CK > 정상의 10배 → 즉시 중단 논문에서 CK를 측정한 것은 이 가이드라인을 따른 것 """ } ] for item in reasons: print(f"\n【{item['이유']}】") print(item['설명']) print("-" * 80) def main(): # 1. Statin 근육병증 스펙트럼 설명 print_myopathy_spectrum() # 2. 관련 논문 검색 print("\n\n" + "=" * 80) print("관련 논문 검색 중...") print("=" * 80) search_statin_myopathy_spectrum() # 3. 결론 print("\n\n" + "=" * 80) print("결론: 논문에서 CK를 측정한 이유") print("=" * 80) print(""" 1️⃣ 안전성: CoQ10이 증상만 가리는 게 아니라 실제로 안전한지 확인 2️⃣ 메커니즘: 근육 손상(X), 미토콘드리아 기능 저하(O)임을 증명 3️⃣ 객관성: 주관적 증상뿐 아니라 객관적 지표로도 안전함을 입증 4️⃣ 임상 적용: 실제 진료 시 CK 검사 없이 CoQ10 권장 가능 → CK 정상 = "CoQ10 + Statin 병용이 안전하다"는 강력한 근거 """) if __name__ == '__main__': main()