예제 #1
0
        public SigninStrip SignIn(PharmacyReporterManager orm)
        {
            //获取处方单
            var prenos = orm.GetPresNO(Ptno);

            if (prenos.Length <= 0)
            {
                throw new Exception("今日无处方、预约状态医嘱!");
            }
            //确定取药窗口,使用取余编制序号算法按人平均分配队伍
            var currentWin = workingWins[index % workingWins.Length];

            //更新医嘱状态,取药状态
            for (int i = 0; i < prenos.Length; i++)
            {
                //只有未签到的处方单才会更新状态
                if (!orm.HadCheckedIn(Ptno, prenos[i].Presno))
                {
                    prenoSet.Add(prenos[i].Presno);
                    print = true;
                }
                else
                {
                    useedWindowCode = orm.GetCurrentWindow(Ptno, prenos[i].Presno);
                    windowsSet.Add($@"{ orm.GetWindowName(useedWindowCode)}");
                }
            }
            //同一患者同一窗口取药机制
            if (print)
            {
                var list = prenoSet.ToList();
                for (int i = 0; i < list.Count; i++)
                {
                    orm.OrderMedicationAppointment(Ptno, list[i]);
                    orm.PrslipMedicationAppointment(Ptno, list[i], index.ToString()
                                                    , useedWindowCode.IsEmpty() ? currentWin.Code : useedWindowCode);
                }
            }
            db.CommitTrans();

            if (!print)
            {
                throw new Exception($@"请到{windowsSet.Join(",")}取药!");
            }
            else
            {
                return new SigninStrip
                       {
                           PTNO        = Ptno,
                           PTNAME      = sname,
                           CHECK_DATE  = Environ.SlowTime.ToString("yyyy-MM-dd HH:mm:ss"),
                           WINDOW_NAME = orm.GetWindowName(currentWin.Code)
                       }
            };
        }
    }
        /// <summary>
        /// 获取窗口号
        /// </summary>
        private string GetOutPatientWindowNo(PharmacyReporterManager orm, string Ptno)
        {
            var outPreNos = orm.GetOutPresNO(Ptno);

            for (int i = 0; i < outPreNos.Length; i++)
            {
                if (!orm.IsOrderCharged(outPreNos[i].Presno))
                {
                    throw new Exception("您的处方未缴费 !");
                }
            }

            var windowsSet = new HashSet <string>();
            var prenos     = orm.GetPresNOwithWindow(Ptno);

            for (int i = 0; i < prenos.Length; i++)
            {
                //只有未签到的处方单才会更新状态
                if (orm.HadCheckedInWindow(Ptno, prenos[i].Presno))
                {
                    var useedWindows = orm.GetCurrentWindow(Ptno, prenos[i].Presno);
                    for (int j = 0; j < useedWindows.Length; j++)
                    {
                        windowsSet.Add($@"{ orm.GetWindowName(useedWindows[j].Code)}");
                    }
                }
            }

            if (windowsSet.Count == 0)
            {
                return(string.Empty);
            }
            else
            {
                throw new RepeatException($@"请到 {windowsSet.Join(",").Trim()} 取药!");
            }
        }
        /// <summary>
        /// 获取已分配的窗口
        /// </summary>
        private string GetInPatientWindowNo(PharmacyReporterManager orm, string Ptno)
        {
            var windowsSet = new HashSet <string>();
            var checkInfo  = orm.GetInPatientCheckedInfo(Ptno);
            var orders     = orm.GetInpatientCheckedOrder(checkInfo);

            for (int i = 0; i < orders.Length; i++)
            {
                if (orm.InPatientHadCheckedIn2(Ptno, orders[i].ORDERNO))
                {
                    var inUseedWindowCode = orm.InPatientGetCurrentWindow(Ptno, orders[i].ORDERNO);
                    windowsSet.Add($@"{orm.GetWindowName(inUseedWindowCode)}");
                }
            }

            if (windowsSet.Count == 0)
            {
                return(string.Empty);
            }
            else
            {
                throw new Exception($@"请到 {windowsSet.Join(",").Trim()} 取药!");
            }
        }