/// <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(); } } }
/// <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(); }
/// <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); }