|
|
| Line 1: |
Line 1: |
| <noinclude> | | <noinclude> |
| {{Widget
| | Nursing Pharmacology Jeopardy Game for NSG 520 - Pathophysiology and Pharmacology |
| |name=Jeopardy
| |
| |description=Nursing Pharmacology Jeopardy Game with sound effects and timer
| |
| |author=DocMoates
| |
| }}
| |
|
| |
|
| ==Usage== | | ==Usage== |
| <pre>{{#Widget:520Jeapordy}}</pre> | | <nowiki>{{#widget:520Jeopardy}}</nowiki> |
| | |
| ==Description==
| |
| Interactive Jeopardy-style game featuring nursing pharmacology questions based on HESI exam topics. Includes:
| |
| * 30 clinical scenario questions across 6 categories
| |
| * Two-team competitive scoring
| |
| * 30-second countdown timer
| |
| * Sound effects and thinking music (Web Audio API)
| |
| * Mute button
| |
|
| |
|
| [[Category:Widgets]] | | [[Category:Widgets]] |
| [[Category:Games]] | | [[Category:Games]] |
| [[Category:Nursing Education]] | | [[Category:Herzing University/Games]] |
| </noinclude><includeonly><div id="jeopardy-widget-container"> | | </noinclude><includeonly><div id="jeopardy-widget-container"> |
| <style> | | <style> |
| .jeopardy-game * { margin: 0; padding: 0; box-sizing: border-box; } | | .jep * { margin: 0; padding: 0; box-sizing: border-box; } |
| .jeopardy-game { font-family: Arial, sans-serif; background: linear-gradient(135deg, rgb(30,58,95) 0%, rgb(12,25,41) 100%); min-height: 100vh; padding: 20px; } | | .jep { font-family: Arial, sans-serif; background: linear-gradient(135deg, rgb(30,58,95) 0%, rgb(12,25,41) 100%); min-height: 100vh; padding: 20px; } |
| .jeopardy-game .container { max-width: 1200px; margin: 0 auto; } | | .jep .ctr { max-width: 1200px; margin: 0 auto; } |
| .jeopardy-game .title { text-align: center; color: rgb(251,191,36); font-size: 2.2rem; font-weight: bold; margin-bottom: 8px; text-shadow: 2px 2px 4px rgba(0,0,0,0.5); } | | .jep .ttl { text-align: center; color: rgb(251,191,36); font-size: 2.2rem; font-weight: bold; margin-bottom: 8px; text-shadow: 2px 2px 4px rgba(0,0,0,0.5); } |
| .jeopardy-game .subtitle { text-align: center; color: rgb(147,197,253); margin-bottom: 5px; font-size: 0.95rem; } | | .jep .sub { text-align: center; color: rgb(147,197,253); margin-bottom: 5px; font-size: 0.95rem; } |
| .jeopardy-game .sound-prompt { text-align: center; color: rgb(147,197,253); font-size: 0.85rem; margin-bottom: 15px; } | | .jep .snd { text-align: center; color: rgb(147,197,253); font-size: 0.85rem; margin-bottom: 15px; } |
| .jeopardy-game .scoreboard { display: flex; justify-content: center; gap: 30px; margin-bottom: 15px; } | | .jep .scb { display: flex; justify-content: center; gap: 30px; margin-bottom: 15px; } |
| .jeopardy-game .team-score { background: rgb(30,64,175); padding: 12px 25px; border-radius: 10px; text-align: center; transition: all 0.3s; } | | .jep .tms { background: rgb(30,64,175); padding: 12px 25px; border-radius: 10px; text-align: center; transition: all 0.3s; } |
| .jeopardy-game .team-score.active { box-shadow: 0 0 20px rgb(251,191,36); transform: scale(1.05); } | | .jep .tms.act { box-shadow: 0 0 20px rgb(251,191,36); transform: scale(1.05); } |
| .jeopardy-game .team-score h3 { color: white; margin-bottom: 5px; font-size: 1rem; } | | .jep .tms h3 { color: white; margin-bottom: 5px; font-size: 1rem; } |
| .jeopardy-game .score { font-size: 1.6rem; font-weight: bold; } | | .jep .scr { font-size: 1.6rem; font-weight: bold; } |
| .jeopardy-game .score-positive { color: rgb(74,222,128); } | | .jep .pos { color: rgb(74,222,128); } |
| .jeopardy-game .score-negative { color: rgb(248,113,113); } | | .jep .neg { color: rgb(248,113,113); } |
| .jeopardy-game .current-turn { text-align: center; color: rgb(251,191,36); font-size: 1.1rem; margin-bottom: 12px; } | | .jep .trn { text-align: center; color: rgb(251,191,36); font-size: 1.1rem; margin-bottom: 12px; } |
| .jeopardy-game .game-board { display: grid; grid-template-columns: repeat(6, 1fr); gap: 6px; margin-bottom: 15px; } | | .jep .brd { display: grid; grid-template-columns: repeat(6, 1fr); gap: 6px; margin-bottom: 15px; } |
| .jeopardy-game .category-header { background: rgb(30,64,175); color: white; padding: 12px 8px; text-align: center; font-weight: bold; font-size: 0.85rem; border-radius: 6px 6px 0 0; min-height: 55px; display: flex; align-items: center; justify-content: center; } | | .jep .cat { background: rgb(30,64,175); color: white; padding: 12px 8px; text-align: center; font-weight: bold; font-size: 0.85rem; border-radius: 6px 6px 0 0; min-height: 55px; display: flex; align-items: center; justify-content: center; } |
| .jeopardy-game .question-cell { background: rgb(37,99,235); color: rgb(251,191,36); padding: 18px 10px; text-align: center; font-size: 1.4rem; font-weight: bold; border-radius: 6px; cursor: pointer; transition: all 0.2s; border: none; width: 100%; } | | .jep .qcl { background: rgb(37,99,235); color: rgb(251,191,36); padding: 18px 10px; text-align: center; font-size: 1.4rem; font-weight: bold; border-radius: 6px; cursor: pointer; transition: all 0.2s; border: none; width: 100%; } |
| .jeopardy-game .question-cell:hover:not(.answered) { background: rgb(59,130,246); transform: scale(1.03); box-shadow: 0 4px 12px rgba(0,0,0,0.3); } | | .jep .qcl:hover:not(.ans) { background: rgb(59,130,246); transform: scale(1.03); box-shadow: 0 4px 12px rgba(0,0,0,0.3); } |
| .jeopardy-game .question-cell.answered { background: rgb(30,58,95); color: rgb(30,58,95); cursor: not-allowed; } | | .jep .qcl.ans { background: rgb(30,58,95); color: rgb(30,58,95); cursor: not-allowed; } |
| .jeopardy-game .btn-reset { background: rgb(220,38,38); color: white; padding: 10px 20px; border-radius: 6px; font-weight: bold; font-size: 0.95rem; cursor: pointer; border: none; transition: all 0.2s; } | | .jep .rst { background: rgb(220,38,38); color: white; padding: 10px 20px; border-radius: 6px; font-weight: bold; font-size: 0.95rem; cursor: pointer; border: none; transition: all 0.2s; } |
| .jeopardy-game .btn-reset:hover { background: rgb(185,28,28); } | | .jep .rst:hover { background: rgb(185,28,28); } |
| .jeopardy-game .btn-mute { position: fixed; top: 15px; right: 15px; background: rgb(30,64,175); color: white; width: 45px; height: 45px; border-radius: 50%; border: none; cursor: pointer; font-size: 1.3rem; z-index: 1000; transition: all 0.2s; } | | .jep .mute { position: fixed; top: 15px; right: 15px; background: rgb(30,64,175); color: white; width: 45px; height: 45px; border-radius: 50%; border: none; cursor: pointer; font-size: 1.3rem; z-index: 1000; transition: all 0.2s; } |
| .jeopardy-game .btn-mute:hover { background: rgb(37,99,235); } | | .jep .mute:hover { background: rgb(37,99,235); } |
| .jeopardy-game .tips { text-align: center; color: rgb(147,197,253); font-size: 0.8rem; margin-top: 12px; } | | .jep .tip { text-align: center; color: rgb(147,197,253); font-size: 0.8rem; margin-top: 12px; } |
| .jeopardy-game .tips p { margin: 3px 0; } | | .jep .tip p { margin: 3px 0; } |
| .jeopardy-game .modal-overlay { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.85); z-index: 999; justify-content: center; align-items: center; padding: 20px; } | | .jep .mov { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.85); z-index: 999; justify-content: center; align-items: center; padding: 20px; } |
| .jeopardy-game .modal-overlay.active { display: flex; } | | .jep .mov.act { display: flex; } |
| .jeopardy-game .modal-content { background: rgb(30,64,175); border-radius: 12px; padding: 25px; max-width: 650px; width: 100%; max-height: 90vh; overflow-y: auto; color: white; } | | .jep .moc { background: rgb(30,64,175); border-radius: 12px; padding: 25px; max-width: 650px; width: 100%; max-height: 90vh; overflow-y: auto; color: white; } |
| .jeopardy-game .modal-header { text-align: center; margin-bottom: 15px; } | | .jep .moh { text-align: center; margin-bottom: 15px; } |
| .jeopardy-game .modal-category { display: inline-block; background: rgb(251,191,36); color: rgb(30,58,95); padding: 6px 18px; border-radius: 20px; font-weight: bold; font-size: 0.95rem; } | | .jep .mct { display: inline-block; background: rgb(251,191,36); color: rgb(30,58,95); padding: 6px 18px; border-radius: 20px; font-weight: bold; font-size: 0.95rem; } |
| .jeopardy-game .modal-team { color: rgb(251,191,36); margin-top: 8px; font-size: 0.95rem; } | | .jep .mtm { color: rgb(251,191,36); margin-top: 8px; font-size: 0.95rem; } |
| .jeopardy-game .timer-display { text-align: center; margin-bottom: 12px; } | | .jep .tmd { text-align: center; margin-bottom: 12px; } |
| .jeopardy-game .timer-badge { display: inline-block; padding: 8px 20px; border-radius: 20px; font-size: 1.3rem; font-weight: bold; } | | .jep .tmb { display: inline-block; padding: 8px 20px; border-radius: 20px; font-size: 1.3rem; font-weight: bold; } |
| .jeopardy-game .timer-normal { background: rgb(251,191,36); color: rgb(30,58,95); } | | .jep .tmn { background: rgb(251,191,36); color: rgb(30,58,95); } |
| .jeopardy-game .timer-warning { background: rgb(220,38,38); color: white; animation: jeopardy-pulse 1s infinite; } | | .jep .tmw { background: rgb(220,38,38); color: white; animation: jeppulse 1s infinite; } |
| @keyframes jeopardy-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.7; } } | | @keyframes jeppulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.7; } } |
| .jeopardy-game .music-indicator { text-align: center; color: rgb(147,197,253); font-size: 0.85rem; margin-bottom: 10px; animation: jeopardy-pulse 1s infinite; } | | .jep .mus { text-align: center; color: rgb(147,197,253); font-size: 0.85rem; margin-bottom: 10px; animation: jeppulse 1s infinite; } |
| .jeopardy-game .scenario-box { background: rgb(29,78,216); border-radius: 8px; padding: 15px; margin-bottom: 12px; } | | .jep .scn { background: rgb(29,78,216); border-radius: 8px; padding: 15px; margin-bottom: 12px; } |
| .jeopardy-game .scenario-box h4 { color: rgb(251,191,36); margin-bottom: 8px; font-size: 0.95rem; } | | .jep .scn h4 { color: rgb(251,191,36); margin-bottom: 8px; font-size: 0.95rem; } |
| .jeopardy-game .scenario-box p { font-size: 1rem; line-height: 1.5; } | | .jep .scn p { font-size: 1rem; line-height: 1.5; } |
| .jeopardy-game .question-box { background: rgb(37,99,235); border-radius: 8px; padding: 15px; margin-bottom: 12px; } | | .jep .qst { background: rgb(37,99,235); border-radius: 8px; padding: 15px; margin-bottom: 12px; } |
| .jeopardy-game .question-box h4 { color: rgb(251,191,36); margin-bottom: 8px; font-size: 0.95rem; } | | .jep .qst h4 { color: rgb(251,191,36); margin-bottom: 8px; font-size: 0.95rem; } |
| .jeopardy-game .question-box p { font-size: 1.1rem; font-weight: 600; line-height: 1.4; } | | .jep .qst p { font-size: 1.1rem; font-weight: 600; line-height: 1.4; } |
| .jeopardy-game .answer-box { background: rgb(22,101,52); border-radius: 8px; padding: 15px; margin-bottom: 12px; animation: jeopardy-fadeIn 0.3s; } | | .jep .asw { background: rgb(22,101,52); border-radius: 8px; padding: 15px; margin-bottom: 12px; animation: jepfade 0.3s; } |
| @keyframes jeopardy-fadeIn { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } } | | @keyframes jepfade { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } } |
| .jeopardy-game .answer-box h4 { color: rgb(251,191,36); margin-bottom: 8px; font-size: 0.95rem; } | | .jep .asw h4 { color: rgb(251,191,36); margin-bottom: 8px; font-size: 0.95rem; } |
| .jeopardy-game .answer-box p { font-size: 1rem; line-height: 1.5; } | | .jep .asw p { font-size: 1rem; line-height: 1.5; } |
| .jeopardy-game .button-group { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; } | | .jep .btg { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; } |
| .jeopardy-game .btn { padding: 10px 22px; border-radius: 6px; font-weight: bold; font-size: 0.95rem; cursor: pointer; border: none; transition: all 0.2s; } | | .jep .btn { padding: 10px 22px; border-radius: 6px; font-weight: bold; font-size: 0.95rem; cursor: pointer; border: none; transition: all 0.2s; } |
| .jeopardy-game .btn-reveal { background: rgb(251,191,36); color: rgb(30,58,95); } | | .jep .brv { background: rgb(251,191,36); color: rgb(30,58,95); } |
| .jeopardy-game .btn-reveal:hover { background: rgb(252,211,77); } | | .jep .brv:hover { background: rgb(252,211,77); } |
| .jeopardy-game .btn-correct { background: rgb(34,197,94); color: white; } | | .jep .bcr { background: rgb(34,197,94); color: white; } |
| .jeopardy-game .btn-correct:hover { background: rgb(22,163,74); } | | .jep .bcr:hover { background: rgb(22,163,74); } |
| .jeopardy-game .btn-incorrect { background: rgb(239,68,68); color: white; } | | .jep .bic { background: rgb(239,68,68); color: white; } |
| .jeopardy-game .btn-incorrect:hover { background: rgb(220,38,38); } | | .jep .bic:hover { background: rgb(220,38,38); } |
| .jeopardy-game .game-over-screen { text-align: center; padding: 30px; } | | .jep .gov { text-align: center; padding: 30px; } |
| .jeopardy-game .game-over-screen h1 { font-size: 2.5rem; color: rgb(251,191,36); margin-bottom: 20px; } | | .jep .gov h1 { font-size: 2.5rem; color: rgb(251,191,36); margin-bottom: 20px; } |
| .jeopardy-game .game-over-screen .final-scores { font-size: 1.4rem; color: white; margin-bottom: 15px; } | | .jep .gov .fsc { font-size: 1.4rem; color: white; margin-bottom: 15px; } |
| .jeopardy-game .game-over-screen .final-scores p { margin: 5px 0; } | | .jep .gov .fsc p { margin: 5px 0; } |
| .jeopardy-game .game-over-screen .winner { font-size: 1.8rem; color: rgb(251,191,36); font-weight: bold; margin-bottom: 25px; } | | .jep .gov .win { font-size: 1.8rem; color: rgb(251,191,36); font-weight: bold; margin-bottom: 25px; } |
| </style> | | </style> |
|
| |
|
| <div class="jeopardy-game"> | | <div class="jep"> |
| <button class="btn-mute" id="jeopardyMuteBtn" onclick="JeopardyGame.toggleMute()">🔊</button> | | <button class="mute" id="jepMute" onclick="Jep.mute()">🔊</button> |
|
| | <div class="ctr"> |
| <div class="container"> | | <h1 class="ttl">🏥 Nursing Pharmacology Jeopardy</h1> |
| <h1 class="title">🏥 Nursing Pharmacology Jeopardy</h1> | | <p class="sub">NSG 520 - Pathophysiology and Pharmacology</p> |
| <p class="subtitle">Based on HESI Exam Topics</p> | | <p class="snd" id="jepSnd">🔊 Click any tile to start with sound!</p> |
| <p class="sound-prompt" id="jeopardySoundPrompt">🔊 Click any tile to start with sound!</p> | | <div class="scb"> |
|
| | <div class="tms act" id="jepT1"><h3>Team 1</h3><div class="scr pos" id="jepV1">$0</div></div> |
| <div class="scoreboard"> | | <div class="tms" id="jepT2"><h3>Team 2</h3><div class="scr pos" id="jepV2">$0</div></div> |
| <div class="team-score active" id="jeopardyTeam1Score"> | |
| <h3>Team 1</h3>
| |
| <div class="score score-positive" id="jeopardyTeam1Value">$0</div>
| |
| </div>
| |
| <div class="team-score" id="jeopardyTeam2Score"> | |
| <h3>Team 2</h3>
| |
| <div class="score score-positive" id="jeopardyTeam2Value">$0</div>
| |
| </div>
| |
| </div>
| |
|
| |
| <p class="current-turn" id="jeopardyCurrentTurn">🎯 Team 1's Turn to Pick</p>
| |
|
| |
| <div class="game-board" id="jeopardyGameBoard"></div>
| |
|
| |
| <div style="text-align: center;">
| |
| <button class="btn-reset" onclick="JeopardyGame.reset()">Reset Game</button>
| |
| </div>
| |
|
| |
| <div class="tips">
| |
| <p>💡 Tip: Questions increase in difficulty with point value</p>
| |
| <p>🎵 Features: Thinking music, sound effects, and 30-second timer!</p>
| |
| </div> | | </div> |
| | <p class="trn" id="jepTrn">🎯 Team 1's Turn to Pick</p> |
| | <div class="brd" id="jepBrd"></div> |
| | <div style="text-align:center;"><button class="rst" onclick="Jep.reset()">Reset Game</button></div> |
| | <div class="tip"><p>💡 Questions increase in difficulty with point value</p><p>🎵 Thinking music, sound effects, and 30-second timer!</p></div> |
| </div> | | </div> |
|
| | <div class="mov" id="jepQM"> |
| <div class="modal-overlay" id="jeopardyQuestionModal"> | | <div class="moc"> |
| <div class="modal-content"> | | <div class="moh"><span class="mct" id="jepMCat">Category - $000</span><p class="mtm" id="jepMTm">Team 1's Turn</p></div> |
| <div class="modal-header"> | | <div class="tmd"><span class="tmb tmn" id="jepTmr">⏱️ 30s</span></div> |
| <span class="modal-category" id="jeopardyModalCategory">Category - $000</span>
| | <div class="mus" id="jepMus" style="display:none;">♪ ♫ Thinking Music ♫ ♪</div> |
| <p class="modal-team" id="jeopardyModalTeam">Team 1's Turn</p>
| | <div class="scn"><h4>📋 Scenario:</h4><p id="jepScn"></p></div> |
| </div>
| | <div class="qst"><h4>❓ Question:</h4><p id="jepQst"></p></div> |
| <div class="timer-display" id="jeopardyTimerDisplay"> | | <div class="asw" id="jepAsw" style="display:none;"><h4>✅ Answer:</h4><p id="jepAns"></p></div> |
| <span class="timer-badge timer-normal" id="jeopardyTimerBadge">⏱️ 30s</span>
| | <div class="btg" id="jepBtg"><button class="btn brv" onclick="Jep.reveal()">Reveal Answer</button></div> |
| </div>
| |
| <div class="music-indicator" id="jeopardyMusicIndicator" style="display: none;">♪ ♫ Thinking Music Playing ♫ ♪</div> | |
| <div class="scenario-box"> | |
| <h4>📋 Scenario:</h4>
| |
| <p id="jeopardyScenarioText"></p>
| |
| </div>
| |
| <div class="question-box"> | |
| <h4>❓ Question:</h4>
| |
| <p id="jeopardyQuestionText"></p>
| |
| </div>
| |
| <div class="answer-box" id="jeopardyAnswerBox" style="display: none;"> | |
| <h4>✅ Answer:</h4>
| |
| <p id="jeopardyAnswerText"></p>
| |
| </div>
| |
| <div class="button-group" id="jeopardyButtonGroup"> | |
| <button class="btn btn-reveal" onclick="JeopardyGame.revealAnswer()">Reveal Answer</button>
| |
| </div>
| |
| </div> | | </div> |
| </div> | | </div> |
|
| | <div class="mov" id="jepGO"> |
| <div class="modal-overlay" id="jeopardyGameOverModal"> | | <div class="moc gov"><h1>🏆 Game Over!</h1><div class="fsc" id="jepFsc"></div><div class="win" id="jepWin"></div><button class="btn brv" onclick="Jep.reset()">Play Again</button></div> |
| <div class="modal-content game-over-screen"> | |
| <h1>🏆 Game Over!</h1>
| |
| <div class="final-scores" id="jeopardyFinalScores"></div>
| |
| <div class="winner" id="jeopardyWinnerText"></div>
| |
| <button class="btn btn-reveal" onclick="JeopardyGame.reset()">Play Again</button>
| |
| </div>
| |
| </div> | | </div> |
| </div> | | </div> |
|
| |
|
| <script> | | <script> |
| var JeopardyGame = (function() { | | var Jep=(function(){ |
| var categories = [
| | var cats=[ |
| {
| | {name:"Cardiovascular",q:[ |
| name: "Cardiovascular",
| | {p:200,s:"A 58-year-old patient with heart failure is prescribed digoxin. Before administering the medication, the nurse checks the apical pulse and finds it to be 52 bpm.",q:"What should the nurse do?",a:"Hold the medication and notify the healthcare provider. Digoxin should be held if the apical pulse is below 60 bpm in adults due to risk of toxicity and bradycardia."}, |
| questions: [
| | {p:400,s:"A patient taking warfarin for atrial fibrillation has an INR of 4.8. The patient reports dark, tarry stools and dizziness.",q:"What is the priority nursing intervention?",a:"Hold warfarin, notify the provider immediately, and prepare for possible administration of Vitamin K. The patient shows signs of GI bleeding with supratherapeutic INR levels."}, |
| { points: 200, scenario: "A 58-year-old patient with heart failure is prescribed digoxin. Before administering the medication, the nurse checks the apical pulse and finds it to be 52 bpm.", question: "What should the nurse do?", answer: "Hold the medication and notify the healthcare provider. Digoxin should be held if the apical pulse is below 60 bpm in adults due to risk of toxicity and bradycardia." },
| | {p:600,s:"A post-MI patient on a cardiac monitor suddenly shows a wide QRS complex rhythm at 180 bpm with no detectable pulse.",q:"What is this rhythm and what is the immediate action?",a:"Ventricular tachycardia (pulseless VT). Begin CPR immediately and prepare for defibrillation. This is a shockable rhythm requiring immediate intervention per ACLS protocol."}, |
| { points: 400, scenario: "A patient taking warfarin for atrial fibrillation has an INR of 4.8. The patient reports dark, tarry stools and dizziness.", question: "What is the priority nursing intervention?", answer: "Hold warfarin, notify the provider immediately, and prepare for possible administration of Vitamin K. The patient shows signs of GI bleeding (tarry stools) with supratherapeutic INR levels." },
| | {p:800,s:"A patient with chronic heart failure is started on carvedilol. Two weeks later, the patient reports increased shortness of breath and weight gain of 5 lbs.",q:"Why might this occur and what should the nurse assess?",a:"Beta-blockers can initially worsen heart failure symptoms before providing long-term benefit. Assess for fluid retention, monitor daily weights, lung sounds, and edema."}, |
| { points: 600, scenario: "A post-MI patient on a cardiac monitor suddenly shows a wide QRS complex rhythm at 180 bpm with no detectable pulse.", question: "What is this rhythm and what is the immediate action?", answer: "Ventricular tachycardia (pulseless VT). Begin CPR immediately and prepare for defibrillation. This is a shockable rhythm requiring immediate intervention per ACLS protocol." },
| | {p:1000,s:"A hypertensive patient on lisinopril develops a persistent dry cough. The provider switches to losartan. The patient asks why.",q:"What is the nurse's best explanation?",a:"ACE inhibitors like lisinopril can cause dry cough due to bradykinin accumulation. ARBs like losartan work similarly but don't cause bradykinin buildup, so cough is not a side effect."} |
| { points: 800, scenario: "A patient with chronic heart failure is started on carvedilol. Two weeks later, the patient reports increased shortness of breath and weight gain of 5 lbs.", question: "Why might this occur and what should the nurse assess?", answer: "Beta-blockers can initially worsen heart failure symptoms before providing long-term benefit. Assess for fluid retention, monitor daily weights, lung sounds, and edema. The provider may need to adjust diuretic therapy." },
| | ]}, |
| { points: 1000, scenario: "A hypertensive patient on lisinopril develops a persistent dry cough. The provider switches to losartan. The patient asks why the medication was changed.", question: "What is the nurse's best explanation?", answer: "ACE inhibitors like lisinopril can cause dry cough due to bradykinin accumulation. ARBs like losartan work similarly to lower blood pressure but don't cause bradykinin buildup, so cough is not a side effect." }
| | {name:"Pain Mgmt",q:[ |
| ]
| | {p:200,s:"A post-surgical patient rates their pain as 7/10 and requests PRN morphine. The last dose was given 3 hours ago, ordered every 4 hours.",q:"What is the appropriate nursing action?",a:"Offer non-pharmacological interventions (repositioning, ice/heat, relaxation) and reassess in 1 hour. Cannot give morphine until 4-hour interval has passed."}, |
| },
| | {p:400,s:"An elderly patient with dementia is grimacing, guarding their abdomen, and has increased restlessness but cannot verbally report pain.",q:"What pain assessment tool should the nurse use?",a:"Use a behavioral pain scale such as PAINAD (Pain Assessment in Advanced Dementia) or FLACC scale. Assess for nonverbal cues."}, |
| {
| | {p:600,s:"A patient with chronic back pain has been on oxycodone for 6 months and now requires higher doses to achieve the same pain relief.",q:"What phenomenon is this, and how is it different from addiction?",a:"This is tolerance - a physiological adaptation requiring higher doses. It differs from addiction, which involves compulsive use despite harm and loss of control."}, |
| name: "Pain Mgmt",
| | {p:800,s:"A patient receiving IV morphine via PCA pump has a respiratory rate of 8, is difficult to arouse, and has pinpoint pupils.",q:"What is occurring and what are the priority interventions?",a:"Opioid overdose/toxicity. Stop PCA, stimulate patient, call for help, prepare naloxone (Narcan), support airway and breathing."}, |
| questions: [
| | {p:1000,s:"A patient with cancer pain is on around-the-clock MS Contin but still has breakthrough pain episodes.",q:"What medication regimen modification should the nurse anticipate?",a:"Add immediate-release morphine for breakthrough pain, typically 10-15 percent of the total 24-hour dose."} |
| { points: 200, scenario: "A post-surgical patient rates their pain as 7/10 and requests their PRN morphine. The last dose was given 3 hours ago, and it's ordered every 4 hours.", question: "What is the appropriate nursing action?", answer: "Offer non-pharmacological interventions (repositioning, ice/heat, relaxation) and reassess in 1 hour. Document patient's pain level and interventions. Cannot give morphine until 4-hour interval has passed." },
| | ]}, |
| { points: 400, scenario: "An elderly patient with dementia is grimacing, guarding their abdomen, and has increased restlessness but cannot verbally report pain.", question: "What pain assessment tool should the nurse use?", answer: "Use a behavioral pain scale such as PAINAD (Pain Assessment in Advanced Dementia) or FLACC scale. Assess for nonverbal cues: facial expressions, body movements, vocalizations, and changes in activity patterns." },
| | {name:"Teaching",q:[ |
| { points: 600, scenario: "A patient with chronic back pain has been on oxycodone for 6 months and now requires higher doses to achieve the same pain relief.", question: "What phenomenon is this, and how is it different from addiction?", answer: "This is tolerance - a physiological adaptation requiring higher doses for the same effect. It differs from addiction, which involves compulsive use despite harm, craving, and loss of control. Tolerance is expected with long-term opioid use." },
| | {p:200,s:"A newly diagnosed diabetic patient needs insulin teaching. The patient appears anxious and keeps checking their phone.",q:"What should the nurse do before beginning education?",a:"Assess readiness to learn. Address anxiety first, minimize distractions, and determine the patient's learning style and priorities."}, |
| { points: 800, scenario: "A patient receiving IV morphine via PCA pump has a respiratory rate of 8, is difficult to arouse, and has pinpoint pupils.", question: "What is occurring and what are the priority interventions?", answer: "Opioid overdose/toxicity. Priority: Stop PCA, stimulate patient, call for help, prepare naloxone (Narcan), support airway and breathing. Monitor closely as naloxone has shorter half-life than morphine." },
| | {p:400,s:"An elderly patient with newly prescribed warfarin has mild hearing loss and reads at a 6th-grade level.",q:"What teaching strategies should the nurse employ?",a:"Face the patient when speaking, use simple language, provide written materials at appropriate reading level with large print, use teach-back method."}, |
| { points: 1000, scenario: "A patient with cancer pain is on around-the-clock MS Contin (extended-release morphine) but still has breakthrough pain episodes.", question: "What medication regimen modification should the nurse anticipate?", answer: "Add immediate-release morphine (MSIR) for breakthrough pain, typically 10-15 percent of the total 24-hour dose. The long-acting medication provides baseline control while short-acting addresses breakthrough episodes." }
| | {p:600,s:"A patient is being discharged on metformin for type 2 diabetes. They ask if they can drink alcohol on weekends.",q:"What patient education should the nurse provide?",a:"Alcohol increases risk of lactic acidosis with metformin and can cause hypoglycemia. Recommend limiting alcohol and never drinking on empty stomach."}, |
| ]
| | {p:800,s:"A patient with CHF is being discharged. The nurse has 15 minutes to provide discharge teaching about medications, diet, activity, and warning signs.",q:"How should the nurse prioritize this teaching?",a:"Focus on survival skills: daily weights (report 2+ lb gain), sodium restriction basics, medication names/times, and warning signs requiring immediate attention."}, |
| },
| | {p:1000,s:"A 16-year-old with newly diagnosed epilepsy needs teaching about phenytoin. The mother wants to handle all medication administration.",q:"What developmental considerations should guide the nurse's approach?",a:"Adolescents need autonomy. Include the teen in teaching, address concerns about appearance (gingival hyperplasia) and driving restrictions."} |
| {
| | ]}, |
| name: "Teaching",
| | {name:"GI/Hepatic",q:[ |
| questions: [
| | {p:200,s:"A patient with cirrhosis has a serum ammonia level of 95 mcg/dL (normal: 15-45). The patient is confused and has asterixis.",q:"What medication should the nurse anticipate and why?",a:"Lactulose - it acidifies the colon, converting ammonia to ammonium which cannot be absorbed, and promotes bowel movements to eliminate ammonia."}, |
| { points: 200, scenario: "A newly diagnosed diabetic patient needs insulin teaching. The patient appears anxious and keeps checking their phone.", question: "What should the nurse do before beginning education?", answer: "Assess readiness to learn. Address anxiety first, minimize distractions, and determine the patient's learning style and priorities. Teaching is ineffective when the patient isn't ready to receive information." },
| | {p:400,s:"A patient post-cholecystectomy complains of severe right shoulder pain despite the surgery being abdominal.",q:"What causes this and what should the nurse do?",a:"Referred pain from CO2 used during laparoscopic surgery irritating the diaphragm. Encourage ambulation to absorb the gas."}, |
| { points: 400, scenario: "An elderly patient with newly prescribed warfarin has mild hearing loss and reads at a 6th-grade level.", question: "What teaching strategies should the nurse employ?", answer: "Face the patient when speaking, use simple language and short sentences, provide written materials at appropriate reading level with large print, use pictures/diagrams, teach-back method to confirm understanding." },
| | {p:600,s:"A patient with peptic ulcer disease is prescribed omeprazole, clarithromycin, and amoxicillin for 14 days.",q:"What is this regimen treating and what teaching is essential?",a:"H. pylori eradication (triple therapy). Complete entire course even if feeling better, take PPI before meals, return for follow-up testing."}, |
| { points: 600, scenario: "A patient is being discharged on metformin for type 2 diabetes. They ask if they can drink alcohol on weekends.", question: "What patient education should the nurse provide?", answer: "Alcohol increases risk of lactic acidosis with metformin and can cause hypoglycemia. Recommend limiting alcohol, never drinking on empty stomach, monitoring blood glucose more frequently, and recognizing hypoglycemia symptoms." },
| | {p:800,s:"A patient with acute pancreatitis has NG tube to suction, IV fluids, and NPO status. The patient asks why they can't eat.",q:"What is the nurse's best explanation?",a:"The pancreas needs rest to heal. Eating stimulates pancreatic enzyme secretion, which can worsen inflammation and pain."}, |
| { points: 800, scenario: "A patient with CHF is being discharged. The nurse has 15 minutes to provide discharge teaching about medications, diet, activity, and warning signs.", question: "How should the nurse prioritize this teaching?", answer: "Focus on survival skills: daily weights (report 2+ lb gain), sodium restriction basics, medication names and times, and warning signs requiring immediate medical attention (increased SOB, edema, chest pain). Provide written materials for detailed information." },
| | {p:1000,s:"A patient with Crohn's disease on long-term prednisone develops round face, central obesity, and blood glucose of 180 mg/dL.",q:"What is occurring and what patient education is needed?",a:"Cushing syndrome from chronic corticosteroid use. Never stop medication abruptly, report signs of infection, monitor blood glucose."} |
| { points: 1000, scenario: "A 16-year-old patient with newly diagnosed epilepsy needs teaching about phenytoin. The patient's mother wants to handle all medication administration.", question: "What developmental considerations should guide the nurse's approach?", answer: "Adolescents need autonomy and involvement in their care. Include the teen in teaching, address concerns about appearance (gingival hyperplasia), social activities, and driving restrictions. Balance parental involvement with teen's need for independence and self-management skills." }
| | ]}, |
| ]
| | {name:"Med Admin",q:[ |
| },
| | {p:200,s:"A nurse is preparing to administer IV vancomycin. The pharmacy sends it to infuse over 30 minutes.",q:"What concern should the nurse have?",a:"Vancomycin infused too rapidly causes Red Man Syndrome - flushing, hypotension, rash. Should infuse over at least 60 minutes."}, |
| {
| | {p:400,s:"A patient's MAR shows potassium chloride 40 mEq IV ordered. The nurse receives the medication as a 40 mEq vial.",q:"What must the nurse verify before administration?",a:"IV potassium must NEVER be given as bolus push - causes fatal arrhythmias. Verify diluted appropriately, infused via pump, max 10-20 mEq/hour."}, |
| name: "GI/Hepatic",
| | {p:600,s:"A nurse is to administer insulin lispro (Humalog) and insulin glargine (Lantus) to a diabetic patient before breakfast.",q:"How should these insulins be administered?",a:"Give in SEPARATE syringes - Lantus should never be mixed with other insulins as it can alter the action of both."}, |
| questions: [
| | {p:800,s:"A patient on IV heparin drip has an aPTT of 120 seconds (therapeutic range 60-80). The patient now needs an invasive procedure.",q:"What should the nurse do?",a:"Hold heparin infusion, notify provider. If urgent reversal needed, protamine sulfate is the antidote. Monitor for bleeding."}, |
| { points: 200, scenario: "A patient with cirrhosis has a serum ammonia level of 95 mcg/dL (normal: 15-45). The patient is confused and has asterixis.", question: "What medication should the nurse anticipate and why?", answer: "Lactulose - it acidifies the colon, converting ammonia to ammonium which cannot be absorbed, and promotes bowel movements to eliminate ammonia. Goal is 2-3 soft stools daily." },
| | {p:1000,s:"A patient receiving first dose of IV penicillin develops hives, wheezing, and BP drop to 80/50 after 5 minutes.",q:"What is occurring and list interventions in priority order?",a:"Anaphylaxis. 1) Stop infusion, 2) Call for help, 3) Epinephrine IM, 4) Maintain airway, 5) IV fluids, 6) Diphenhydramine/corticosteroids."} |
| { points: 400, scenario: "A patient post-cholecystectomy complains of severe right shoulder pain despite the surgery being abdominal.", question: "What causes this and what should the nurse do?", answer: "Referred pain from CO2 used during laparoscopic surgery irritating the diaphragm/phrenic nerve. Encourage ambulation to help absorb the gas, position comfortably, and administer prescribed analgesics." },
| | ]}, |
| { points: 600, scenario: "A patient with peptic ulcer disease is prescribed omeprazole, clarithromycin, and amoxicillin for 14 days.", question: "What is this regimen treating and what teaching is essential?", answer: "H. pylori eradication (triple therapy). Teaching: Complete entire course even if feeling better, take PPI before meals, avoid alcohol, report black stools or vomiting blood, and return for follow-up testing to confirm eradication." },
| | {name:"Pathophys",q:[ |
| { points: 800, scenario: "A patient with acute pancreatitis has a nasogastric tube to suction, IV fluids, and NPO status. The patient asks why they can't eat when they're hungry.", question: "What is the nurse's best explanation?", answer: "The pancreas needs rest to heal. Eating stimulates pancreatic enzyme secretion, which can worsen inflammation and pain. NG suction removes gastric secretions that would also stimulate the pancreas. Once pain and enzyme levels decrease, diet will gradually advance." },
| | {p:200,s:"A patient with uncontrolled diabetes has blood glucose of 450 mg/dL, breathing rapidly and deeply, and fruity-smelling breath.",q:"What condition is this and what causes these symptoms?",a:"Diabetic Ketoacidosis (DKA). Lack of insulin causes fat breakdown producing ketones. Metabolic acidosis triggers Kussmaul respirations."}, |
| { points: 1000, scenario: "A patient with Crohn's disease on long-term prednisone develops a round face, central obesity, and blood glucose of 180 mg/dL.", question: "What is occurring and what patient education is needed?", answer: "Cushing syndrome (iatrogenic) from chronic corticosteroid use. Teach: Never stop medication abruptly (adrenal insufficiency risk), report signs of infection (immunosuppression), monitor blood glucose, calcium and vitamin D supplementation, and discuss tapering plan with provider." }
| | {p:400,s:"A patient with COPD on 2L nasal cannula has oxygen increased to 6L by family. The patient becomes increasingly drowsy.",q:"What is happening physiologically?",a:"CO2 narcosis. COPD patients rely on hypoxic drive. High-flow oxygen removes this drive, causing hypoventilation and CO2 retention."}, |
| ]
| | {p:600,s:"A patient after thyroidectomy develops tingling around the mouth, muscle cramps, and positive Chvostek's sign.",q:"What complication is this and why does it occur?",a:"Hypocalcemia due to damage to parathyroid glands during surgery. Treat with IV calcium gluconate."}, |
| },
| | {p:800,s:"A trauma patient receives 6 units of PRBCs. Labs show: pH 7.28, K+ 6.2 mEq/L, calcium 7.8 mg/dL, hypothermia.",q:"What complications of massive transfusion are occurring?",a:"Metabolic acidosis, hyperkalemia (K+ leaks from stored RBCs), hypocalcemia (citrate binds calcium), and hypothermia."}, |
| {
| | {p:1000,s:"A patient with severe sepsis has: BP 78/40, HR 128, lactate 6 mmol/L, urine output 10 mL/hr for 2 hours.",q:"What is occurring and what are the priority interventions?",a:"Septic shock. Fluid resuscitation (30 mL/kg), obtain cultures, broad-spectrum antibiotics within 1 hour, vasopressors if needed."} |
| name: "Med Admin",
| | ]} |
| questions: [
| | ]; |
| { points: 200, scenario: "A nurse is preparing to administer IV vancomycin. The pharmacy sends it to infuse over 30 minutes.", question: "What concern should the nurse have?", answer: "Vancomycin infused too rapidly causes Red Man Syndrome - flushing, hypotension, and rash due to histamine release. Should infuse over at least 60 minutes (or longer for doses greater than 1g). Contact pharmacy to clarify." },
| | var st={sc:{t1:0,t2:0},tm:1,done:{},sel:null,tmr:30,ti:null,mt:false,ctx:null,mi:null,mp:false}; |
| { points: 400, scenario: "A patient's MAR shows potassium chloride 40 mEq IV ordered. The nurse receives the medication as a 40 mEq vial.", question: "What must the nurse verify before administration?", answer: "IV potassium must NEVER be given as a bolus push - it causes fatal cardiac arrhythmias. Verify it's diluted appropriately (typically no more than 10-20 mEq/hour), infused via pump, and patient has adequate urine output and renal function." },
| | function iA(){if(!st.ctx)st.ctx=new(window.AudioContext||window.webkitAudioContext)();if(st.ctx.state==='suspended')st.ctx.resume();var e=document.getElementById('jepSnd');if(e)e.style.display='none';} |
| { points: 600, scenario: "A nurse is to administer insulin lispro (Humalog) and insulin glargine (Lantus) to a diabetic patient before breakfast.", question: "How should these insulins be administered?", answer: "Give in SEPARATE syringes - Lantus (glargine) should never be mixed with other insulins as it can alter the action of both. Humalog is rapid-acting (give with meal), Lantus is long-acting basal insulin." },
| | function pT(f,d,t,v){if(st.mt||!st.ctx)return;t=t||'sine';v=v||0.3;var o=st.ctx.createOscillator();var g=st.ctx.createGain();o.connect(g);g.connect(st.ctx.destination);o.frequency.value=f;o.type=t;g.gain.value=v;g.gain.exponentialRampToValueAtTime(0.01,st.ctx.currentTime+d);o.start();o.stop(st.ctx.currentTime+d);} |
| { points: 800, scenario: "A patient on IV heparin drip has an aPTT of 120 seconds (therapeutic range 60-80). The patient now needs an invasive procedure.", question: "What should the nurse do?", answer: "Hold heparin infusion, notify provider. If urgent reversal needed, protamine sulfate is the antidote. Monitor for bleeding. The aPTT is supratherapeutic, increasing bleeding risk during any procedure." },
| | function pSel(){iA();pT(523.25,0.1,'sine',0.2);setTimeout(function(){pT(659.25,0.1,'sine',0.2);},50);setTimeout(function(){pT(783.99,0.15,'sine',0.2);},100);} |
| { points: 1000, scenario: "A patient receiving their first dose of IV penicillin develops hives, wheezing, and a blood pressure drop to 80/50 after 5 minutes.", question: "What is occurring and list interventions in order of priority?", answer: "Anaphylaxis. Priority order: 1) Stop infusion immediately, 2) Call for help/code, 3) Epinephrine IM (first-line drug), 4) Establish/maintain airway, 5) IV fluids for hypotension, 6) Diphenhydramine and corticosteroids as adjuncts, 7) Document allergy prominently." }
| | function pCor(){iA();var n=[523.25,659.25,783.99,1046.50];for(var i=0;i<n.length;i++)(function(x){setTimeout(function(){pT(n[x],0.2,'sine',0.25);},x*100);})(i);} |
| ]
| | function pInc(){iA();pT(200,0.3,'sawtooth',0.15);setTimeout(function(){pT(150,0.4,'sawtooth',0.15);},150);} |
| },
| | function pRev(){iA();pT(440,0.1,'triangle',0.2);setTimeout(function(){pT(554.37,0.1,'triangle',0.2);},100);setTimeout(function(){pT(659.25,0.2,'triangle',0.2);},200);} |
| {
| | function pVic(){iA();var m=[523.25,523.25,523.25,523.25,415.30,466.16,523.25,466.16,523.25];var d=[0.15,0.15,0.15,0.3,0.3,0.3,0.15,0.15,0.5];var t=0;for(var i=0;i<m.length;i++)(function(x,tt){setTimeout(function(){pT(m[x],d[x],'sine',0.3);},tt);})(i,t),t+=d[i]*600;} |
| name: "Pathophys",
| | function sMus(){iA();if(st.mi||st.mt)return;st.mp=true;var e=document.getElementById('jepMus');if(e)e.style.display='block';var bn=[130.81,146.83,164.81,174.61,196.00,174.61,164.81,146.83];var ni=0;function pb(){if(st.mt||!st.ctx)return;var c=st.ctx,n=c.currentTime;var bo=c.createOscillator(),bg=c.createGain();bo.connect(bg);bg.connect(c.destination);bo.frequency.value=bn[ni%bn.length];bo.type='triangle';bg.gain.value=0.15;bg.gain.exponentialRampToValueAtTime(0.01,n+0.4);bo.start();bo.stop(n+0.4);var ho=c.createOscillator(),hg=c.createGain();ho.connect(hg);hg.connect(c.destination);ho.frequency.value=bn[ni%bn.length]*2;ho.type='sine';hg.gain.value=0.08;hg.gain.exponentialRampToValueAtTime(0.01,n+0.3);ho.start();ho.stop(n+0.3);var to=c.createOscillator(),tg=c.createGain();to.connect(tg);tg.connect(c.destination);to.frequency.value=1200;to.type='square';tg.gain.value=0.03;tg.gain.exponentialRampToValueAtTime(0.001,n+0.05);to.start();to.stop(n+0.05);ni++;} |
| questions: [
| | pb();st.mi=setInterval(pb,450);} |
| { points: 200, scenario: "A patient with uncontrolled diabetes has blood glucose of 450 mg/dL, is breathing rapidly and deeply, and has fruity-smelling breath.", question: "What condition is this and what causes these symptoms?", answer: "Diabetic Ketoacidosis (DKA). Lack of insulin causes fat breakdown for energy, producing ketones (fruity breath). Metabolic acidosis triggers Kussmaul respirations (deep, rapid) as compensation to blow off CO2." },
| | function xMus(){if(st.mi){clearInterval(st.mi);st.mi=null;}st.mp=false;var e=document.getElementById('jepMus');if(e)e.style.display='none';} |
| { points: 400, scenario: "A patient with COPD on 2L nasal cannula has the oxygen increased to 6L by a family member to help them breathe better. The patient becomes increasingly drowsy.", question: "What is happening physiologically?", answer: "CO2 narcosis. COPD patients may rely on hypoxic drive for breathing stimulus. High-flow oxygen removes this drive, causing hypoventilation, CO2 retention, and respiratory acidosis leading to confusion and somnolence. Return O2 to prescribed level." },
| | function mute(){st.mt=!st.mt;var b=document.getElementById('jepMute');if(b)b.textContent=st.mt?'🔇':'🔊';if(st.mt)xMus();} |
| { points: 600, scenario: "A patient after thyroidectomy develops tingling around the mouth, muscle cramps, and positive Chvostek's sign.", question: "What complication is this and why does it occur?", answer: "Hypocalcemia due to accidental removal or damage to parathyroid glands during surgery. Parathyroid hormone regulates calcium; without it, calcium drops causing neuromuscular irritability. Treat with IV calcium gluconate." },
| | function bld(){var b=document.getElementById('jepBrd');if(!b)return;b.innerHTML='';for(var c=0;c<cats.length;c++){var h=document.createElement('div');h.className='cat';h.textContent=cats[c].name;b.appendChild(h);}for(var q=0;q<5;q++)for(var c=0;c<cats.length;c++){var cl=document.createElement('button');var k=c+'-'+q;cl.className='qcl'+(st.done[k]?' ans':'');cl.textContent=st.done[k]?'':'$'+cats[c].q[q].p;cl.setAttribute('data-c',c);cl.setAttribute('data-q',q);cl.onclick=function(){sel(parseInt(this.getAttribute('data-c')),parseInt(this.getAttribute('data-q')));};b.appendChild(cl);}} |
| { points: 800, scenario: "A trauma patient receives 6 units of packed red blood cells. Labs show: pH 7.28, K+ 6.2 mEq/L, calcium 7.8 mg/dL, and the patient is hypothermic.", question: "What complications of massive transfusion are occurring?", answer: "Metabolic acidosis (citrate metabolism, poor perfusion), hyperkalemia (K+ leaks from stored RBCs), hypocalcemia (citrate binds calcium), and hypothermia (cold blood products). Use blood warmer, monitor closely, may need calcium replacement." },
| | function upd(){var v1=document.getElementById('jepV1'),v2=document.getElementById('jepV2'),t1=document.getElementById('jepT1'),t2=document.getElementById('jepT2'),tr=document.getElementById('jepTrn');if(v1){v1.textContent='$'+st.sc.t1;v1.className='scr '+(st.sc.t1>=0?'pos':'neg');}if(v2){v2.textContent='$'+st.sc.t2;v2.className='scr '+(st.sc.t2>=0?'pos':'neg');}if(t1)t1.className='tms'+(st.tm===1?' act':'');if(t2)t2.className='tms'+(st.tm===2?' act':'');if(tr)tr.textContent='🎯 Team '+st.tm+"'s Turn to Pick";} |
| { points: 1000, scenario: "A patient with severe sepsis has: BP 78/40, HR 128, lactate 6 mmol/L, and urine output of 10 mL/hour for the past 2 hours.", question: "What is occurring pathophysiologically and what are the priority interventions?", answer: "Septic shock with distributive hypotension, tissue hypoperfusion (elevated lactate), and acute kidney injury (oliguria). Priority: Fluid resuscitation (30 mL/kg crystalloid), obtain cultures, administer broad-spectrum antibiotics within 1 hour, vasopressors if fluid-refractory, and monitor lactate clearance." }
| | function sTmr(){st.tmr=30;uTmr();st.ti=setInterval(function(){st.tmr--;uTmr();if(st.tmr<=0){clearInterval(st.ti);xMus();}},1000);} |
| ]
| | function xTmr(){if(st.ti){clearInterval(st.ti);st.ti=null;}} |
| }
| | function uTmr(){var b=document.getElementById('jepTmr');if(b){b.textContent='⏱️ '+st.tmr+'s';b.className='tmb '+(st.tmr<=10?'tmw':'tmn');}} |
| ];
| | function sel(ci,qi){var k=ci+'-'+qi;if(st.done[k])return;pSel();st.sel={c:ci,q:qi};var cat=cats[ci],qn=cat.q[qi];var mc=document.getElementById('jepMCat'),mt=document.getElementById('jepMTm'),sc=document.getElementById('jepScn'),qs=document.getElementById('jepQst'),an=document.getElementById('jepAns'),ab=document.getElementById('jepAsw'),bg=document.getElementById('jepBtg'),mo=document.getElementById('jepQM');if(mc)mc.textContent=cat.name+' - $'+qn.p;if(mt)mt.textContent="Team "+st.tm+"'s Turn";if(sc)sc.textContent=qn.s;if(qs)qs.textContent=qn.q;if(an)an.textContent=qn.a;if(ab)ab.style.display='none';if(bg)bg.innerHTML='<button class="btn brv" onclick="Jep.reveal()">Reveal Answer</button>';if(mo)mo.className='mov act';sTmr();setTimeout(sMus,300);} |
| | | function reveal(){xMus();xTmr();pRev();var ab=document.getElementById('jepAsw'),bg=document.getElementById('jepBtg');if(ab)ab.style.display='block';if(st.sel&&bg){var qn=cats[st.sel.c].q[st.sel.q];bg.innerHTML='<button class="btn bcr" onclick="Jep.ans(true)">✓ Correct (+$'+qn.p+')</button><button class="btn bic" onclick="Jep.ans(false)">✗ Incorrect (-$'+qn.p+')</button>';}} |
| var state = {
| | function ans(cor){xMus();xTmr();cor?pCor():pInc();var qn=cats[st.sel.c].q[st.sel.q],k=st.sel.c+'-'+st.sel.q;st.tm===1?st.sc.t1+=(cor?qn.p:-qn.p):st.sc.t2+=(cor?qn.p:-qn.p);st.done[k]=true;st.tm=st.tm===1?2:1;var mo=document.getElementById('jepQM');if(mo)mo.className='mov';bld();upd();if(Object.keys(st.done).length===cats.length*5)setTimeout(go,500);} |
| scores: { team1: 0, team2: 0 },
| | function go(){pVic();var w;if(st.sc.t1>st.sc.t2)w="Team 1 Wins!";else if(st.sc.t2>st.sc.t1)w="Team 2 Wins!";else w="It's a Tie!";var fs=document.getElementById('jepFsc'),wn=document.getElementById('jepWin'),mo=document.getElementById('jepGO');if(fs)fs.innerHTML='<p>Team 1: $'+st.sc.t1+'</p><p>Team 2: $'+st.sc.t2+'</p>';if(wn)wn.textContent=w;if(mo)mo.className='mov act';} |
| currentTeam: 1,
| | function reset(){xMus();xTmr();st.sc={t1:0,t2:0};st.tm=1;st.done={};st.sel=null;st.tmr=30;var qm=document.getElementById('jepQM'),gm=document.getElementById('jepGO'),sn=document.getElementById('jepSnd');if(qm)qm.className='mov';if(gm)gm.className='mov';if(sn)sn.style.display='block';bld();upd();} |
| answeredQuestions: {},
| | function init(){bld();upd();} |
| selectedQuestion: null,
| | if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',init);else init(); |
| timer: 30,
| | return{mute:mute,reveal:reveal,ans:ans,reset:reset}; |
| timerInterval: null,
| |
| isMuted: false,
| |
| audioContext: null,
| |
| musicInterval: null,
| |
| musicPlaying: false
| |
| };
| |
| | |
| function initAudio() {
| |
| if (!state.audioContext) {
| |
| state.audioContext = new (window.AudioContext || window.webkitAudioContext)();
| |
| }
| |
| if (state.audioContext.state === 'suspended') {
| |
| state.audioContext.resume();
| |
| }
| |
| var prompt = document.getElementById('jeopardySoundPrompt');
| |
| if (prompt) prompt.style.display = 'none';
| |
| }
| |
| | |
| function playTone(frequency, duration, type, volume) {
| |
| if (state.isMuted || !state.audioContext) return;
| |
| type = type || 'sine';
| |
| volume = volume || 0.3;
| |
| var oscillator = state.audioContext.createOscillator();
| |
| var gainNode = state.audioContext.createGain();
| |
| oscillator.connect(gainNode);
| |
| gainNode.connect(state.audioContext.destination);
| |
| oscillator.frequency.value = frequency;
| |
| oscillator.type = type;
| |
| gainNode.gain.value = volume;
| |
| gainNode.gain.exponentialRampToValueAtTime(0.01, state.audioContext.currentTime + duration);
| |
| oscillator.start();
| |
| oscillator.stop(state.audioContext.currentTime + duration);
| |
| }
| |
| | |
| function playSelectSound() {
| |
| initAudio();
| |
| playTone(523.25, 0.1, 'sine', 0.2);
| |
| setTimeout(function() { playTone(659.25, 0.1, 'sine', 0.2); }, 50);
| |
| setTimeout(function() { playTone(783.99, 0.15, 'sine', 0.2); }, 100);
| |
| }
| |
| | |
| function playCorrectSound() {
| |
| initAudio();
| |
| var notes = [523.25, 659.25, 783.99, 1046.50];
| |
| for (var i = 0; i < notes.length; i++) {
| |
| (function(idx) {
| |
| setTimeout(function() { playTone(notes[idx], 0.2, 'sine', 0.25); }, idx * 100);
| |
| })(i);
| |
| }
| |
| }
| |
| | |
| function playIncorrectSound() {
| |
| initAudio();
| |
| playTone(200, 0.3, 'sawtooth', 0.15);
| |
| setTimeout(function() { playTone(150, 0.4, 'sawtooth', 0.15); }, 150);
| |
| }
| |
| | |
| function playRevealSound() {
| |
| initAudio();
| |
| playTone(440, 0.1, 'triangle', 0.2);
| |
| setTimeout(function() { playTone(554.37, 0.1, 'triangle', 0.2); }, 100);
| |
| setTimeout(function() { playTone(659.25, 0.2, 'triangle', 0.2); }, 200);
| |
| }
| |
| | |
| function playVictorySound() {
| |
| initAudio();
| |
| var melody = [523.25, 523.25, 523.25, 523.25, 415.30, 466.16, 523.25, 466.16, 523.25];
| |
| var durations = [0.15, 0.15, 0.15, 0.3, 0.3, 0.3, 0.15, 0.15, 0.5];
| |
| var time = 0;
| |
| for (var i = 0; i < melody.length; i++) {
| |
| (function(idx, t) {
| |
| setTimeout(function() { playTone(melody[idx], durations[idx], 'sine', 0.3); }, t);
| |
| })(i, time);
| |
| time += durations[i] * 600;
| |
| }
| |
| }
| |
| | |
| function startThinkingMusic() {
| |
| initAudio();
| |
| if (state.musicInterval || state.isMuted) return;
| |
| state.musicPlaying = true;
| |
| var indicator = document.getElementById('jeopardyMusicIndicator');
| |
| if (indicator) indicator.style.display = 'block';
| |
| var baseNotes = [130.81, 146.83, 164.81, 174.61, 196.00, 174.61, 164.81, 146.83];
| |
| var noteIndex = 0;
| |
| function playBeat() {
| |
| if (state.isMuted || !state.audioContext) return;
| |
| var ctx = state.audioContext;
| |
| var now = ctx.currentTime;
| |
| var bassOsc = ctx.createOscillator();
| |
| var bassGain = ctx.createGain();
| |
| bassOsc.connect(bassGain);
| |
| bassGain.connect(ctx.destination);
| |
| bassOsc.frequency.value = baseNotes[noteIndex % baseNotes.length];
| |
| bassOsc.type = 'triangle';
| |
| bassGain.gain.value = 0.15;
| |
| bassGain.gain.exponentialRampToValueAtTime(0.01, now + 0.4);
| |
| bassOsc.start();
| |
| bassOsc.stop(now + 0.4);
| |
| var harmOsc = ctx.createOscillator();
| |
| var harmGain = ctx.createGain();
| |
| harmOsc.connect(harmGain);
| |
| harmGain.connect(ctx.destination);
| |
| harmOsc.frequency.value = baseNotes[noteIndex % baseNotes.length] * 2;
| |
| harmOsc.type = 'sine';
| |
| harmGain.gain.value = 0.08;
| |
| harmGain.gain.exponentialRampToValueAtTime(0.01, now + 0.3);
| |
| harmOsc.start();
| |
| harmOsc.stop(now + 0.3);
| |
| var tickOsc = ctx.createOscillator();
| |
| var tickGain = ctx.createGain();
| |
| tickOsc.connect(tickGain);
| |
| tickGain.connect(ctx.destination);
| |
| tickOsc.frequency.value = 1200;
| |
| tickOsc.type = 'square';
| |
| tickGain.gain.value = 0.03;
| |
| tickGain.gain.exponentialRampToValueAtTime(0.001, now + 0.05);
| |
| tickOsc.start();
| |
| tickOsc.stop(now + 0.05);
| |
| noteIndex++;
| |
| }
| |
| playBeat();
| |
| state.musicInterval = setInterval(playBeat, 450);
| |
| }
| |
| | |
| function stopThinkingMusic() {
| |
| if (state.musicInterval) {
| |
| clearInterval(state.musicInterval);
| |
| state.musicInterval = null;
| |
| }
| |
| state.musicPlaying = false;
| |
| var indicator = document.getElementById('jeopardyMusicIndicator');
| |
| if (indicator) indicator.style.display = 'none';
| |
| }
| |
| | |
| function toggleMute() {
| |
| state.isMuted = !state.isMuted;
| |
| var btn = document.getElementById('jeopardyMuteBtn');
| |
| if (btn) btn.textContent = state.isMuted ? '🔇' : '🔊';
| |
| if (state.isMuted) stopThinkingMusic();
| |
| }
| |
| | |
| function buildGameBoard() {
| |
| var board = document.getElementById('jeopardyGameBoard');
| |
| if (!board) return;
| |
| board.innerHTML = '';
| |
| for (var c = 0; c < categories.length; c++) {
| |
| var header = document.createElement('div');
| |
| header.className = 'category-header';
| |
| header.textContent = categories[c].name;
| |
| board.appendChild(header);
| |
| }
| |
| for (var q = 0; q < 5; q++) {
| |
| for (var c = 0; c < categories.length; c++) {
| |
| var cell = document.createElement('button');
| |
| var key = c + '-' + q;
| |
| cell.className = 'question-cell' + (state.answeredQuestions[key] ? ' answered' : '');
| |
| cell.textContent = state.answeredQuestions[key] ? '' : '$' + categories[c].questions[q].points;
| |
| cell.setAttribute('data-cat', c);
| |
| cell.setAttribute('data-q', q);
| |
| cell.onclick = function() {
| |
| var catIdx = parseInt(this.getAttribute('data-cat'));
| |
| var qIdx = parseInt(this.getAttribute('data-q'));
| |
| selectQuestion(catIdx, qIdx);
| |
| };
| |
| board.appendChild(cell);
| |
| }
| |
| }
| |
| }
| |
| | |
| function updateScoreboard() {
| |
| var t1v = document.getElementById('jeopardyTeam1Value');
| |
| var t2v = document.getElementById('jeopardyTeam2Value');
| |
| var t1s = document.getElementById('jeopardyTeam1Score');
| |
| var t2s = document.getElementById('jeopardyTeam2Score');
| |
| var turn = document.getElementById('jeopardyCurrentTurn');
| |
| if (t1v) {
| |
| t1v.textContent = '$' + state.scores.team1;
| |
| t1v.className = 'score ' + (state.scores.team1 >= 0 ? 'score-positive' : 'score-negative');
| |
| }
| |
| if (t2v) {
| |
| t2v.textContent = '$' + state.scores.team2;
| |
| t2v.className = 'score ' + (state.scores.team2 >= 0 ? 'score-positive' : 'score-negative');
| |
| }
| |
| if (t1s) t1s.className = 'team-score' + (state.currentTeam === 1 ? ' active' : '');
| |
| if (t2s) t2s.className = 'team-score' + (state.currentTeam === 2 ? ' active' : '');
| |
| if (turn) turn.textContent = '🎯 Team ' + state.currentTeam + "'s Turn to Pick";
| |
| }
| |
| | |
| function startTimer() {
| |
| state.timer = 30;
| |
| updateTimerDisplay();
| |
| state.timerInterval = setInterval(function() {
| |
| state.timer--;
| |
| updateTimerDisplay();
| |
| if (state.timer <= 0) {
| |
| clearInterval(state.timerInterval);
| |
| stopThinkingMusic();
| |
| }
| |
| }, 1000);
| |
| }
| |
| | |
| function stopTimer() {
| |
| if (state.timerInterval) {
| |
| clearInterval(state.timerInterval);
| |
| state.timerInterval = null;
| |
| }
| |
| }
| |
| | |
| function updateTimerDisplay() {
| |
| var badge = document.getElementById('jeopardyTimerBadge');
| |
| if (badge) {
| |
| badge.textContent = '⏱️ ' + state.timer + 's';
| |
| badge.className = 'timer-badge ' + (state.timer <= 10 ? 'timer-warning' : 'timer-normal');
| |
| }
| |
| }
| |
| | |
| function selectQuestion(categoryIndex, questionIndex) {
| |
| var key = categoryIndex + '-' + questionIndex;
| |
| if (state.answeredQuestions[key]) return;
| |
| playSelectSound();
| |
| state.selectedQuestion = { categoryIndex: categoryIndex, questionIndex: questionIndex };
| |
| var category = categories[categoryIndex];
| |
| var question = category.questions[questionIndex];
| |
| var modalCat = document.getElementById('jeopardyModalCategory');
| |
| var modalTeam = document.getElementById('jeopardyModalTeam');
| |
| var scenarioText = document.getElementById('jeopardyScenarioText');
| |
| var questionText = document.getElementById('jeopardyQuestionText');
| |
| var answerText = document.getElementById('jeopardyAnswerText');
| |
| var answerBox = document.getElementById('jeopardyAnswerBox');
| |
| var btnGroup = document.getElementById('jeopardyButtonGroup');
| |
| var modal = document.getElementById('jeopardyQuestionModal');
| |
| if (modalCat) modalCat.textContent = category.name + ' - $' + question.points;
| |
| if (modalTeam) modalTeam.textContent = "Team " + state.currentTeam + "'s Turn";
| |
| if (scenarioText) scenarioText.textContent = question.scenario;
| |
| if (questionText) questionText.textContent = question.question;
| |
| if (answerText) answerText.textContent = question.answer;
| |
| if (answerBox) answerBox.style.display = 'none';
| |
| if (btnGroup) btnGroup.innerHTML = '<button class="btn btn-reveal" onclick="JeopardyGame.revealAnswer()">Reveal Answer</button>';
| |
| if (modal) modal.className = 'modal-overlay active';
| |
| startTimer();
| |
| setTimeout(startThinkingMusic, 300);
| |
| }
| |
| | |
| function revealAnswer() {
| |
| stopThinkingMusic();
| |
| stopTimer();
| |
| playRevealSound();
| |
| var answerBox = document.getElementById('jeopardyAnswerBox');
| |
| var btnGroup = document.getElementById('jeopardyButtonGroup');
| |
| if (answerBox) answerBox.style.display = 'block';
| |
| if (state.selectedQuestion && btnGroup) {
| |
| var question = categories[state.selectedQuestion.categoryIndex].questions[state.selectedQuestion.questionIndex];
| |
| var points = question.points;
| |
| btnGroup.innerHTML = '<button class="btn btn-correct" onclick="JeopardyGame.handleAnswer(true)">✓ Correct (+$' + points + ')</button>' +
| |
| '<button class="btn btn-incorrect" onclick="JeopardyGame.handleAnswer(false)">✗ Incorrect (-$' + points + ')</button>';
| |
| }
| |
| }
| |
| | |
| function handleAnswer(correct) {
| |
| stopThinkingMusic();
| |
| stopTimer();
| |
| if (correct) {
| |
| playCorrectSound();
| |
| } else {
| |
| playIncorrectSound();
| |
| }
| |
| var question = categories[state.selectedQuestion.categoryIndex].questions[state.selectedQuestion.questionIndex];
| |
| var points = question.points;
| |
| var key = state.selectedQuestion.categoryIndex + '-' + state.selectedQuestion.questionIndex;
| |
| if (state.currentTeam === 1) {
| |
| state.scores.team1 += correct ? points : -points;
| |
| } else {
| |
| state.scores.team2 += correct ? points : -points;
| |
| }
| |
| state.answeredQuestions[key] = true;
| |
| state.currentTeam = state.currentTeam === 1 ? 2 : 1;
| |
| var modal = document.getElementById('jeopardyQuestionModal');
| |
| if (modal) modal.className = 'modal-overlay';
| |
| buildGameBoard();
| |
| updateScoreboard();
| |
| var totalAnswered = Object.keys(state.answeredQuestions).length;
| |
| if (totalAnswered === categories.length * 5) {
| |
| setTimeout(showGameOver, 500);
| |
| }
| |
| }
| |
| | |
| function showGameOver() {
| |
| playVictorySound();
| |
| var winner;
| |
| if (state.scores.team1 > state.scores.team2) {
| |
| winner = "Team 1 Wins!";
| |
| } else if (state.scores.team2 > state.scores.team1) {
| |
| winner = "Team 2 Wins!";
| |
| } else {
| |
| winner = "It's a Tie!";
| |
| }
| |
| var finalScores = document.getElementById('jeopardyFinalScores');
| |
| var winnerText = document.getElementById('jeopardyWinnerText');
| |
| var modal = document.getElementById('jeopardyGameOverModal');
| |
| if (finalScores) finalScores.innerHTML = '<p>Team 1: $' + state.scores.team1 + '</p><p>Team 2: $' + state.scores.team2 + '</p>';
| |
| if (winnerText) winnerText.textContent = winner;
| |
| if (modal) modal.className = 'modal-overlay active';
| |
| }
| |
| | |
| function reset() {
| |
| stopThinkingMusic();
| |
| stopTimer();
| |
| state.scores = { team1: 0, team2: 0 };
| |
| state.currentTeam = 1;
| |
| state.answeredQuestions = {};
| |
| state.selectedQuestion = null;
| |
| state.timer = 30;
| |
| var qModal = document.getElementById('jeopardyQuestionModal');
| |
| var goModal = document.getElementById('jeopardyGameOverModal');
| |
| var prompt = document.getElementById('jeopardySoundPrompt');
| |
| if (qModal) qModal.className = 'modal-overlay';
| |
| if (goModal) goModal.className = 'modal-overlay';
| |
| if (prompt) prompt.style.display = 'block';
| |
| buildGameBoard();
| |
| updateScoreboard();
| |
| }
| |
| | |
| function init() {
| |
| buildGameBoard();
| |
| updateScoreboard();
| |
| }
| |
| | |
| if (document.readyState === 'loading') {
| |
| document.addEventListener('DOMContentLoaded', init);
| |
| } else {
| |
| init();
| |
| }
| |
| | |
| return {
| |
| toggleMute: toggleMute,
| |
| revealAnswer: revealAnswer,
| |
| handleAnswer: handleAnswer,
| |
| reset: reset
| |
| };
| |
| })(); | | })(); |
| </script> | | </script> |
| </div></includeonly> | | </div></includeonly> |