Spaces:
Sleeping
Sleeping
File size: 4,874 Bytes
ae2d99d a309717 ae2d99d a309717 ae2d99d a309717 4200f54 a309717 4200f54 a309717 ae2d99d a309717 ae2d99d |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
import gradio as gr
def health_monitoring(bp_sys, bp_dia, temp, heart_rate, spo2):
messages = []
if bp_sys > 140 or bp_dia > 90:
messages.append("⚠️ Umuvuduko w’amaraso uri hejuru cyane.")
elif bp_sys < 90 or bp_dia < 60:
messages.append("⚠️ Umuvuduko w’amaraso uri hasi cyane.")
else:
messages.append("✅ Umuvuduko w’amaraso uri mu rugero rwiza.")
if temp > 38:
messages.append("⚠️ Ubushyuhe bw’umubiri buri hejuru, hashobora kuba indwara.")
elif temp < 36:
messages.append("⚠️ Ubushyuhe bw’umubiri buri hasi cyane.")
else:
messages.append("✅ Ubushyuhe bw’umubiri buri mu rugero.")
if heart_rate > 100:
messages.append("⚠️ Umuvuduko w’imitima uri hejuru.")
elif heart_rate < 60:
messages.append("⚠️ Umuvuduko w’imitima uri hasi.")
else:
messages.append("✅ Umuvuduko w’imitima uri mu rugero rwiza.")
if spo2 < 95:
messages.append("⚠️ Oxygen saturation iri hasi, bishobora kuba ikibazo.")
else:
messages.append("✅ Oxygen saturation iri mu rugero rwiza.")
alerts = [m for m in messages if m.startswith("⚠️")]
if alerts:
messages.append("\n⚠️ Inama: Gana muganga vuba.")
else:
messages.append("\n✅ Uruhare rwawe ni rwiza, komereza aho.")
return "\n".join(messages)
def adjust_value(value, delta, min_val, max_val):
new_val = value + delta
if new_val < min_val:
new_val = min_val
if new_val > max_val:
new_val = max_val
return new_val
with gr.Blocks() as demo:
gr.Markdown("## Healthcare Monitoring System ")
bp_sys = gr.Slider(50, 200, step=1, label="Umuvuduko w'amaraso (Systolic)", value=120)
bp_dia = gr.Slider(30, 130, step=1, label="Umuvuduko w'amaraso (Diastolic)", value=80)
temp = gr.Slider(30.0, 42.0, step=0.1, label="Ubushyuhe bw'umubiri (°C)", value=36.5)
heart_rate = gr.Slider(30, 150, step=1, label="Umuvuduko w'imitima (bpm)", value=75)
spo2 = gr.Slider(70, 100, step=1, label="Oxygen Saturation (%)", value=98)
output = gr.Textbox(label="Ibisubizo bya viateur AI", lines=12)
# Function to update all values and output after adjustments
def update_all(bp_sys_val, bp_dia_val, temp_val, heart_rate_val, spo2_val):
return health_monitoring(bp_sys_val, bp_dia_val, temp_val, heart_rate_val, spo2_val)
# Buttons for bp_sys
bp_sys_inc = gr.Button("+")
bp_sys_dec = gr.Button("-")
# Buttons for bp_dia
bp_dia_inc = gr.Button("+")
bp_dia_dec = gr.Button("-")
# Buttons for temp
temp_inc = gr.Button("+")
temp_dec = gr.Button("-")
# Buttons for heart_rate
heart_rate_inc = gr.Button("+")
heart_rate_dec = gr.Button("-")
# Buttons for spo2
spo2_inc = gr.Button("+")
spo2_dec = gr.Button("-")
# Layout
with gr.Row():
gr.Column([bp_sys, bp_sys_dec, bp_sys_inc])
gr.Column([bp_dia, bp_dia_dec, bp_dia_inc])
with gr.Row():
gr.Column([temp, temp_dec, temp_inc])
gr.Column([heart_rate, heart_rate_dec, heart_rate_inc])
gr.Column([spo2, spo2_dec, spo2_inc])
# Connect buttons to update sliders and output
bp_sys_inc.click(
lambda val: adjust_value(val, 1, 50, 200), bp_sys, bp_sys)
bp_sys_dec.click(
lambda val: adjust_value(val, -1, 50, 200), bp_sys, bp_sys)
bp_dia_inc.click(
lambda val: adjust_value(val, 1, 30, 130), bp_dia, bp_dia)
bp_dia_dec.click(
lambda val: adjust_value(val, -1, 30, 130), bp_dia, bp_dia)
temp_inc.click(
lambda val: adjust_value(val, 0.1, 30.0, 42.0), temp, temp)
temp_dec.click(
lambda val: adjust_value(val, -0.1, 30.0, 42.0), temp, temp)
heart_rate_inc.click(
lambda val: adjust_value(val, 1, 30, 150), heart_rate, heart_rate)
heart_rate_dec.click(
lambda val: adjust_value(val, -1, 30, 150), heart_rate, heart_rate)
spo2_inc.click(
lambda val: adjust_value(val, 1, 70, 100), spo2, spo2)
spo2_dec.click(
lambda val: adjust_value(val, -1, 70, 100), spo2, spo2)
# When any slider changes, update output
for slider in [bp_sys, bp_dia, temp, heart_rate, spo2]:
slider.change(
fn=update_all,
inputs=[bp_sys, bp_dia, temp, heart_rate, spo2],
outputs=output
)
# Also update output when buttons clicked by triggering slider change
for slider in [bp_sys, bp_dia, temp, heart_rate, spo2]:
slider.change(
fn=update_all,
inputs=[bp_sys, bp_dia, temp, heart_rate, spo2],
outputs=output
)
# Show initial values result
output.value = health_monitoring(120, 80, 36.5, 75, 98)
demo.launch()
|