コード例 #1
0
 /// <summary>
 /// 数据库交互
 /// </summary>
 public override void ProcessInfo()
 {
     try
     {
         using (var db = new DataBaser())
             result = Create <IAI_MEDICAL_REGISTRATION_OUT_MANAGER>(db).Insert(requestEntity);
     }
     catch (Exception ex)
     {
         message = ex.Message;
     }
 }
コード例 #2
0
 /// <summary>
 /// 数据库交互
 /// </summary>
 public override void ProcessInfo()
 {
     try
     {
         using (var db = new DataBaser())
             result = Create <IAI_PATIENT_MANAGEER>(db).Select(requestEntity);
     }
     catch (Exception ex)
     {
         message = ex.Message;
     }
 }
コード例 #3
0
 /// <summary>
 /// 数据库交互
 /// </summary>
 public override void ProcessInfo()
 {
     try
     {
         using (var db = new DataBaser())
             result = Create <IAI_ORGANIZATION_MANAGER>(db).Update(requestEntity);
     }
     catch (Exception ex)
     {
         message = ex.Message;
     }
 }
コード例 #4
0
 /// <summary>
 /// 记录发药分配窗口记录
 /// </summary>
 public int LogPharm(TWORD_JBINFO_180104 entity)
 {
     if (base.RoutingRequired)
     {
         return(base.CallProxy <int>(entity));
     }
     else
     {
         using (var db = new DataBaser(true))
         {
             var orm = base.Create <PharmacyReporterManager>(db);
             return(orm.LogPharm(entity));
         }
     }
 }
コード例 #5
0
 /// <summary>
 /// 窗口工作量
 /// </summary>
 public WindowJobs[] GetWindowJobs()
 {
     if (base.RoutingRequired)
     {
         return(base.CallProxy <WindowJobs[]>());
     }
     else
     {
         using (var db = new DataBaser(true))
         {
             var orm = base.Create <PharmacyReporterManager>(db);
             return(orm.GetWindowJobs());
         }
     }
 }
コード例 #6
0
 /// <summary>
 /// 获取窗口排队状态
 /// </summary>
 /// <param name="dm">ture是否包含毒麻发药窗口,false不包含毒麻发药窗口</param>
 /// <param name="working">ture表示仅开放发药窗口,false表示所有发药窗口</param>
 public WindowJobs[] GetWorkingWindowsLineUpNums(bool dm, bool working)
 {
     if (base.RoutingRequired)
     {
         return(base.CallProxy <WindowJobs[]>(dm, working));
     }
     else
     {
         using (var db = new DataBaser(true))
         {
             var orm = base.Create <PharmacyReporterManager>(db);
             return(orm.GetWorkingWindowsLineUpNums(dm, working));
         }
     }
 }
コード例 #7
0
        public override void ProcessInfo()
        {
            try
            {
                using (var db = new DataBaser())
                {
                    db.BeginTrans();

                    Create <IAI_PATIENT_MANAGEER>(db).Merge(requestEntity);

                    db.CommitTrans();
                }
            }
            catch (Exception ex)
            {
                message = ex.Message;
            }
        }
コード例 #8
0
        /// <summary>
        /// 打印签到条
        /// </summary>
        public SigninStrip PrintReportStrip(string Ptno)
        {
            if (Ptno.IsEmpty())
            {
                throw new Exception("患者编号为空 ...");
            }

            if (base.RoutingRequired)
            {
                return(base.CallProxy <SigninStrip>(Ptno));
            }

            using (var db = new DataBaser(true))
            {
                db.BeginTrans();

                var print             = false;
                var inPrint           = false;
                var useedWindowCode   = string.Empty;
                var inUseedWindowCode = string.Empty;
                var windowsSet        = new HashSet <string>();
                var prenoSet          = new HashSet <string>();
                var inOrderSet        = new HashSet <string>();
                var orm = base.Create <PharmacyReporterManager>(db);
                if (!orm.ExistPatient(Ptno))
                {
                    throw new Exception("未找到患者信息 ...");
                }

                //获取患者姓名
                var sname = orm.GetPatientName(Ptno);

                //活动窗口的工作量
                var workingWins = orm.GetWorkingWindow();
                if (workingWins.Length <= 0)
                {
                    throw new Exception("发药窗口未开放 !");
                }

                //取药患者序号
                var index = orm.GetTuyakNo();
                //获取处方单
                var prenos    = orm.GetPresNO(Ptno);
                var checkInfo = orm.GetInPatientCheckInfo(Ptno);
                var orders    = orm.GetInpatientOrder(checkInfo);
                if (orders.Length <= 0 &&
                    prenos.Length <= 0 &&
                    GetInPatientWindowNo(orm, Ptno) == string.Empty &&
                    GetOutPatientWindowNo(orm, Ptno) == string.Empty)
                {
                    throw new Exception("未发现待发药处方 !");
                }

                var dm = false;

                //更新医嘱状态,取药状态
                for (int i = 0; i < prenos.Length; i++)
                {
                    if (orm.HasDMOrder(prenos[i].Presno))
                    {
                        dm = true;
                    }

                    //只有未签到的处方单才会更新状态
                    if (!orm.HadCheckedIn(Ptno, prenos[i].Presno))
                    {
                        prenoSet.Add(prenos[i].Presno);
                        print = true;
                    }
                    // else
                    //{
                    //    orm.GetCurrentWindow(Ptno, prenos[i].Presno);
                    //    useedWindowCode.ad(orm.GetCurrentWindow(Ptno, prenos[i].Presno);
                    //    windowsSet.Add($@"{ orm.GetWindowName(useedWindowCode)}");
                    //}
                }

                //确定取药窗口,使用取余编制序号算法按人平均分配队伍
                var currentWin = GetLeastLineUpNumsWindow(dm);// workingWins[index % workingWins.Length];

                //同一患者同一窗口取药机制
                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);
                    }
                }

                //日间手术操作
                for (int i = 0; i < orders.Length; i++)
                {
                    if (!orm.InPatientHadCheckedIn(Ptno, orders[i].ORDERNO))
                    {
                        inOrderSet.Add(orders[i].ORDERNO);
                        inPrint = true;
                    }
                }

                //var ok = workingWins.Count(r => r.Code.Equals("14") || r.Code.Equals("15")) > 0;
                //var isWeekend = DateTime.Now.DayOfWeek.Equals(DayOfWeek.Sunday) || DateTime.Now.DayOfWeek.Equals(DayOfWeek.Saturday);

                //日间开放10 11号窗口
                //var ok = (inUseedWindowCode.IsEmpty() ? currentWin.Code : inUseedWindowCode).Equals("14")
                //    || (inUseedWindowCode.IsEmpty() ? currentWin.Code : inUseedWindowCode).Equals("15");
                //if (!ok && orders.Length > 0)
                //    throw new Exception("日间手术室指定窗口10、11未开放");

                if (inPrint)
                {
                    //string[] InWincodes = { "14", "15" };
                    var temp = workingWins.ToList();//.FindAll(r => InWincodes.Contains(r.Code));
                    currentWin.Code = temp[index % temp.Count].Code;

                    //需要签到更新签到表和医嘱表
                    orm.InsertIprslip(checkInfo);
                    orm.UpdateIOrderZG(checkInfo);

                    //签到
                    var list = inOrderSet.ToList();
                    for (int i = 0; i < orders.Length; i++)
                    {
                        orders[i].CHUANGKOU = inUseedWindowCode.IsEmpty() ? currentWin.Code : inUseedWindowCode;
                        if (!orm.ExixtOrder(list[i]))
                        {
                            orm.InPatientSignIn(orders[i], checkInfo);
                        }
                    }
                }

                db.CommitTrans();

                #region 窗口分配记录
                orm.LogPharm(new TWORD_JBINFO_180104
                {
                    JBUSE     = Ptno,
                    PUMCODE   = currentWin.Code,
                    PLACECODE = Environ.SlowTime.ToString("yyyy-MM-dd"),
                    MINQTY    = "药房报道机日志"
                });
                #endregion

                if (!print && !inPrint)
                {
                    throw new Exception($@"请到 {windowsSet.Join(",").Trim()} 取药!");
                }
                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)
                           }
                };
            }
        }
    }
コード例 #9
0
        /// <summary>
        /// 打印签到条
        /// </summary>
        public SigninStrip PrintReportStrip(string Ptno)
        {
            if (Ptno.IsEmpty())
            {
                throw new Exception("患者ID号为空!");
            }

            using (var db = new DataBaser())
            {
                db.BeginTrans();
                var print             = false;
                var inPrint           = false;
                var useedWindowCode   = string.Empty;
                var inUseedWindowCode = string.Empty;
                var windowsSet        = new HashSet <string>();
                var prenoSet          = new HashSet <string>();
                var inOrderSet        = new HashSet <string>();
                var orm = base.Create <PharmacyReporterManager>(db);
                if (!orm.ExistPatient(Ptno))
                {
                    throw new Exception("未找到患者信息!");
                }
                //获取患者姓名
                var sname = orm.GetPatientName(Ptno);
                //活动窗口的工作量
                var workingWins = orm.GetWorkingWindow();
                if (workingWins.Length <= 0)
                {
                    throw new Exception("药房窗口未开放,请与药房联系确认后重新签到!");
                }
                //取药患者序号
                var index = orm.GetTuyakNo();
                //获取处方单
                var prenos        = orm.GetPresNO(Ptno);
                var checkInfo     = orm.GetInPatientCheckInfo(Ptno);
                var orders        = orm.GetInpatientOrder(checkInfo);
                var checkedOrders = orm.GetInpatientCheckedOrder(checkInfo);
                //if (prenos.Length<=0&& orders.Length<=0&& !orm.HasInpatientCheckedOrder(checkInfo))
                //    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);
                    }
                }
                //日间手术操作
                if (orders.Length > 0)
                {
                    if (orm.HasInpatientNotCheckedOrder(checkInfo))
                    {
                        orm.InsertIprslip(checkInfo);
                        orm.UpdateIOrderZG(checkInfo);
                    }
                }
                for (int i = 0; i < checkedOrders.Length; i++)
                {
                    if (orm.InPatientHadCheckedIn(Ptno, checkedOrders[i].ORDERNO))
                    {
                        inOrderSet.Add(checkedOrders[i].ORDERNO);
                        inPrint = true;
                    }
                    else
                    {
                        inUseedWindowCode = orm.InPatientGetCurrentWindow(Ptno, checkedOrders[i].ORDERNO);
                        if (inUseedWindowCode != "")
                        {
                            windowsSet.Add($@"{ orm.GetWindowName(inUseedWindowCode)}");
                        }
                    }
                }


                if (inPrint)
                {
                    var list = inOrderSet.ToList();
                    for (int i = 0; i < orders.Length; i++)
                    {
                        orders[i].CHUANGKOU = inUseedWindowCode.IsEmpty() ? currentWin.Code : inUseedWindowCode;
                        if (orm.ExixtOrder(list[i]))
                        {
                            orm.InPatientSignIn(orders[i], checkInfo);
                        }
                    }
                }

                db.CommitTrans();

                if (!print && !inPrint)
                {
                    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)
                           }
                };
            }
        }
    }