NISTH, transplant sonrası hastaların KMR/KRE/GFR ölçümlerini tek bir teknik boru hattında işleyip klinik karar desteği için risk, anomali, tahmin ve kohort karşılaştırması üreten bir sistemdir.
Aşağıdaki görseller
python3 backend/run_all.pysonrası dinamik üretilen rapor varlıklarından alınır.
| Konu | Link |
|---|---|
| Dinamik hasta raporları (index) | Doc/Hasta_Raporları_Detay.md |
| Pipeline çalıştırma | Pipeline Çalıştırma |
| Tam doğrulama | Tam Doğrulama |
| Çıktı sözleşmesi | Çıktı Dosyaları ve Veri Sözleşmesi |
| Risk skorlama detayları | Risk Skorlama Yapısı |
- Sistem Özeti
- Mimari ve Bileşenler
- Veri Girişi ve Dönüşüm Kuralları
- Zaman Eksenleri ve Birleşik Timeline
- Tahmin Modelleri
- Anomali Modelleri
- Risk Skorlama Yapısı
- Improved Cohort Mantığı
- Çıktı Dosyaları ve Veri Sözleşmesi
- Doktor Paneli Performans Raporu
- Pipeline Çalıştırma (
run_all.py) - Tam Doğrulama (
full_system_check.py) - Frontend Entegrasyonu
- Operasyonel Notlar ve Limitasyonlar
- Hızlı Komut Referansı
- Ek Dokümanlar
NISTH aşağıdaki sorulara cevap verir:
- Hastanın her zaman noktasındaki toplam klinik riski nedir?
- Bu risk KMR kaynaklı mı LAB kaynaklı mı?
- Ölçüm dışı zaman noktalarında risk nasıl ele alınmalı?
- Anomali var mı, hangi metrikte var?
- Hasta trendi iyileşmiş kohort davranışına ne kadar yakın?
- Modelin hasta bazlı tahmin performansı nedir?
- Hasta detay timeline JSON dosyaları
- Dashboard özet dosyaları
- Referans bant / kohort analizi
- Doktor paneli hasta bazlı performans raporu
- Dinamik markdown hasta raporları (
Doc/Hasta_Raporları_Detay.md)
flowchart TD
A["Excel Kaynağı\n/data/data.xlsx"] --> B["I/O Katmanı\nbackend/io_excel.py"]
B --> C["KMR Tahmin\nbackend/kmr_model.py"]
B --> D["LAB Tahmin\nbackend/lab_model.py"]
B --> E["KMR Anomali\nbackend/anomaly_vae.py"]
B --> F["LAB Anomali\nbackend/lab_anomaly_vae.py"]
C --> G["Risk Hesaplama\nbackend/risk_scoring.py"]
D --> G
E --> G
F --> G
B --> H["Referans Band\nbackend/reference_band.py"]
G --> I["Export\nbackend/export_json.py + backend/export_markdown.py"]
H --> I
I --> J["frontend/public/*.json,*.csv"]
I --> L["Doc/reports/*.md,*.png"]
J --> K["Next.js UI\nfrontend/src"]
| Modül | Sorumluluk |
|---|---|
backend/io_excel.py |
Excel okuma, kolon normalize etme, long format üretimi, improved cohort etiketleme |
backend/time_mapping.py |
KMR/LAB/unified timeline sözleşmesi |
backend/kmr_model.py |
KMR hasta bazlı tahmin |
backend/lab_model.py |
KRE/GFR tahmini (tekli ve çoklu çıktı) |
backend/anomaly_vae.py |
KMR anomali skorları |
backend/lab_anomaly_vae.py |
KRE/GFR anomali skorları |
backend/risk_scoring.py |
Bileşen riskleri + birleşik risk + alarm seviyesi |
backend/reference_band.py |
Improved cohort referans bantları ve trend çizgileri |
backend/export_json.py |
Frontend için JSON/CSV export sözleşmeleri |
backend/export_markdown.py |
Dinamik markdown raporları + PNG grafik üretimi |
backend/run_all.py |
Uçtan uca pipeline orkestrasyonu |
backend/full_system_check.py |
Uçtan uca veri + şema + frontend build doğrulaması |
data/data.xlsx
| Grup | Alanlar |
|---|---|
| Hasta meta | patient_code, age, BMI, vital_status, blood_group, gender |
| KMR | Day_1..Day_7, Week_2..Week_4, Month_2..Month_12 |
| LAB | *_KRE, *_GFR çiftleri (Day_7, Week_2, Week_3, Month_1..Month_6, Month_12) |
io_excel.load_excelkolon adlarında boşluk/format sorunlarını normalize eder.- KMR
wide -> longdönüşümü çıktısı:patient_code,time_key,time_order,pseudo_time_days,kmr
- LAB
wide -> longdönüşümü çıktısı:patient_code,time_key,time_order,pseudo_time_days,kre,gfr
- Sadece mevcut (non-null) ölçüm satırları long yapıya eklenir.
Kaynak: backend/time_mapping.py
| Harita | Nokta Sayısı | Kullanım |
|---|---|---|
KMR_TIME_MAP |
21 | KMR eğitim ve görselleştirme sırası |
LAB_TIME_MAP |
10 | KRE/GFR eğitim sırası |
UNIFIED_TIME_MAP |
22 | Risk, timeline birleşimi, UI senkronizasyonu |
UNIFIED_TIME_MAP alanları:
order: grafik ve model sırasıpseudo_days: gün bazlı analitik zamanhas_kmr: bu noktada KMR beklenir mihas_lab: bu noktada KRE/GFR beklenir mi
flowchart LR
A["Day_1..Day_7"] --> U
B["Week_2..Week_4"] --> U
C["Month_1..Month_12"] --> U
U["UNIFIED_TIME_MAP"] --> T["Tek Timeline\n22 nokta"]
Bu yaklaşım sayesinde:
- tüm paneller aynı zaman düzenini kullanır,
- LAB ve KMR ölçüm boşlukları açıkça ayrıştırılır,
- tahmin durumu (
*_pred_status) anlaşılır hale gelir.
Model davranışı:
- TensorFlow varsa LSTM/GRU tabanlı hasta modelleri,
- veri azsa fallback tahmini,
- unified grid üzerinde geçmiş + ileri tahmin üretimi.
Feature engineering (özet):
delta_from_baselineratio_from_baseline- EWMA
- rolling CV
- kısa dönem eğim
Stabilite kuralları:
- fizyolojik sınır clamp (
0..100) - interval düzeni (
pred_lo <= pred <= pred_hi)
Üretilen alanlar:
kmr_pred,kmr_pred_lo,kmr_pred_hi,residual
Model davranışı:
- KRE ve GFR için tekli veya çoklu-output model,
- unified LAB timeline üzerinde tahmin,
- GFR için hasta-içi bias kalibrasyonu.
Stabilite kuralları:
- KRE clamp:
0..15 - GFR clamp:
0..180 - interval düzeni garanti
Üretilen alanlar:
kre_pred,kre_pred_lo,kre_pred_higfr_pred,gfr_pred_lo,gfr_pred_hi
- VAE/autoencoder yaklaşımıyla reconstruction error tabanlı skor
- Eğitim başarısızsa basit eşik/z-score fallback
Üretilen alanlar:
kmr_anomaly_scorekmr_anomaly_flag
- KRE ve GFR için ayrı model/fallback
- Uygun olduğunda multi-output öğrenme
Üretilen alanlar:
kre_anomaly_score,kre_anomaly_flaggfr_anomaly_score,gfr_anomaly_flag
Kaynaklar:
backend/risk_scoring.pybackend/config.py
flowchart TD
A["KMR Level"] --> K
B["KMR Trend"] --> K
C["KMR Volatility"] --> K
D["KMR AE"] --> K
E["KMR Residual"] --> K
K["KMR Risk"] --> O["Overall Risk"]
F["KRE Level"] --> L
G["GFR Level"] --> L
H["LAB Trend"] --> L
I["LAB Anomaly"] --> L
L["LAB Risk"] --> O
O --> R["Alarm Level"]
Klinik eşikler:
<=0.5: iyi0.5-2: dikkat2-5: kritik>5: çok kritik
Erken faz ağırlığı:
pseudo_days <= 2:*0.553..6:*0.80>=7:*1.00
kmr_risk =
0.35*kmr_level +
0.25*kmr_trend +
0.10*kmr_volatility +
0.15*kmr_ae +
0.15*kmr_residual
- KRE düşükse iyi, GFR yüksekse iyi
- Trend:
- KRE düşüşü olumlu
- GFR artışı olumlu
- LAB anomaly katkısı eklenir
Ağırlıklar:
lab_level_weight = 0.6lab_trend_weight = 0.4- iç anomaly katkısı:
0.3 - son çıktı ölçeği:
*0.9
overall_risk = 0.65*kmr_risk + 0.35*min(lab_risk, kmr_risk+20)
Alarm eşikleri:
| Aralık | Seviye |
|---|---|
0-29.9 |
Normal |
30-59.9 |
Dikkat |
60-79.9 |
Kritik |
80-100 |
Çok Kritik |
Aynı zaman noktasında kmr, kre, gfr hepsi boş ise:
overall_risk = 0- trend carry-forward uygulanmaz
Bu karar, ölçüm olmayan noktalarda yanlış alarm birikimini engeller.
Timeline, her metrik için aşağıdaki status alanlarını taşır:
kmr_pred_statuskre_pred_statusgfr_pred_status
| Status | Anlam |
|---|---|
ok |
Model tahmini geçerli |
forecast |
İleri dönem öngörü |
warmup_copy |
Erken dönem gerçek ölçüm kopyası |
warmup_bootstrap |
Warmup tahmini |
fallback_ewma |
EWMA fallback |
fallback_forecast |
Fallback ileri tahmin |
insufficient_data |
Veri yetersiz |
missing_prediction |
Tahmin üretilemedi |
timepoint_not_applicable |
O metrik için zaman noktası uygulanmaz |
Bu sayede UI, boş tahmini “neden boş” olarak açıklayabilir.
Kaynak: backend/io_excel.py::calculate_improved_proxy
Kural seti:
- Aday hasta:
Month_9..Month_12içinde en az bir KMR değeri - Klinik iyileşme:
- KMR:
last < 0.5veya ilk değere göre güçlü düşüş - KRE:
last < 1.2veya kötüleşmeme - GFR:
last >= 90veya kötüleşmeme
- KMR:
- Katı kohort çok küçükse fallback: aday kohort
Bu kohort aşağıdaki üretimlerde kullanılır:
- referans bant
- kohort trajectory
- klinik benchmark görselleri
| Dosya | İçerik |
|---|---|
patients/{patient_code}.json |
hasta timeline + meta + last status |
patient_features.json |
liste ekranı için özet feature set |
data_summary.json |
üst KPI özetleri |
reference_band.json |
improved cohort median/IQR bantları |
cohort_trajectory.json |
KMR kohort eğrisi |
cohort_trajectory_lab.json |
KRE/GFR kohort eğrisi |
channel_overview.json |
metrik kapsama/ölçüm sayıları |
doctor_performance_report.json |
hasta bazlı model performansı |
doctor_performance_report.csv |
doktor paneli tablosal export |
| Dosya | İçerik |
|---|---|
Hasta_Raporları_Detay.md |
dinamik ana index |
reports/patients/{patient_code}.md |
hasta bazlı detay markdown raporları |
reports/assets/*.png |
otomatik üretilen grafikler |
{
"meta": {
"patient_code": "AB",
"improved_proxy": true
},
"timeline": [
{
"time_key": "Day_7",
"kmr": 0.81,
"kre": 1.42,
"gfr": 74.0,
"kmr_pred": 0.88,
"kmr_pred_status": "ok",
"kre_pred_status": "ok",
"gfr_pred_status": "ok",
"kmr_anomaly_flag": false,
"risk_score": 31.4,
"risk_level": "Dikkat"
}
],
"last_status": {
"kmr_last": 0.49,
"risk_last": 24.3,
"risk_level_last": "Normal"
}
}- Liste ekranı için optimize hafif hasta kaydı
- Son gerçek ölçüm değerleri + son ölçüm zamanları
- Anomali rozetleri + risk seviyeleri
- Toplam hasta sayısı
- Improved cohort sayısı
- Anomalili hasta sayısı
- Risk dağılımı
- Ortalama skorlar
Dosyalar:
frontend/public/doctor_performance_report.jsonfrontend/public/doctor_performance_report.csv
Amaç:
- modelin hasta bazlı tahmin kalitesini ölçmek
- hangi metrikte sapma olduğunu hızlı görmek
- klinik review toplantılarında doğrudan kullanılabilir performans dökümü sağlamak
Alanlar (hasta bazlı):
n_actual_points,n_pred_points,n_eval_pointsmae,rmse,mape_percent,biasn_interval_points,interval_coveragelast_actual,last_pred,last_error
flowchart LR
A["patients/{id}.json timeline"] --> B["Metric Evaluation\nactual vs pred"]
B --> C["Per-Patient Metrics\nMAE RMSE MAPE Coverage"]
C --> D["doctor_performance_report.json"]
C --> E["doctor_performance_report.csv"]
backend/run_all.py varsayılan olarak:
- eski üretilmiş çıktıları temizler
- tüm eğitimi sıfırdan yapar
- atomik publish uygular
- dinamik markdown raporları ve PNG grafikleri tekrar üretir
python3 backend/run_all.pyTemizliği atlamak için:
python3 backend/run_all.py --skip-cleansequenceDiagram
participant U as User
participant R as run_all.py
participant IO as io_excel.py
participant M as Models
participant S as risk_scoring.py
participant E as export_json.py
participant P as frontend/public
U->>R: python3 backend/run_all.py
R->>R: Step 0 temizle (varsayılan)
R->>IO: Excel yükle + long format
R->>M: KMR/LAB tahmin eğitimi
R->>M: KMR/LAB anomali eğitimi
R->>S: Unified timeline risk hesapla
R->>E: JSON/CSV export staging
E->>P: Atomik publish
R-->>U: Pipeline complete
python3 backend/full_system_check.pyKontrol kapsamı:
- Excel -> JSON KMR/KRE/GFR birebir değer kontrolü
- JSON şema ve tutarlılık
- risk/aralık/flag doğrulaması
- doktor raporu dosya + şema + hasta sayısı kontrolü
- dinamik markdown rapor dosyalarının bütünlüğü
- frontend lint + production build
Bu komut release öncesi kalite kapısıdır.
Ana data hook:
frontend/src/hooks/useKimerizmData.ts
Ana sayfalar:
| Route | Açıklama |
|---|---|
/ |
Dashboard |
/patients |
Hasta listesi |
/patients/[id] |
Hasta detay |
/reports |
Rapor indirme ekranı |
Rapor sayfası:
- klasik hasta CSV/PDF
- doktor performans CSV/JSON indirme
- Sistem batch tabanlıdır, gerçek zamanlı API sunmaz.
- TensorFlow yoksa fallback devreye girer; kalite etkilenebilir.
- Klinik kararlar için tek başına kullanılmamalıdır.
- Girdi kalitesi (
data/data.xlsx) doğrudan çıktı kalitesini etkiler.
# bağımlılıklar
pip install -r requirements.txt
cd frontend && npm install && cd ..
# tam pipeline (clean + train + export)
python3 backend/run_all.py
# tam doğrulama
python3 backend/full_system_check.py
# sadece mevcut çıktıları doğrula (pipeline çalıştırmadan)
python3 backend/full_system_check.py --skip-pipeline
# frontend geliştirme
cd frontend && npm run dev
# frontend kalite kontrol
cd frontend && npm run lint && npm run build:next- Sistem raporu:
Doc/SISTEM_RAPORU.md - Mimari:
Doc/SISTEM_MIMARISI.md - Grafik açıklamaları:
Doc/GRAFIK_ACIKLAMA_DOKÜMANTASYON.md - Kurulum:
Doc/kurulum.md,frontend/kurulum.md
Bu sistem karar destek amaçlıdır. Nihai klinik kararlar uzman hekim değerlendirmesi ile alınmalıdır.


