Med-Ready Assessment Test | OnDemand body { font-family: 'Kanit', sans-serif; -webkit-tap-highlight-color: transparent; } .step-transition { transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); } /* Custom radio styling for light/red theme */ input[type="radio"]:checked + span { background-color: #dc2626; /* bg-red-600 */ color: white; border-color: #dc2626; transform: scale(1.08); box-shadow: 0 4px 6px -1px rgba(220, 38, 38, 0.2); }
OnDemand Med-School

Med-Ready Assessment

แบบทดสอบประเมินตนเองเพื่อวิเคราะห์ความพร้อมสู่คณะแพทยศาสตร์ กสพท

01

ข้อมูลทั่วไปของนักเรียน

มัธยมศึกษาปีที่ 4 มัธยมศึกษาปีที่ 5 มัธยมศึกษาปีที่ 6 เด็กซิ่ว
4.0) this.value = '4.00';" onblur="if(this.value) this.value = parseFloat(this.value).toFixed(2);" class="w-full bg-gray-50 border border-gray-300 rounded-xl px-4 py-3 text-base text-slate-900 placeholder-gray-400 focus:bg-white focus:border-red-500 focus:ring-2 focus:ring-red-500/20 transition-all outline-none" placeholder="เช่น 3.85">
อื่นๆ
อันดับ 1
อันดับ 2
อันดับ 3
02

ประเมินศักยภาพรอบด้าน (15 คำถามเจาะลึก)

* โปรดเลือกประเมินให้คะแนนตรงตามข้อเท็จจริงในปัจจุบันของน้องมากที่สุด

© 2026 OnDemand Education. All Rights Reserved. ระบบรายงานการวิเคราะห์ความพร้อม กสพท.
// ---------------------------------------------------- // 1. ตัวแปรสำหรับเชื่อม Google Apps Script Database // ---------------------------------------------------- const GOOGLE_SCRIPT_URL = "https://script.google.com/macros/s/AKfycbw4iVaHM0UEpxwYyLnmcJty7nzBejwODULkvK6M8dXEKzu62xjbC_S5MjdlLGUbkzav/exec"; const sessionUid = Date.now().toString(36) + Math.random().toString(36).substring(2); // ---------------------------------------------------- // 2. ข้อมูลชุดโจทย์แบบทดสอบ 15 ข้อหลัก // ---------------------------------------------------- const quizData = [ // Part 1: เป้าหมาย (Goal Clarity) { id: 1, part: 1, name: "เป้าหมายชัดเจนว่าทำไมต้องเป็นหมอ ไม่ใช่แค่กระแสชั่ววูบหรือค่านิยม" }, { id: 2, part: 1, name: "เข้าใจเกณฑ์คะแนนคำนวณขั้นต่ำ กสพท (TPAT1, A-Level) สถิติต่างๆ ในหัวข้อเป้าหมาย" }, { id: 3, part: 1, name: "ศึกษาและเข้าใจในชีวิตวิถีการเรียนหมอ ตลอดจนความรับผิดชอบและการทำงานจริงหลังเรียนจบ" }, // Part 2: การวางแผน (Planning) { id: 4, part: 2, name: "มีแผนงานและ Timeline การเตรียมตัวเก็บเนื้อหา ม.ปลาย และฝึกโจทย์อย่างละเอียดแบบรายสัปดาห์/เดือน" }, { id: 5, part: 2, name: "เริ่มเก็บเนื้อหา ม.ปลาย ล่วงหน้าไปบางส่วนแล้ว และมีระบบการทบทวนจัดสรรเวลาที่ดี" }, { id: 6, part: 2, name: "มีแผนสำรอง (Plan B) หรือเป้าหมายคณะใกล้เคียงจัดเตรียมไว้ หากเกิดสถานการณ์คะแนนคลาดเคลื่อนจากคาดการณ์" }, // Part 3: ความพร้อมวิชาการ (Academic) { id: 7, part: 3, name: "เข้าใจเนื้อหาแก่นแท้ คอนเซ็ปต์ และที่มาของวิชาต่างๆ เป็นอย่างดี ไม่ใช่แค่จำสูตรลัดไปตอบ" }, { id: 8, part: 3, name: "เมื่อเจอกลุ่มข้อสอบแนวใหม่ที่มีลักษณะโจทย์วิเคราะห์ประยุกต์ (แนว สสวท.) ยังสามารถคิดแยกประเด็นและแก้โจทย์ด้วยตนเองได้" }, { id: 9, part: 3, name: "มั่นใจว่ามีระดับทักษะภาษาอังกฤษ (สำหรับ Textbook / สอบ A-Level) และตรรกะเชื่อมโยงอยู่ในเกณฑ์ที่ได้เปรียบคู่แข่ง" }, { id: 10, part: 3, name: "มีแผนการฝึกทำแนวข้อสอบจำลองจับเวลาจริง (Mock Test / Super simulation) ล่วงหน้าก่อนสอบไม่ต่ำกว่า 3 เดือน" }, // Part 4: วินัยและการจัดการ (Discipline) { id: 11, part: 4, name: "มีวินัยจัดระเบียบเวลาทบทวนอ่านหนังสือด้วยตัวเอง สม่ำเสมอทุกๆ วัน โดยไม่มีคนคอยตักเตือนบังคับ" }, { id: 12, part: 4, name: "สามารถควบคุมและหลีกเลี่ยงสิ่งเร้า เช่น สมาร์ทโฟน เกม นันทนาการ ในเวลาอ่านหนังสือได้ดี" }, { id: 13, part: 4, name: "มีวิธีการรับมือและฟื้นฟูสภาพจิตใจจากความเหนื่อยล้า ความเครียดสะสม เพื่อป้องกันอาการหมดไฟ (Burnout)" }, // Part 5: การสนับสนุนจากครอบครัว (Family Support) { id: 14, part: 5, name: "ครอบครัวและผู้ปกครองเข้าใจ พร้อมสนับสนุนและเป็นเบาะรองรับกำลังใจที่ดีที่สุดในเส้นทางนี้" }, { id: 15, part: 5, name: "ครอบครัวพร้อมอำนวยความสะดวกและสนับสนุนค่าใช้จ่ายในการเรียน (อุปกรณ์, ตราสารตำราเรียน, และหลักสูตรกวดวิชา) อย่างเต็มใจ" } ]; const partNames = { 1: "พาร์ท 1: เป้าหมายชัดเจน (Goal Clarity)", 2: "พาร์ท 2: แผนงานเป็นระบบ (Planning)", 3: "พาร์ท 3: ความพร้อมวิชาการ (Academic)", 4: "พาร์ท 4: วินัยอย่างต่อเนื่อง (Discipline)", 5: "พาร์ท 5: การสนับสนุนจากครอบครัว (Family Support)" }; // เรนเดอร์คำถามแบบอัตโนมัติ (เปลี่ยนธีมสีในส่วน JS Render เป็นสีแดง) const container = document.getElementById('questionsContainer'); quizData.forEach((q, idx) => { let partHeaderHtml = ""; if (idx === 0 || quizData[idx-1].part !== q.part) { partHeaderHtml = `
${partNames[q.part]}
`; } const qHtml = ` ${partHeaderHtml}

${q.id}. ${q.name}

น้อยสุด
${[1, 2, 3, 4, 5].map(num => ` `).join('')}
มากสุด
`; container.insertAdjacentHTML('beforeend', qHtml); }); function hideFormError() { const errBox = document.getElementById('formErrorBox'); errBox.classList.add('hidden'); } function showFormError(message) { const errBox = document.getElementById('formErrorBox'); const errMessage = document.getElementById('formErrorMessage'); errMessage.innerText = message; errBox.classList.remove('hidden'); errBox.scrollIntoView({ behavior: 'smooth', block: 'center' }); } // ฟังก์ชันช่วยสุ่มกรอกข้อมูลอัตโนมัติ function autoFillForTesting() { hideFormError(); document.getElementById('firstname').value = "สมมติ"; document.getElementById('lastname').value = "สอบหมอ"; document.getElementById('phone').value = "0811111111"; document.getElementById('line_id').value = "testlineid"; document.getElementById('learn_id').value = "OD123456"; document.getElementById('grade').value = "ม.5"; document.getElementById('gpax').value = "3.89"; const cbFaculties = document.getElementsByName('faculty_opt'); cbFaculties.forEach(cb => cb.checked = false); cbFaculties[0].checked = true; if (Math.random() > 0.5) { cbFaculties[1].checked = true; } document.getElementById('univ_1').value = "มหาวิทยาลัยมหิดล (คณะแพทยศาสตร์ศิริราชพยาบาล)"; document.getElementById('univ_2').value = "จุฬาลงกรณ์มหาวิทยาลัย"; document.getElementById('univ_3').value = "มหาวิทยาลัยธรรมศาสตร์"; quizData.forEach(q => { const randomVal = Math.floor(Math.random() * 5) + 1; const radioOption = document.querySelector(`input[name="q_${q.id}"][value="${randomVal}"]`); if (radioOption) radioOption.checked = true; }); } // 🌟 ส่งข้อมูลเข้า Google Sheets function sendDataToSheets(priorityLevel) { const checkedFaculties = Array.from(document.querySelectorAll('input[name="faculty_opt"]:checked')).map(el => { if (el.value === "อื่นๆ") { const otherText = document.getElementById('faculty_other_text').value.trim(); return otherText ? `อื่นๆ (${otherText})` : "อื่นๆ"; } return el.value; }); const leadData = { firstName: document.getElementById('firstname')?.value || "", lastName: document.getElementById('lastname')?.value || "", phone: "'" + (document.getElementById('phone')?.value || ""), lineId: document.getElementById('line_id')?.value || "", learnId: document.getElementById('learn_id')?.value || "", grade: document.getElementById('grade')?.value || "", gpax: document.getElementById('gpax')?.value || "", faculties: checkedFaculties.join(', '), dreamUniversities: [ document.getElementById('univ_1')?.value || "", document.getElementById('univ_2')?.value || "", document.getElementById('univ_3')?.value || "" ], scoreInfo: { totalScore: document.getElementById('resTotalScore')?.innerText || "0/100" }, priority: priorityLevel, uid: sessionUid }; fetch(GOOGLE_SCRIPT_URL, { method: "POST", mode: "no-cors", cache: "no-cache", headers: { "Content-Type": "application/json" }, body: JSON.stringify(leadData) }).catch(err => console.warn("Network deferred:", err)); } // ฟังก์ชันวาดแผนภูมิใยแมงมุม (Radar Chart) สีแดง CI let radarChartInstance = null; function drawRadarChart(scores) { try { const canvasEl = document.getElementById('scoreRadarChart'); if (!canvasEl) return; const ctx = canvasEl.getContext('2d'); if (radarChartInstance) { radarChartInstance.destroy(); } if (typeof Chart === 'undefined') { console.warn("ChartJS library not loaded properly."); return; } radarChartInstance = new Chart(ctx, { type: 'radar', data: { labels: ['เป้าหมาย', 'แผนงาน', 'วิชาการ', 'วินัย', 'ครอบครัว'], datasets: [{ label: 'สัดส่วนความพร้อม (%)', data: scores, fill: true, backgroundColor: 'rgba(220, 38, 38, 0.15)', // สีแดงจางๆ borderColor: 'rgb(220, 38, 38)', // เส้นขอบสีแดง pointBackgroundColor: 'rgb(220, 38, 38)', pointBorderColor: '#fff', pointHoverBackgroundColor: '#fff', pointHoverBorderColor: 'rgb(220, 38, 38)' }] }, options: { responsive: true, maintainAspectRatio: false, plugins: { legend: { display: false } }, scales: { r: { angleLines: { color: 'rgba(203, 213, 225, 0.6)' }, grid: { color: 'rgba(203, 213, 225, 0.6)' }, pointLabels: { color: '#475569', font: { family: 'Kanit', size: 10, weight: '500' } }, ticks: { display: false }, min: 0, max: 100 } } } }); } catch (chartErr) { console.error("Chart generation failed:", chartErr); } } // จัดการเหตุการณ์เมื่อนักเรียนส่งแบบฟอร์ม document.getElementById('quizForm').addEventListener('submit', function(e) { e.preventDefault(); hideFormError(); const checkedFaculties = Array.from(document.querySelectorAll('input[name="faculty_opt"]:checked')).map(el => { if (el.value === "อื่นๆ") { const otherText = document.getElementById('faculty_other_text').value.trim(); return otherText ? `อื่นๆ (${otherText})` : "อื่นๆ"; } return el.value; }); if (checkedFaculties.length === 0) { showFormError("กรุณาเลือกกลุ่มคณะ กสพท ที่สนใจอย่างน้อย 1 ตัวเลือก"); return; } let unanswered = []; quizData.forEach(q => { const checkedRadio = document.querySelector(`input[name="q_${q.id}"]:checked`); if (!checkedRadio) { unanswered.push(q.id); } }); if (unanswered.length > 0) { showFormError(`กรุณาตอบคำถามให้ครบทุกข้อ (ข้อที่ข้ามไป: ข้อ ${unanswered.join(', ')})`); return; } document.getElementById('quizForm').classList.add('hidden'); document.getElementById('loadingState').classList.remove('hidden'); setTimeout(() => { try { let p1 = 0, p2 = 0, p3 = 0, p4 = 0, p5 = 0; quizData.forEach(q => { const checkedRadio = document.querySelector(`input[name="q_${q.id}"]:checked`); const val = checkedRadio ? parseInt(checkedRadio.value) : 0; if (q.part === 1) p1 += val; if (q.part === 2) p2 += val; if (q.part === 3) p3 += val; if (q.part === 4) p4 += val; if (q.part === 5) p5 += val; }); const rawTotal = p1 + p2 + p3 + p4 + p5; const totalScoreScale100 = Math.round((rawTotal / 75) * 100); const p1Pct = Math.round((p1 / 15) * 100) || 0; const p2Pct = Math.round((p2 / 15) * 100) || 0; const p3Pct = Math.round((p3 / 20) * 100) || 0; const p4Pct = Math.round((p4 / 15) * 100) || 0; const p5Pct = Math.round((p5 / 10) * 100) || 0; let tierName = ""; let tierStyle = ""; let levelTagline = ""; let levelDesc = ""; let levelNextSteps = []; let levelRecommendation = ""; // ปรับแต่งสี Tag สรุปคะแนนให้เข้ากับธีมใหม่ if (totalScoreScale100 >= 80) { tierName = "ระดับ 1: พร้อมมาก"; tierStyle = "bg-red-100 text-red-800 border border-red-200"; levelTagline = "คุณมีพื้นฐานที่ดีแล้ว เหลืออีกนิดก็พร้อมเต็มที่"; levelDesc = `น้องมีความพร้อมในหลายด้านแล้ว!
ผลประเมินแสดงให้เห็นว่าน้องมีทั้งเป้าหมายที่ชัดเจน มีการวางแผน และเริ่มเตรียมตัวได้ดี ถือว่าเป็นจุดเริ่มต้นที่ดีมากสำหรับเส้นทางสู่คณะแพทย์
แต่การสอบหมอในปัจจุบันไม่ได้วัดแค่ "เรียนครบ" เพราะข้อสอบมีการวิเคราะห์และประยุกต์มากขึ้นทุกปี ความได้เปรียบจึงอยู่ที่คนที่มีเวลา ทบทวนหลายรอบ ฝึกโจทย์หลากหลายรูปแบบ และวิเคราะห์จุดอ่อนของตัวเองอย่างต่อเนื่อง
ตอนนี้น้องยังมีเวลาในการพัฒนาตัวเองอีกมาก ถ้ายังมีวิชาไหนที่รู้สึกไม่มั่นใจ หรือยังไม่ได้ฝึกข้อสอบจริงอย่างเต็มที่ นี่คือช่วงเวลาที่เหมาะที่สุดในการเติมเต็มให้พร้อมก่อนสนามสอบ`; levelNextSteps = [ "ทบทวนวิชาที่ยังไม่แข็งแรง", "ฝึกโจทย์แนวประยุกต์และ Mock Test อย่างสม่ำเสมอ", "วิเคราะห์ข้อผิดพลาดทุกครั้งที่ทำข้อสอบ" ]; levelRecommendation = "ให้พี่ออนดี้ช่วยวิเคราะห์จุดที่ควรเสริม พร้อมแนะนำคอร์สที่เหมาะกับระดับของน้อง เพื่อใช้เวลา 20 เดือนให้คุ้มที่สุด"; } else if (totalScoreScale100 >= 60) { tierName = "ระดับ 2: พร้อมปานกลาง"; tierStyle = "bg-rose-50 text-rose-700 border border-rose-200"; levelTagline = "คุณกำลังเดินมาถูกทาง แต่ยังมีบางเรื่องที่เติมได้"; levelDesc = `น้องเริ่มต้นได้ดีแล้ว และยังมีโอกาสพัฒนาได้อีกมาก
จากผลประเมิน น้องมีความพร้อมในหลายด้าน แต่ยังมีบางส่วนที่สามารถเสริมได้ เช่น การวางแผนการอ่านหนังสือ การจัดลำดับความสำคัญของแต่ละวิชา หรือการสร้างความแข็งแรงด้านวิชาการในบางหัวข้อ
ข่าวดีคือ...ตอนนี้น้องยังมีเวลา
การเตรียมสอบหมอไม่จำเป็นต้องเก่งทุกอย่างตั้งแต่วันนี้ แต่ควรมีแผนที่ชัดเจน และค่อยๆ พัฒนาทีละก้าว เพราะความสำเร็จเกิดจากการสะสมของการลงมือทำอย่างต่อเนื่อง`; levelNextSteps = [ "วาง Timeline การเตรียมสอบ", "ประเมินว่าวิชาไหนควรเริ่มก่อน", "เริ่มฝึกโจทย์ควบคู่กับการเก็บเนื้อหา" ]; levelRecommendation = "ลองให้พี่ออนดี้ช่วยวางแผนการเรียนให้เหมาะกับเป้าหมายของน้อง หรือเลือกเสริมเฉพาะวิชาที่ยังไม่มั่นใจ เพื่อให้ทุกเดือนที่เหลือสร้างความพร้อมได้มากที่สุด"; } else { tierName = "ระดับ 3: พร้อมน้อย"; tierStyle = "bg-gray-100 text-gray-700 border border-gray-200"; levelTagline = "วันนี้คือจุดเริ่มต้นที่ดีที่สุด"; levelDesc = `💙 ไม่เป็นไร ถ้ายังไม่ได้เริ่ม เพราะวันนี้ยังทันที่จะวางแผน
ผลประเมินสะท้อนว่าน้องยังมีอีกหลายด้านที่สามารถพัฒนาได้ ไม่ว่าจะเป็นการตั้งเป้าหมาย การวางแผน การเตรียมเนื้อหา หรือการฝึกทำข้อสอบ
แต่อยากให้น้องสบายใจว่า
การสอบติดหมอ ไม่ได้เกิดจากการเร่งอ่านในช่วงท้าย แต่เกิดจากการเริ่มวางแผนและค่อยๆ สะสมความพร้อมในทุกวัน
วันนี้จึงไม่ใช่วันที่ต้องกังวล แต่เป็นวันที่เหมาะที่สุดในการเริ่มต้น`; levelNextSteps = [ "ตั้งเป้าหมายให้ชัด", "วางแผนการเรียนระยะยาว", "เริ่มเก็บพื้นฐานทีละวิชา", "สร้างวินัยในการเรียนอย่างต่อเนื่อง" ]; levelRecommendation = "ให้พี่ออนดี้ช่วยวางแผนการเตรียมสอบแบบรายบุคคล ตั้งแต่การเลือกวิชาที่ควรเริ่ม การจัดตารางอ่านหนังสือ ไปจนถึงการเตรียมตัวสำหรับสนามสอบ เพื่อให้น้องเริ่มต้นได้อย่างมั่นใจ"; } const nextStepsHtml = levelNextSteps.map(step => `
  • 📌 ${step}
  • `).join(''); const consultBtnHtml = ` `; const courseBtnHtml = ` 🎓 คลิกเพื่อดูคอร์สเรียนที่ออกแบบมาเพื่อน้อง ๆ สอบหมอโดยเฉพาะ `; let ctaButtonsHtml = ""; if (totalScoreScale100 >= 80) { ctaButtonsHtml = courseBtnHtml + consultBtnHtml; } else { ctaButtonsHtml = consultBtnHtml + courseBtnHtml; } const levelCardHtml = `
    บทวิเคราะห์เฉพาะบุคคล

    ${levelTagline}

    ${levelDesc}

    Next Step

      ${nextStepsHtml}
    OnD

    ❤️ พี่ออนดี้ขอแนะนำ:

    ${levelRecommendation}

    ${ctaButtonsHtml}
    `; document.getElementById('dynamicLevelCard').innerHTML = levelCardHtml; let strengths = []; let weaknesses = []; if (p1Pct >= 80) strengths.push("มีเป้าหมายและเหตุผลในการเข้าสู่เส้นทางสายแพทย์ที่มั่นคงและเข้าใจระบบคะแนนกสพทชัดเจน"); else if (p1Pct = 80) strengths.push("มีกระบวนการวางแผนและกำหนดแผนการเรียนระยะยาวที่เป็นระบบเด่นชัด"); else if (p2Pct = 80) strengths.push("มีความพร้อมทางวิชาการและแนวคิดเชิงวิเคราะห์โจทย์ประยุกต์ที่ดีเป็นทุนเดิม"); else if (p3Pct = 80) strengths.push("มีวินัยการจัดแบ่งเวลาอ่านหนังสือและควบคุมสิ่งเร้าภายนอกรอบตัวได้อย่างสม่ำเสมอ"); else if (p4Pct = 80) strengths.push("มีสภาพแวดล้อมทางบ้านคอยให้คำแนะนำ กำลังใจ และการสนับสนุนทุนทรัพย์การเรียนอย่างเต็มกำลัง"); else if (p5Pct `
  • ${item}
  • `).join(''); document.getElementById('resWeaknesses').innerHTML = weaknesses.map(item => `
  • ${item}
  • `).join(''); document.getElementById('loadingState').classList.add('hidden'); document.getElementById('resultBox').classList.remove('hidden'); drawRadarChart([p1Pct, p2Pct, p3Pct, p4Pct, p5Pct]); window.scrollTo({ top: 0, behavior: 'smooth' }); sendDataToSheets("ปกติ"); } catch (fatalErr) { console.error("Fatal form processing error:", fatalErr); document.getElementById('loadingState').classList.add('hidden'); document.getElementById('quizForm').classList.remove('hidden'); showFormError("เกิดข้อผิดพลาดในการคำนวณผลลัพธ์: " + fatalErr.message); } }, 1200); }); // 🌟 เมื่อเด็กคลิกขอรับคำปรึกษา function requestConsultation() { const btn = document.getElementById('consultBtn'); if (!btn) return; sendDataToSheets("🔥 ขอรับคำปรึกษา 🔥"); // เปลี่ยนหน้าตาปุ่มเป็นสไตล์กดแล้วของ Light Theme btn.innerHTML = `✅ บันทึกข้อมูลเรียบร้อยแล้ว! เจ้าหน้าที่จะรีบติดต่อกลับ`; btn.disabled = true; btn.classList.remove('from-slate-800', 'to-slate-900', 'hover:from-slate-700', 'hover:to-slate-800', 'text-white'); btn.classList.add('bg-gray-100', 'text-red-600', 'border', 'border-gray-200', 'cursor-not-allowed', 'opacity-90', 'shadow-none'); }
    สิ้นสุดการรอคอย สิทธิพิเศษเฉพาะคุณ TCAS DEK68 เวอร์ชั่นใหม่ มาแล้ว !
    วันสุดท้ายแล้ว
    3 ชม สุดท้ายแล้วสมัครคอร์เลย
    รับฟรี! ชุดแนวข้อสอบ TPAT3
    ส่วนลดสูงสุด 1,000 บาท
    ส่วนลดสูงสุด 500 บาท

    นับถอยหลังก่อนสอบเข้าเตรียมอุดม (9 มี.ค. 67)

    Days
    สิ้นสุดการรอคอย สิทธิพิเศษเฉพาะคุณ TCAS DEK68 เวอร์ชั่นใหม่ มาแล้ว !
    สิ้นสุดการรอคอย สิทธิพิเศษเฉพาะคุณ TCAS DEK68 เวอร์ชั่นใหม่ มาแล้ว !
    สิ้นสุดการรอคอย สิทธิพิเศษเฉพาะคุณ TCAS DEK68 เวอร์ชั่นใหม่ มาแล้ว !
    โปรสุดท้าย NETSAT
    เพื่อน้องมข. อีก 14 วันก่อนสอบ
    โปรสุดท้าย เพื่อน้อง TU
    อีก 1 เดือน ก่อนสอบ
    ด่วน LIVEติว เลข โค้งสุดท้าย
    ก่อนสอบเตรียมอุดมฯ