|
|
| (6 intermediate revisions by the same user not shown) |
| Line 1: |
Line 1: |
| <noinclude> | | <noinclude> |
| Nursing Pharmacology Jeopardy Game for NSG 520 - Pathophysiology and Pharmacology | | Nursing Pharmacology Jeopardy Game for NSG 520 |
|
| |
|
| ==Usage== | | ==Usage== |
| <nowiki>{{#widget:520Jeapordy}}</nowiki> | | <nowiki>{{#widget:520Jeapordy}}</nowiki> |
| | | </noinclude><includeonly><div id="jepApp">Loading game...</div> |
| </noinclude><includeonly><div id="jep-container"> | | <script type="text/javascript"> |
| <style> | | //<![CDATA[ |
| .jep-game * { margin: 0; padding: 0; box-sizing: border-box; }
| | (function(){ |
| .jep-game { font-family: Arial, sans-serif; background: linear-gradient(135deg, rgb(30,58,95) 0%, rgb(12,25,41) 100%); padding: 20px; border-radius: 8px; }
| | var J={s1:0,s2:0,tm:1,done:{},cur:null,tmr:30,ti:null,el:null,mute:false,actx:null}; |
| .jep-game .container { max-width: 1200px; margin: 0 auto; }
| | var C=[ |
| .jep-game .title { text-align: center; color: rgb(251,191,36); font-size: 2rem; font-weight: bold; margin-bottom: 8px; }
| | {n:"Cardiovascular",q:[ |
| .jep-game .subtitle { text-align: center; color: rgb(147,197,253); margin-bottom: 15px; font-size: 0.9rem; } | | {p:200,s:"A 58-year-old patient with heart failure is prescribed digoxin. Before administering, 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 apical pulse is below 60 bpm due to risk of toxicity and bradycardia."}, |
| .jep-game .scoreboard { display: flex; justify-content: center; gap: 30px; margin-bottom: 15px; }
| | {p:400,s:"A patient taking warfarin for atrial fibrillation has an INR of 4.8 with dark, tarry stools and dizziness.",q:"What is the priority nursing intervention?",a:"Hold warfarin, notify provider immediately, prepare for possible Vitamin K. Patient shows GI bleeding signs with supratherapeutic INR."}, |
| .jep-game .team { background: rgb(30,64,175); padding: 10px 20px; border-radius: 8px; text-align: center; } | | {p:600,s:"A post-MI patient shows wide QRS complex rhythm at 180 bpm with no detectable pulse.",q:"What is this rhythm and immediate action?",a:"Pulseless VT. Begin CPR immediately and prepare for defibrillation per ACLS protocol."}, |
| .jep-game .team.active { box-shadow: 0 0 15px rgb(251,191,36); } | | {p:800,s:"A CHF patient started on carvedilol reports increased SOB and 5 lb weight gain after two weeks.",q:"Why might this occur?",a:"Beta-blockers can initially worsen heart failure symptoms before long-term benefit. Assess fluid retention, monitor daily weights."}, |
| .jep-game .team h3 { color: white; margin-bottom: 5px; font-size: 0.95rem; }
| | {p:1000,s:"A hypertensive patient on lisinopril develops persistent dry cough. Provider switches to losartan.",q:"Best explanation for this change?",a:"ACE inhibitors cause dry cough from bradykinin accumulation. ARBs work similarly without this effect."} |
| .jep-game .team .score { font-size: 1.4rem; font-weight: bold; } | | ]}, |
| .jep-game .score-pos { color: rgb(74,222,128); } | | {n:"Pain Mgmt",q:[ |
| .jep-game .score-neg { color: rgb(248,113,113); }
| | {p:200,s:"Post-surgical patient rates pain 7/10, requests PRN morphine. Last dose 3 hours ago, ordered q4h.",q:"Appropriate nursing action?",a:"Offer non-pharmacological interventions, reassess in 1 hour. Cannot give morphine until 4-hour interval passes."}, |
| .jep-game .turn-indicator { text-align: center; color: rgb(251,191,36); font-size: 1rem; margin-bottom: 12px; } | | {p:400,s:"Elderly dementia patient grimacing, guarding abdomen, restless but cannot verbally report pain.",q:"What pain assessment tool to use?",a:"Behavioral pain scale like PAINAD or FLACC. Assess nonverbal cues."}, |
| .jep-game .board { display: grid; grid-template-columns: repeat(6, 1fr); gap: 5px; margin-bottom: 15px; }
| | {p:600,s:"Chronic back pain patient on oxycodone 6 months now needs higher doses for same relief.",q:"What is this vs addiction?",a:"Tolerance - physiological adaptation. Differs from addiction which involves compulsive use despite harm."}, |
| .jep-game .cat-header { background: rgb(30,64,175); color: white; padding: 10px 5px; text-align: center; font-weight: bold; font-size: 0.8rem; border-radius: 5px 5px 0 0; min-height: 50px; display: flex; align-items: center; justify-content: center; }
| | {p:800,s:"Patient on IV morphine PCA has RR of 8, difficult to arouse, pinpoint pupils.",q:"What is occurring and priority interventions?",a:"Opioid overdose. Stop PCA, stimulate patient, prepare naloxone, support airway."}, |
| .jep-game .cell { background: rgb(37,99,235); color: rgb(251,191,36); padding: 15px 5px; text-align: center; font-size: 1.2rem; font-weight: bold; border-radius: 5px; cursor: pointer; border: none; width: 100%; }
| | {p:1000,s:"Cancer patient on MS Contin still has breakthrough pain episodes.",q:"What medication modification to anticipate?",a:"Add immediate-release morphine for breakthrough, typically 10-15 percent of 24-hour dose."} |
| .jep-game .cell:hover:not(.used) { background: rgb(59,130,246); }
| | ]}, |
| .jep-game .cell.used { background: rgb(30,58,95); color: rgb(30,58,95); cursor: default; }
| | {n:"Teaching",q:[ |
| .jep-game .btn-reset { background: rgb(220,38,38); color: white; padding: 8px 16px; border-radius: 5px; font-weight: bold; cursor: pointer; border: none; display: block; margin: 0 auto; }
| | {p:200,s:"New diabetic needs insulin teaching but appears anxious and keeps checking phone.",q:"What should nurse do first?",a:"Assess readiness to learn. Address anxiety, minimize distractions, determine learning style."}, |
| .jep-game .btn-reset:hover { background: rgb(185,28,28); }
| | {p:400,s:"Elderly patient on new warfarin has hearing loss and reads at 6th-grade level.",q:"Teaching strategies to employ?",a:"Face patient, simple language, large print materials at appropriate level, teach-back method."}, |
| .jep-game .btn-mute { background: rgb(30,64,175); color: white; padding: 8px 12px; border-radius: 5px; border: none; cursor: pointer; font-size: 1.1rem; margin-left: 10px; }
| | {p:600,s:"Patient discharged on metformin asks about drinking alcohol on weekends.",q:"What education to provide?",a:"Alcohol increases lactic acidosis risk with metformin. Limit alcohol, never on empty stomach."}, |
| .jep-game .tips { text-align: center; color: rgb(147,197,253); font-size: 0.75rem; margin-top: 10px; } | | {p:800,s:"CHF patient discharge - nurse has 15 minutes to teach meds, diet, activity, warning signs.",q:"How to prioritize?",a:"Survival skills: daily weights, sodium restriction basics, med names and times, warning signs."}, |
| .jep-game .question-view { background: rgb(30,64,175); border-radius: 8px; padding: 20px; color: white; }
| | {p:1000,s:"16-year-old with new epilepsy needs phenytoin teaching. Mother wants to handle all meds.",q:"Developmental considerations?",a:"Adolescents need autonomy. Include teen, address appearance concerns and driving restrictions."} |
| .jep-game .q-header { text-align: center; margin-bottom: 15px; } | | ]}, |
| .jep-game .q-category { display: inline-block; background: rgb(251,191,36); color: rgb(30,58,95); padding: 5px 15px; border-radius: 15px; font-weight: bold; font-size: 0.9rem; }
| | {n:"GI/Hepatic",q:[ |
| .jep-game .q-team { color: rgb(251,191,36); margin-top: 8px; }
| | {p:200,s:"Cirrhosis patient has ammonia 95 (normal 15-45), confused with asterixis.",q:"What medication and why?",a:"Lactulose - acidifies colon, converts ammonia to ammonium, promotes elimination."}, |
| .jep-game .q-timer { text-align: center; margin-bottom: 12px; } | | {p:400,s:"Post-cholecystectomy patient has severe right shoulder pain despite abdominal surgery.",q:"What causes this?",a:"Referred pain from CO2 irritating diaphragm. Encourage ambulation to absorb gas."}, |
| .jep-game .timer-badge { display: inline-block; padding: 6px 16px; border-radius: 15px; font-size: 1.2rem; font-weight: bold; background: rgb(251,191,36); color: rgb(30,58,95); } | | {p:600,s:"PUD patient prescribed omeprazole, clarithromycin, amoxicillin for 14 days.",q:"What is this treating?",a:"H. pylori triple therapy. Complete entire course, PPI before meals."}, |
| .jep-game .timer-badge.warning { background: rgb(220,38,38); color: white; }
| | {p:800,s:"Acute pancreatitis patient with NG tube, IV fluids, NPO asks why they cannot eat.",q:"Best explanation?",a:"Pancreas needs rest. Eating stimulates enzyme secretion worsening inflammation."}, |
| .jep-game .scenario-box { background: rgb(29,78,216); border-radius: 6px; padding: 12px; margin-bottom: 10px; }
| | {p:1000,s:"Crohns patient on long-term prednisone has moon face, central obesity, glucose 180.",q:"What is occurring?",a:"Cushing syndrome from steroids. Never stop abruptly, monitor glucose, report infections."} |
| .jep-game .scenario-box h4 { color: rgb(251,191,36); margin-bottom: 6px; font-size: 0.9rem; } | | ]}, |
| .jep-game .scenario-box p { font-size: 0.95rem; line-height: 1.4; }
| | {n:"Med Admin",q:[ |
| .jep-game .question-box { background: rgb(37,99,235); border-radius: 6px; padding: 12px; margin-bottom: 10px; }
| | {p:200,s:"Nurse preparing IV vancomycin - pharmacy says infuse over 30 minutes.",q:"What concern?",a:"Too fast causes Red Man Syndrome. Should infuse over at least 60 minutes."}, |
| .jep-game .question-box h4 { color: rgb(251,191,36); margin-bottom: 6px; font-size: 0.9rem; } | | {p:400,s:"MAR shows KCl 40 mEq IV. Nurse receives 40 mEq vial.",q:"What must nurse verify?",a:"Never IV push - fatal arrhythmias. Dilute properly, use pump, max 10-20 mEq per hour."}, |
| .jep-game .question-box p { font-size: 1rem; font-weight: 600; }
| | {p:600,s:"Nurse to give insulin lispro and glargine before breakfast.",q:"How to administer?",a:"SEPARATE syringes - Lantus never mixed with other insulins."}, |
| .jep-game .answer-box { background: rgb(22,101,52); border-radius: 6px; padding: 12px; margin-bottom: 10px; }
| | {p:800,s:"Patient on heparin drip has aPTT 120 (therapeutic 60-80), needs procedure.",q:"What should nurse do?",a:"Hold heparin, notify provider. Protamine sulfate for urgent reversal."}, |
| .jep-game .answer-box h4 { color: rgb(251,191,36); margin-bottom: 6px; font-size: 0.9rem; } | | {p:1000,s:"First IV penicillin dose - patient develops hives, wheezing, BP 80/50.",q:"What and priority interventions?",a:"Anaphylaxis. Stop infusion, call help, epinephrine IM, airway, IV fluids."} |
| .jep-game .answer-box p { font-size: 0.95rem; line-height: 1.4; }
| | ]}, |
| .jep-game .btn-group { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; margin-top: 15px; }
| | {n:"Pathophys",q:[ |
| .jep-game .btn { padding: 10px 20px; border-radius: 5px; font-weight: bold; cursor: pointer; border: none; font-size: 0.9rem; } | | {p:200,s:"Uncontrolled diabetic: glucose 450, rapid deep breathing, fruity breath.",q:"Condition and symptom causes?",a:"DKA. No insulin causes fat breakdown and ketones. Acidosis triggers Kussmaul respirations."}, |
| .jep-game .btn-reveal { background: rgb(251,191,36); color: rgb(30,58,95); }
| | {p:400,s:"COPD patient on 2L O2 - family increases to 6L. Patient becomes drowsy.",q:"What is happening?",a:"CO2 narcosis. High O2 removes hypoxic drive causing hypoventilation."}, |
| .jep-game .btn-reveal:hover { background: rgb(252,211,77); } | | {p:600,s:"Post-thyroidectomy: mouth tingling, muscle cramps, positive Chvostek sign.",q:"Complication and why?",a:"Hypocalcemia from parathyroid damage. Treat with IV calcium gluconate."}, |
| .jep-game .btn-correct { background: rgb(34,197,94); color: white; }
| | {p:800,s:"Trauma patient got 6 units PRBCs. Labs: pH 7.28, K+ 6.2, Ca 7.8, hypothermia.",q:"Massive transfusion complications?",a:"Acidosis, hyperkalemia, hypocalcemia, hypothermia."}, |
| .jep-game .btn-correct:hover { background: rgb(22,163,74); } | | {p:1000,s:"Sepsis: BP 78/40, HR 128, lactate 6, urine 10 mL/hr x2 hours.",q:"What occurring and priorities?",a:"Septic shock. Fluids 30 mL per kg, cultures, antibiotics within 1 hour, vasopressors."} |
| .jep-game .btn-wrong { background: rgb(239,68,68); color: white; } | | ]} |
| .jep-game .btn-wrong:hover { background: rgb(220,38,38); }
| | ]; |
| .jep-game .game-over { text-align: center; padding: 30px; } | | function initAudio(){ |
| .jep-game .game-over h1 { font-size: 2rem; color: rgb(251,191,36); margin-bottom: 15px; }
| | if(!J.actx){try{J.actx=new(window.AudioContext||window.webkitAudioContext)();}catch(e){}} |
| .jep-game .game-over .final { font-size: 1.2rem; color: white; margin-bottom: 10px; } | | if(J.actx&&J.actx.state==="suspended"){J.actx.resume();} |
| .jep-game .game-over .winner { font-size: 1.5rem; color: rgb(251,191,36); font-weight: bold; margin-bottom: 20px; }
| | } |
| .jep-hidden { display: none !important; } | | function tone(f,d,t,v){ |
| </style>
| | if(J.mute||!J.actx)return; |
| | | try{ |
| <div class="jep-game">
| | var o=J.actx.createOscillator(); |
| <div id="jepBoardView" class="container">
| | var g=J.actx.createGain(); |
| <h1 class="title">🏥 Nursing Pharmacology Jeopardy</h1>
| | o.connect(g); |
| <p class="subtitle">NSG 520 - Pathophysiology and Pharmacology</p>
| | g.connect(J.actx.destination); |
| <div class="scoreboard">
| | o.frequency.value=f; |
| <div class="team active" id="jepTeam1"><h3>Team 1</h3><div class="score score-pos" id="jepScore1">$0</div></div>
| | o.type=t||"sine"; |
| <div class="team" id="jepTeam2"><h3>Team 2</h3><div class="score score-pos" id="jepScore2">$0</div></div>
| | g.gain.value=v||0.3; |
| </div>
| | g.gain.exponentialRampToValueAtTime(0.01,J.actx.currentTime+d); |
| <p class="turn-indicator" id="jepTurn">🎯 Team 1's Turn to Pick</p>
| | o.start(); |
| <div class="board" id="jepBoard"></div>
| | o.stop(J.actx.currentTime+d); |
| <div style="text-align:center;">
| | }catch(e){} |
| <button class="btn-reset" onclick="JepGame.resetGame()">Reset Game</button>
| | } |
| <button class="btn-mute" id="jepMuteBtn" onclick="JepGame.toggleMute()">🔊</button>
| | function sndSelect(){ |
| </div>
| | initAudio(); |
| <p class="tips">💡 Questions increase in difficulty with point value | 🎵 Sound effects included</p>
| | tone(523,0.1,"sine",0.2); |
| </div> | | setTimeout(function(){tone(659,0.1,"sine",0.2);},50); |
| | | setTimeout(function(){tone(784,0.15,"sine",0.2);},100); |
| <div id="jepQuestionView" class="container jep-hidden">
| | } |
| <div class="question-view">
| | function sndCorrect(){ |
| <div class="q-header">
| | initAudio(); |
| <span class="q-category" id="jepQCat">Category - $000</span>
| | var n=[523,659,784,1047]; |
| <p class="q-team" id="jepQTeam">Team 1's Turn</p>
| | for(var i=0;i<n.length;i++){ |
| </div>
| | (function(x){setTimeout(function(){tone(n[x],0.2,"sine",0.25);},x*100);})(i); |
| <div class="q-timer"><span class="timer-badge" id="jepTimer">⏱️ 30s</span></div>
| | } |
| <div class="scenario-box"><h4>📋 Scenario:</h4><p id="jepScenario"></p></div>
| | } |
| <div class="question-box"><h4>❓ Question:</h4><p id="jepQuestion"></p></div>
| | function sndWrong(){ |
| <div id="jepAnswerBox" class="answer-box jep-hidden"><h4>✅ Answer:</h4><p id="jepAnswer"></p></div>
| | initAudio(); |
| <div class="btn-group" id="jepButtons">
| | tone(200,0.3,"sawtooth",0.15); |
| <button class="btn btn-reveal" onclick="JepGame.showAnswer()">Reveal Answer</button>
| | setTimeout(function(){tone(150,0.4,"sawtooth",0.15);},150); |
| </div>
| | } |
| </div>
| | function sndReveal(){ |
| </div>
| | initAudio(); |
| | | tone(440,0.1,"triangle",0.2); |
| <div id="jepGameOverView" class="container jep-hidden">
| | setTimeout(function(){tone(554,0.1,"triangle",0.2);},100); |
| <div class="question-view game-over">
| | setTimeout(function(){tone(659,0.2,"triangle",0.2);},200); |
| <h1>🏆 Game Over!</h1>
| | } |
| <div class="final" id="jepFinalScores"></div>
| | var css='<style>#jepApp .jG{font-family:Arial,sans-serif;background:linear-gradient(135deg,rgb(30,58,95),rgb(12,25,41));padding:15px;border-radius:8px;color:white}#jepApp .jG *{margin:0;padding:0;box-sizing:border-box}#jepApp .t{text-align:center;color:rgb(251,191,36);font-size:1.6rem;font-weight:bold;margin-bottom:5px}#jepApp .st{text-align:center;color:rgb(147,197,253);margin-bottom:10px;font-size:.8rem}#jepApp .sb{display:flex;justify-content:center;gap:20px;margin-bottom:8px}#jepApp .tm{background:rgb(30,64,175);padding:8px 15px;border-radius:6px;text-align:center}#jepApp .tm.on{box-shadow:0 0 10px rgb(251,191,36)}#jepApp .tm h3{color:white;font-size:.8rem;margin-bottom:2px}#jepApp .sc{font-size:1.1rem;font-weight:bold}#jepApp .ps{color:rgb(74,222,128)}#jepApp .ng{color:rgb(248,113,113)}#jepApp .tr{text-align:center;color:rgb(251,191,36);font-size:.85rem;margin-bottom:8px}#jepApp .bd{display:grid;grid-template-columns:repeat(6,1fr);gap:3px;margin-bottom:10px}#jepApp .ct{background:rgb(30,64,175);color:white;padding:6px 3px;text-align:center;font-weight:bold;font-size:.65rem;border-radius:3px 3px 0 0;min-height:35px;display:flex;align-items:center;justify-content:center}#jepApp .cl{background:rgb(37,99,235);color:rgb(251,191,36);padding:10px 3px;text-align:center;font-size:.9rem;font-weight:bold;border-radius:3px;cursor:pointer;border:none}#jepApp .cl:hover{background:rgb(59,130,246)}#jepApp .cl.dn{background:rgb(30,58,95);color:transparent;cursor:default}#jepApp .bt{text-align:center}#jepApp .rs{background:rgb(220,38,38);color:white;padding:5px 10px;border-radius:3px;font-weight:bold;cursor:pointer;border:none;font-size:.75rem;margin-right:5px}#jepApp .mt{background:rgb(30,64,175);color:white;padding:5px 10px;border-radius:3px;font-weight:bold;cursor:pointer;border:none;font-size:.9rem}#jepApp .qv{background:rgb(30,64,175);border-radius:6px;padding:12px;max-width:550px;margin:0 auto}#jepApp .qh{text-align:center;margin-bottom:8px}#jepApp .qc{display:inline-block;background:rgb(251,191,36);color:rgb(30,58,95);padding:3px 10px;border-radius:10px;font-weight:bold;font-size:.75rem}#jepApp .qt{color:rgb(251,191,36);margin-top:4px;font-size:.75rem}#jepApp .ti{text-align:center;margin-bottom:6px}#jepApp .tb{display:inline-block;padding:4px 10px;border-radius:10px;font-size:.9rem;font-weight:bold;background:rgb(251,191,36);color:rgb(30,58,95)}#jepApp .tb.w{background:rgb(220,38,38);color:white}#jepApp .sx{background:rgb(29,78,216);border-radius:4px;padding:8px;margin-bottom:6px}#jepApp .sx h4{color:rgb(251,191,36);font-size:.7rem;margin-bottom:3px}#jepApp .sx p{font-size:.8rem;line-height:1.3}#jepApp .qx{background:rgb(37,99,235);border-radius:4px;padding:8px;margin-bottom:6px}#jepApp .qx h4{color:rgb(251,191,36);font-size:.7rem;margin-bottom:3px}#jepApp .qx p{font-size:.85rem;font-weight:600}#jepApp .ax{background:rgb(22,101,52);border-radius:4px;padding:8px;margin-bottom:6px}#jepApp .ax h4{color:rgb(251,191,36);font-size:.7rem;margin-bottom:3px}#jepApp .ax p{font-size:.8rem;line-height:1.3}#jepApp .qb{display:flex;gap:6px;justify-content:center;flex-wrap:wrap;margin-top:8px}#jepApp .bn{padding:6px 12px;border-radius:3px;font-weight:bold;cursor:pointer;border:none;font-size:.75rem}#jepApp .rv{background:rgb(251,191,36);color:rgb(30,58,95)}#jepApp .cr{background:rgb(34,197,94);color:white}#jepApp .wr{background:rgb(239,68,68);color:white}#jepApp .ov{text-align:center;padding:15px}#jepApp .ov h1{font-size:1.5rem;color:rgb(251,191,36);margin-bottom:8px}#jepApp .fn{font-size:.9rem;margin-bottom:3px}#jepApp .wn{font-size:1.1rem;color:rgb(251,191,36);font-weight:bold;margin-bottom:12px}</style>'; |
| <div class="winner" id="jepWinner"></div>
| | function board(){ |
| <button class="btn btn-reveal" onclick="JepGame.resetGame()">Play Again</button>
| | var h=css+'<div class="jG"><h1 class="t">Nursing Jeopardy</h1><p class="st">NSG 520 - Click any tile to start!</p>'; |
| </div>
| | h+='<div class="sb"><div class="tm'+(J.tm===1?' on':'')+'"><h3>Team 1</h3><div class="sc '+(J.s1>=0?'ps':'ng')+'">$'+J.s1+'</div></div>'; |
| </div>
| | h+='<div class="tm'+(J.tm===2?' on':'')+'"><h3>Team 2</h3><div class="sc '+(J.s2>=0?'ps':'ng')+'">$'+J.s2+'</div></div></div>'; |
| </div>
| | h+='<p class="tr">Team '+J.tm+' Pick</p><div class="bd">'; |
| | | for(var i=0;i<6;i++)h+='<div class="ct">'+C[i].n+'</div>'; |
| <script>
| | for(var r=0;r<5;r++)for(var c=0;c<6;c++){var k=c+'-'+r;h+=J.done[k]?'<button class="cl dn"></button>':'<button class="cl" onclick="jepPick('+c+','+r+')">$'+C[c].q[r].p+'</button>';} |
| var JepGame = (function() {
| | h+='</div><div class="bt"><button class="rs" onclick="jepReset()">Reset</button><button class="mt" onclick="jepMute()">'+(J.mute?'🔇':'🔊')+'</button></div></div>'; |
| var categories = [
| | J.el.innerHTML=h; |
| {name:"Cardiovascular",questions:[
| | } |
| {pts: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."},
| | function question(){ |
| {pts: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 with supratherapeutic INR levels."},
| | var c=C[J.cur.c],q=c.q[J.cur.r]; |
| {pts: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."},
| | var h=css+'<div class="jG"><div class="qv"><div class="qh"><span class="qc">'+c.n+' - $'+q.p+'</span><p class="qt">Team '+J.tm+'</p></div>'; |
| {pts: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."},
| | h+='<div class="ti"><span class="tb'+(J.tmr<=10?' w':'')+'">'+J.tmr+'s</span></div>'; |
| {pts:1000,scenario:"A hypertensive patient on lisinopril develops a persistent dry cough. The provider switches to losartan.",question:"What is the nurse's best explanation for this change?",answer:"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."}
| | h+='<div class="sx"><h4>Scenario:</h4><p>'+q.s+'</p></div>'; |
| ]},
| | h+='<div class="qx"><h4>Question:</h4><p>'+q.q+'</p></div>'; |
| {name:"Pain Mgmt",questions:[
| | h+='<div class="qb"><button class="bn rv" onclick="jepReveal()">Reveal Answer</button></div></div></div>'; |
| {pts:200,scenario:"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.",question:"What is the appropriate nursing action?",answer:"Offer non-pharmacological interventions (repositioning, ice/heat, relaxation) and reassess in 1 hour. Cannot give morphine until 4-hour interval has passed."},
| | J.el.innerHTML=h; |
| {pts: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."},
| | } |
| {pts: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. It differs from addiction, which involves compulsive use despite harm and loss of control."},
| | function answer(){ |
| {pts: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. Stop PCA, stimulate patient, call for help, prepare naloxone (Narcan), support airway and breathing."},
| | var c=C[J.cur.c],q=c.q[J.cur.r]; |
| {pts:1000,scenario:"A patient with cancer pain is on around-the-clock MS Contin but still has breakthrough pain episodes.",question:"What medication regimen modification should the nurse anticipate?",answer:"Add immediate-release morphine for breakthrough pain, typically 10-15 percent of the total 24-hour dose."}
| | var h=css+'<div class="jG"><div class="qv"><div class="qh"><span class="qc">'+c.n+' - $'+q.p+'</span><p class="qt">Team '+J.tm+'</p></div>'; |
| ]},
| | h+='<div class="sx"><h4>Scenario:</h4><p>'+q.s+'</p></div>'; |
| {name:"Teaching",questions:[
| | h+='<div class="qx"><h4>Question:</h4><p>'+q.q+'</p></div>'; |
| {pts: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."},
| | h+='<div class="ax"><h4>Answer:</h4><p>'+q.a+'</p></div>'; |
| {pts: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, provide written materials at appropriate reading level with large print, use teach-back method."},
| | h+='<div class="qb"><button class="bn cr" onclick="jepAns(1)">Correct +$'+q.p+'</button><button class="bn wr" onclick="jepAns(0)">Wrong -$'+q.p+'</button></div></div></div>'; |
| {pts: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 and never drinking on empty stomach."},
| | J.el.innerHTML=h; |
| {pts: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/times, and warning signs requiring immediate attention."},
| | } |
| {pts:1000,scenario:"A 16-year-old with newly diagnosed epilepsy needs teaching about phenytoin. The mother wants to handle all medication administration.",question:"What developmental considerations should guide the nurse's approach?",answer:"Adolescents need autonomy. Include the teen in teaching, address concerns about appearance (gingival hyperplasia) and driving restrictions."}
| | function gameover(){ |
| ]},
| | var w=J.s1>J.s2?'Team 1 Wins!':J.s2>J.s1?'Team 2 Wins!':'Tie!'; |
| {name:"GI/Hepatic",questions:[
| | var h=css+'<div class="jG"><div class="qv ov"><h1>Game Over!</h1><p class="fn">Team 1: $'+J.s1+'</p><p class="fn">Team 2: $'+J.s2+'</p><p class="wn">'+w+'</p><button class="bn rv" onclick="jepReset()">Play Again</button></div></div>'; |
| {pts: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."},
| | J.el.innerHTML=h; |
| {pts: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. Encourage ambulation to absorb the gas."},
| | } |
| {pts: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). Complete entire course even if feeling better, take PPI before meals, return for follow-up testing."},
| | window.jepPick=function(c,r){ |
| {pts:800,scenario:"A patient with acute pancreatitis has NG tube to suction, IV fluids, and NPO status. The patient asks why they can't eat.",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."},
| | if(J.done[c+'-'+r])return; |
| {pts:1000,scenario:"A patient with Crohn's disease on long-term prednisone develops round face, central obesity, and blood glucose of 180 mg/dL.",question:"What is occurring and what patient education is needed?",answer:"Cushing syndrome from chronic corticosteroid use. Never stop medication abruptly, report signs of infection, monitor blood glucose."}
| | sndSelect(); |
| ]},
| | J.cur={c:c,r:r}; |
| {name:"Med Admin",questions:[
| | J.tmr=30; |
| {pts: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, rash. Should infuse over at least 60 minutes."},
| | clearInterval(J.ti); |
| {pts: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 bolus push - causes fatal arrhythmias. Verify diluted appropriately, infused via pump, max 10-20 mEq/hour."},
| | J.ti=setInterval(function(){J.tmr--;if(J.tmr<=0)clearInterval(J.ti);question();},1000); |
| {pts: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 should never be mixed with other insulins as it can alter the action of both."},
| | question(); |
| {pts: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."},
| | }; |
| {pts:1000,scenario:"A patient receiving first dose of IV penicillin develops hives, wheezing, and BP drop to 80/50 after 5 minutes.",question:"What is occurring and list interventions in priority order?",answer:"Anaphylaxis. 1) Stop infusion, 2) Call for help, 3) Epinephrine IM, 4) Maintain airway, 5) IV fluids, 6) Diphenhydramine/corticosteroids."}
| | window.jepReveal=function(){ |
| ]},
| | clearInterval(J.ti); |
| {name:"Pathophys",questions:[
| | sndReveal(); |
| {pts:200,scenario:"A patient with uncontrolled diabetes has blood glucose of 450 mg/dL, breathing rapidly and deeply, and fruity-smelling breath.",question:"What condition is this and what causes these symptoms?",answer:"Diabetic Ketoacidosis (DKA). Lack of insulin causes fat breakdown producing ketones. Metabolic acidosis triggers Kussmaul respirations."},
| | answer(); |
| {pts:400,scenario:"A patient with COPD on 2L nasal cannula has oxygen increased to 6L by family. The patient becomes increasingly drowsy.",question:"What is happening physiologically?",answer:"CO2 narcosis. COPD patients rely on hypoxic drive. High-flow oxygen removes this drive, causing hypoventilation and CO2 retention."},
| | }; |
| {pts: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 damage to parathyroid glands during surgery. Treat with IV calcium gluconate."},
| | window.jepAns=function(ok){ |
| {pts:800,scenario:"A trauma patient receives 6 units of PRBCs. Labs show: pH 7.28, K+ 6.2 mEq/L, calcium 7.8 mg/dL, hypothermia.",question:"What complications of massive transfusion are occurring?",answer:"Metabolic acidosis, hyperkalemia (K+ leaks from stored RBCs), hypocalcemia (citrate binds calcium), and hypothermia."},
| | clearInterval(J.ti); |
| {pts:1000,scenario:"A patient with severe sepsis has: BP 78/40, HR 128, lactate 6 mmol/L, urine output 10 mL/hr for 2 hours.",question:"What is occurring and what are the priority interventions?",answer:"Septic shock. Fluid resuscitation (30 mL/kg), obtain cultures, broad-spectrum antibiotics within 1 hour, vasopressors if needed."}
| | if(ok){sndCorrect();}else{sndWrong();} |
| ]}
| | var q=C[J.cur.c].q[J.cur.r]; |
| ];
| | if(J.tm===1)J.s1+=ok?q.p:-q.p;else J.s2+=ok?q.p:-q.p; |
| | | J.done[J.cur.c+'-'+J.cur.r]=true; |
| var state = {
| | J.tm=J.tm===1?2:1; |
| scores: {team1: 0, team2: 0},
| | J.cur=null; |
| currentTeam: 1,
| | Object.keys(J.done).length===30?gameover():board(); |
| answered: {},
| | }; |
| current: null,
| | window.jepReset=function(){ |
| timer: 30,
| | clearInterval(J.ti); |
| timerInterval: null,
| | J.s1=0;J.s2=0;J.tm=1;J.done={};J.cur=null;J.tmr=30; |
| muted: false,
| | board(); |
| audioCtx: null
| | }; |
| };
| | window.jepMute=function(){ |
| | | J.mute=!J.mute; |
| function initAudio() {
| | board(); |
| if (!state.audioCtx) {
| | }; |
| state.audioCtx = new (window.AudioContext || window.webkitAudioContext)();
| | function init(){J.el=document.getElementById("jepApp");if(J.el)board();} |
| }
| | if(document.readyState==="loading"){document.addEventListener("DOMContentLoaded",init);}else{init();} |
| if (state.audioCtx.state === 'suspended') {
| |
| state.audioCtx.resume();
| |
| }
| |
| }
| |
| | |
| function playTone(freq, dur, type, vol) {
| |
| if (state.muted || !state.audioCtx) return;
| |
| type = type || 'sine';
| |
| vol = vol || 0.3;
| |
| var osc = state.audioCtx.createOscillator();
| |
| var gain = state.audioCtx.createGain();
| |
| osc.connect(gain);
| |
| gain.connect(state.audioCtx.destination);
| |
| osc.frequency.value = freq;
| |
| osc.type = type;
| |
| gain.gain.value = vol;
| |
| gain.gain.exponentialRampToValueAtTime(0.01, state.audioCtx.currentTime + dur);
| |
| osc.start();
| |
| osc.stop(state.audioCtx.currentTime + dur);
| |
| }
| |
| | |
| function playSelect() {
| |
| 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 playCorrect() {
| |
| 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 playWrong() {
| |
| initAudio();
| |
| playTone(200, 0.3, 'sawtooth', 0.15);
| |
| setTimeout(function() { playTone(150, 0.4, 'sawtooth', 0.15); }, 150);
| |
| }
| |
| | |
| function playReveal() {
| |
| 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 showView(viewId) {
| |
| document.getElementById('jepBoardView').className = 'container jep-hidden';
| |
| document.getElementById('jepQuestionView').className = 'container jep-hidden';
| |
| document.getElementById('jepGameOverView').className = 'container jep-hidden';
| |
| document.getElementById(viewId).className = 'container';
| |
| }
| |
| | |
| function buildBoard() {
| |
| var board = document.getElementById('jepBoard');
| |
| board.innerHTML = '';
| |
| for (var c = 0; c < categories.length; c++) {
| |
| var header = document.createElement('div');
| |
| header.className = 'cat-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 = 'cell' + (state.answered[key] ? ' used' : '');
| |
| cell.textContent = state.answered[key] ? '' : '$' + categories[c].questions[q].pts;
| |
| cell.setAttribute('data-cat', c);
| |
| cell.setAttribute('data-q', q);
| |
| if (!state.answered[key]) {
| |
| cell.onclick = function() {
| |
| var catIdx = parseInt(this.getAttribute('data-cat'));
| |
| var qIdx = parseInt(this.getAttribute('data-q'));
| |
| selectQuestion(catIdx, qIdx);
| |
| };
| |
| }
| |
| board.appendChild(cell);
| |
| }
| |
| }
| |
| }
| |
| | |
| function updateScores() {
| |
| var s1 = document.getElementById('jepScore1');
| |
| var s2 = document.getElementById('jepScore2');
| |
| var t1 = document.getElementById('jepTeam1');
| |
| var t2 = document.getElementById('jepTeam2');
| |
| var turn = document.getElementById('jepTurn');
| |
| | |
| s1.textContent = '$' + state.scores.team1;
| |
| s1.className = 'score ' + (state.scores.team1 >= 0 ? 'score-pos' : 'score-neg');
| |
| s2.textContent = '$' + state.scores.team2;
| |
| s2.className = 'score ' + (state.scores.team2 >= 0 ? 'score-pos' : 'score-neg');
| |
| t1.className = 'team' + (state.currentTeam === 1 ? ' active' : '');
| |
| t2.className = 'team' + (state.currentTeam === 2 ? ' active' : '');
| |
| turn.textContent = '🎯 Team ' + state.currentTeam + "'s Turn to Pick";
| |
| }
| |
| | |
| function startTimer() {
| |
| state.timer = 30;
| |
| updateTimer();
| |
| state.timerInterval = setInterval(function() {
| |
| state.timer--;
| |
| updateTimer();
| |
| if (state.timer <= 0) {
| |
| clearInterval(state.timerInterval);
| |
| }
| |
| }, 1000);
| |
| }
| |
| | |
| function stopTimer() {
| |
| if (state.timerInterval) {
| |
| clearInterval(state.timerInterval);
| |
| state.timerInterval = null;
| |
| }
| |
| }
| |
| | |
| function updateTimer() {
| |
| var badge = document.getElementById('jepTimer');
| |
| badge.textContent = '⏱️ ' + state.timer + 's';
| |
| badge.className = 'timer-badge' + (state.timer <= 10 ? ' warning' : '');
| |
| }
| |
| | |
| function selectQuestion(catIdx, qIdx) {
| |
| var key = catIdx + '-' + qIdx;
| |
| if (state.answered[key]) return;
| |
| | |
| playSelect();
| |
| state.current = {cat: catIdx, q: qIdx};
| |
| | |
| var cat = categories[catIdx];
| |
| var question = cat.questions[qIdx];
| |
| | |
| document.getElementById('jepQCat').textContent = cat.name + ' - $' + question.pts;
| |
| document.getElementById('jepQTeam').textContent = "Team " + state.currentTeam + "'s Turn";
| |
| document.getElementById('jepScenario').textContent = question.scenario;
| |
| document.getElementById('jepQuestion').textContent = question.question;
| |
| document.getElementById('jepAnswer').textContent = question.answer;
| |
| document.getElementById('jepAnswerBox').className = 'answer-box jep-hidden';
| |
| document.getElementById('jepButtons').innerHTML = '<button class="btn btn-reveal" onclick="JepGame.showAnswer()">Reveal Answer</button>';
| |
| | |
| showView('jepQuestionView');
| |
| startTimer();
| |
| }
| |
| | |
| function showAnswer() {
| |
| stopTimer();
| |
| playReveal();
| |
| document.getElementById('jepAnswerBox').className = 'answer-box';
| |
| var question = categories[state.current.cat].questions[state.current.q];
| |
| document.getElementById('jepButtons').innerHTML =
| |
| '<button class="btn btn-correct" onclick="JepGame.answer(true)">✓ Correct (+$' + question.pts + ')</button>' +
| |
| '<button class="btn btn-wrong" onclick="JepGame.answer(false)">✗ Incorrect (-$' + question.pts + ')</button>';
| |
| }
| |
| | |
| function answer(correct) {
| |
| stopTimer();
| |
| if (correct) {
| |
| playCorrect();
| |
| } else {
| |
| playWrong();
| |
| }
| |
| | |
| var question = categories[state.current.cat].questions[state.current.q];
| |
| var pts = question.pts;
| |
| var key = state.current.cat + '-' + state.current.q;
| |
| | |
| if (state.currentTeam === 1) {
| |
| state.scores.team1 += correct ? pts : -pts;
| |
| } else {
| |
| state.scores.team2 += correct ? pts : -pts;
| |
| }
| |
| | |
| state.answered[key] = true;
| |
| state.currentTeam = state.currentTeam === 1 ? 2 : 1;
| |
| state.current = null;
| |
| | |
| buildBoard();
| |
| updateScores();
| |
| | |
| if (Object.keys(state.answered).length === categories.length * 5) {
| |
| setTimeout(showGameOver, 300);
| |
| } else {
| |
| showView('jepBoardView');
| |
| }
| |
| }
| |
| | |
| function showGameOver() {
| |
| 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!";
| |
| }
| |
| document.getElementById('jepFinalScores').innerHTML = 'Team 1: $' + state.scores.team1 + '<br>Team 2: $' + state.scores.team2;
| |
| document.getElementById('jepWinner').textContent = winner;
| |
| showView('jepGameOverView');
| |
| }
| |
| | |
| function resetGame() {
| |
| stopTimer();
| |
| state.scores = {team1: 0, team2: 0};
| |
| state.currentTeam = 1;
| |
| state.answered = {};
| |
| state.current = null;
| |
| state.timer = 30;
| |
| buildBoard();
| |
| updateScores();
| |
| showView('jepBoardView');
| |
| }
| |
| | |
| function toggleMute() {
| |
| state.muted = !state.muted;
| |
| document.getElementById('jepMuteBtn').textContent = state.muted ? '🔇' : '🔊';
| |
| }
| |
| | |
| function init() {
| |
| buildBoard();
| |
| updateScores();
| |
| showView('jepBoardView');
| |
| }
| |
| | |
| if (document.readyState === 'loading') {
| |
| document.addEventListener('DOMContentLoaded', init);
| |
| } else {
| |
| init();
| |
| }
| |
| | |
| return {
| |
| showAnswer: showAnswer,
| |
| answer: answer,
| |
| resetGame: resetGame,
| |
| toggleMute: toggleMute
| |
| };
| |
| })(); | | })(); |
| </script>
| | //]]> |
| </div></includeonly> | | </script></includeonly> |