api.main נשמר לצורך תאימות. המודל המותאם נמצא ב־api.hospital_app, משתמש ב־HospitalModelBundle ואינו מבצע חיזוי כאשר לא נטען מודל מאומן. אין fallback של נוסחת heuristic בממשק בית החולים.
הגדרת המקרה
אבחנת AP מתועדת וליפאז או עמילאז ברמה של לפחות פי 3 מה־ULN. הדמיה אינה נדרשת בחוזה הנוכחי.
חוסרים
חוסר אינו אפס ואינו תקין. מטופל אינו נפסל משום שחסרים חמישה משתנים אופציונליים.
סף מטופל
לפיתוח המודל הראשי נדרשות לפחות 8 מתוך 16 קבוצות ליבה, ולפחות נתון vital אחד ונתון מעבדה אחד.
סף משתנה
ברירת המחדל למודל הראשי היא זמינות של 80% ומעלה בעוקבת הפיתוח.
מניעת leakage
התוצא וכשל איברים לאחר חלון הניבוי אינם מועברים למסגרת מאפייני המודל.
אימון
אימפוטציה, קידוד ותקנון נלמדים בתוך כל קפל Cross-Validation בלבד.
1. חוזה הקלט
הקלט יכול לכלול את כל שדות בית החולים הזמינים. השדות שאינם קיימים נשארים null. רשימת TOP 48 המלאה, יחידות ומקורות מופיעה ב־מפרט הנתונים לבית החולים.
| קבוצה | דוגמאות | שימוש |
|---|---|---|
| חובה להגדרת עוקבה | encounter_id, admission_time, age, acute_pancreatitis_diagnosis, lipase/lipase_uln או amylase/amylase_uln, outcome_followup_available | זכאות לפיתוח המודל; לא אימפוטציה |
| קבוצות ליבה | גיל, מין, HR, SBP, RR, חום, SpO₂, הכרה, WBC, Hb/HCT, Urea/BUN, Creatinine, Glucose, Calcium, Albumin, Bilirubin | לפחות 8 מתוך 16 לפיתוח הראשי |
| משלימים | CRP, platelets, sodium, potassium, LDH, AST/ALT, triglycerides, lactate, coagulation | נבחרים לפי זמינות |
| אופציונליים | עישון, אלכוהול, תרופות, PCT, D-dimer, blood gas, magnesium, phosphate | מודל מורחב או ניתוח משני |
דוגמת JSON מלאה יחסית
{
"encounter_id": "ENC-2026-0001",
"admission_time": "2026-08-04T08:15:00+03:00",
"data_context": "model_development",
"age": 64,
"sex": "M",
"acute_pancreatitis_diagnosis": true,
"lipase": 480,
"lipase_uln": 60,
"outcome_followup_available": true,
"imaging_available": false,
"height_cm": 176,
"weight_kg": 89,
"heart_rate": 108,
"systolic_bp": 101,
"diastolic_bp": 61,
"respiratory_rate": 24,
"temperature": 38.2,
"spo2": 93,
"gcs": 15,
"wbc": 17.2,
"hemoglobin": 15.3,
"hematocrit": 47.1,
"platelets": 186,
"urea_mmol_l": 11.4,
"creatinine_umol_l": 132,
"sodium": 137,
"potassium": 4.3,
"glucose_mmol_l": 10.6,
"calcium_mmol_l": 1.96,
"albumin_g_l": 31,
"bilirubin_total_umol_l": 29,
"ast": 118,
"alt": 144,
"ldh": 420,
"crp": 178,
"triglycerides_mmol_l": 2.1,
"diabetes": true,
"heart_failure": false,
"smoking_status": "former",
"alcohol_status": "current",
"home_medications": ["metformin", "atorvastatin"]
}2. בודק זכאות ושלמות מקומי
הבדיקה מתבצעת בדפדפן בלבד ואינה שולחת מידע לשרת. אין להדביק מזהים אמיתיים או מידע רפואי מזוהה באתר ציבורי.
3. התאמת המודל
Pipeline חדש לבית החולים
- סינון העוקבה לפי זכאות, ללא דרישת הדמיה.
- שמירת מטופלים עם חוסרים כל עוד קיימות לפחות 8 מתוך 16 קבוצות הליבה.
- בחירת משתנים זמינים אצל לפחות 80% מהעוקבה כברירת מחדל.
- אימפוטציית חציון למשתנים מספריים עם missing indicators.
- אימפוטציית השכיח וקידוד One-Hot למשתנים קטגוריאליים.
- כל preprocessing מתבצע בתוך כל קפל CV כדי למנוע דליפת מידע.
- רגרסיה לוגיסטית מאוזנת משמשת baseline שקוף; ניתן להשוות בהמשך ל־GBDT/XGBoost.
- סף ההחלטה נבחר מתוצאות Out-of-Fold להשגת רגישות יעד של 98%, תוך מיקסום הסגוליות האפשרית.
- המודל הסופי נשמר יחד עם רשימת המאפיינים, זמינותם, הסף ומדדי OOF.
אימון מקומי
cd PenuX-AP-Severity python scripts/train_hospital_model.py \ --input hospital_ap_pseudonymised.csv \ --target persistent_organ_failure_gt_48h \ --output models/hospital_ap_model.joblib \ --minimum-availability 0.80 \ --target-sensitivity 0.98 \ --cv-folds 5
הפעלת API המודל המותאם
export PENUX_AP_HOSPITAL_MODEL_PATH=models/hospital_ap_model.joblib uvicorn api.hospital_app:app --host 127.0.0.1 --port 8001
אם משתנה הסביבה אינו מוגדר, נקודת הקצה מחזירה 503 ואינה עוברת לנוסחת heuristic.
4. נקודות הקצה במודל בית החולים
| Method | Path | מטרה | מצב |
|---|---|---|---|
| GET | /health | מצב השירות והאם מודל נטען | ממומש ב־hospital_app |
| POST | /validate | בדיקת זכאות לעוקבת פיתוח, כולל מעקב תוצא | ממומש |
| POST | /predict | חיזוי מחקרי עם נתוני 24 שעות; אינו דורש outcome | ממומש, דורש bundle מאומן |
5. OpenAPI — חוזה המודל המותאם
התיעוד אינטראקטיבי לצפייה בלבד. שליחת בקשות מהעמוד מושבתת.
6. מגבלות שחייבות להישאר בתיעוד
- אין נתוני הדמיה במפרט הנוכחי.
- ללא נתוני כאב מובנים, הגדרת המקרה היא תפעולית ולא אימות מלא של כל קריטריוני Atlanta.
- הסף של 8/16 הוא כלל עבודה שצריך לבחון בדוח זמינות פיילוט לפני נעילת הפרוטוקול.
- בדיקות שמוזמנות בעיקר לחולים קשים יוצרות חוסר אינפורמטיבי ויש לבדוק זאת לפי שנה, מחלקה, אתר וחומרה.
- אין להשלים outcome, משך כשל איברים, זמן קבלה או עצם האבחנה באמצעות אימפוטציה.
- אין לפרסם AUROC, רגישות או סגוליות מקומיים לפני אימון ואימות על נתוני בית החולים.