Spaces:
Runtime error
Runtime error
| import streamlit as st | |
| st.set_page_config(page_title="MCAOC-калькулятор", layout="centered") | |
| st.title("🔴 MCAOC — Мастоцит-усиленная аллостатическая перегрузка") | |
| st.markdown("###### Пятимерная модель Long-COVID • ME/CFS • MCS • MCAS • ноябрь 2025") | |
| c1, c2 = st.columns(2) | |
| with c1: | |
| st.subheader("1. Классический allostatic load") | |
| cortisol = st.number_input("Кортизол утренний (нмоль/л)", 50, 1000, 350) | |
| dhea = st.number_input("DHEA-S (мкг/дл)", 20, 1000, 180) | |
| crp = st.number_input("hs-CRP (мг/л)", 0.0, 50.0, 1.8, step=0.1) | |
| hba1c = st.number_input("HbA1c (%)", 4.0, 12.0, 5.5, step=0.1) | |
| hrv = st.number_input("HRV RMSSD (мс)", 5, 150, 32) | |
| pss = st.slider("PSS-10 total", 0, 40, 15) | |
| with c2: | |
| st.subheader("2. Мастоцит-модуль + барьер") | |
| tryptase = st.slider("Триптаза (нг/мл)", 1.0, 60.0, 7.5, step=0.1) | |
| zonulin = st.slider("Зонолин (нг/мл)", 10.0, 200.0, 40.0, step=1.0) | |
| # Расчёт | |
| al = 0 | |
| if cortisol < 150 or cortisol > 550: al += 2.5 | |
| if dhea < 100: al += 2.0 | |
| if crp > 3: al += 1.8 | |
| if hba1c > 5.7: al += 1.2 | |
| if hrv < 30: al += 3.0 | |
| if pss > 20: al += 2.2 | |
| base_score = round(min(al, 10), 2) | |
| mast = 0 | |
| if tryptase >= 20: mast = 6.0 | |
| elif tryptase >= 15: mast = 4.5 | |
| elif tryptase >= 11.4: mast = 2.8 | |
| zon = 2.8 if zonulin > 50 else 0 | |
| mcaoc_score = round(base_score * 0.45 + mast * 0.30 + zon * 0.15 + (1.0 if (mast + zon) > 0 else 0), 2) | |
| mcaoc_score = min(mcaoc_score, 10.0) | |
| # Результат | |
| st.markdown(f"# MCAOC-score = **{mcaoc_score:.2f} / 10**") | |
| if mcaoc_score < 3.0: | |
| st.success("Стадия 0–1 — физиологический аллостаз") | |
| elif mcaoc_score < 5.5: | |
| st.warning("Стадия 2 — ранняя декомпенсация (TILT-начало)") | |
| else: | |
| st.error("Стадия 3–4 — тяжёлая мастоцит-усиленная перегрузка") | |
| delta = round(mcaoc_score - base_score, 2) | |
| if delta > 0: | |
| st.info(f"Мастоцит-модуль добавил **+{delta}** баллов ({delta/base_score*100:+.0f} % к базовому AL)") | |
| st.bar_chart({"Базовый AL-score": [base_score], "Полный MCAOC-score": [mcaoc_score]}, height=250) | |
| st.caption("© 2025 PolySen • Первый в мире публичный калькулятор MCAOC") |