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); }
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); }
/// <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(); // 饮食级别 } }
/// <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="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(); } }
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); }
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); }
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); }
/// <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); }
/// <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="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 } }
/// <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); }
/// <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); }
/// <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; }
/// <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); } } }
/// <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 }
/// <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); }
/// <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); }
/// <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); }
/// <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(); } } }
/// <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 } }