var monitor = new VitalsMonitor();
monitor.CriticalVitalsDetected += (sender, e) =>
{
Console.WriteLine($" *** CRITICAL ALERT: HR is {e.HeartRate}, SpO2 is {e.SpO2} ***");
};
Console.WriteLine("Starting patient monitoring...\n");
monitor.RecordVitals(75, 98);
monitor.RecordVitals(80, 97);
monitor.RecordVitals(130, 85);
monitor.RecordVitals(45, 95);
// --- Class Definitions ---
public class VitalsArgs : EventArgs
{
public int HeartRate { get; }
public int SpO2 { get; }
public VitalsArgs(int heartRate, int spO2)
{
HeartRate = heartRate;
SpO2 = spO2;
}
}
public class VitalsMonitor
{
public event EventHandler<VitalsArgs>? CriticalVitalsDetected;
public void RecordVitals(int heartRate, int oxygenLevel)
{
Console.WriteLine($"Reading - HR: {heartRate}, SpO2: {oxygenLevel}");
if (heartRate < 50 || heartRate > 120 || oxygenLevel < 90)
{
CriticalVitalsDetected?.Invoke(this, new VitalsArgs(heartRate, oxygenLevel));
}
}
}