ApuDa Check맞춤 건강검진 선택
⋯
기본 정보 1/13·0%

ApuDa Check

내 건강기록을 바탕으로 지금 필요한 검진을 간단하게 정리합니다.

증상이나 이전 이상 소견이 있다면 일반 검진보다 진료·추적검사가 우선입니다.
`; const blob=new Blob([html],{type:'text/html;charset=utf-8'}); const url=URL.createObjectURL(blob); let previewWindow=null; try{previewWindow=window.open(url,'_blank','width=1280,height=980')}catch(e){} if(!previewWindow){ const link=document.createElement('a'); link.href=url; link.target='_blank'; link.rel='noopener'; document.body.appendChild(link); link.click(); link.remove(); toast('인쇄 미리보기 새 탭을 열었습니다. 열리지 않으면 팝업 차단을 해제하세요.'); } setTimeout(()=>URL.revokeObjectURL(url),120000); } function bindGlobal(){q('#saveBtn').onclick=()=>saveState(true);q('#resultBtn').onclick=()=>{saveState(false);showSection('results')};q('#backupBtn').onclick=backup;q('#restoreBtn').onclick=()=>q('#restoreInput').click();q('#restoreInput').onchange=restore;q('#printBtn').onclick=()=>{showSection('results');setTimeout(()=>openPrintReport(),200)};const fontBtn=q('#fontBtn');const fontKey='apuda_large_text';const applyFont=()=>{let large=false;try{large=localStorage.getItem(fontKey)==='1'}catch(e){}document.body.classList.toggle('large-text',large);fontBtn.setAttribute('aria-pressed',large?'true':'false');fontBtn.textContent=large?'기본 글씨':'큰 글씨'};fontBtn.onclick=()=>{const next=!document.body.classList.contains('large-text');try{localStorage.setItem(fontKey,next?'1':'0')}catch(e){}applyFont()};applyFont();q('#resetBtn').onclick=()=>{if(confirm('이 브라우저에 저장된 모든 입력을 삭제할까요?')){try{localStorage.removeItem(APP_KEY)}catch(e){}state=clone(defaults);current='basic';renderAll();renderNav();showSection('basic');toast('초기화했습니다.')}};qa('[data-close]').forEach(b=>b.onclick=()=>q('#'+b.dataset.close).classList.remove('open'));window.addEventListener('beforeunload',()=>saveState(false));} function backup(){saveState(false);const blob=new Blob([JSON.stringify(state,null,2)],{type:'application/json'}),a=document.createElement('a');a.href=URL.createObjectURL(blob);a.download=`ApuDa_건강검진_백업_${new Date().toISOString().slice(0,10)}.json`;a.click();URL.revokeObjectURL(a.href)} async function restore(e){const file=e.target.files[0];if(!file)return;try{state=Object.assign(clone(defaults),JSON.parse(await file.text()));saveState(false);renderAll();showSection('basic');toast('백업 데이터를 복원했습니다.')}catch(err){alert('복원할 수 없는 파일입니다.')}} init();