/// <summary>
        /// 保存
        /// </summary>
        /// <returns></returns>
        public int Save()
        {
            //取控件中修改后的患者信息
            if (!GetPatientInfo(register))
            {
                return(-1);
            }

            Neusoft.HISFC.Models.RADT.Patient obj = (Neusoft.HISFC.Models.RADT.Patient)register;

            Neusoft.FrameWork.Management.PublicTrans.BeginTransaction();

            //Neusoft.FrameWork.Management.Transaction t = new Neusoft.FrameWork.Management.Transaction(Neusoft.FrameWork.Management.Connection.Instance);
            //t.BeginTransaction();

            radtManager.SetTrans(Neusoft.FrameWork.Management.PublicTrans.Trans);

            if (this.radtManager.UpdatePatient((Neusoft.HISFC.Models.RADT.PatientInfo)obj) == 1)
            {
                Neusoft.FrameWork.Management.PublicTrans.Commit();
                MessageBox.Show("保存成功!", "提示");
                base.OnRefreshTree();
            }
            else
            {
                Neusoft.FrameWork.Management.PublicTrans.RollBack();
                MessageBox.Show("保存失败!" + this.radtManager.Err, "提示");
                return(-1);
            }
            return(0);
        }
        /// <summary>
        /// 保存
        /// </summary>
        /// <returns></returns>
        protected virtual int Save()
        {
            if (patient == null)
            {
                MessageBox.Show("请选择患者!", "提示");
                return(-1);
            }

            #region 获得患者所在位置
            Neusoft.HISFC.Models.RADT.Location newlocation = new Neusoft.HISFC.Models.RADT.Location();
            newdeptObj            = this.lblDept.Tag as NeuObject;
            newlocation.Dept.ID   = newdeptObj.ID;
            newlocation.Dept.Name = newdeptObj.Name;
            bed                   = this.lblBed.Tag as Neusoft.HISFC.Models.Base.Bed;
            newlocation.Bed       = bed;
            newlocation.NurseCell = bed.NurseStation;
            #endregion

            //Neusoft.FrameWork.Management.Transaction tran = new Neusoft.FrameWork.Management.Transaction(Neusoft.FrameWork.Management.Connection.Instance);
            Neusoft.FrameWork.Management.PublicTrans.BeginTransaction();
            radtInteger.SetTrans(Neusoft.FrameWork.Management.PublicTrans.Trans);
            mamagerInteger.SetTrans(Neusoft.FrameWork.Management.PublicTrans.Trans);

            int resultValue = radtInteger.ChangeDept(patient, newlocation);
            if (resultValue < 0)
            {
                Neusoft.FrameWork.Management.PublicTrans.RollBack();
                MessageBox.Show(this.radtInteger.Err);
                return(-1);
            }
            Neusoft.FrameWork.Management.PublicTrans.Commit();
            if (isFresh)
            {
                deptObj = this.txtdept.Tag as NeuObject;
                RefreshListPatient(deptObj);
            }
            GetBedByDeptCode(newdeptObj);


            #region addby xuewj 2010-3-15

            Neusoft.HISFC.Models.RADT.PatientInfo p = patient.Clone();
            p.PVisit.PatientLocation = newlocation;

            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)
            {
                adt.TransferPatient(p);
            }

            #endregion

            MessageBox.Show("转科、床成功!", "提示");
            this.cmbDept.Tag = newdeptObj.ID;
            return(1);
        }
Exemple #3
0
        /// <summary>
        /// 无费退院
        /// </summary>
        protected virtual void Confirm()
        {
            //有效性判断

            if (!IsValid())
            {
                return;
            }

            //定义事务
            long returnValue = this.medcareInterfaceProxy.SetPactCode(this.patientInfo.Pact.ID);

            if (returnValue != 1)
            {
                MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("待遇接口取合同单位失败") + this.medcareInterfaceProxy.ErrMsg);
                return;
            }
            //Neusoft.FrameWork.Management.Transaction t  = new Transaction(this.feeInpatient.Connection);
            Neusoft.FrameWork.Management.PublicTrans.BeginTransaction();
            radtIntegrate.SetTrans(Neusoft.FrameWork.Management.PublicTrans.Trans);
            if (radtIntegrate.UnregisterNoFee(this.patientInfo) != 1)
            {
                Neusoft.FrameWork.Management.PublicTrans.RollBack();

                Neusoft.FrameWork.WinForms.Classes.Function.Msg(this.radtManger.Err, 211);

                return;
            }
            this.medcareInterfaceProxy.SetTrans(Neusoft.FrameWork.Management.PublicTrans.Trans);


            returnValue = this.medcareInterfaceProxy.Connect();
            if (returnValue != 1)
            {
                Neusoft.FrameWork.Management.PublicTrans.RollBack();
                this.medcareInterfaceProxy.Rollback();
                MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("待遇接口初始化失败") + this.medcareInterfaceProxy.ErrMsg);
                return;
            }
            returnValue = this.medcareInterfaceProxy.CancelRegInfoInpatient(this.patientInfo);
            if (returnValue != 1)
            {
                Neusoft.FrameWork.Management.PublicTrans.RollBack();
                this.medcareInterfaceProxy.Rollback();
                MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("待遇接口无费退院失败") + this.medcareInterfaceProxy.ErrMsg);
                return;
            }

            this.medcareInterfaceProxy.Commit();
            //{009FC822-DE2B-45ac-BEB7-E49F24B1605F}
            this.medcareInterfaceProxy.Disconnect();
            Neusoft.FrameWork.Management.PublicTrans.Commit();
            this.patientInfo.ID = "";
            this.ucQueryInpatientNo.txtInputCode.Text = "";
            Neusoft.FrameWork.WinForms.Classes.Function.Msg("无费退院成功", 111);
        }
        /// <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("请选择住院患者");
                return(-1);
            }

            //取变动信息:取医生、护士、科室等信息
            //this.GetPatientInfo(PatientInfo);

            //判断是否已选择床位
            if (this.cmbBedNo.Text.Trim() == "" &&
                patientInfo.IsBaby == false)
            {
                MessageBox.Show("未选择床位!");
                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.HISFC.BizProcess.Integrate.RADT managerRADT = new Neusoft.HISFC.BizProcess.Integrate.RADT();

            Neusoft.FrameWork.Management.PublicTrans.BeginTransaction();

            //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 (managerRADT.CallBack(patientInfo, bed) == -1)//调用召回业务
            {
                Neusoft.FrameWork.Management.PublicTrans.RollBack();
                MessageBox.Show(managerRADT.Err);
                return(-1);
            }
            else
            {
            }
            #endregion

            Neusoft.FrameWork.Management.PublicTrans.Commit();
            MessageBox.Show(managerRADT.Err);
            this.Refresh();
            this.ClearPatintInfo();
            return(1);
        }
Exemple #5
0
        /// <summary>
        /// 根据药品申请,判断患者是否已出院,返回不允许继续进行摆药收费的患者信息
        /// </summary>
        /// <param name="arrayApplyOut">药品申请</param>
        /// <param name="noPrivPatient">不在院的患者信息</param>
        /// <returns>成功返回1 失败返回-1</returns>
        internal static int JudgeInStatePatient(ArrayList arrayApplyOut, System.Data.IDbTransaction trans, ref string noPrivPatient)
        {
            System.Collections.Hashtable            hsPatient     = new Hashtable();
            Neusoft.HISFC.BizProcess.Integrate.RADT radtIntegrate = new Neusoft.HISFC.BizProcess.Integrate.RADT();
            if (trans != null)
            {
                radtIntegrate.SetTrans(trans);
            }

            foreach (Neusoft.HISFC.Models.Pharmacy.ApplyOut info in arrayApplyOut)
            {
                if (info.IsCharge)      //对已经收费的记录不进行判断处理
                {
                    continue;
                }
                if (hsPatient.ContainsKey(info.PatientNO))
                {
                    continue;
                }
                else
                {
                    Neusoft.HISFC.Models.RADT.PatientInfo p = radtIntegrate.GetPatientInfomation(info.PatientNO);
                    if (p != null)
                    {
                        if (p.PVisit.InState.ID.ToString() != Neusoft.HISFC.Models.Base.EnumInState.I.ToString())
                        {
                            if (noPrivPatient == "")
                            {
                                noPrivPatient = p.Name;
                            }
                            else
                            {
                                noPrivPatient += "," + p.Name;
                            }
                        }
                    }

                    hsPatient.Add(info.PatientNO, null);
                }
            }

            if (noPrivPatient != "")
            {
                noPrivPatient += "已不在院,不能进行摆药扣费操作。";
            }

            return(1);
        }
Exemple #6
0
        /// <summary>
        /// 保存数据
        /// </summary>
        /// <returns></returns>
        private int SaveData()
        {
            Neusoft.HISFC.Models.RADT.LifeCharacter lfch = new Neusoft.HISFC.Models.RADT.LifeCharacter();
            lfch = this.SetLifeCharacter();
            if (this.CheckData(lfch) < 0)
            {
                return(-1);
            }
            //Neusoft.FrameWork.Management.Transaction t = new Neusoft.FrameWork.Management.Transaction(OrderManagement.Connection);
            //t.BeginTransaction();
            Neusoft.FrameWork.Management.PublicTrans.BeginTransaction();
            lfchManagement.SetTrans(Neusoft.FrameWork.Management.PublicTrans.Trans); //设置事务
            int iReturn = lfchManagement.InsertLifeCharacter(lfch);

            if (iReturn < 0)
            {
                Neusoft.FrameWork.Management.PublicTrans.RollBack();;
                MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("保存失败!") + this.lfchManagement.Err);
                return(-1);
            }
            Neusoft.FrameWork.Management.PublicTrans.Commit();
            MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("保存成功!"));
            return(0);
        }
        /// <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.Models.Base.Bed bed = new Neusoft.HISFC.Models.Base.Bed();
            bed.ID          = this.cmbBedNo.Tag.ToString(); //床号
            bed.InpatientNO = patientInfo.ID;               //床位上患者住院流水号


            #region 业务处理
            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);
            Neusoft.FrameWork.Management.PublicTrans.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>
        public virtual int Save()
        {
            //取婴儿接珍时的信息信息
            Neusoft.HISFC.Models.Registration.Register PatientInfo = null;

            //取患者最新的住院主表信息
            PatientInfo = this.regManager.GetByClinic(this.register.ID);
            if (this.register == null)
            {
                MessageBox.Show(this.outpatient.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.register.PVisit.InState.ID.ToString())
            {
                MessageBox.Show("患者信息已发生变化,请刷新当前窗口");
                return(-1);
            }
            //患者状态
            string state = PatientInfo.PVisit.InState.ID.ToString();

            //取变动信息:取医生、护士、科室等信息
            this.GetPatientInfo(PatientInfo);

            //判断是否已选择床位
            if (this.cmbBedNo.Text.Trim() == "" &&
                register.IsBaby == false)
            {
                MessageBox.Show("未选择床位!");
                return(-1);
            }

            //取处理时的床位信息
            Neusoft.HISFC.Models.Base.Bed bed = new Neusoft.HISFC.Models.Base.Bed();
            bed.ID          = this.cmbBedNo.Tag.ToString(); //床号
            bed.InpatientNO = register.ID;                  //床位上患者住院流水号


            #region 业务处理

            Neusoft.FrameWork.Management.PublicTrans.BeginTransaction();

            //Neusoft.FrameWork.Management.Transaction t = new Neusoft.FrameWork.Management.Transaction(Neusoft.FrameWork.Management.Connection.Instance);
            //t.BeginTransaction();

            outpatient.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 (outpatient.EmrArrivePatient(PatientInfo, bed) == -1)//调用接诊业务
                {
                    Neusoft.FrameWork.Management.PublicTrans.RollBack();
                    MessageBox.Show(outpatient.Err);
                    return(-1);
                }
                else
                {
                }
            }
            //{1C0814FA-899B-419a-94D1-789CCC2BA8FF}
            //召回
            if (this.arrivetype == ArriveType.CallBack)
            {
                bool isOut = state == "B" ? true : false;
                if (outpatient.CallBack(PatientInfo, bed, isOut) == -1)//调用召回业务
                {
                    Neusoft.FrameWork.Management.PublicTrans.RollBack();
                    MessageBox.Show(outpatient.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(outpatient.Err);
            base.OnRefreshTree();//刷新树
            return(1);
        }
        //{A45EE85D-B1E3-4af0-ACAD-9DAF65610611}
        /// <summary>
        /// 更新警戒线
        /// </summary>
        /// <param name="type">0:不按合同单位模式 1:按合同单位模式</param>
        /// <param name="chooseType">0:全院1:病区患者2:科室患者3:单个患者4:合同单位</param>
        /// <returns></returns>
        protected int Update(string type, decimal alertMoney, string alertType, DateTime beginDate, DateTime endDate)
        {
            //Neusoft.FrameWork.Management.Transaction t = new Neusoft.FrameWork.Management.Transaction(Neusoft.FrameWork.Management.Connection.Instance);

            Neusoft.FrameWork.Management.PublicTrans.BeginTransaction();
            radtIntegrate.SetTrans(Neusoft.FrameWork.Management.PublicTrans.Trans);
            int retureValue = 0;

            if (IsAll == true)  //设置全院
            {
                switch (type)
                {
                case "0":    //
                {
                    retureValue = this.UpdateAllPatient(alertMoney, alertType, beginDate, endDate);
                    break;
                }

                case "1":    //
                {
                    retureValue = this.UpdateByNurseCellID(this.myObject.ID.ToString(), alertMoney, alertType, beginDate, endDate);
                    break;
                }

                case "2":    //
                {
                    retureValue = this.UpdateByNurseCellIDAndDept(this.NurseCellObject.ID, this.myObject.ID.ToString(), alertMoney, alertType, beginDate, endDate);
                    break;
                }

                case "3":    //
                {
                    retureValue = this.UpdatePatient(this.PatientInfo.ID, alertMoney, alertType, beginDate, endDate);
                    break;
                }

                case "4":
                {
                    retureValue = this.UpdateByPactID(this.cmbUnit.SelectedItem.ID, alertMoney, alertType, beginDate, endDate);
                    break;
                }


                default:
                    break;
                }
            }
            else
            {
                switch (type)
                {
                case "0":    //
                {
                    break;
                }

                case "1":    //
                {
                    //retureValue = this.UpdateByNurseCellID(this.myObject.ID.ToString(), alertMoney, radtIntegrate);
                    retureValue = this.UpdateByNurseCellIDAndDept(this.NurseCellObject.ID, ((Neusoft.HISFC.Models.Base.Employee)Neusoft.FrameWork.Management.Connection.Operator).Dept.ID, alertMoney, alertType, beginDate, endDate);
                    break;
                }

                case "2":    //
                {
                    retureValue = this.UpdateByNurseCellIDAndDept(this.NurseCellObject.ID, ((Neusoft.HISFC.Models.Base.Employee)Neusoft.FrameWork.Management.Connection.Operator).Dept.ID, alertMoney, alertType, beginDate, endDate);
                    break;
                }

                case "3":    //
                {
                    retureValue = this.UpdatePatient(this.PatientInfo.ID, alertMoney, alertType, beginDate, endDate);
                    break;
                }

                case "4":
                {
                    retureValue = this.UpdateByPactID((this.cmbUnit.Tag as Neusoft.FrameWork.Models.NeuObject).ID, alertMoney, alertType, beginDate, endDate);
                    break;
                }


                default:
                    break;
                }
            }

            if (retureValue < 0)
            {
                Neusoft.FrameWork.Management.PublicTrans.RollBack();
                MessageBox.Show("警戒线设置失败" + Neusoft.FrameWork.Management.PublicTrans.Err);
                return(-1);
            }
            else
            {
                Neusoft.FrameWork.Management.PublicTrans.Commit();
                MessageBox.Show("警戒线设置成功");
            }

            return(1);
        }
        /// <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);
        }
Exemple #11
0
        /// <summary>
        /// 无费退院

        /// </summary>
        protected virtual void Confirm()
        {
            //有效性判断

            if (!IsValid())
            {
                return;
            }

            if (!this.SetPatientInfo())
            {
                return;
            }

            //定义事务
            long returnValue = this.medcareInterfaceProxy.SetPactCode(this.patientInfo.Pact.ID);

            if (returnValue != 1)
            {
                MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("待遇接口取合同单位失败") + this.medcareInterfaceProxy.ErrMsg);
                return;
            }
            //Neusoft.FrameWork.Management.Transaction t  = new Transaction(this.feeInpatient.Connection);
            Neusoft.FrameWork.Management.PublicTrans.BeginTransaction();
            radtIntegrate.SetTrans(Neusoft.FrameWork.Management.PublicTrans.Trans);

            if (radtIntegrate.UnregisterNoFee(this.patientInfo) != 1)
            {
                Neusoft.FrameWork.Management.PublicTrans.RollBack();

                Neusoft.FrameWork.WinForms.Classes.Function.Msg(this.radtManger.Err, 211);

                return;
            }
            this.medcareInterfaceProxy.SetTrans(Neusoft.FrameWork.Management.PublicTrans.Trans);


            returnValue = this.medcareInterfaceProxy.Connect();
            if (returnValue != 1)
            {
                Neusoft.FrameWork.Management.PublicTrans.RollBack();
                this.medcareInterfaceProxy.Rollback();
                MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("待遇接口初始化失败") + this.medcareInterfaceProxy.ErrMsg);
                return;
            }
            returnValue = this.medcareInterfaceProxy.CancelRegInfoInpatient(this.patientInfo);
            if (returnValue != 1)
            {
                Neusoft.FrameWork.Management.PublicTrans.RollBack();
                this.medcareInterfaceProxy.Rollback();
                MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("待遇接口无费退院失败") + this.medcareInterfaceProxy.ErrMsg);
                return;
            }


            #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.CancelRegPatient(this.patientInfo);
            }

            #endregion

            this.medcareInterfaceProxy.Commit();
            //{009FC822-DE2B-45ac-BEB7-E49F24B1605F}
            this.medcareInterfaceProxy.Disconnect();
            Neusoft.FrameWork.Management.PublicTrans.Commit();
            this.patientInfo.ID = "";
            this.ucQueryInpatientNo.txtInputCode.Text = "";
            Neusoft.FrameWork.WinForms.Classes.Function.Msg("无费退院成功", 111);
        }
        /// <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);
        }