コード例 #1
0
        /// <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));
            }
        }
コード例 #2
0
        /// <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();
                }
            }
        }