/// <summary> /// מחשבת את זמן ההמתנה המשוער במחלקה ובאגף המיון יחד /// עפ"י התאריך-העברי הלועזי והיום בשבוע והמצב הנוכחי במחלקה /// </summary> /// <param name="departmentCode"></param> public void CalcWaitingTime(int departmentCode) { Hospital_DBEntities2 db = new Hospital_DBEntities2(); SeasonInformation dayOfWeekAvg = null; SeasonInformation dateAvg = null; SeasonInformation heberewDateAvg = null; if (BLManager.CurrentDayOfWeek != null) { dayOfWeekAvg = BLManager.GetSeasonInformation(BLManager.CurrentDayOfWeek.SeasonCode, departmentCode, true); } //בגלל שיש שוני בין השנים והמועדים הלועזיים תלויים ביום בחודש ובחודש לכן היחס ליום הינו אילו היה חל בשנה בו נשמר המידע if (BLManager.CurrentDate != null) { dateAvg = BLManager.GetSeasonInformation(BLManager.CurrentDate.SeasonCode, departmentCode, true); } if (BLManager.CurrentHeberewDate != null) { heberewDateAvg = BLManager.GetSeasonInformation(BLManager.CurrentHeberewDate.SeasonCode, departmentCode, true); } if (dayOfWeekAvg == null && heberewDateAvg == null && dateAvg == null) { WaitingTime += StatisticsCalculations.CalcEstimatedWaitingTime(db.Departments.FirstOrDefault(d => d.DepartmentCode == departmentCode).SeasonInformation.FirstOrDefault(si => si.SeasonCode == db.Seasons.FirstOrDefault(s => s.HebrewDate == null && s.Date.Value == null && s.DayOfWeek == null).SeasonCode)); } else if (dayOfWeekAvg != null && heberewDateAvg == null && dateAvg == null) { WaitingTime += StatisticsCalculations.CalcEstimatedWaitingTime(dayOfWeekAvg); } else if (heberewDateAvg != null && dateAvg == null) { WaitingTime += StatisticsCalculations.CalcEstimatedWaitingTime(heberewDateAvg); } else if (heberewDateAvg == null && dateAvg != null) { WaitingTime += StatisticsCalculations.CalcEstimatedWaitingTime(dateAvg); } else if (heberewDateAvg != null && dateAvg != null)//אם יום מסויים הינו גם תאריך עברי מיוחד וגם תאריך לועזי מיוחד משוקלל הממוצע של שניהם { WaitingTime += StatisticsCalculations.CalcEstimatedWaitingTime(heberewDateAvg); WaitingTime += StatisticsCalculations.CalcEstimatedWaitingTime(dateAvg); WaitingTime -= StatisticsCalculations.CalcEstimatedWaitingTime(BLManager.GetSeasonInformation(db.Seasons.FirstOrDefault(s => s.NumOfDays == 365).SeasonCode, departmentCode, true)); } else //אין אף תאריך מיוחד סימן הזיהוי של המידע הכללי הינו אורך של 365 ימים { WaitingTime += StatisticsCalculations.CalcEstimatedWaitingTime(BLManager.GetSeasonInformation(db.Seasons.FirstOrDefault(s => s.NumOfDays == 365).SeasonCode, departmentCode, true)); } }
/// <summary> /// עידכון נתוני העונות במסד הנתונים /// </summary> public void SetSeasonInfo() { //set date not historical season information if (BLManager.CurrentDate != null && BLManager.GetSeasonInformation(BLManager.CurrentDate.SeasonCode, DepartmentCode, false) != null) { SetSeasonInfoInDB(BLManager.GetSeasonInformation(BLManager.CurrentDate.SeasonCode, DepartmentCode, false)); } //set heberew date not historical season information if (BLManager.CurrentHeberewDate != null && BLManager.GetSeasonInformation(BLManager.CurrentHeberewDate.SeasonCode, DepartmentCode, false) != null) { SetSeasonInfoInDB(BLManager.GetSeasonInformation(BLManager.CurrentHeberewDate.SeasonCode, DepartmentCode, false)); } //set day of week not historical season information if (BLManager.CurrentDayOfWeek != null && BLManager.GetSeasonInformation(BLManager.CurrentDayOfWeek.SeasonCode, DepartmentCode, false) != null) { SetSeasonInfoInDB(BLManager.GetSeasonInformation(BLManager.CurrentDayOfWeek.SeasonCode, DepartmentCode, false)); } //Check if difining new season needed (if no specific info for dopartment for heberew date or date) if ((BLManager.CurrentDate == null || BLManager.GetSeasonInformation(BLManager.CurrentDate.SeasonCode, DepartmentCode, false) == null) && (BLManager.CurrentHeberewDate == null || BLManager.GetSeasonInformation(BLManager.CurrentHeberewDate.SeasonCode, DepartmentCode, false) == null)) { //only day of week info is not strong enough //רוצים לבדוק האם הנתונים של היום שונים באופן משמעותי מהנתונים הכלליים //האם צריך לשמור את היום כתאריך מיוחד או לא //הנתונים הכלליים משמעותם: או המידע של כל השנה או המידע של היום הנוכחי בשבוע, תלוי בשאילה אם //יש מידע על יום בשבוע או אין SeasonInformation infoToCheck; if (BLManager.CurrentDayOfWeek == null) { infoToCheck = BLManager.GetSeasonInformation(new Hospital_DBEntities2().Seasons.First(s => s.NumOfDays == 365).SeasonCode, DepartmentCode, true); } else { infoToCheck = BLManager.GetSeasonInformation(BLManager.CurrentDayOfWeek.SeasonCode, DepartmentCode, true); } //בודק מה היחס שבין היחסים של התאריכים //אם היחס שונה משמעותית if (infoToCheck.Ratio / DayWaitingAvg / (WaitersAvg / StaffAvg) < 0.5 || infoToCheck.Ratio / (DayWaitingAvg / (WaitersAvg / StaffAvg)) > 1.5) { AddSeason(); } } }