Ejemplo n.º 1
0
        public ServiceResponseData SaveExam()
        {
            var head     = requestData.GetData <EXA_MedicalApplyHead>(0);
            var workerId = requestData.GetData <int>(1);
            var itemData = requestData.GetData <DataTable>(2);
            var dt       = requestData.GetData <DataTable>(3);

            SetWorkId(workerId);
            if (head.SystemType == 1)
            {
                // 判断病人是否已定义出院或已开出院医嘱
                IP_PatList ipPatlist = NewObject <IP_PatList>().getmodel(head.PatListID) as IP_PatList;
                head.ApplyDeptID = ipPatlist.CurrDeptID;
                if (ipPatlist.Status != 2 || ipPatlist.IsLeaveHosOrder == 1)
                {
                    responseData.AddData(-1);
                    responseData.AddData("保存失败,病人已经出院!");
                    return(responseData);
                }
            }

            var result = NewObject <MedicalApply>().SaveMedicalApply(head, itemData, dt);

            responseData.AddData(result);
            return(responseData);
        }
Ejemplo n.º 2
0
        public ServiceResponseData UpdatePatNursing()
        {
            int        patlistid    = requestData.GetData <int>(0);
            string     nusrsingName = requestData.GetData <string>(1);
            IP_PatList ipPatlist    = NewObject <IP_PatList>().getmodel(patlistid) as IP_PatList;

            ipPatlist.NursingLever = nusrsingName;
            this.BindDb(ipPatlist);
            ipPatlist.save();

            #region "保存业务消息数据 --Add By ZhangZhong"
            // 保存业务消息数据
            Dictionary <string, string> msgDic = new Dictionary <string, string>();
            int workId = requestData.GetData <int>(2);
            int userId = requestData.GetData <int>(3);
            int deptId = requestData.GetData <int>(4);
            msgDic.Add("PatListID", ipPatlist.PatListID.ToString()); // 病人登记ID
            msgDic.Add("WorkID", workId.ToString());                 // 消息机构ID
            msgDic.Add("SendUserId", userId.ToString());             // 消息生成人ID
            msgDic.Add("SendDeptId", deptId.ToString());             // 消息生成科室ID
            NewObject <BusinessMessage>().GenerateBizMessage(MessageType.护理级别, msgDic);
            #endregion

            responseData.AddData(true);
            return(responseData);
        }
Ejemplo n.º 3
0
 /// <summary>
 /// 做成病人登记基本信息
 /// </summary>
 /// <param name="ipList">病人登记基本信息</param>
 /// <param name="dtMemberInfo">会员基本信息</param>///
 /// <param name="caseNumber">住院病案号</param>
 /// <param name="times">住院次数</param>
 /// <param name="inpatientReg">是否已开住院证</param>
 /// <param name="inpatientRegDt">住院证信息</param>
 private void SetPatListInfo(IP_PatList ipList, DataTable dtMemberInfo, string caseNumber, int times, bool inpatientReg, DataTable inpatientRegDt)
 {
     ipList.MemberID        = int.Parse(dtMemberInfo.Rows[0]["MemberID"].ToString());
     ipList.MemberAccountID = Convert.ToInt32(dtMemberInfo.Rows[0]["AccountID"].ToString());//AccountID
     ipList.CardNO          = dtMemberInfo.Rows[0]["CardNO"].ToString();
     ipList.CaseNumber      = caseNumber;
     ipList.Times           = times;
     ipList.Sex             = dtMemberInfo.Rows[0]["SexCode"].ToString();
     ipList.MakerDate       = DateTime.Now;                                                               // 登记时间
     ipList.Birthday        = !string.IsNullOrEmpty(dtMemberInfo.Rows[0]["Birthday"].ToString()) ?
                              DateTime.Parse(dtMemberInfo.Rows[0]["Birthday"].ToString()) : DateTime.Now; // 出生日期
     ipList.PatDatCardNo   = dtMemberInfo.Rows[0]["CardNO"].ToString();                                   // 诊疗卡号
     ipList.PatName        = dtMemberInfo.Rows[0]["MemberName"].ToString();                               // 病人姓名
     ipList.PatTypeID      = int.Parse(dtMemberInfo.Rows[0]["PatTypeID"].ToString());                     // 病人类型ID
     ipList.Sex            = dtMemberInfo.Rows[0]["Sex"].ToString();
     ipList.MedicareCard   = dtMemberInfo.Rows[0]["MedicareCard"].ToString();
     ipList.EnterHDate     = DateTime.Now;
     ipList.EnterSituation = "3";
     if (inpatientReg)
     {
         ipList.EnterDiseaseCode = inpatientRegDt.Rows[0]["HospitalCode"].ToString();   // 入院诊断
         ipList.EnterSituation   = inpatientRegDt.Rows[0]["ConditionStu"].ToString();   // 入院情况
         ipList.EnterDeptID      = Convert.ToInt32(inpatientRegDt.Rows[0]["InDeptID"]); // 入院科室
         ipList.CurrDeptID       = Convert.ToInt32(inpatientRegDt.Rows[0]["InDeptID"]); // 入院科室
         ipList.DietType         = inpatientRegDt.Rows[0]["Diet"].ToString();           // 饮食级别
     }
 }
Ejemplo n.º 4
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.º 5
0
        /// <summary>
        /// 出院/死亡医嘱
        /// </summary>
        /// <param name="patlistid">病人ID</param>
        /// <param name="list">需自动停嘱对象</param>
        /// <param name="outDate">出院日期</param>
        /// <param name="outDiseaseName">出院诊断</param>
        /// <param name="outDiseaseCode">诊断编码</param>
        /// <param name="outSituation">出院情况</param>
        /// <param name="oprator">操作员</param>
        /// <param name="spciRecord">出院医嘱</param>
        public void OutHospOrder(int patlistid, List <IPD_OrderRecord> list, DateTime outDate, string outDiseaseName, string outDiseaseCode, string outSituation, 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("病人状态已经不在床或已经开出院医嘱,不能开出院医嘱");
            }

            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();
            //病人状态修改
            // patlist.Status = 5;
            patlist.IsLeaveHosOrder = 1;
            patlist.OutSituation    = outSituation;
            patlist.LeaveHDate      = outDate;
            this.BindDb(patlist);
            patlist.save();
            //诊断表保存
            IPD_Diagnosis ipdDiag = new IPD_Diagnosis();

            ipdDiag.PatListID     = patlist.PatListID;
            ipdDiag.DeptID        = patlist.CurrDeptID;
            ipdDiag.DgsDocID      = oprator;
            ipdDiag.DiagnosisTime = DateTime.Now;
            ipdDiag.DiagnosisName = outDiseaseName;
            ipdDiag.ICDCode       = outDiseaseCode;
            ipdDiag.OrderID       = spciRecord.OrderID;
            if (spciRecord.OrderType == 5)
            {
                //出院诊断
                ipdDiag.DiagnosisClass = 67334;
            }
            else if (spciRecord.OrderType == 6)
            {
                //死亡诊断
                ipdDiag.DiagnosisClass = 67342;
            }

            this.BindDb(ipdDiag);
            ipdDiag.save();
        }
        public void ShowFrmPatientInfo(bool isNewPatient)
        {
            ipatientInfo.IsNewPatient = isNewPatient;

            // 新入院病人
            if (isNewPatient)
            {
                IP_PatientInfo ip_Patient = new IP_PatientInfo();
                ip_Patient.Nationality   = "156";       // 国籍默认"中国"
                ip_Patient.Nation        = "01";        //民族默认"汉族"
                ip_Patient.CulturalLevel = "91";        //教育程度默认"不详"
                ip_Patient.Birthplace    = "110102000"; // 地址默认"北京"
                ip_Patient.DRegisterAddr = "110102000"; // 地址默认"北京"
                ip_Patient.NAddress      = "110102000"; // 地址默认"北京"
                ip_Patient.RAddress      = "110102000"; // 地址默认"北京"
                ip_Patient.Relation      = "01";
                ip_Patient.Occupation    = "Y10";
                ipatientInfo.PatientInfo = ip_Patient;
                IP_PatList ipList = new IP_PatList();
                ipList.MakerDate      = DateTime.Now;
                ipList.Birthday       = DateTime.Now;
                ipList.EnterHDate     = DateTime.Now;
                ipList.PatTypeID      = 106;
                ipList.EnterSituation = "3";
                ipatientInfo.PatList  = ipList;
                ((Form)iBaseView["FrmPatientInfo"]).ShowDialog();
            }
            else
            {
                // 修改病人信息
                Action <ClientRequestData> requestAction = ((ClientRequestData request) =>
                {
                    request.AddData(iAdmissionRegistration.PatientID);
                    request.AddData(iAdmissionRegistration.PatListID);
                });

                ServiceResponseData retdata       = InvokeWcfService("IPProject.Service", "AdmissionController", "GetPatientInfo", requestAction);
                DataTable           patientInfoDt = retdata.GetData <DataTable>(0);
                DataTable           patListDt     = retdata.GetData <DataTable>(1);

                if (patientInfoDt != null && patientInfoDt.Rows.Count > 0)
                {
                    ipatientInfo.PatientInfo = ConvertExtend.ToObject <IP_PatientInfo>(patientInfoDt, 0);
                }

                if (patListDt != null && patListDt.Rows.Count > 0)
                {
                    ipatientInfo.PatList = ConvertExtend.ToObject <IP_PatList>(patListDt, 0);
                }

                ((Form)iBaseView["FrmPatientInfo"]).ShowDialog();
            }
        }
Ejemplo n.º 7
0
        public ServiceResponseData UpdatePatSituation()
        {
            int        patlistid     = requestData.GetData <int>(0);
            string     situationCode = requestData.GetData <string>(1);
            IP_PatList ipPatlist     = NewObject <IP_PatList>().getmodel(patlistid) as IP_PatList;

            ipPatlist.OutSituation = situationCode;
            this.BindDb(ipPatlist);
            ipPatlist.save();
            responseData.AddData(true);
            return(responseData);
        }
Ejemplo n.º 8
0
        public ServiceResponseData SavePatientInfo()
        {
            // 是否为新入院病人
            bool isNewPatient = requestData.GetData <bool>(2);
            // 住院登记记录信息
            IP_PatList ip_PatList = requestData.GetData <IP_PatList>(1);
            // 是否为二次入院病人Flg
            bool twoAdmission = requestData.GetData <bool>(3);
            bool inpatientReg = requestData.GetData <bool>(4);

            // 新入院病人需要生成流水号和病案号
            if (isNewPatient)
            {
                ip_PatList.SerialNumber = decimal.Parse(NewObject <SerialNumberSource>().GetSerialNumber(SnType.住院流水号));
                //if (!twoAdmission)
                //{
                //    ip_PatList.CaseNumber = NewObject<SerialNumberSource>().GetSerialNumber(SnType.病案号);
                //}
            }
            // 住院病人信息
            IP_PatientInfo ip_PatientInfo = requestData.GetData <IP_PatientInfo>(0);
            string         result         = NewObject <IpPatien>().PatientRegistration(ip_PatList, ip_PatientInfo, isNewPatient, inpatientReg);

            if (string.IsNullOrEmpty(result))
            {
                if (isNewPatient)
                {
                    #region "保存业务消息数据 --Add By ZhangZhong"
                    // 保存业务消息数据
                    Dictionary <string, string> msgDic = new Dictionary <string, string>();
                    int workId = requestData.GetData <int>(5);
                    int userId = requestData.GetData <int>(6);
                    int deptId = requestData.GetData <int>(7);
                    msgDic.Add("WorkID", workId.ToString());                  // 消息机构ID
                    msgDic.Add("SendUserId", userId.ToString());              // 消息生成人ID
                    msgDic.Add("SendDeptId", deptId.ToString());              // 消息生成科室ID
                    msgDic.Add("PatListID", ip_PatList.PatListID.ToString()); // 病人登记ID
                    NewObject <BusinessMessage>().GenerateBizMessage(MessageType.病人新入院, msgDic);
                    #endregion
                }
            }

            responseData.AddData(result);
            responseData.AddData(ip_PatList.PatListID);
            if (isNewPatient)
            {
                responseData.AddData(ip_PatList.SerialNumber);
            }

            return(responseData);
        }
Ejemplo n.º 9
0
        public ServiceResponseData QueryMemberInfo()
        {
            int member = requestData.GetData <int>(0);
            //string cardNO = requestData.GetData<string>(0);
            decimal        deposit    = 0;
            IP_PatientInfo ip_Patient = NewObject <IP_PatientInfo>();
            IP_PatList     ipList     = NewObject <IP_PatList>();
            bool           result     = NewObject <IpPatien>().QueryMemberInfo(member, ip_Patient, ipList, out deposit);

            responseData.AddData(result);
            responseData.AddData(ip_Patient);
            responseData.AddData(ipList);
            responseData.AddData(deposit);
            return(responseData);
        }
Ejemplo n.º 10
0
        /// <summary>
        /// 保存病人入院登记信息
        /// </summary>
        /// <param name="ip_PatList">入院登记信息</param>
        /// <param name="ip_PatientInfo">病人基本信息</param>
        /// <param name="isNewPatient">true:新入院/false:修改病人信息</param>
        /// <param name="inpatientReg">是否为住院证登记</param>
        /// <returns>错误消息</returns>
        public string PatientRegistration(IP_PatList ip_PatList, IP_PatientInfo ip_PatientInfo, bool isNewPatient, bool inpatientReg)
        {
            if (isNewPatient)
            {
                // 检查当前会员是否已办理入院
                bool result = NewDao <IIPManageDao>().CheckPatientInTheHospital(ip_PatList.CardNO);
                if (!result)
                {
                    return("病人已在院,入院登记失败!");
                }
                // 新入院病人是否为住院证登记
                if (inpatientReg)
                {
                    // 修改住院证信息
                    NewDao <IIPManageDao>().UpdateInpatientReg(ip_PatList.MemberID);
                }
            }
            // 保存病人登记信息
            ip_PatList.OutSituation = ip_PatList.EnterSituation;
            this.BindDb(ip_PatList);
            ip_PatList.save();
            // 保存病人基本信息
            ip_PatientInfo.PatListID = ip_PatList.PatListID;
            this.BindDb(ip_PatientInfo);
            ip_PatientInfo.save();
            // 新入院病人保存诊断信息
            if (isNewPatient)
            {
                if (!string.IsNullOrEmpty(ip_PatList.EnterDiseaseName) && !string.IsNullOrEmpty(ip_PatList.EnterDiseaseCode))
                {
                    // 保存诊断信息
                    IPD_Diagnosis diagnosis = NewObject <IPD_Diagnosis>();
                    diagnosis.PatListID      = ip_PatList.PatListID;
                    diagnosis.DeptID         = ip_PatList.CurrDeptID;
                    diagnosis.DgsDocID       = ip_PatList.CurrDoctorID;
                    diagnosis.DiagnosisTime  = DateTime.Now;
                    diagnosis.DiagnosisClass = 67329;
                    diagnosis.Main           = 0;
                    diagnosis.DiagnosisName  = ip_PatList.EnterDiseaseName;
                    diagnosis.DiagnosisID    = 0;
                    diagnosis.ICDCode        = ip_PatList.EnterDiseaseCode;
                    this.BindDb(diagnosis);
                    diagnosis.save();
                }
            }

            return(string.Empty);
        }
Ejemplo n.º 11
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.º 12
0
        /// <summary>
        /// 医嘱本身费用
        /// </summary>
        /// <param name="record">医嘱对象</param>
        /// <param name="dtDrugItem">药品项目数据</param>
        /// <param name="ipPatlist">病人对象</param>
        private void GenerateFee(IPD_OrderRecord record, DataTable dtDrugItem, IP_PatList ipPatlist)
        {
            if (record.ItemType == 4)
            {
                #region 组合项目明细费用生成
                FeeItemDataSource feeDataSource = NewObject <FeeItemDataSource>();
                DataTable         dtDetailItem  = feeDataSource.GetExamItemDetailDt(record.ItemID);
                for (int index = 0; index < dtDetailItem.Rows.Count; index++)
                {
                    int       feeitemId = Convert.ToInt32(dtDetailItem.Rows[index]["ITEMID"]);
                    decimal   amount    = Convert.ToDecimal(dtDetailItem.Rows[index]["ItemAmount"]);
                    DataRow[] rows      = dtDrugItem.Select(" ItemID=" + feeitemId);
                    if (rows.Length < 1)
                    {
                        continue;
                    }

                    IP_FeeItemGenerate feeItem = GenerateRecordFee(amount, 1, record, ipPatlist, rows[0]);
                    feeItem.FeeSource   = 1;
                    feeItem.CalCostMode = 0;
                    this.BindDb(feeItem);
                    feeItem.save();
                }
                #endregion
            }
            else
            {
                #region 医嘱本身费用生成
                if (record.ItemID <= 0 || record.StatID == 0 || record.ItemType == 5)
                {
                    return;
                }

                DataRow[] rows = dtDrugItem.Select(" ItemID=" + record.ItemID);
                if (rows.Length < 1)
                {
                    return;
                }

                IP_FeeItemGenerate feeItem = GenerateRecordFee(record.Amount * record.UnitNO, Convert.ToInt32(record.DoseNum), record, ipPatlist, rows[0]);
                feeItem.FeeSource   = 0;
                feeItem.CalCostMode = 0;
                this.BindDb(feeItem);
                feeItem.save();
                #endregion
            }
        }
Ejemplo n.º 13
0
        /// <summary>
        /// 会员号读卡入院
        /// </summary>
        /// <param name="cardNO">会员卡号</param>
        /// <param name="ip_Patient">病人基本信息</param>
        /// <param name="ipList">病人登记信息</param>
        /// <param name="deposit">预交金信息</param>
        /// <returns>true:已开住院证/false:未开住院证</returns>
        public bool QueryMemberInfo(int memberID, IP_PatientInfo ip_Patient, IP_PatList ipList, out decimal deposit)
        {
            deposit = 0;
            bool inpatientReg = false;
            // 根据会员卡号读取会员ID
            DataTable dtPatInfo = NewDao <IIPManageDao>().QueryMemberInfo(memberID);
            // 检查是否为二次入院
            DataTable dtCaseNumber = NewDao <IIPManageDao>().GetCaseNumberByCardNO(memberID);
            string    caseNumber   = string.Empty;
            int       times        = 1;

            if (dtCaseNumber != null && dtCaseNumber.Rows.Count > 0)
            {
                caseNumber = dtCaseNumber.Rows[0]["CaseNumber"].ToString();
                times      = dtCaseNumber.Rows.Count + 1;
            }

            // 根据会员ID查询是否当前会员是否已开住院证
            if (dtPatInfo == null || dtPatInfo.Rows.Count == 0)
            {
                throw new Exception("找不到该卡号病人信息");
            }
            else
            {
                DataTable inpatientRegDt = NewDao <IIPManageDao>().GetInpatientReg(Convert.ToInt32(dtPatInfo.Rows[0]["MemberID"]));
                if (inpatientRegDt != null && inpatientRegDt.Rows.Count > 0)
                {
                    //  已开住院证
                    inpatientReg = true;
                    if (inpatientRegDt.Rows[0]["Deposit"] != null && inpatientRegDt.Rows[0]["Deposit"] != DBNull.Value)
                    {
                        if (Convert.ToDecimal(inpatientRegDt.Rows[0]["Deposit"]) > 0)
                        {
                            deposit = Convert.ToDecimal(inpatientRegDt.Rows[0]["Deposit"]);
                        }
                    }
                }

                SetPatientInfo(ip_Patient, dtPatInfo);
                SetPatListInfo(ipList, dtPatInfo, caseNumber, times, inpatientReg, inpatientRegDt);
            }

            return(inpatientReg);
        }
Ejemplo n.º 14
0
        /// <summary>
        /// 保存医嘱费用数据
        /// </summary>
        /// <param name="saveDocFeeItemDt">待保存医嘱费用数据</param>
        /// <param name="patListID">病人登记ID</param>
        /// <param name="groupID">组号ID</param>
        /// <param name="empId">操作员ID</param>
        /// <param name="deptID">科室ID</param>
        /// <returns>true:保存成功</returns>
        public bool SaveFeeItemData(DataTable saveDocFeeItemDt, int patListID, int groupID, int empId, int deptID)
        {
            if (saveDocFeeItemDt.Rows.Count > 0)
            {
                IP_FeeItemGenerate mIPFeeItemGenerate = NewObject <IP_FeeItemGenerate>();
                // 获取病人信息
                IP_PatList mPatlist = NewObject <IP_PatList>();
                DataTable  patDt    = NewDao <IDoctorManagementDao>().GetPatientInfo(Convert.ToInt32(saveDocFeeItemDt.Rows[0]["PatListID"]));
                mPatlist = ConvertExtend.ToObject <IP_PatList>(patDt, 0);
                // 获取医嘱信息
                IPD_OrderRecord mIPDOrderRecord = NewObject <IPD_OrderRecord>();
                DataTable       docDt           = NewDao <IDoctorManagementDao>().GetOrderRecord(patListID, groupID);
                mIPDOrderRecord = ConvertExtend.ToObject <IPD_OrderRecord>(docDt, 0);
                for (int i = 0; i < saveDocFeeItemDt.Rows.Count; i++)
                {
                    mIPFeeItemGenerate = ConvertExtend.ToObject <IP_FeeItemGenerate>(saveDocFeeItemDt, i);
                    if (mIPFeeItemGenerate.GenerateID == 0)
                    {
                        // 病人登记信息
                        mIPFeeItemGenerate.PatName     = mPatlist.PatName;
                        mIPFeeItemGenerate.PatDeptID   = mPatlist.CurrDeptID;
                        mIPFeeItemGenerate.PatDoctorID = mPatlist.CurrDoctorID;
                        mIPFeeItemGenerate.PatNurseID  = mPatlist.CurrNurseID;
                        mIPFeeItemGenerate.BabyID      = 0;
                        // 医嘱信息
                        mIPFeeItemGenerate.OrderID       = mIPDOrderRecord.OrderID;
                        mIPFeeItemGenerate.GroupID       = mIPDOrderRecord.GroupID;
                        mIPFeeItemGenerate.OrderType     = mIPDOrderRecord.OrderCategory;// == 0 ? 0 : 3;
                        mIPFeeItemGenerate.FrequencyID   = mIPDOrderRecord.FrenquencyID;
                        mIPFeeItemGenerate.FrequencyName = mIPDOrderRecord.Frequency;
                        mIPFeeItemGenerate.ChannelID     = mIPDOrderRecord.ChannelID;
                        mIPFeeItemGenerate.ChannelName   = mIPDOrderRecord.ChannelName;
                        mIPFeeItemGenerate.PresDoctorID  = empId;
                        mIPFeeItemGenerate.PresDeptID    = deptID;
                        mIPFeeItemGenerate.MarkEmpID     = empId;
                    }
                    // 保存费用数据
                    this.BindDb(mIPFeeItemGenerate);
                    mIPFeeItemGenerate.save();
                }
            }

            return(true);
        }
Ejemplo n.º 15
0
        /// <summary>
        /// 保存住院费用生成数据
        /// </summary>
        /// <param name="longFeeOrderDt">住院费用生成数据</param>
        /// <param name="markEmpID">记账人ID</param>
        /// <returns>错误消息</returns>
        public string SaveLongOrderData(DataTable longFeeOrderDt, int markEmpID)
        {
            try
            {
                if (longFeeOrderDt != null && longFeeOrderDt.Rows.Count > 0)
                {
                    IP_FeeItemGenerate feeItem = null;
                    // 查询病人登记信息
                    DataTable  patDt = NewDao <IIPManageDao>().GetPatListInfo(Convert.ToInt32(longFeeOrderDt.Rows[0]["PatListID"]));
                    IP_PatList pat   = ConvertExtend.ToObject <IP_PatList>(patDt, 0);
                    for (int i = 0; i < longFeeOrderDt.Rows.Count; i++)
                    {
                        feeItem              = NewObject <IP_FeeItemGenerate>();
                        feeItem              = ConvertExtend.ToObject <IP_FeeItemGenerate>(longFeeOrderDt, i);
                        feeItem.PatListID    = pat.PatListID;
                        feeItem.PatName      = pat.PatName;
                        feeItem.PatDeptID    = pat.CurrDeptID;
                        feeItem.PatDoctorID  = pat.CurrDoctorID;
                        feeItem.PatNurseID   = pat.CurrNurseID;
                        feeItem.MarkEmpID    = markEmpID;
                        feeItem.PresDoctorID = pat.CurrDoctorID;
                        feeItem.PresDeptID   = feeItem.PatDeptID;
                        feeItem.FeeSource    = 3;
                        if (feeItem.ExecDeptDoctorID == 0)
                        {
                            feeItem.ExecDeptDoctorID = pat.CurrDeptID;
                        }

                        this.BindDb(feeItem);
                        feeItem.save();
                        longFeeOrderDt.Rows[i]["GenerateID"] = feeItem.GenerateID;
                    }
                }
            }
            catch (Exception ex)
            {
                return(ex.Message);
            }

            return(string.Empty);
        }
        /// <summary>
        /// 读卡或办卡后绑定病人基本信息
        /// </summary>
        /// <param name="dtMemberInfo">病人基本信息</param>
        /// <param name="caseNumber">病案号</param>
        /// <param name="times">入院次数</param>
        private void SetPatientData(DataTable dtMemberInfo, string caseNumber, int times)
        {
            IP_PatientInfo ip_Patient = new IP_PatientInfo();

            ip_Patient.IdentityNum   = dtMemberInfo.Rows[0]["IDNumber"].ToString();     // 身份证号
            ip_Patient.Nationality   = dtMemberInfo.Rows[0]["Nationality"].ToString();  // 国籍
            ip_Patient.Nation        = dtMemberInfo.Rows[0]["Nation"].ToString();       // 名族
            ip_Patient.Occupation    = dtMemberInfo.Rows[0]["Occupation"].ToString();   // 职业
            ip_Patient.CulturalLevel = dtMemberInfo.Rows[0]["Degree"].ToString();       // 文化程度
            ip_Patient.Birthplace    = dtMemberInfo.Rows[0]["CityCode"].ToString();     // 出生地址
            ip_Patient.DRegisterAddr = dtMemberInfo.Rows[0]["CityCode"].ToString();     // 户籍地址
            ip_Patient.NAddress      = dtMemberInfo.Rows[0]["CityCode"].ToString();     // 现住地址
            ip_Patient.Phone         = dtMemberInfo.Rows[0]["Mobile"].ToString();       // 联系电话
            ip_Patient.UnitName      = dtMemberInfo.Rows[0]["WorkUnit"].ToString();     // 单位名称
            ip_Patient.UnitPhone     = dtMemberInfo.Rows[0]["WorkTele"].ToString();     // 单位电话
            ip_Patient.RelationName  = dtMemberInfo.Rows[0]["RelationName"].ToString(); // 联系人
            ip_Patient.Relation      = dtMemberInfo.Rows[0]["Relation"].ToString();     // 关系
            ip_Patient.RPhone        = dtMemberInfo.Rows[0]["RelationTele"].ToString(); // 联系人电话
            ip_Patient.Matrimony     = dtMemberInfo.Rows[0]["Matrimony"].ToString();
            ipatientInfo.PatientInfo = ip_Patient;
            IP_PatList ipList = new IP_PatList();

            ipList.MemberID        = int.Parse(dtMemberInfo.Rows[0]["MemberID"].ToString());
            ipList.MemberAccountID = Convert.ToInt32(dtMemberInfo.Rows[0]["AccountID"].ToString());//AccountID
            ipList.CardNO          = dtMemberInfo.Rows[0]["CardNO"].ToString();
            ipList.CaseNumber      = caseNumber;
            ipList.Times           = times;
            ipList.Sex             = dtMemberInfo.Rows[0]["SexCode"].ToString();
            ipList.MakerDate       = DateTime.Now;                                                               // 登记时间
            ipList.Birthday        = !string.IsNullOrEmpty(dtMemberInfo.Rows[0]["Birthday"].ToString()) ?
                                     DateTime.Parse(dtMemberInfo.Rows[0]["Birthday"].ToString()) : DateTime.Now; // 出生日期
            ipList.PatDatCardNo   = dtMemberInfo.Rows[0]["CardNO"].ToString();                                   // 诊疗卡号
            ipList.PatName        = dtMemberInfo.Rows[0]["MemberName"].ToString();                               // 病人姓名
            ipList.PatTypeID      = int.Parse(dtMemberInfo.Rows[0]["PatTypeID"].ToString());                     // 病人类型ID
            ipList.Sex            = dtMemberInfo.Rows[0]["Sex"].ToString();
            ipList.MedicareCard   = dtMemberInfo.Rows[0]["MedicareCard"].ToString();
            ipList.EnterHDate     = DateTime.Now;
            ipList.EnterSituation = "3";
            ipatientInfo.PatList  = ipList;
        }
Ejemplo n.º 17
0
        /// <summary>
        /// 插入皮试医嘱
        /// </summary>
        /// <param name="dtDrugItem">药品项目数据</param>
        /// <param name="astOrderRecord">皮试医嘱</param>
        /// <param name="ipPatlist">病人对象</param>
        private void InsertPSYZ(DataTable dtDrugItem, IPD_OrderRecord astOrderRecord, IP_PatList ipPatlist)
        {
            DataRow[] rows = dtDrugItem.Select(" ItemID=" + astOrderRecord.ItemID);
            if (rows.Length <= 0)
            {
                return;
            }

            DataRow row = rows[0];
            List <IPD_OrderRecord> data   = new List <IPD_OrderRecord>();
            IPD_OrderRecord        record = new IPD_OrderRecord();

            record.ItemID        = Convert.ToInt32(row["itemid"]);
            record.ItemName      = row["itemname"].ToString();
            record.ChannelName   = "皮试";
            record.ChannelID     = 34;
            record.FrenquencyID  = 22;
            record.Frequency     = "q.d.";
            record.Amount        = 1;
            record.Unit          = row["MiniUnitName"].ToString();
            record.UnitNO        = 1;
            record.StatID        = Convert.ToInt32(row["StatID"]);
            record.DoseNum       = 1;
            record.OrderBdate    = DateTime.Now;
            record.OrderCategory = 1;
            record.OrderType     = 0;
            record.Dosage        = 1;
            record.AstOrderID    = astOrderRecord.OrderID;
            record.Factor        = Convert.ToDecimal(row["DoseConvertNum"]);
            record.ItemType      = Convert.ToInt32(row["ItemClass"]);
            record.ExecDeptID    = astOrderRecord.ExecDeptID;
            record.AstFlag       = 0;
            record.ItemPrice     = Convert.ToDecimal(row["SellPrice"]);
            record.OrderStatus   = 0;
            record.PatListID     = astOrderRecord.PatListID;
            record.PresDeptID    = astOrderRecord.PresDeptID;
            record.OrderDoc      = astOrderRecord.OrderDoc;
            record.OrderID       = 0;
            record.PatDeptID     = ipPatlist.CurrDeptID;
            record.WardID        = ipPatlist.CurrWardID;
            SerialNumberSource serialNumberSource = NewObject <SerialNumberSource>();
            string             groupID            = serialNumberSource.GetSerialNumber(SnType.医嘱组号);

            record.GroupID = Convert.ToInt32(groupID);
            this.BindDb(record);
            record.save();
            GenerateFee(record, dtDrugItem, ipPatlist);
            GenerateChannelFee(record, dtDrugItem, ipPatlist);
            int actDrugid = Convert.ToInt32(_getActDrugId());

            if (actDrugid != 0)
            {
                DataRow[] drugrows = dtDrugItem.Select("ItemID=" + actDrugid);
                if (drugrows.Length > 0)
                {
                    IPD_OrderRecord recordDrug = new IPD_OrderRecord();
                    recordDrug.ItemID        = Convert.ToInt32(drugrows[0]["itemid"]);
                    recordDrug.ItemName      = drugrows[0]["itemname"].ToString();
                    recordDrug.ChannelName   = record.ChannelName;
                    recordDrug.ChannelID     = record.ChannelID;
                    recordDrug.FrenquencyID  = record.FrenquencyID;
                    recordDrug.OrderBdate    = record.OrderBdate;
                    recordDrug.Frequency     = record.Frequency;
                    recordDrug.Amount        = 1;
                    recordDrug.Unit          = rows[0]["MiniUnitName"].ToString();
                    recordDrug.UnitNO        = 1;
                    recordDrug.StatID        = Convert.ToInt32(rows[0]["StatID"]);
                    recordDrug.DoseNum       = 1;
                    recordDrug.OrderStatus   = 0;
                    recordDrug.OrderCategory = 1;
                    recordDrug.OrderType     = 0;
                    recordDrug.GroupID       = record.GroupID;
                    recordDrug.Dosage        = 1;
                    recordDrug.AstOrderID    = astOrderRecord.OrderID;
                    recordDrug.Factor        = Convert.ToDecimal(rows[0]["DoseConvertNum"]);
                    recordDrug.ItemType      = Convert.ToInt32(rows[0]["ItemClass"]);
                    recordDrug.ExecDeptID    = astOrderRecord.ExecDeptID;// Convert.ToInt32(rows[0]["ExecDeptId"]);
                    recordDrug.AstFlag       = -1;
                    recordDrug.ItemPrice     = Convert.ToDecimal(rows[0]["SellPrice"]);
                    recordDrug.PatListID     = ipPatlist.PatListID;
                    recordDrug.PresDeptID    = record.PresDeptID;
                    recordDrug.OrderDoc      = record.OrderDoc;
                    recordDrug.OrderID       = 0;
                    recordDrug.Memo          = "PsDrug";
                    recordDrug.PatDeptID     = ipPatlist.CurrDeptID;
                    recordDrug.WardID        = ipPatlist.CurrWardID;
                    this.BindDb(recordDrug);
                    recordDrug.save();
                    GenerateFee(recordDrug, dtDrugItem, ipPatlist);
                }
            }
        }
Ejemplo n.º 18
0
        /// <summary>
        /// 一组医嘱用法关联的费用
        /// </summary>
        /// <param name="record">医嘱对象</param>
        /// <param name="dtDrugItem">药品项目数据</param>
        /// <param name="ipPatlist">病人对象</param>
        private void GenerateChannelFee(IPD_OrderRecord record, DataTable dtDrugItem, IP_PatList ipPatlist)
        {
            #region 用法关联费用明细生成
            //用法关联费用明细
            List <Basic_ChannelFee> channelFees = NewObject <Basic_ChannelFee>().getlist <Basic_ChannelFee>("ChannelID=" + record.ChannelID);
            foreach (Basic_ChannelFee chanelFee in channelFees)
            {
                DataRow[] rows = dtDrugItem.Select(" ItemID=" + chanelFee.ItemID);
                if (rows.Length < 1)
                {
                    continue;
                }

                IP_FeeItemGenerate feeItem = GenerateRecordFee(chanelFee.ItemAmount, 1, record, ipPatlist, rows[0]);
                feeItem.FeeSource   = 2;
                feeItem.CalCostMode = chanelFee.CalCostMode;
                this.BindDb(feeItem);
                feeItem.save();
            }
            #endregion
        }
Ejemplo n.º 19
0
        /// <summary>
        /// 账单记账
        /// </summary>
        /// <param name="feeItemAccDt">待记账数据集合</param>
        /// <param name="empID">操作员ID</param>
        /// <param name="startTime">开始时间</param>
        /// <param name="endTime">结束时间</param>
        /// <param name="isBedFee">是否记床位费</param>
        /// <param name="isLongFee">是否记长期账单</param>
        /// <param name="msgList">错误消息</param>
        /// <returns>true:记账成功</returns>
        public bool FeeItemAccounting(
            DataTable feeItemAccDt,
            int empID,
            DateTime startTime,
            DateTime endTime,
            bool isBedFee,
            bool isLongFee,
            List <string> msgList)
        {
            // 获取需要记账的天数
            int interval = new TimeSpan(Convert.ToDateTime(endTime.ToString("yyyy-MM-dd")).Ticks -
                                        Convert.ToDateTime(startTime.ToString("yyyy-MM-dd")).Ticks).Days + 1;

            // 是否勾选了账单
            if (isLongFee)
            {
                if (feeItemAccDt != null && feeItemAccDt.Rows.Count > 0)
                {
                    IP_FeeItemGenerate feeItem = null;
                    for (int i = 0; i < feeItemAccDt.Rows.Count; i++)
                    {
                        feeItem = NewObject <IP_FeeItemGenerate>();
                        feeItem = ConvertExtend.ToObject <IP_FeeItemGenerate>(feeItemAccDt, i);
                        // 如果当前记录在费用生成表中不存在,则先记录保存到费用生成表中,然后在进行记账操作
                        if (feeItem.GenerateID == 0)
                        {
                            // 查询病人登记信息
                            DataTable  patDt = NewDao <IIPManageDao>().GetPatListInfo(Convert.ToInt32(feeItemAccDt.Rows[0]["PatListID"]));
                            IP_PatList pat   = ConvertExtend.ToObject <IP_PatList>(patDt, 0);
                            feeItem.PatListID    = pat.PatListID;
                            feeItem.PatName      = pat.PatName;
                            feeItem.PatDeptID    = pat.CurrDeptID;
                            feeItem.PatDoctorID  = pat.CurrDoctorID;
                            feeItem.PatNurseID   = pat.CurrNurseID;
                            feeItem.MarkEmpID    = empID;
                            feeItem.PresDoctorID = pat.CurrDoctorID;
                            feeItem.PresDeptID   = feeItem.PatDeptID;
                        }

                        this.BindDb(feeItem);
                        feeItem.save();
                        // 保存费用数据
                        bool result = SaveFeeItemAccountingData(feeItem, feeItemAccDt, i, interval, startTime, msgList);
                    }
                }
            }
            // 是否需要记床位费
            if (isBedFee)
            {
                DateTime presDate = startTime;
                for (int s = 0; s < interval; s++)
                {
                    if (s > 0)
                    {
                        // 每循环一次处方日期加1
                        presDate = Convert.ToDateTime(presDate.AddDays(1).ToString("yyyy-MM-dd"));
                    }
                    else
                    {
                        presDate = Convert.ToDateTime(presDate.ToString("yyyy-MM-dd"));
                    }

                    // 检查当日是否已记床位费
                    if (NewDao <IIPManageDao>().IsExistenceBedFeeData(Convert.ToInt32(feeItemAccDt.Rows[0]["PatListID"].ToString()), presDate))
                    {
                        IP_FeeItemGenerate feeItem = ConvertExtend.ToObject <IP_FeeItemGenerate>(feeItemAccDt, 0);
                        // 取得病人关联的所有床位
                        DataTable bedList  = NewDao <IIPManageDao>().GetPatientBedList(Convert.ToInt32(feeItemAccDt.Rows[0]["PatListID"].ToString()));
                        DataTable bedFeeDt = new DataTable();
                        for (int i = 0; i < bedList.Rows.Count; i++)
                        {
                            DataTable tempDt = null;
                            if (Convert.ToInt32(bedList.Rows[i]["IsPack"]) == 0)
                            {
                                // 根据床位ID查询床位费用
                                tempDt = NewDao <IIPManageDao>().GetBedFeeItemList(Convert.ToInt32(bedList.Rows[i]["BedID"].ToString()), 0);
                            }
                            else
                            {
                                // 根据床位ID查询床位费用
                                tempDt = NewDao <IIPManageDao>().GetBedFeeItemList(Convert.ToInt32(bedList.Rows[i]["BedID"].ToString()), 1);
                            }

                            if (i == 0)
                            {
                                bedFeeDt = tempDt.Clone();
                            }

                            bedFeeDt.Merge(tempDt);
                        }
                        // 记床位费账单
                        if (bedFeeDt != null && bedFeeDt.Rows.Count > 0)
                        {
                            for (int i = 0; i < bedFeeDt.Rows.Count; i++)
                            {
                                // 保存处方明细关系数据
                                IP_FeeItemRelationship feeItemRelationship = NewObject <IP_FeeItemRelationship>();
                                feeItemRelationship.GenerateID  = 0;
                                feeItemRelationship.ChargeDate  = presDate;
                                feeItemRelationship.ChargeEmpID = empID;
                                feeItemRelationship.PatListID   = Convert.ToInt32(feeItemAccDt.Rows[0]["PatListID"].ToString());
                                feeItemRelationship.FeeSource   = 2;
                                this.BindDb(feeItemRelationship);
                                feeItemRelationship.save();

                                // 写入处方明细表数据
                                IP_FeeItemRecord feeItemRecord = NewObject <IP_FeeItemRecord>();
                                SetFeeItemRecord(
                                    feeItemRecord,
                                    bedFeeDt.Rows[i],
                                    feeItem,
                                    Convert.ToInt32(bedFeeDt.Rows[i]["ItemClass"].ToString()),
                                    presDate,
                                    Convert.ToInt32(bedFeeDt.Rows[i]["ItemAmount"].ToString()),
                                    true);
                                feeItemRecord.TotalFee     = Math.Round(feeItemRecord.Amount * Convert.ToDecimal(bedFeeDt.Rows[i]["UnitPrice"].ToString()), 2);
                                feeItemRecord.PackAmount   = Convert.ToDecimal(bedFeeDt.Rows[i]["UnitPrice"].ToString()); // 划价系数
                                feeItemRecord.GenerateID   = 0;                                                           // 费用生成ID
                                feeItemRecord.PresDeptID   = feeItem.PatDeptID;
                                feeItemRecord.ExecDeptID   = feeItem.PatDeptID;
                                feeItemRecord.PresDoctorID = empID;
                                feeItemRecord.ExecDeptID   = Convert.ToInt32(bedFeeDt.Rows[i]["ExecDeptId"].ToString()); // 执行科室ID
                                feeItemRecord.OrderType    = 4;
                                this.BindDb(feeItemRecord);
                                feeItemRecord.save();
                            }
                        }
                    }
                }
            }

            return(true);
        }
Ejemplo n.º 20
0
        /// <summary>
        /// 账单记账
        /// </summary>
        /// <param name="feeItemAccDt">记账明细数据</param>
        /// <param name="empID">记账人ID</param>
        /// <param name="endTime">结束时间</param>
        /// <param name="isBedFee">是否记床位费</param>
        /// <param name="isLongFee">是否记账单</param>
        /// <returns>true:记账成功</returns>
        public bool FeeItemAccounting(
            DataTable feeItemAccDt,
            int empID,
            DateTime endTime,
            bool isBedFee,
            bool isLongFee)
        {
            // 是否勾选了账单
            if (isLongFee)
            {
                #region "保存费用生成数据"
                List <int> generateIdList = new List <int>();
                // 保存未保存的账单
                if (feeItemAccDt != null && feeItemAccDt.Rows.Count > 0)
                {
                    IP_FeeItemGenerate feeItem = null;
                    for (int i = 0; i < feeItemAccDt.Rows.Count; i++)
                    {
                        feeItem = NewObject <IP_FeeItemGenerate>();
                        feeItem = ConvertExtend.ToObject <IP_FeeItemGenerate>(feeItemAccDt, i);
                        // 如果当前记录在费用生成表中不存在,则先记录保存到费用生成表中,然后在进行记账操作
                        if (feeItem.GenerateID == 0)
                        {
                            // 查询病人登记信息
                            DataTable  patDt = NewDao <IIPManageDao>().GetPatListInfo(Convert.ToInt32(feeItemAccDt.Rows[0]["PatListID"]));
                            IP_PatList pat   = ConvertExtend.ToObject <IP_PatList>(patDt, 0);
                            feeItem.PatListID    = pat.PatListID;
                            feeItem.PatName      = pat.PatName;
                            feeItem.PatDeptID    = pat.CurrDeptID;
                            feeItem.PatDoctorID  = pat.CurrDoctorID;
                            feeItem.PatNurseID   = pat.CurrNurseID;
                            feeItem.MarkEmpID    = empID;
                            feeItem.PresDoctorID = pat.CurrDoctorID;
                            feeItem.PresDeptID   = feeItem.PatDeptID;
                            feeItem.FeeSource    = 3;
                            if (feeItem.ExecDeptDoctorID == 0)
                            {
                                feeItem.ExecDeptDoctorID = pat.CurrDeptID;
                            }

                            this.BindDb(feeItem);
                            feeItem.save();
                        }

                        generateIdList.Add(feeItem.GenerateID);
                    }

                    // 费用记账--保存费用明细数据
                    FeeItemAccounting(generateIdList, endTime, empID);
                }
                #endregion
            }

            // 是否勾选了床位费
            if (isBedFee)
            {
                BedFeeAccounting(Convert.ToInt32(feeItemAccDt.Rows[0]["PatListID"]), endTime, empID);
            }

            return(true);
        }
Ejemplo n.º 21
0
        /// <summary>
        /// 医嘱费用生成
        /// </summary>
        /// <param name="amount">数量</param>
        /// <param name="doseNum">付数</param>
        /// <param name="record">医嘱对象</param>
        /// <param name="ipPatlist">病人对象</param>
        /// <param name="row">药品项目明细</param>
        /// <returns>费用对象</returns>
        private IP_FeeItemGenerate GenerateRecordFee(decimal amount, int doseNum, IPD_OrderRecord record, IP_PatList ipPatlist, DataRow row)
        {
            IP_FeeItemGenerate feeItem = new IP_FeeItemGenerate();

            feeItem.PatListID   = record.PatListID;
            feeItem.PatName     = ipPatlist.PatName;
            feeItem.PatDeptID   = ipPatlist.CurrDeptID;
            feeItem.PatDoctorID = ipPatlist.CurrDoctorID;
            feeItem.PatNurseID  = ipPatlist.CurrNurseID;
            feeItem.BabyID      = 0;
            feeItem.ItemID      = Convert.ToInt32(row["ItemID"]);
            feeItem.ItemName    = row["ItemName"].ToString();
            feeItem.FeeClass    = Convert.ToInt32(row["ItemClass"]);
            feeItem.StatID      = Convert.ToInt32(row["StatID"]);
            feeItem.Spec        = row["Standard"].ToString();
            feeItem.Unit        = row["MiniUnitName"].ToString();
            feeItem.PackUnit    = row["MiniUnitName"].ToString();
            feeItem.PackAmount  = amount;
            feeItem.InPrice     = Convert.ToDecimal(row["InPrice"]);
            feeItem.SellPrice   = Convert.ToDecimal(row["SellPrice"]);
            feeItem.Amount      = Convert.ToInt32(amount);
            feeItem.DoseAmount  = doseNum;
            feeItem.TotalFee    = (Convert.ToDecimal(row["SellPrice"]) * feeItem.Amount) / Convert.ToDecimal(row["MiniConvertNum"]);
            //if (record.OrderType == 2)
            //{
            //    feeItem.TotalFee = 0;
            //    feeItem.Amount = 0;
            //}
            //else
            //{
            //    feeItem.TotalFee = (Convert.ToDecimal(row["SellPrice"]) * feeItem.Amount)/Convert.ToDecimal( row["MiniConvertNum"]);
            //}
            feeItem.PresDeptID   = record.PresDeptID;
            feeItem.PresDoctorID = record.OrderDoc;
            if (Convert.ToInt32(row["ExecDeptId"]) > 0)
            {
                feeItem.ExecDeptDoctorID = record.ExecDeptID;// Convert.ToInt32(row["ExecDeptId"]);
            }
            else
            {
                feeItem.ExecDeptDoctorID = record.PresDeptID;
            }

            feeItem.PresDate      = record.OrderBdate;
            feeItem.MarkDate      = record.OrderBdate;
            feeItem.MarkEmpID     = record.OrderDoc;
            feeItem.OrderID       = record.OrderID;
            feeItem.OrderType     = record.OrderCategory;
            feeItem.FrequencyID   = record.FrenquencyID;
            feeItem.FrequencyName = record.Frequency;
            feeItem.ChannelName   = record.ChannelName;
            feeItem.ChannelID     = record.ChannelID;
            feeItem.GroupID       = record.GroupID;
            return(feeItem);
        }
Ejemplo n.º 22
0
        /// <summary>
        /// 生成病人床位费
        /// </summary>
        /// <param name="bedId">病床ID</param>
        /// <param name="patListId">病人登记ID</param>
        /// <param name="isPackBed">是否为包床费用</param>
        /// <param name="empId">操作员ID</param>
        private void SaveBedFeeData(int bedId, int patListId, bool isPackBed, int empId)
        {
            // 获取床位费用
            DataTable tempDt = null;

            if (isPackBed)
            {
                // 包床获取包床床位费用
                tempDt = NewDao <IIPManageDao>().GetBedFeeItemList(bedId, 1);
            }
            else
            {
                // 不是包床,获取病床包床费用之外的床位费
                tempDt = NewDao <IIPManageDao>().GetBedFeeItemList(bedId, 0);
            }

            if (tempDt != null && tempDt.Rows.Count > 0)
            {
                // 查询病人登记信息
                DataTable  patDt = NewDao <IIPManageDao>().GetPatListInfo(patListId);
                IP_PatList pat   = ConvertExtend.ToObject <IP_PatList>(patDt, 0);
                for (int i = 0; i < tempDt.Rows.Count; i++)
                {
                    IP_FeeItemGenerate feeItem = NewObject <IP_FeeItemGenerate>();
                    feeItem.PatListID   = pat.PatListID;
                    feeItem.PatName     = pat.PatName;
                    feeItem.PatDeptID   = pat.CurrDeptID;
                    feeItem.PatDoctorID = pat.CurrDoctorID;
                    feeItem.PatNurseID  = pat.CurrNurseID;
                    feeItem.BabyID      = 0;
                    if (DBNull.Value == tempDt.Rows[i]["ItemID"])
                    {
                        continue;
                    }
                    feeItem.ItemID           = Convert.ToInt32(tempDt.Rows[i]["ItemID"]);
                    feeItem.ItemName         = tempDt.Rows[i]["ItemName"].ToString();
                    feeItem.FeeClass         = Convert.ToInt32(tempDt.Rows[i]["ItemClass"]);
                    feeItem.StatID           = Convert.ToInt32(tempDt.Rows[i]["StatID"]);
                    feeItem.Spec             = tempDt.Rows[i]["Standard"].ToString();
                    feeItem.PackAmount       = Convert.ToInt32(tempDt.Rows[i]["MiniConvertNum"]);
                    feeItem.PackUnit         = tempDt.Rows[i]["UnPickUnit"].ToString();
                    feeItem.InPrice          = Convert.ToDecimal(tempDt.Rows[i]["InPrice"]);
                    feeItem.SellPrice        = Convert.ToDecimal(tempDt.Rows[i]["SellPrice"]);
                    feeItem.Amount           = Convert.ToInt32(tempDt.Rows[i]["ItemAmount"]);
                    feeItem.Unit             = tempDt.Rows[i]["MiniUnitName"].ToString();
                    feeItem.DoseAmount       = 0;
                    feeItem.TotalFee         = Math.Round(feeItem.Amount * Convert.ToDecimal(tempDt.Rows[i]["UnitPrice"]), 2);
                    feeItem.PresDeptID       = pat.CurrDeptID;
                    feeItem.PresDoctorID     = pat.CurrDoctorID;
                    feeItem.ExecDeptDoctorID = pat.CurrDeptID;
                    feeItem.PresDate         = DateTime.Now;
                    feeItem.MarkDate         = DateTime.Now;
                    feeItem.MarkEmpID        = empId;
                    feeItem.SortOrder        = 0;
                    feeItem.OrderID          = 0;
                    feeItem.GroupID          = 0;
                    feeItem.OrderType        = 2;
                    feeItem.FrequencyID      = 0;
                    feeItem.FrequencyName    = string.Empty;
                    feeItem.ChannelID        = 0;
                    feeItem.ChannelName      = string.Empty;
                    feeItem.IsStop           = 0;
                    feeItem.FeeSource        = 4;
                    feeItem.CalCostMode      = 0;
                    feeItem.BedID            = bedId;
                    this.BindDb(feeItem);
                    feeItem.save();
                }
            }
        }
Ejemplo n.º 23
0
        /// <summary>
        /// 医嘱保存
        /// </summary>
        /// <param name="records">医嘱数据</param>
        public void SaveRecords(List <IPD_OrderRecord> records)
        {
            IP_PatList ipPatlist = NewObject <IP_PatList>().getmodel(records[0].PatListID) as IP_PatList;

            if (ipPatlist.Status != 2 || ipPatlist.IsLeaveHosOrder == 1)
            {
                throw new Exception("病人已经出院,不能再保存医嘱");
            }

            //判断病人是否存在未完成的转科医嘱
            List <IPD_TransDept> trans = NewObject <IPD_TransDept>().getlist <IPD_TransDept>(" Patlistid=" + records[0].PatListID + " and CancelFlag=0 and FinishFlag=0");

            if (trans != null && trans.Count > 0)
            {
                throw new Exception("病人已转科,不能再保存医嘱");
            }

            FeeItemDataSource feeitem    = NewObject <FeeItemDataSource>();
            DataTable         dtDrugItem = feeitem.GetFeeItemDataDt(FeeBusinessType.医嘱业务);
            List <int>        groupIDs   = new List <int>();

            groupIDs.Add(records[0].GroupID);
            for (int i = 1; i < records.Count; i++)
            {
                if (records[i].GroupID != records[i - 1].GroupID)
                {
                    groupIDs.Add(records[i].GroupID);
                }
            }

            for (int i = 0; i < records.Count; i++)
            {
                if (records[i].OrderID > 0)
                {
                    //原来存在费用,原来一组费用删除,重新生成
                    List <IP_FeeItemGenerate> feeItems = NewObject <IP_FeeItemGenerate>().getlist <IP_FeeItemGenerate>(" GroupId=" + records[i].GroupID + " and orderid=" + records[i].OrderID);
                    if (feeItems.Count > 0)
                    {
                        foreach (IP_FeeItemGenerate fee in feeItems)
                        {
                            this.BindDb(fee);
                            fee.delete();
                        }
                    }
                }
            }
            for (int i = 0; i < groupIDs.Count; i++)
            {
                int groupid = groupIDs[i];
                List <IPD_OrderRecord> sameGroupRecord = records.Where(p => p.GroupID == groupid).ToList();
                #region 如果已经转抄,就不能修改 按组转抄,只要判断一条医嘱就可
                if (sameGroupRecord[0].OrderStatus <= 1 && sameGroupRecord[0].OrderID > 0)
                {
                    IPD_OrderRecord newRecord = NewObject <IPD_OrderRecord>().getmodel(sameGroupRecord[0].OrderID) as IPD_OrderRecord;
                    if (newRecord.OrderStatus > 1)
                    {
                        //如果已经转抄,就不能修改
                        break;
                    }
                }
                #endregion
                //原来存在费用,原来一组费用删除,重新生成
                //List<IP_FeeItemGenerate> feeItems = NewObject<IP_FeeItemGenerate>().getlist<IP_FeeItemGenerate>(" GroupID=" + groupid );
                //if (feeItems.Count > 0)
                //{
                //    foreach (IP_FeeItemGenerate fee in feeItems)
                //    {
                //        this.BindDb(fee);
                //        fee.delete();
                //    }
                //}

                foreach (IPD_OrderRecord record in sameGroupRecord)
                {
                    #region 医嘱保存
                    if (record.OrderStatus <= 1 && record.ItemName != string.Empty)
                    {
                        record.PatDeptID = ipPatlist.CurrDeptID;
                        record.WardID    = ipPatlist.CurrWardID;
                        this.BindDb(record);
                        record.save();
                    }
                    #endregion
                    GenerateFee(record, dtDrugItem, ipPatlist);
                    if (record.AstFlag == 0)
                    {
                        //需要皮试,保存时增加皮试医嘱
                        InsertPSYZ(dtDrugItem, record, ipPatlist);
                    }
                }

                if (sameGroupRecord[0].ChannelID == 0)
                {
                    continue;
                }
                #region 用法关联费用明细生成
                GenerateChannelFee(sameGroupRecord[0], dtDrugItem, ipPatlist);
                #endregion
            }
        }