Ejemplo n.º 1
0
        /// <summary>
        /// 特列说明性医嘱删除
        /// </summary>
        /// <param name="record">特列说明性医嘱</param>
        /// <param name="empid">操作员ID</param>
        private void spcialOrderDelete(IPD_OrderRecord record, int empid)
        {
            if (record.OrderType == 7)
            {
                //转科医嘱
                List <IPD_TransDept> trans = NewObject <IPD_TransDept>().getlist <IPD_TransDept>(" orderid=" + record.OrderID + " and patlistid=" + record.PatListID + " and cancelFlag=0 and finishflag=0");
                if (trans == null || trans.Count == 0)
                {
                    throw new Exception("转科信息不存在或已经完成,不能删除");
                }

                IPD_TransDept tranDept = trans[0];
                tranDept.CancelFlag  = 1;
                tranDept.CancelDate  = DateTime.Now;
                tranDept.CancelEmpID = empid;
                this.BindDb(tranDept);
                tranDept.save();
                //医嘱自动停的恢复
                List <IPD_OrderRecord> records = NewObject <IPD_OrderRecord>().getlist <IPD_OrderRecord>(" patlistid=" + record.PatListID + " and orderStatus=3 and AutoEndFlag=1");
                foreach (IPD_OrderRecord ipdrecord in records)
                {
                    ipdrecord.OrderStatus = 2;
                    ipdrecord.AutoEndFlag = 0;
                    ipdrecord.EOrderDoc   = 0;
                    ipdrecord.EOrderDate  = Convert.ToDateTime("1900-01-01 00:00:00.000");
                    ipdrecord.TeminalNum  = 0;
                    this.BindDb(ipdrecord);
                    ipdrecord.save();
                }
            }
            else if (record.OrderType == 6 || record.OrderType == 5)
            {
                //医嘱自动停的恢复
                List <IPD_OrderRecord> records = NewObject <IPD_OrderRecord>().getlist <IPD_OrderRecord>(" patlistid=" + record.PatListID + " and orderStatus=3 and AutoEndFlag=1");
                foreach (IPD_OrderRecord ipdrecord in records)
                {
                    ipdrecord.OrderStatus = 2;
                    ipdrecord.AutoEndFlag = 0;
                    ipdrecord.EOrderDoc   = 0;
                    ipdrecord.EOrderDate  = Convert.ToDateTime("1900-01-01 00:00:00.000");
                    ipdrecord.TeminalNum  = 0;
                    this.BindDb(ipdrecord);
                    ipdrecord.save();
                }

                IP_PatList plist = NewObject <IP_PatList>().getmodel(record.PatListID) as IP_PatList;
                //plist.Status = 2;
                plist.IsLeaveHosOrder = 0;
                plist.LeaveHDate      = Convert.ToDateTime("1900-01-01 00:00:00.000");
                plist.OutSituation    = "0";
                this.BindDb(plist);
                plist.save();
                List <IPD_Diagnosis> diags = NewObject <IPD_Diagnosis>().getlist <IPD_Diagnosis>(" orderid=" + record.OrderID);
                foreach (IPD_Diagnosis diag in diags)
                {
                    diag.delete();
                }
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 转科医嘱
        /// </summary>
        /// <param name="patlistid">病人ID</param>
        /// <param name="list">需自动停嘱对象</param>
        /// <param name="transDate">转科日期</param>
        /// <param name="transDeptID">转科科室</param>
        /// <param name="oprator">操作员</param>
        /// <param name="spciRecord">转科医嘱对象</param>
        public void TransDeptOrder(int patlistid, List <IPD_OrderRecord> list, DateTime transDate, int transDeptID, int oprator, IPD_OrderRecord spciRecord)
        {
            //医嘱自动停保存
            foreach (IPD_OrderRecord record in list)
            {
                this.BindDb(record);
                record.save();
            }

            IP_PatList patlist = NewObject <IP_PatList>().getmodel(patlistid) as IP_PatList;

            if (patlist.Status != 2 || patlist.IsLeaveHosOrder == 1)
            {
                throw new Exception("病人状态已经不在床或已经开出院医嘱,不能开转科医嘱");
            }

            List <IPD_TransDept> listTrans = NewObject <IPD_TransDept>().getlist <IPD_TransDept>(" patlistid=" + patlistid + " and cancelFlag=0 and finishFlag=0");

            if (listTrans.Count > 0)
            {
                throw new Exception("该病人存在未完成的转科医嘱,不能再开转科医嘱");
            }

            SerialNumberSource serialNumberSource = NewObject <SerialNumberSource>();
            string             groupID            = serialNumberSource.GetSerialNumber(SnType.医嘱组号);

            //生成说明性临嘱保存
            spciRecord.GroupID   = Convert.ToInt32(groupID);
            spciRecord.PatDeptID = patlist.CurrDeptID;
            spciRecord.WardID    = patlist.CurrWardID;
            spciRecord.Dosage    = 1;
            this.BindDb(spciRecord);
            spciRecord.save();
            //转入信息保存
            IPD_TransDept transDept = new IPD_TransDept();

            transDept.Operator   = oprator;
            transDept.PatListID  = patlistid;
            transDept.OldDeptID  = patlist.CurrDeptID;
            transDept.NewDeptID  = transDeptID;
            transDept.TransDate  = transDate;
            transDept.OrderID    = spciRecord.OrderID;
            transDept.OperDate   = DateTime.Now;
            transDept.FinishFlag = 0;
            this.BindDb(transDept);
            transDept.save();
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 保存床位分配数据
        /// </summary>
        /// <param name="tempDt">病人入院登记信息</param>
        /// <param name="bedId">床位ID</param>
        /// <param name="wardId">病区ID</param>
        /// <param name="bedNo">床位号</param>
        /// <param name="empId">操作员ID</param>
        /// <returns>错误消息</returns>
        public string SaveBedAllocation(DataTable tempDt, int bedId, int wardId, string bedNo, int empId)
        {
            // 验证床位是否已被占用
            bool result = NewObject <IIPManageDao>().IsBedOccupy(bedId, 0, string.Empty);

            if (result)
            {
                int patStatus = Convert.ToInt32(tempDt.Rows[0]["Status"]);
                // 出院召回病人修改病人出院医嘱状态
                if (patStatus == 3)
                {
                    NewDao <IIPManageDao>().UpdatePatOrder(int.Parse(tempDt.Rows[0]["PatListID"].ToString()));
                }
                else if (patStatus == -1)
                {
                    // 转科病人,修改转科表数据
                    IPD_TransDept transDept = (IPD_TransDept)NewObject <IPD_TransDept>().getmodel(tempDt.Rows[0]["ID"]);
                    transDept.OperDate   = DateTime.Now;
                    transDept.Operator   = empId;
                    transDept.FinishFlag = 1;
                    this.BindDb(transDept);
                    transDept.save();
                }

                // 修改病人入院登记数据
                NewDao <IIPManageDao>().UpdatePatList(
                    bedNo,
                    int.Parse(tempDt.Rows[0]["CurrDoctorID"].ToString()),
                    int.Parse(tempDt.Rows[0]["CurrNurseID"].ToString()),
                    int.Parse(tempDt.Rows[0]["PatListID"].ToString()));

                // 修改床位数据
                NewDao <IIPManageDao>().UpdatePatBedInfo(
                    int.Parse(tempDt.Rows[0]["PatListID"].ToString()),
                    tempDt.Rows[0]["PatName"].ToString(),
                    tempDt.Rows[0]["Sex"].ToString(),
                    int.Parse(tempDt.Rows[0]["CurrDeptID"].ToString()),
                    int.Parse(tempDt.Rows[0]["CurrDoctorID"].ToString()),
                    int.Parse(tempDt.Rows[0]["CurrNurseID"].ToString()),
                    bedId);

                // 新增床位分配日志数据
                IP_BedLog bedLog = new IP_BedLog();
                bedLog.BedID       = bedId; // 床位ID
                bedLog.BedNo       = bedNo;
                bedLog.WardID      = wardId;
                bedLog.PatListID   = int.Parse(tempDt.Rows[0]["PatListID"].ToString());
                bedLog.PatName     = tempDt.Rows[0]["PatName"].ToString();
                bedLog.PatSex      = tempDt.Rows[0]["Sex"].ToString();
                bedLog.PatDeptID   = int.Parse(tempDt.Rows[0]["CurrDeptID"].ToString());
                bedLog.PatDoctorID = int.Parse(tempDt.Rows[0]["CurrDoctorID"].ToString());
                bedLog.PatNurseID  = int.Parse(tempDt.Rows[0]["CurrNurseID"].ToString());
                bedLog.AssignDate  = DateTime.Now;
                bedLog.AssignEmpID = empId;
                this.BindDb(bedLog);
                bedLog.save();

                // 生成床位费用
                SaveBedFeeData(bedId, bedLog.PatListID, false, empId);
            }
            else
            {
                return("当前床位已分配病人或被停用,请重新选择床位!");
            }

            return(string.Empty);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 定义病人出院
        /// </summary>
        /// <param name="wardId">病区ID</param>
        /// <param name="patListID">病人登记ID</param>
        /// <param name="checkFlg">是否检查通过</param>
        /// <param name="deptID">转科新科室Id</param>
        /// <returns>出院报表数据</returns>
        public DataTable PatientOutHospital(int wardId, int patListID, out bool checkFlg, int deptID)
        {
            bool      isNotStopOrder = true;
            DataTable resultDt       = new DataTable();
            // 检查所有医嘱是否已停
            DataTable notExecOrder = NewDao <IIPManageDao>().GetNotExecOrder(patListID);

            if (notExecOrder.Rows.Count > 0)
            {
                resultDt.Merge(notExecOrder);
                isNotStopOrder = false;
            }

            // 检查所有账单有没有停用
            DataTable notStopOrderDt = NewDao <IIPManageDao>().GetNotStopOrder(patListID);

            if (notStopOrderDt.Rows.Count > 0)
            {
                resultDt.Merge(notStopOrderDt);
                isNotStopOrder = false;
            }

            // 检查所有药品是否已统领
            DataTable notGuideOrderDt = NewDao <IIPManageDao>().GetNotGuideOrder(patListID);

            if (notGuideOrderDt.Rows.Count > 0)
            {
                resultDt.Merge(notGuideOrderDt);
                isNotStopOrder = false;
            }

            // 取系统参数验证是否允许没发完药可以出院
            string result = NewObject <SysConfigManagement>().GetSystemConfigValue("IsMedicine");

            if (result == "1")
            {
                // 检查所有统领药品是否已发药 (根据参数配置是否需要验证)
                DataTable notDispDrugDt = NewDao <IIPManageDao>().GetNotDispDrugList(patListID);
                if (notDispDrugDt.Rows.Count > 0)
                {
                    resultDt.Merge(notDispDrugDt);
                    isNotStopOrder = false;
                }
            }

            if (!isNotStopOrder)
            {
                checkFlg = false;
                return(resultDt);
            }

            // 清空床位信息
            NewDao <IIPManageDao>().PatOutHospitalUpdateBedData(wardId, patListID);
            if (deptID == 0)
            {
                // 修改病人状态、出院时间
                NewDao <IIPManageDao>().PatOutHospitalUpdatePatListData(patListID);
                // 获取出院通知单基本数据
                DataTable patListDt = NewDao <IIPManageDao>().GetPatOutHospitalData(patListID);
                resultDt.Merge(patListDt);
            }
            else
            {
                // 修改病人当前科室
                IPD_TransDept transDept = (IPD_TransDept)NewObject <IPD_TransDept>().getmodel(patListID);
                NewDao <IIPManageDao>().UpdatepatCurrDept(patListID, deptID);
            }

            checkFlg = true;
            return(resultDt);
        }