import gradio as gr import numpy as np # Generate data for 100 seconds with unique variability def generate_data(start_value, fluctuation, noise_scale, size): time = np.arange(size) data = start_value + fluctuation * np.sin(time / 10) + np.random.normal(scale=noise_scale, size=size) data = np.clip(data, 0, None) # Ensure no negative values return time.tolist(), data.tolist() def fetch_blood_oxygen(): time, oxygen_level = generate_data(start_value=97, fluctuation=5, noise_scale=5, size=10) return {"time": time, "oxygen_level": oxygen_level} def fetch_heart_rate(): time, heart_rate = generate_data(start_value=75, fluctuation=10, noise_scale=10, size=10) return {"time": time, "heart_rate": heart_rate} def fetch_sugar_level(): time, sugar_level = generate_data(start_value=90, fluctuation=15, noise_scale=20, size=10) return {"time": time, "sugar_level": sugar_level} # Create Gradio interfaces for each of the APIs blood_oxygen_interface = gr.Interface( fn=fetch_blood_oxygen, inputs=None, outputs="json", title="Blood Oxygen API", description="Returns blood oxygen data over 100 seconds." ) heart_rate_interface = gr.Interface( fn=fetch_heart_rate, inputs=None, outputs="json", title="Heart Rate API", description="Returns heart rate data over 100 seconds." ) sugar_level_interface = gr.Interface( fn=fetch_sugar_level, inputs=None, outputs="json", title="Sugar Level API", description="Returns sugar level data over 100 seconds." ) # Use Gradio Blocks to run all three interfaces with gr.Blocks() as demo: gr.Markdown("# Real-Time Health Monitoring API") # Add the three interfaces blood_oxygen_interface.render() heart_rate_interface.render() sugar_level_interface.render() # Launch the app demo.launch()