Spaces:
Sleeping
Sleeping
File size: 9,392 Bytes
262a1c3 0d515e2 262a1c3 cce89e9 262a1c3 cce89e9 262a1c3 cce89e9 262a1c3 cce89e9 262a1c3 33ac507 262a1c3 33ac507 262a1c3 33ac507 262a1c3 cce89e9 262a1c3 cce89e9 262a1c3 0d515e2 262a1c3 cce89e9 0d515e2 262a1c3 33ac507 262a1c3 33ac507 cce89e9 262a1c3 33ac507 262a1c3 33ac507 262a1c3 33ac507 262a1c3 33ac507 262a1c3 33ac507 262a1c3 cce89e9 33ac507 262a1c3 33ac507 262a1c3 33ac507 262a1c3 33ac507 262a1c3 33ac507 262a1c3 33ac507 262a1c3 33ac507 262a1c3 c41f029 33ac507 262a1c3 33ac507 cce89e9 262a1c3 cce89e9 262a1c3 | 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 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 | import os
import requests
import gradio as gr
# ==========================================
# 1. CLOUD SETTINGS & SECURITY INITIALIZATION
# ==========================================
GROQ_API_KEY = os.environ.get("GROQ_API_KEY")
LLM_MODEL = "llama-3.3-70b-versatile"
# ==========================================
# 2. EXTENSIVE DATA TEMPLATE (Deep Research Source)
# ==========================================
ASAL_RESEARCH_PAPER = {
"background_layer": """
RESEARCH TITLE: Towards a Low Cost Multi Parameter Monitoring Framework for Pressure Ulcer Prevention in Resource Limited Healthcare Settings
CLINICAL BURDEN & SYSTEM FOCUS:
- Pressure ulcers (PUs), or bedsores, are severe localized injuries to the skin and deep tissue structures caused by prolonged mechanical loading.
- WHO Global Statistics (2023): Affects 1 in 10 hospitalized patients worldwide, skyrocketing to 33% within highly critical Intensive Care Units (ICUs).
- Financial & Operational Crisis: Treating a single full-thickness Stage IV pressure ulcer drains hospital reserves by $20,000 to $150,000 USD.
""",
"findings_layer": """
EMPIRICAL INSIGHTS & CLINICAL PATHOLOGY:
- Finding 1: Most intelligent commercial mattresses focus strictly on positional body classification, failing to perform predictive tracking.
- Finding 2: Comprehensive multi-parameter sensory tracking drastically increases preventative clinical value. Sharp localized temperature spikes across specific high-pressure target zones act as an early biological marker of severe tissue ischemia and acute inflammation well before visible dermal damage occurs.
- Finding 4: Decentralized AI notification loops effectively mitigate caregiver burnout, accelerating average nursing repositioning intervention times.
""",
"architecture_layer": """
LOW-COST HARDWARE ARRAY & ALGORITHMIC FRAMEWORK ($20β$45 BUDGET):
1. Continuous Sensing Fabric: Piezoresistive Force Sensitive Resistors (FSR402, ~$5-10) to map localized pressure; ultra-thin micro-thermistors (~$1-3) for continuous thermodynamic skin scanning; and capacitive hygrometer arrays (~$3-5) to monitor moisture accumulation.
2. Edge Microcontroller Node: Managed by an ESP32 Development Module (~$3-8) embedded into TPU-Coated Medical Fabric with Copper Conductive Thread.
3. Mathematical Risk Index (RI) Protocol: Computes live values locally using the validated pathophysiology equation:
RI = (0.50 * Pressure Score) + (0.30 * Temperature Score) + (0.20 * Moisture Score)
"""
}
def calculate_system_metrics(p, t, m):
p_factor = float(p) / 100.0
t_min, t_max = 30.0, 42.0
t_factor = (float(t) - t_min) / (t_max - t_min)
t_factor = max(0.0, min(1.0, t_factor))
m_factor = float(m) / 100.0
calculated_ri = (0.50 * p_factor) + (0.30 * t_factor) + (0.20 * m_factor)
return round(calculated_ri, 3)
def practical_simulation_engine(pressure, temp, moisture):
score = calculate_system_metrics(pressure, temp, moisture)
if score < 0.42:
zone_status = "π’ LOW OPERATIONAL RISK STATE"
context_block = f"{ASAL_RESEARCH_PAPER['background_layer']}\n{ASAL_RESEARCH_PAPER['findings_layer']}"
elif score < 0.70:
zone_status = "π‘ MODERATE CLINICAL ALERT STATE"
context_block = f"{ASAL_RESEARCH_PAPER['findings_layer']}\n{ASAL_RESEARCH_PAPER['architecture_layer']}"
else:
zone_status = "π΄ CRITICAL HIGH-RISK EMERGENCY"
context_block = f"{ASAL_RESEARCH_PAPER['background_layer']}\n{ASAL_RESEARCH_PAPER['architecture_layer']}\n{ASAL_RESEARCH_PAPER['findings_layer']}"
if not GROQ_API_KEY:
return "β οΈ **Groq API Key Error**: Please open the Space Settings tab, find 'Secrets', and add your `GROQ_API_KEY`."
url = "https://api.groq.com/openai/v1/chat/completions"
headers = {
"Authorization": f"Bearer {GROQ_API_KEY}",
"Content-Type": "application/json"
}
system_prompt = (
"You are a Principal Embedded Biomedical AI Systems Engineer. Generate an extensive, "
"rigorous medical-technical evaluation report based on live bedside telemetry. "
"Provide deep scientific explanations, specific hardware price breakdowns, and explicit clinical mechanics."
)
user_prompt = f"""
[LIVE BEDSIDE STREAMING TELEMETRY DATA]:
- Calculated Risk Index (RI): {score}
- Operational Zone Evaluation: {zone_status}
- Sensor Inputs -> Mechanical Pressure Load: {pressure}%, Core Dermal Temperature Node: {temp}Β°C, Relative Epidermal Moisture: {moisture}%
[VERIFIED RESEARCH CONTEXT]:
{context_block}
Generate an extensive technical report structured under these exact headers:
### I. ADVANCED SYSTEM STATUS & PATHOPHYSIOLOGICAL ANALYSIS
### II. RIGOROUS RESEARCH PAPER CROSS-REFERENCE & VALUE PROPOSITION
### III. CRITICAL BEDSIDE NURSING PROTOCOLS & CLINICAL INTERVENTIONS
"""
payload = {
"model": LLM_MODEL,
"messages": [
{"role": "system", "content": system_prompt},
{"role": "user", "content": user_prompt}
],
"temperature": 0.25,
"max_tokens": 1200
}
try:
res = requests.post(url, headers=headers, json=payload)
if res.status_code == 200:
return res.json()['choices'][0]['message']['content']
elif res.status_code == 429:
return "β³ **Groq API Rate Limit Hit (429)**: Please wait 5-8 seconds and click transmit again to refresh the token window."
else:
return f"β Groq API Communication Failure ({res.status_code}): {res.text}"
except Exception as e:
return f"β Server Timeout During Complex Compilation: {str(e)}"
attractive_css = """
body, .gradio-container {
background-color: #060913 !important;
font-family: 'Space Grotesk', system-ui, sans-serif !important;
}
.main-title {
text-align: center;
padding: 30px 0 15px 0;
}
.main-title h1 {
background: linear-gradient(135deg, #00f2fe 0%, #4facfe 50%, #9b51e0 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
font-size: 2.8rem !important;
font-weight: 900 !important;
}
.main-title p {
color: #94a3b8 !important;
font-size: 1.15rem;
}
.control-panel {
background: linear-gradient(145deg, rgba(15, 23, 42, 0.8) 0%, rgba(30, 41, 59, 0.5) 100%) !important;
border: 1px solid rgba(0, 242, 254, 0.25) !important;
border-radius: 16px !important;
padding: 25px !important;
box-shadow: 0 12px 40px 0 rgba(0, 0, 0, 0.6) !important;
backdrop-filter: blur(16px) !important;
}
.output-panel {
background: linear-gradient(145deg, rgba(10, 15, 30, 0.9) 0%, rgba(15, 23, 42, 0.7) 100%) !important;
border: 1px solid rgba(155, 81, 224, 0.25) !important;
border-radius: 16px !important;
padding: 25px !important;
box-shadow: 0 12px 40px 0 rgba(0, 0, 0, 0.7) !important;
backdrop-filter: blur(16px) !important;
}
input[type="range"] {
accent-color: #00f2fe !important;
}
.action-btn {
background: linear-gradient(90deg, #00f2fe 0%, #4facfe 50%, #9b51e0 100%) !important;
color: #04060d !important;
border: none !important;
font-weight: 800 !important;
font-size: 1.05rem !important;
text-transform: uppercase;
padding: 14px 20px !important;
border-radius: 10px !important;
box-shadow: 0 0 20px rgba(0, 242, 254, 0.4) !important;
cursor: pointer;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1) !important;
}
.action-btn:hover {
transform: translateY(-3px) scale(1.02);
box-shadow: 0 0 35px rgba(0, 242, 254, 0.75), 0 0 15px rgba(155, 81, 224, 0.5) !important;
color: #ffffff !important;
}
.clinical-output {
background: rgba(10, 15, 30, 0.5) !important;
border-left: 4px solid #9b51e0 !important;
padding: 22px !important;
border-radius: 8px;
color: #e2e8f0 !important;
}
.clinical-output h3 {
color: #00f2fe !important;
font-weight: 700 !important;
}
"""
with gr.Blocks(theme=gr.themes.Soft(primary_hue="cyan", neutral_hue="slate"), css=attractive_css) as app:
gr.HTML(
"<div class='main-title'>"
"<h1>π₯ TissueTech Bedside RAG Architecture</h1>"
"<p>β‘ Real-Time Clinical Telemetry & Multi-Parameter Simulation Dashboard</p>"
"</div>"
)
with gr.Row():
with gr.Column(scale=2, elem_classes="control-panel"):
gr.Markdown("### π‘ Live Microcontroller Node Emulation")
p_slider = gr.Slider(0, 100, value=90, label="π¨ Pressure Load Matrix (FSR402) %")
t_slider = gr.Slider(30.0, 42.0, value=39.1, step=0.1, label="π‘οΈ Dermal Thermal Node (DHT11) Β°C")
m_slider = gr.Slider(0, 100, value=85, label="π§ Epidermal Moisture Index %")
gr.Markdown("---")
run_btn = gr.Button("Transmit Matrix to Cloud RAG", elem_classes="action-btn")
with gr.Column(scale=3, elem_classes="output-panel"):
gr.Markdown("### π Peer-Reviewed AI Diagnostic Analysis")
output_markdown = gr.Markdown(elem_classes="clinical-output", value="_Adjust sliders on the left and trigger compilation._")
run_btn.click(fn=practical_simulation_engine, inputs=[p_slider, t_slider, m_slider], outputs=[output_markdown])
app.launch() |