/// <summary> /// 保存 /// </summary> /// <returns></returns> public virtual int Save() { if (this.Valid(this.PatientInfo.ID) < 0) { return(-1); } //如果患者不是当天出院提示 if (this.dtOutDate.Value.Date < this.PatientInfo.PVisit.InTime.Date) { MessageBox.Show("出院日期不能小于入院日期!", "提示"); return(-1); } else { if (this.dtOutDate.Value.Date != this.inpatient.GetDateTimeFromSysDateTime().Date) { DialogResult dr = MessageBox.Show("该患者的出院日期是: " + this.dtOutDate.Value.ToString("yyyy年MM月dd日") + " 是否继续?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); if (dr == DialogResult.No) { this.Err = ""; return(-1); } } } //取患者最新的住院主表信息 PatientInfo = this.inpatient.QueryPatientInfoByInpatientNO(this.PatientInfo.ID); if (PatientInfo == null) { this.Err = this.inpatient.Err; return(-1); } this.Err = ""; //如果患者已不在本科,则清空数据---当患者转科后,如果本窗口没有关闭,会出现此种情况 if (PatientInfo.PVisit.PatientLocation.NurseCell.ID != ((Neusoft.HISFC.Models.Base.Employee)Neusoft.FrameWork.Management.Connection.Operator).Nurse.ID) { this.Err = "患者已不在本病区,请刷新当前窗口"; return(-1); } //如果患者在院状态发生变化,则不允许操作 if (PatientInfo.PVisit.InState.ID.ToString() != "I") { this.Err = "患者信息已发生变化,请刷新当前窗口"; return(-1); } #region add by xuewj 2010-10-19 临床路径接口 {10962AE3-C0B9-4cf7-91B6-CA956C1AFC2D} if (this.iClinicPath != null) { if (this.iClinicPath.PatientIsSelectedPath(this.PatientInfo.ID)) { this.Err = "该患者在临床路径中,请先退出路径!"; return(-1); } } #endregion #region {6BFCAC25-CC22-48ac-ADDB-76E169375EAB} //将转归、出院时间等赋值拿到接口判断之前 //取出院登记信息 this.GetOutInfo(); #endregion #region addby xuewj 2010-10-11 {EFF73DC9-3543-49a4-9751-BC8D95F0BDD3} 郑大本地化,增加明细提示 Neusoft.HISFC.BizProcess.Interface.IPatientOutCheck ipatientOutCheck = Neusoft.FrameWork.WinForms.Classes.UtilInterface.CreateObject(this.GetType(), typeof(Neusoft.HISFC.BizProcess.Interface.IPatientOutCheck)) as Neusoft.HISFC.BizProcess.Interface.IPatientOutCheck; bool isZZUCheck = false; if (ipatientOutCheck != null)//本地化实现了接口 { string err = string.Empty; bool bl = ipatientOutCheck.IPatientOutCheck(PatientInfo, ref err); if (!bl) { //MessageBox.Show(err); return(-1); } isZZUCheck = true; } else { Neusoft.HISFC.BizProcess.Interface.IPatientShiftValid obj = Neusoft.FrameWork.WinForms.Classes.UtilInterface.CreateObject(this.GetType(), typeof(Neusoft.HISFC.BizProcess.Interface.IPatientShiftValid)) as Neusoft.HISFC.BizProcess.Interface.IPatientShiftValid; if (obj != null) { string err = string.Empty; bool bl = obj.IsPatientShiftValid(PatientInfo, Neusoft.HISFC.Models.Base.EnumPatientShiftValid.O, ref err); if (!bl) { MessageBox.Show(err); return(-1); } } //{3E83AFA1-C364-4f72-8DFD-1B733CB9379E} //增加查询患者是否有未审核的退药记录,为出院登记判断用 Add by 王宇 2009.6.10 int returnValue = this.pharmacyIntegrate.QueryNoConfirmQuitApply(PatientInfo.ID); if (returnValue == -1) { MessageBox.Show("查询患者退药申请信息出错!" + this.pharmacyIntegrate.Err); return(-1); } if (returnValue > 0) //有申请但是没有核准的退药信息 { //{29F39131-89B4-4128-B4C9-EAB9F07B719F} if (!this.quitFeeApplyFlag) { MessageBox.Show("该患者有未审核的退药申请信息,不能进行出院操作!"); return(-1); } else { DialogResult result = MessageBox.Show("该患者有未审核的退药申请信息!是否继续?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2); if (result == DialogResult.No) { return(-1); } } } } #endregion //{3E83AFA1-C364-4f72-8DFD-1B733CB9379E} 增加完毕 #region {6BFCAC25-CC22-48ac-ADDB-76E169375EAB} ////取出院登记信息 //this.GetOutInfo(); #endregion //出院登记 Neusoft.FrameWork.Management.PublicTrans.BeginTransaction(); //Neusoft.FrameWork.Management.Transaction t = new Neusoft.FrameWork.Management.Transaction(inpatient.con); //t.BeginTransaction(); radt.SetTrans(Neusoft.FrameWork.Management.PublicTrans.Trans); radt.QuitFeeApplyFlag = quitFeeApplyFlag; #region addby xuewj 2010-10-11 {EFF73DC9-3543-49a4-9751-BC8D95F0BDD3} int i = 0; if (!isZZUCheck) { i = radt.OutPatient(PatientInfo); this.Err = radt.Err; } else { // 之前已判断过 这里只处理床位信息 i = radt.OutPatientZZU(PatientInfo); Err = radt.Err; } //int i = radt.OutPatient(PatientInfo); //this.Err = radt.Err; #endregion if (i == -1) { //失败 { Neusoft.FrameWork.Management.PublicTrans.RollBack(); return(-1); } } else if (i == 0)//取消 { Neusoft.FrameWork.Management.PublicTrans.RollBack(); this.Err = ""; return(0); } #region #region add by xuewj 2010-10-19 临床路径接口 {10962AE3-C0B9-4cf7-91B6-CA956C1AFC2D} if (this.iClinicPath != null) { if (this.iClinicPath.PatientOutByNurse(this.PatientInfo.ID, PatientInfo.PVisit.PreOutTime) == false) { this.Err = "结束临床路径失败!"; Neusoft.FrameWork.Management.PublicTrans.RollBack(); return(-1); } } #endregion Neusoft.FrameWork.Management.PublicTrans.Commit(); //***************打印出院带药单************** return(1); }
/// <summary> /// 保存设置 /// </summary> public virtual int Save() { //取婴儿接珍时的信息信息 Neusoft.HISFC.Models.RADT.PatientInfo PatientInfo = null; //取患者最新的住院主表信息 PatientInfo = this.Inpatient.QueryPatientInfoByInpatientNO(this.patientInfo.ID); if (this.patientInfo == null) { MessageBox.Show(this.Inpatient.Err); return(-1); } //换医生时,如果患者已不在本科,则清空数据---当患者转科后,如果本窗口没有关闭,会出现此种情况 if (PatientInfo.PVisit.PatientLocation.NurseCell.ID != this.NurseCell.ID && this.arrivetype == ArriveType.ChangeDoc) { MessageBox.Show("患者已不在本病区,请刷新当前窗口"); return(-1); } //如果患者已不是在院状态,则不允许操作 if (PatientInfo.PVisit.InState.ID.ToString() != this.patientInfo.PVisit.InState.ID.ToString()) { MessageBox.Show("患者信息已发生变化,请刷新当前窗口"); return(-1); } //取变动信息:取医生、护士、科室等信息 this.GetPatientInfo(PatientInfo); //判断是否已选择床位 if (this.cmbBedNo.Text.Trim() == "" && patientInfo.IsBaby == false) { MessageBox.Show("未选择床位!"); return(-1); } Neusoft.HISFC.BizProcess.Interface.IPatientShiftValid obj = Neusoft.FrameWork.WinForms.Classes.UtilInterface.CreateObject(this.GetType(), typeof(Neusoft.HISFC.BizProcess.Interface.IPatientShiftValid)) as Neusoft.HISFC.BizProcess.Interface.IPatientShiftValid; if (obj != null) { string err = string.Empty; bool bl = obj.IsPatientShiftValid(PatientInfo, Neusoft.HISFC.Models.Base.EnumPatientShiftValid.C, ref err); if (!bl) { MessageBox.Show(err); return(-1); } } //取处理时的床位信息 Neusoft.HISFC.Models.Base.Bed bed = new Neusoft.HISFC.Models.Base.Bed(); bed.ID = this.cmbBedNo.Tag.ToString(); //床号 bed.InpatientNO = patientInfo.ID; //床位上患者住院流水号 #region 业务处理 Neusoft.FrameWork.Management.PublicTrans.BeginTransaction(); Neusoft.HISFC.BizProcess.Integrate.RADT managerRADT = new Neusoft.HISFC.BizProcess.Integrate.RADT(); //Neusoft.FrameWork.Management.Transaction t = new Neusoft.FrameWork.Management.Transaction(Neusoft.FrameWork.Management.Connection.Instance); //t.BeginTransaction(); managerRADT.SetTrans(Neusoft.FrameWork.Management.PublicTrans.Trans); //转科 if (this.arrivetype == ArriveType.ShiftIn) { if (managerRADT.ShiftIn(PatientInfo, this.NurseCell, this.cmbBedNo.Tag.ToString()) == -1)//调用转科业务 { Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show(managerRADT.Err); return(-1); } else { } } //接珍护理站为当前护理站(转入操作时,需要保留原护理站信息,所以在此处处理) PatientInfo.PVisit.PatientLocation.NurseCell = this.NurseCell; PatientInfo.PVisit.PatientLocation.Bed = bed; //接诊 if (this.arrivetype == ArriveType.Regedit) { if (managerRADT.ArrivePatient(PatientInfo, bed) == -1)//调用接诊业务 { Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show(managerRADT.Err); return(-1); } else { } } //召回 if (this.arrivetype == ArriveType.CallBack) { if (managerRADT.CallBack(PatientInfo, bed) == -1)//调用召回业务 { Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show(managerRADT.Err); return(-1); } else { } } //换医师 if (this.arrivetype == ArriveType.ChangeDoc) { if (managerRADT.ChangeDoc(PatientInfo) == -1)//调用换医生业务 { Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show(managerRADT.Err); return(-1); } else { } } #endregion Neusoft.FrameWork.Management.PublicTrans.Commit(); MessageBox.Show(managerRADT.Err); base.OnRefreshTree();//刷新树 return(1); }
/// <summary> /// 保存 /// </summary> /// <returns></returns> public virtual int Save() { if (cmbZg.Tag == null || cmbZg.Tag.ToString().Trim() == string.Empty) { this.Err = "请输入出院情况"; this.cmbZg.Focus(); return(-1); } //如果患者不是当天出院提示 if (this.dtOutDate.Value.Date != this.inpatient.GetDateTimeFromSysDateTime().Date) { DialogResult dr = MessageBox.Show("该患者的出院日期是: " + this.dtOutDate.Value.ToString("yyyy年MM月dd日") + " 是否继续?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); if (dr == DialogResult.No) { this.Err = ""; return(-1); } } if (this.PatientInfo == null || string.IsNullOrEmpty(this.PatientInfo.ID)) { this.Err = "请回车确认住院号是否存在!"; return(-1); } //取患者最新的住院主表信息 PatientInfo = this.radt.GetPatientInfomation(this.PatientInfo.ID); if (PatientInfo == null) { this.Err = this.radt.Err; return(-1); } this.Err = ""; //如果患者在院状态发生变化,则不允许操作 string in_State = PatientInfo.PVisit.InState.ID.ToString(); if (PatientInfo.PVisit.InState.ID.ToString() != "I") { this.Err = "该患者没有接诊"; return(-1); } //取出院登记信息 this.GetOutInfo(); //{2A467990-BDA3-4cb4-BB89-5801796EBC95} Neusoft.HISFC.BizProcess.Interface.IPatientShiftValid obj = Neusoft.FrameWork.WinForms.Classes.UtilInterface.CreateObject(this.GetType(), typeof(Neusoft.HISFC.BizProcess.Interface.IPatientShiftValid)) as Neusoft.HISFC.BizProcess.Interface.IPatientShiftValid; if (obj != null) { string err = string.Empty; bool bl = obj.IsPatientShiftValid(PatientInfo, Neusoft.HISFC.Models.Base.EnumPatientShiftValid.O, ref err); if (!bl) { MessageBox.Show(err); return(-1); } } //出院登记 HISFC.BizProcess.Integrate.FeeInterface.MedcareInterfaceProxy medcareInterfaceProxy = new Neusoft.HISFC.BizProcess.Integrate.FeeInterface.MedcareInterfaceProxy(); long returnValue = medcareInterfaceProxy.SetPactCode(this.PatientInfo.Pact.ID); //Neusoft.FrameWork.Management.Transaction t = new Neusoft.FrameWork.Management.Transaction(Neusoft.FrameWork.Management.Connection.Instance); Neusoft.FrameWork.Management.PublicTrans.BeginTransaction(); radt.SetTrans(Neusoft.FrameWork.Management.PublicTrans.Trans); medcareInterfaceProxy.SetTrans(Neusoft.FrameWork.Management.PublicTrans.Trans); medcareInterfaceProxy.BeginTranscation(); if (returnValue != 1) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); medcareInterfaceProxy.Rollback(); MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("待遇接口获得合同单位失败" + medcareInterfaceProxy.ErrMsg)); return(-1); } returnValue = medcareInterfaceProxy.Connect(); { if (returnValue != 1) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); medcareInterfaceProxy.Rollback(); MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("待遇接口获得合同单位失败" + medcareInterfaceProxy.ErrMsg)); return(-1); } } medcareInterfaceProxy.BeginTranscation(); //returnValue = medcareInterfaceProxy.GetRegInfoInpatient(this.PatientInfo); //if (returnValue != 1) //{ // t.RollBack(); // medcareInterfaceProxy.Rollback(); // MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("待遇接口获得患者信息失败" + medcareInterfaceProxy.ErrMsg)); // return -1; //} //出院登记(带改) returnValue = medcareInterfaceProxy.LogoutInpatient(this.PatientInfo); if (returnValue != 1) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); medcareInterfaceProxy.Rollback(); MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("待遇接口获出院登记失败" + medcareInterfaceProxy.ErrMsg)); return(-1); } int i = radt.OutPatient(PatientInfo); this.Err = radt.Err; if (i == -1) { //失败 { Neusoft.FrameWork.Management.PublicTrans.RollBack(); medcareInterfaceProxy.Rollback(); return(-1); } } else if (i == 0)//取消 { Neusoft.FrameWork.Management.PublicTrans.RollBack(); medcareInterfaceProxy.Rollback(); this.Err = ""; return(0); } //zhangjunyi 注释掉 改为commit //medcareInterfaceProxy.Rollback(); if (medcareInterfaceProxy.Commit() < 0) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); medcareInterfaceProxy.Rollback(); this.Err = "医保接口提交事务出错!请检查读卡器连接是否正确"; return(-1); } #region addby xuewj 2010-3-15 if (this.adt == null) { this.adt = Neusoft.FrameWork.WinForms.Classes.UtilInterface.CreateObject(this.GetType(), typeof(Neusoft.HISFC.BizProcess.Interface.IHE.IADT)) as Neusoft.HISFC.BizProcess.Interface.IHE.IADT; } if (this.adt != null) { this.adt.DischargeInpatient(this.PatientInfo); } #endregion Neusoft.FrameWork.Management.PublicTrans.Commit(); return(1); }