Ejemplo n.º 1
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);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 取消预约登记
        /// </summary>
        /// <returns></returns>
        public int CancelPre()
        {
            if (this.neuTabControl1.SelectedIndex == 0)
            {
                MessageBox.Show("切换到查询页面!!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return(-1);
            }
            if (this.fpMainInfo_Sheet1.Rows.Count == 0)
            {
                return(-1);
            }
            string CarNo    = this.fpMainInfo_Sheet1.Cells[this.fpMainInfo_Sheet1.ActiveRowIndex, 1].Text;
            string HappenNo = this.fpMainInfo_Sheet1.Cells[this.fpMainInfo_Sheet1.ActiveRowIndex, 0].Text;

            if (MessageBox.Show("确认要取消预约登记" + CarNo + "号?", "确认", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == DialogResult.Cancel)
            {
                return(-1);
            }

            Neusoft.HISFC.Models.RADT.PatientInfo patient = this.managerIntegrate.QueryPreInPatientInfoByCardNO(HappenNo, CarNo);
            Neusoft.FrameWork.Management.PublicTrans.BeginTransaction();
            this.managerIntegrate.SetTrans(Neusoft.FrameWork.Management.PublicTrans.Trans);
            int iRet = this.managerIntegrate.UpdatePreInPatientState(CarNo, "1", HappenNo);

            if (iRet < 0)
            {
                Neusoft.FrameWork.Management.PublicTrans.RollBack();
                Neusoft.FrameWork.WinForms.Classes.Function.Msg("取消预约登记失败" + this.managerIntegrate.Err, 211);
                iRet = -1;
            }
            if (iRet == 0)
            {
                Neusoft.FrameWork.Management.PublicTrans.RollBack();
                MessageBox.Show("该条记录已被取消!");
                this.QueryData();
                iRet = -1;
            }
            if (iRet > 0)
            {
                #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 && patient != null)
                {
                    this.adt.CancelPreRegInpatient(patient);
                }
                #endregion
                Neusoft.FrameWork.Management.PublicTrans.Commit();
                MessageBox.Show("取消成功!");
                this.QueryData();
                iRet = 1;
            }

            return(iRet);
        }
Ejemplo n.º 3
0
        protected override int OnSave(object sender, object neuObject)
        {
            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.MergeInpatient(this.patientInfo, this.patientInfo2);
            }



            return(base.OnSave(sender, neuObject));
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnSave_Click(object sender, EventArgs e)
        {
            if (this.cmbNewDept.Tag == null || this.cmbNewDept.Tag.ToString() == "")
            {
                MessageBox.Show("请选择要转入的病区!");
                return;
            }

            Neusoft.FrameWork.Models.NeuObject nurseCell = new Neusoft.FrameWork.Models.NeuObject();

            nurseCell.ID   = this.cmbNewDept.Tag.ToString();
            nurseCell.Name = this.cmbNewDept.Text;
            nurseCell.Memo = this.txtNote.Text;

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

            Neusoft.HISFC.BizProcess.Integrate.RADT radt = new Neusoft.HISFC.BizProcess.Integrate.RADT();

            //{F0BF027A-9C8A-4bb7-AA23-26A5F3539586}
            if (radt.ShiftOut(this.patientInfo, this.patientInfo.PVisit.PatientLocation.Dept, nurseCell, this.patientInfo.User03, this.isCancel) == -1)
            {
                Neusoft.FrameWork.Management.PublicTrans.RollBack();
            }
            else
            {
                #region addby xuewj
                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 && patientInfo != null)
                {
                    this.adt.CancelTransferPatient(patientInfo);
                }
                #endregion
                Neusoft.FrameWork.Management.PublicTrans.Commit();
            }
            MessageBox.Show(radt.Err);

            base.OnRefreshTree();//刷新树
        }
        protected override int OnSave(object sender, object neuObject)
        {
            if (adt == null)
            {
                adt = Neusoft.FrameWork.WinForms.Classes.UtilInterface.CreateObject(this.GetType(), typeof(Neusoft.HISFC.BizProcess.Interface.IHE.IADT)) as Neusoft.HISFC.BizProcess.Interface.IHE.IADT;
            }

            if (adt == null)
            {
                return(-1);
            }

            Neusoft.HISFC.BizProcess.Integrate.RADT radtBll = new Neusoft.HISFC.BizProcess.Integrate.RADT();
            Neusoft.HISFC.BizProcess.Integrate.Registration.Registration regBll = new Neusoft.HISFC.BizProcess.Integrate.Registration.Registration();


            Neusoft.HISFC.Models.RADT.PatientInfo      patient = radtBll.GetPatientInfomation(this.patientInfo.ID);
            Neusoft.HISFC.Models.Registration.Register r       = adt.ProduceInpatientToOutPatientMessage(this.patientInfo);

            if (r == null)
            {
                MessageBox.Show("生成挂号实体出错!");
                return(-1);
            }
            int resultValue = radtBll.UnregisterNoFee(patient);

            if (resultValue != 1)
            {
                throw new Exception(radtBll.Err);
            }
            if (regBll.InsertByDoct(r) == -1)
            {
                throw new Exception(regBll.Err);
            }

            adt.InPatientToOutpatient(this.patientInfo);
            return(base.OnSave(sender, neuObject));
        }
Ejemplo n.º 6
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);
            }

            //取变动信息:取医生、护士、科室等信息
            //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.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(t.Trans);

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

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

            #endregion

            Neusoft.FrameWork.Management.PublicTrans.Commit();
            MessageBox.Show(managerRADT.Err);
            this.Refresh();
            this.ClearPatintInfo();
            return(1);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 保存预约患者登记信息
        /// </summary>
        /// <returns></returns>
        public int Save()
        {
            try
            {
                //有效性判断
                if (!this.checkValid())
                {
                    return(-1);
                }
                //得到PatientInfo实体
                this.setPrePatient();
                //事务处理
                //Neusoft.FrameWork.Management.Transaction t = new Neusoft.FrameWork.Management.Transaction(inpatient.Connection);// myInpatient.Connection);
                Neusoft.FrameWork.Management.PublicTrans.BeginTransaction();
                this.managerIntegrate.SetTrans(Neusoft.FrameWork.Management.PublicTrans.Trans);
                if (this.managerIntegrate.InsertPreInPatient(this.PatientInfo) < 1)
                {
                    Neusoft.FrameWork.Management.PublicTrans.RollBack();

                    if (this.managerIntegrate.DBErrCode == 1)
                    {
                        MessageBox.Show("此人已预约登记!");
                        this.txtCardNo.Focus();
                        this.txtCardNo.SelectAll();
                    }
                    else
                    {
                        MessageBox.Show("预约登记失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    return(-1);
                }

                #region addby xuewj 2010-3-15

                if (this.cmbPreDoc.SelectedIndex >= 0)
                {
                    this.myPatientInfo.PVisit.ReferringDoctor.ID   = this.cmbPreDoc.Tag.ToString();
                    this.myPatientInfo.PVisit.ReferringDoctor.Name = this.cmbPreDoc.Text;

                    this.myPatientInfo.PVisit.AdmittingDoctor.ID = string.Empty;
                }

                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.PreRegInpatient(myPatientInfo);
                }
                #endregion

                //提交
                Neusoft.FrameWork.Management.PublicTrans.Commit();
                MessageBox.Show("预约登记成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                this.Clear();
                this.neuTabControl1.SelectedIndex = 1;
                this.QueryData();

                DialogResult dr = MessageBox.Show("是否打印入院通知单?", "提示", MessageBoxButtons.YesNo);
                if (dr == DialogResult.Yes)
                {
                    if (this.iPrintInHosNotice != null)
                    {
                        this.iPrintInHosNotice.SetValue(this.PatientInfo);
                        this.iPrintInHosNotice.Print();
                    }
                }

                return(0);
            }
            catch
            {
                MessageBox.Show("预约登记失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return(-1);
            }
        }
Ejemplo n.º 8
0
        /// <summary>
        /// 确定方法
        /// </summary>
        /// <returns></returns>
        protected virtual int Confirm()
        {
            if (patientInfoOld == null || patientInfo == null)
            {
                Neusoft.FrameWork.WinForms.Classes.Function.Msg("请输入住院号", 111);
                return(-1);
            }

            //验证有效性,如果有不符合录入,那么中止方法
            if (!this.InputValid())
            {
                return(-1);
            }

            //得到患者基本信息

            if (!this.GetPatientInfomation(this.patientInfo))
            {
                return(-1);
            }

            //创建数据库连接

            Neusoft.FrameWork.Management.PublicTrans.BeginTransaction();
            //Neusoft.FrameWork.Management.Transaction t = new Transaction(this.inpatientManager.Connection);
            ////开始事物

            //t.BeginTransaction();
            this.inpatientManager.SetTrans(Neusoft.FrameWork.Management.PublicTrans.Trans);
            this.radtIntegrate.SetTrans(Neusoft.FrameWork.Management.PublicTrans.Trans);

            //判断患者病床信息,是否已接诊,防止并发
            Neusoft.HISFC.Models.RADT.PatientInfo patientInfoReGet = new PatientInfo();
            patientInfoReGet = this.radtIntegrate.GetPatientInfoByPatientNO(this.patientInfo.ID);
            //如当前患者床位信息为空 且 重新获取患者床位信息不为空 则提示
            //{1C12B07D-82EE-4e27-A0CD-794F8AA58F9E}
            if (string.IsNullOrEmpty(this.patientInfo.PVisit.PatientLocation.Bed.ID) && !string.IsNullOrEmpty(patientInfoReGet.PVisit.PatientLocation.Bed.ID))
            {
                Neusoft.FrameWork.Management.PublicTrans.RollBack();
                Neusoft.FrameWork.WinForms.Classes.Function.Msg("保存失败!" + "患者信息已发生变动,请刷新后再试一次!", 211);
                return(-1);
            }
            #region 判断当前患者状态,避免出现患者已经出院,但此处仍将患者状态置为非出院状态{B5839351-AA33-440d-A801-5CEDFFBE2EFE} modified by xizf 20101221
            Neusoft.HISFC.Models.RADT.PatientInfo tempInfo = new PatientInfo();
            tempInfo = this.radtIntegrate.GetPatientInfomation(this.patientInfo.ID);
            if (tempInfo.PVisit.InState.ID.ToString() == "O")
            {
                MessageBox.Show("对不起,该患者已经出院!");
                return(-1);
            }
            #endregion

            //{1C12B07D-82EE-4e27-A0CD-794F8AA58F9E}
            if (patientInfoReGet.PVisit.PatientLocation.Bed.ID != patientInfo.PVisit.PatientLocation.Bed.ID)
            {
                Neusoft.FrameWork.Management.PublicTrans.RollBack();
                Neusoft.FrameWork.WinForms.Classes.Function.Msg("保存失败!" + "患者信息已发生变动,请刷新后再试一次!", 211);
                return(-1);
            }

            #region addby xuewj 2010-03-10 adt-Patient Update {010BAFC3-96E2-4acc-AAD4-55320B9C2229}

            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.UpdatePatient(this.patientInfo.Clone());
            }

            #endregion

            //更新患者住院信息

            if (this.inpatientManager.UpdatePatient(this.patientInfo) != 1)
            {
                Neusoft.FrameWork.Management.PublicTrans.RollBack();
                Neusoft.FrameWork.WinForms.Classes.Function.Msg("保存失败!" + this.inpatientManager.Err, 211);

                return(-1);
            }

            //更新患者基本信息

            if (this.inpatientManager.UpdatePatientInfo(this.patientInfo) != 1)
            {
                Neusoft.FrameWork.Management.PublicTrans.RollBack();
                Neusoft.FrameWork.WinForms.Classes.Function.Msg("保存失败!" + this.inpatientManager.Err, 211);

                return(-1);
            }
            #region 更新一次性领用标识{524FFE64-7246-40b1-B85E-2903B02A1638} modified by xizf 20101123
            if (this.patientInfo.Insurance.ID == "1")
            {
                local.SetTrans(Neusoft.FrameWork.Management.PublicTrans.Trans);
                if (local.UpdateRecipePerson(this.patientInfo.ID, Neusoft.FrameWork.Management.Connection.Operator.ID) < 0)
                {
                    return(-1);
                }
            }

            #endregion

            #region //{F577FEF5-53D1-4768-B345-F2EBD3E9DF9C}
            //更新费用明细

            int returnValue = this.inpatientManager.ModifyPatientNOForFeeItemList(this.patientInfo.ID, this.patientInfo.Name);

            if (returnValue < 0)
            {
                Neusoft.FrameWork.Management.PublicTrans.RollBack();
                MessageBox.Show("更新非药品信息出错!\n " + this.inpatientManager.Err);
                return(-1);
            }

            //更新药品明细
            returnValue = this.inpatientManager.ModifyPatientNOForMedicineList(this.patientInfo.ID, this.patientInfo.Name);

            if (returnValue < 0)
            {
                Neusoft.FrameWork.Management.PublicTrans.RollBack();
                MessageBox.Show("更新药品信息出错!\n " + this.inpatientManager.Err);
                return(-1);
            }

            //更新处方明细
            returnValue = this.inpatientManager.ModifyPatientNOForFeeInfo(this.patientInfo.ID, this.patientInfo.Name);

            if (returnValue < 0)
            {
                Neusoft.FrameWork.Management.PublicTrans.RollBack();
                MessageBox.Show("更新处方明细出错!\n " + this.inpatientManager.Err);
                return(-1);
            }
            #endregion
            //插入变更信息
            if (this.radtIntegrate.InsertShiftData(this.patientInfo.ID, Neusoft.HISFC.Models.Base.EnumShiftType.F, "患者基本信息修改", patientInfoOld, patientInfo) == -1)
            {
                Neusoft.FrameWork.Management.PublicTrans.RollBack();
                Neusoft.FrameWork.WinForms.Classes.Function.Msg("插入变更信息出错!" + this.inpatientManager.Err, 211);

                return(-1);
            }

            //提交事物
            Neusoft.FrameWork.Management.PublicTrans.Commit();



            Neusoft.FrameWork.WinForms.Classes.Function.Msg("修改成功!", 111);

            //清空控件
            this.Clear();

            return(1);
        }
Ejemplo n.º 9
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);
        }
Ejemplo n.º 10
0
        /// <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);
        }