import React, { useState, useEffect, useRef } from 'react'; import { Play, Pause, SkipBack, Volume2, Check, X, HelpCircle, Info } from 'lucide-react'; const BloodPressureMeasurementSimulator = () => { // State variables const [cuffPressure, setCuffPressure] = useState(0); const [maxPressure, setMaxPressure] = useState(180); const [isDeflating, setIsDeflating] = useState(false); const [systolicMarked, setSystolicMarked] = useState(false); const [diastolicMarked, setDiastolicMarked] = useState(false); const [systolicPressure, setSystolicPressure] = useState(0); const [diastolicPressure, setDiastolicPressure] = useState(0); const [actualSystolic, setActualSystolic] = useState(120); const [actualDiastolic, setActualDiastolic] = useState(80); const [audioPlaying, setAudioPlaying] = useState(false); const [currentPhase, setCurrentPhase] = useState(null); const [attempt, setAttempt] = useState(1); const [score, setScore] = useState({ correct: 0, attempts: 0 }); const [feedback, setFeedback] = useState(''); const [showInstructions, setShowInstructions] = useState(true); const [showResults, setShowResults] = useState(false); const [difficultyLevel, setDifficultyLevel] = useState('normal'); const [patientCondition, setPatientCondition] = useState('normal'); const [volume, setVolume] = useState(0.7); const [showPhaseInfo, setShowPhaseInfo] = useState(false); // References for audio const audioRef = useRef(null); const timerRef = useRef(null); // Set patient condition and associated blood pressure values const selectPatientCondition = (condition) => { setPatientCondition(condition); // Reset states setSystolicMarked(false); setDiastolicMarked(false); setSystolicPressure(0); setDiastolicPressure(0); setCuffPressure(0); setIsDeflating(false); setCurrentPhase(null); setFeedback(''); setShowResults(false); // Set blood pressure based on selected condition switch(condition) { case 'hypertension': setActualSystolic(Math.floor(Math.random() * 30) + 140); // 140-170 setActualDiastolic(Math.floor(Math.random() * 20) + 90); // 90-110 setMaxPressure(200); break; case 'hypotension': setActualSystolic(Math.floor(Math.random() * 30) + 85); // 85-115 setActualDiastolic(Math.floor(Math.random() * 20) + 50); // 50-70 setMaxPressure(150); break; case 'normal': default: setActualSystolic(Math.floor(Math.random() * 20) + 110); // 110-130 setActualDiastolic(Math.floor(Math.random() * 15) + 70); // 70-85 setMaxPressure(180); break; } }; // Function to determine current Korotkoff phase based on cuff pressure const determinePhase = (pressure) => { const systolicWindow = difficultyLevel === 'hard' ? 3 : 5; const diastolicWindow = difficultyLevel === 'hard' ? 3 : 5; if (pressure > actualSystolic + 5) { return 'none'; // No sounds - cuff pressure too high } else if (pressure <= actualSystolic + 5 && pressure >= actualSystolic - systolicWindow) { return 'phase1'; // Phase 1 - clear tapping sound (systolic) } else if (pressure < actualSystolic - systolicWindow && pressure >= actualSystolic - 15) { return 'phase2'; // Phase 2 - swishing sounds } else if (pressure < actualSystolic - 15 && pressure >= actualDiastolic + 15) { return 'phase3'; // Phase 3 - louder, crisper sounds } else if (pressure < actualDiastolic + 15 && pressure >= actualDiastolic - diastolicWindow) { return 'phase4'; // Phase 4 - muffled sounds } else if (pressure < actualDiastolic - diastolicWindow) { return 'phase5'; // Phase 5 - silence (diastolic) } return 'none'; }; // Function to play appropriate sound based on Korotkoff phase const playKorotkoffSound = (phase) => { if (!audioRef.current) return; switch(phase) { case 'phase1': audioRef.current.src = 'data:audio/mpeg;base64,SUQzBAAAAAABEVRYWFgAAAAXAAAARW5jb2RlZCBieQBMYXZmNTguMjkuMTAwVElUMgAAABcAAABMYXZmNTguMjkuMTAwAAAAAAAAAAAAAP/7kAAAAAAAAAAAAAAAAAAAAAAASW5mbwAAAA8AAAACAAADIACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP////////////////////////////////////////////////////////////////8AAAAATGF2YzU4LjU0AAAAAAAAAAAAAAAAJAAAAAAAAAAAAyDxzbisAAAAAAD/+5BkAAntWN9j+YIAIUIJKI8wQmgwIyMvPSAChOglmTzAgOAAAAQnVyQ/QACoEHA6cZ0HCqCgocZbHOFBwOBwOeTsKoKBgYOgYHAyKjjiEkKsZa4iBoGCgYCAgYCkBZZ9SLLuZSLYyFJnrM6gAv/89LCSzs7M33DfM4+S5JJJOTcnJydaRbRV4yJFFlMy8vf/r//1vWt///2nYYqKIBcXFxfFxRUVFMUBQFBQVBQVBUFQUBQVBQVApRUGP//////Lwo//+FAAAAwQAABmShAAAAAPAAAAAZ//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+5JkBI/wAABpAAAACAAADSAAAAEAAAGkAAAAIAAANIAAAAT////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7kmQfj/AAAGkAAAAIAAANIAAAAQAAAaQAAAAgAAA0gAAABP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+5JkP4/wAABpAAAACAAADSAAAAEAAAGkAAAAIAAANIAAAAT////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7kmRTj/AAAGkAAAAIAAANIAAAAQAAAaQAAAAgAAA0gAAABP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+5JkZY/wAABpAAAACAAADSAAAAEAAAGkAAAAIAAANIAAAAT////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7kmRsj/AAAGkAAAAIAAANIAAAAQAAAaQAAAAgAAA0gAAABP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+5JkgY/wAABpAAAACAAADSAAAAEAAAGkAAAAIAAANIAAAAT////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7kmSPj/AAAGkAAAAIAAANIAAAAQAAAaQAAAAgAAA0gAAABP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+s/12pf/8jqoW33/8K/nZqsw5//eF6mW/r/GpXf1/jWoD5vt/4Wkb77/3SZ////+MqTf//bAAAAFgAAAMiQAAABYAAAAN+jdG6N0bJ+PK87leee/OJ5553K88888y+ZnnnnlfxgEwJgTAmBMCYEwJj/+5JknY/wAABpAAAACAAADSAAAAEAAAGkAAAAIAAANIAAAAThMCYEwJgTAmBMCYEwJgTAmBMCYEwJgTAmBMCYEwJgTAmBMCYEwJgTAmBMCYEwJgTAmBMCYEwJgTAmBMCYEwJgTAmBMCYEwJgTAmBMCYEwJgTAmBMCYEwJgTAmBMCYEwJgTAmBMCYEwJgTAmBMCYEwJgTAmBMCYEwJgTAmBMCYEwJgTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7kmS/j/AAAGkAAAAIAAANIAAAAQAAAaQAAAAgAAA0gAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//uSZOGP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'; audioRef.current.play(); break; case 'phase2': audioRef.current.src = 'data:audio/mpeg;base64,SUQzBAAAAAABEVRYWFgAAAAXAAAARW5jb2RlZCBieQBMYXZmNTguMjkuMTAwVElUMgAAABcAAABMYXZmNTguMjkuMTAwAAAAAAAAAAAAAP/7kAAAAAAAAAAAAAAAAAAAAAAASW5mbwAAAA8AAAACAAADIACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP////////////////////////////////////////////////////////////////8AAAAATGF2YzU4LjU0AAAAAAAAAAAAAAAAJAAAAAAAAAAAAyDxeqCQAAAAAAD/+5BkAAftiN9h+eEAIYQoJY80IOgp4y0VpYQAhbAlljSwgOBqRjwBQ7oRHgZJcJGJ/+WQDQMDp6UrjsPiR//5YqR6RJbIElwqCIHrGV0UqqzZszmSO7myQZLzKUEDJeZtf///////8zs72ZOSSTnNFcJARRLSAiAEQAoiRRUFfQDw8PDw8PH/QEBAQDQ4QAcnl/mUW6qqw3/+qqpsKoKIE6BgA4AAAAeZxBsAAAAFkAAAAWv/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+5JkFY/wAABpAAAACAAADSAAAAEAAAGkAAAAIAAANIAAAAT////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7kmQjj/AAAGkAAAAIAAANIAAAAQAAAaQAAAAgAAA0gAAABP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+5JkN4/wAABpAAAACAAADSAAAAEAAAGkAAAAIAAANIAAAAT////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7kmRNj/AAAGkAAAAIAAANIAAAAQAAAaQAAAAgAAA0gAAABP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+5JkZY/wAABpAAAACAAADSAAAAEAAAGkAAAAIAAANIAAAAT////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7kmRsj/AAAGkAAAAIAAANIAAAAQAAAaQAAAAgAAA0gAAABP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+5Jkgo/wAABpAAAACAAADSAAAAEAAAGkAAAAIAAANIAAAAT/////////////////////////////////////////////////////////////////////////////////////////////+CCBC4IIQggn///xAQQPggggoEBAQUD4IICCggQEB/pJJGBR//5BjkzR+kJn2pGRFh7///////8oIKYQQ4MhhQiw5C/9pJSgggv/6BAQEB8CAgID///UVsNsOCAQEBB34QQUEFFJAAoAAAANkAAAAAoAAAAG/Gt7Wx7r6b2WM3szN61XVzKury71qqNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaP/+5JkmQ/wAABpAAAACAAADSAAAAEAAAGkAAAAIAAANIAAAATRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaNRqaAAAAAAAAAAAAAAAAP/7kmTPj/AAAGkAAAAIAAANIAAAAQAAAaQAAAAgAAA0gAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//uSZOmP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'; audioRef.current.play(); break; case 'phase3': audioRef.current.src = 'data:audio/mpeg;base64,SUQzBAAAAAABEVRYWFgAAAAXAAAARW5jb2RlZCBieQBMYXZmNTguMjkuMTAwVElUMgAAABcAAABMYXZmNTguMjkuMTAwAAAAAAAAAAAAAP/7kAAAAAAAAAAAAAAAAAAAAAAASW5mbwAAAA8AAAACAAADIACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP////////////////////////////////////////////////////////////////8AAAAATGF2YzU4LjU0AAAAAAAAAAAAAAAAJAAAAAAAAAAAAyDxvqCQAAAAAAD/+5BkAAXtcNxf+aGHIXgkJY8kMOAvAzL5pYwAgzghm/TDBBDyf4CAZCqhLIAOuWODGMYxqfT7JRe5xiN3FkUyBiExCKo8AYAYAYAOQUt3d3d3d3d3eD07vR1vXfrDGNdL3GyRMYxjGN/4xqvWP/LGMYxnlFv9vu/+/+75XLx/5VKpVXwqFQqCgZvZuLVt1LbvgzV69zS+Dne+c+c7vMigAAAAgAAAAAAAAAEsAAADREAAAGGP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+5JkEY/wAABpAAAACAAADSAAAAEAAAGkAAAAIAAANIAAAAT////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7kmQTj/AAAGkAAAAIAAANIAAAAQAAAaQAAAAgAAA0gAAABP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+5JkJY/wAABpAAAACAAADSAAAAEAAAGkAAAAIAAANIAAAAT////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7kmQuj/AAAGkAAAAIAAANIAAAAQAAAaQAAAAgAAA0gAAABP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+5JkPY/wAABpAAAACAAADSAAAAEAAAGkAAAAIAAANIAAAAT////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7kmRQj/AAAGkAAAAIAAANIAAAAQAAAaQAAAAgAAA0gAAABP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+5JkW4/wAABpAAAACAAADSAAAAEAAAGkAAAAIAAANIAAAAT////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7kmRpj/AAAGkAAAAIAAANIAAAAQAAAaQAAAAgAAA0gAAABP////////////////////////////////////////////////////////////////////////////////////////////CCCEIQQQQQIB/2oYQQM2YR7/uZWxG6dlllJJCCBf//nQDZ//wQQcEEEDAYEBAfBAQDUL///wTAwAAgICALJ//8/AwFqrAoICB/2ggQQEEB///tBBAgZB///8ypFWlVgEBQQHYmCCBAQQD///xJJJFCCEEEBBAAoAAAANkAAAAAoAAAAG/hzne7Oe9V73qqqt72ZmOV5jlMcpbHKUxylscpbHKWxylscpbHKWxylscpb/+5JkgY/wAABpAAAACAAADSAAAAEAAAGkAAAAIAAANIAAAATHKWxylscpbHKWxylscpbHKWxylscpbHKWxylscpbHKWxylscpbHKWxylscpbHKWxylscpbHKWxylscpbHKWxylscpbHKWxylscpbHKWxylscpbHKWxylscpbHKWxylscpbHKWxylscpbHKWxylscpbHKWxylscpbHKWxylscpbHKWxylscpbHKWxylscpbHKWxylscpbHKWxylscpbHKWxylscpbHKWxylscpbHKWxylscpbHKWxylscpbHKWxylscpbHKWxylscpbHKWxylscpbHKWxylsAAAAAAAAAAAAAAAAP/7kmS9j/AAAGkAAAAIAAANIAAAAQAAAaQAAAAgAAA0gAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//uSZOGP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'; audioRef.current.play(); break; case 'phase4': audioRef.current.src = 'data:audio/mpeg;base64,SUQzBAAAAAABEVRYWFgAAAAXAAAARW5jb2RlZCBieQBMYXZmNTguMjkuMTAwVElUMgAAABcAAABMYXZmNTguMjkuMTAwAAAAAAAAAAAAAP/7kAAAAAAAAAAAAAAAAAAAAAAASW5mbwAAAA8AAAACAAADIACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP////////////////////////////////////////////////////////////////8AAAAATGF2YzU4LjU0AAAAAAAAAAAAAAAAJAAAAAAAAAAAAyDxo0igAAAAAAD/+5BkAAXtVNnh+aEPIYQIJY80MORAwzEVpgQchjglkjTQgJA6/GDkLCj6UHi+r5j/fVU/5RmVk1B8kGBUOPBRSiEZGf5RXt3/qgM0ChFCQAUMVD/6JJJb/0Ygp8GGEOJIBQoGn0RIpGJmwdP////KeSSSTkkkkk52ZCEG2qRCVE53e7ve7u93exjTgvAAAAAAAAAAAAAAAAAAoAAAAYNAAAATf/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+5JkFY/wAABpAAAACAAADSAAAAEAAAGkAAAAIAAANIAAAAT////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7kmQkj/AAAGkAAAAIAAANIAAAAQAAAaQAAAAgAAA0gAAABP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+5JkN4/wAABpAAAACAAADSAAAAEAAAGkAAAAIAAANIAAAAT////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7kmROj/AAAGkAAAAIAAANIAAAAQAAAaQAAAAgAAA0gAAABP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+5JkYY/wAABpAAAACAAADSAAAAEAAAGkAAAAIAAANIAAAAT////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7kmRuj/AAAGkAAAAIAAANIAAAAQAAAaQAAAAgAAA0gAAABP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+5JkfY/wAABpAAAACAAADSAAAAEAAAGkAAAAIAAANIAAAAT//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4EBBQQMGB8CAgIP/wFf/wFf+Ag//CEpD+BA++EMCpwcIMH/9JiVnZGRlZ2RkZWdkZG///kZG///8RDAwMDAwVBQUFBQqCgoKChgYP/+ggDQUDBa1/////+AxqNR40aNGpNgQEBAQwMDQFUDR+NR40YCB/4AHlkAAAALIAAAC3/e9733ve977RrGrGd5VleZZXmWV5lWZVmVZlWZVmVZlWZVmVZlWZVmP/+5JkjA/wAABpAAAACAAADSAAAAEAAAGkAAAAIAAANIAAAATZlWZVmVZlWZVmVZlWZVmVZlWZVmVZlWZVmVZlWZVmVZlWZVmVZlWZVmVZlWZVmVZlWZVmVZlWZVmVZlWZVmVZlWZVmVZlWZVmVZlWZVmVZlWZVmVZlWZVmVZlWZVmVZlWZVmVZlWZVmVZlWZVmVZlWZVmVZlWZVmVZlWZVmVZlWZVmVZlWZVmVZlWZVmVZlWZVmVZlWZVmVZlWZVmVZlWZVmVZlWZVmVZlWZVmVZlWZVmVZlWZVmVZlWZVmVZlWZVmVZlWZVmVZlWZVAAAAAAAAAAAAAAAAP/7kmS/j/AAAGkAAAAIAAANIAAAAQAAAaQAAAAgAAA0gAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//uSZOKP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'; audioRef.current.play(); break; case 'phase5': case 'none': default: // No sound if (audioRef.current) { audioRef.current.pause(); } break; } }; // Inflate the cuff const inflateCuff = () => { if (cuffPressure < maxPressure) { setCuffPressure(prevPressure => prevPressure + 5); } }; // Start deflating the cuff const startDeflation = () => { if (cuffPressure > 0 && !isDeflating) { setIsDeflating(true); // Reset marked pressures setSystolicMarked(false); setDiastolicMarked(false); setSystolicPressure(0); setDiastolicPressure(0); } }; // Stop deflation const stopDeflation = () => { setIsDeflating(false); }; // Reset the simulation const resetSimulation = () => { setCuffPressure(0); setIsDeflating(false); setSystolicMarked(false); setDiastolicMarked(false); setSystolicPressure(0); setDiastolicPressure(0); setCurrentPhase(null); setFeedback(''); setShowResults(false); // Generate new random blood pressure values within range for selected condition selectPatientCondition(patientCondition); }; // Mark systolic pressure const markSystolic = () => { if (!systolicMarked && isDeflating) { setSystolicMarked(true); setSystolicPressure(cuffPressure); } }; // Mark diastolic pressure const markDiastolic = () => { if (systolicMarked && !diastolicMarked && isDeflating) { setDiastolicMarked(true); setDiastolicPressure(cuffPressure); setIsDeflating(false); // Stop deflation once diastolic is marked setShowResults(true); // Calculate score const systolicDiff = Math.abs(actualSystolic - systolicPressure); const diastolicDiff = Math.abs(actualDiastolic - diastolicPressure); const systolicAccurate = systolicDiff <= (difficultyLevel === 'hard' ? 4 : 6); const diastolicAccurate = diastolicDiff <= (difficultyLevel === 'hard' ? 4 : 6); let feedbackMessage = ''; if (systolicAccurate && diastolicAccurate) { feedbackMessage = 'Excellent! Your reading is very accurate.'; setScore(prev => ({ correct: prev.correct + 1, attempts: prev.attempts + 1 })); } else if (systolicAccurate) { feedbackMessage = `Good systolic reading, but your diastolic is off by ${diastolicDiff} mmHg. The actual diastolic pressure is ${actualDiastolic} mmHg.`; setScore(prev => ({ correct: prev.correct, attempts: prev.attempts + 1 })); } else if (diastolicAccurate) { feedbackMessage = `Good diastolic reading, but your systolic is off by ${systolicDiff} mmHg. The actual systolic pressure is ${actualSystolic} mmHg.`; setScore(prev => ({ correct: prev.correct, attempts: prev.attempts + 1 })); } else { feedbackMessage = `Your reading of ${systolicPressure}/${diastolicPressure} is not accurate. The actual blood pressure is ${actualSystolic}/${actualDiastolic} mmHg. Try again and listen carefully for the Korotkoff sounds.`; setScore(prev => ({ correct: prev.correct, attempts: prev.attempts + 1 })); } setFeedback(feedbackMessage); setAttempt(prev => prev + 1); } }; // Effect for cuff deflation useEffect(() => { if (isDeflating && cuffPressure > 0) { const deflationRate = difficultyLevel === 'hard' ? 1000 : (difficultyLevel === 'normal' ? 800 : 600); timerRef.current = setTimeout(() => { setCuffPressure(prevPressure => Math.max(0, prevPressure - 2)); }, deflationRate); return () => clearTimeout(timerRef.current); } }, [isDeflating, cuffPressure, difficultyLevel]); // Effect to determine the current Korotkoff phase useEffect(() => { if (cuffPressure > 0) { const newPhase = determinePhase(cuffPressure); if (newPhase !== currentPhase) { setCurrentPhase(newPhase); setAudioPlaying(newPhase !== 'none' && newPhase !== 'phase5'); } } else { setCurrentPhase(null); setAudioPlaying(false); } }, [cuffPressure, currentPhase]); // Effect to play appropriate sounds useEffect(() => { if (isDeflating && audioPlaying) { playKorotkoffSound(currentPhase); } else if (audioRef.current) { audioRef.current.pause(); } }, [currentPhase, isDeflating, audioPlaying]); // Calculate success rate const successRate = score.attempts > 0 ? Math.round((score.correct / score.attempts) * 100) : 0; return (
In clinical practice, Phase 1 corresponds to systolic pressure and Phase 5 (complete disappearance of sounds) corresponds to diastolic pressure.
Success Rate: {successRate}% ({score.correct}/{score.attempts})
Your reading: {systolicPressure}/{diastolicPressure} mmHg
Actual BP: {actualSystolic}/{actualDiastolic} mmHg
{feedback}
Interpretation: {' '} {actualSystolic >= 140 || actualDiastolic >= 90 ? 'Hypertension (High Blood Pressure)' : actualSystolic < 90 || actualDiastolic < 60 ? 'Hypotension (Low Blood Pressure)' : 'Normal Blood Pressure'}
| Category | Systolic (mmHg) | Diastolic (mmHg) |
|---|---|---|
| Hypotension | < 90 | < 60 |
| Normal | < 120 | < 80 |
| Elevated | 120-129 | < 80 |
| Hypertension Stage 1 | 130-139 | 80-89 |
| Hypertension Stage 2 | ≥ 140 | ≥ 90 |
| Hypertensive Crisis | > 180 | > 120 |