private void btnMaintence_Click(object sender, EventArgs e)
        {
            if (Status == 77)
            {
                XtraMessageBox.Show("目前状态已经是维护状态.");
                return;
            }

            if (XtraMessageBox.Show("是否将状态修改为[维护] ?", "操作确认", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
            {

                if ( Status != 76 || ( Status == 76 && XtraMessageBox.Show("该设备在该时段已被预定, 确实要将状态置为 [维护] 吗 ?", "操作确认", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes))
                {
                    try
                    {
                        if (ScheduleID == 0)
                        {
                            MACHINE_SCHEDULE ms = new MACHINE_SCHEDULE();
                            ms.SCHEDULE_TIME = _dt;
                            ms.FLOOR_ID = _floorId;
                            ms.AREA_ID = _areaId;
                            ms.SCHEEDULE_PERIOD = _peroid;
                            ms.BED_NO = No;
                            ms.MACHINE_INFO_ID = _info_ID;
                            ms.MACHINE_STATUS = 77;
                            ms.Insert();

                            ScheduleID = db.ExecuteScalar<decimal>("select ID from MACHINE_SCHEDULE where floor_id = @0 and area_id = @1 and SCHEDULE_TIME = @2 and SCHEEDULE_PERIOD = @3 and BED_NO = @4 ",
                                new object[] { _floorId, _areaId, _dt, _peroid, No });
                        }
                        else
                            db.Execute("update MACHINE_SCHEDULE set  MACHINE_STATUS = 77 where ID = @0", new object[] { ScheduleID });
                        Status = 77;
                    }
                    catch (Exception err)
                    {
                        XtraMessageBox.Show("未知异常: " + err.Message);
                    }
                }
            }
        }
        // 患者预约
        private void searchLookUpEdit1_EditValueChanged(object sender, EventArgs e)
        {
            if (XtraMessageBox.Show("是否保存新的预约信息.", "操作确认", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
            {
                DateTime dt = DateTime.Now;
                if (searchLookUpEdit1.EditValue != null)
                {
                    var o = db.FirstOrDefault<MACHINE_SCHEDULE>("where SCHEDULE_TIME = @0 and pt_id = @1", new object[] { _dt, Convert.ToDecimal(searchLookUpEdit1.EditValue) });
                    if (o != null)
                    {
                        XtraMessageBox.Show("该患者在 " + dt.ToString("yyyy-MM-dd") + string.Format(" 已预定了床位 . 楼层ID: {0}, 区域ID: {1}, 床位号: {2}, 患者ID: {3}", o.FLOOR_ID, o.AREA_ID, o.BED_NO, o.PT_ID), "错误提示");
                        searchLookUpEdit1.EditValueChanged -= searchLookUpEdit1_EditValueChanged;
                        searchLookUpEdit1.EditValue = null;
                        searchLookUpEdit1.EditValueChanged += searchLookUpEdit1_EditValueChanged;
                        return;
                    }
                }

                //Int64 regId = -1;
                MACHINE_SCHEDULE ms = new MACHINE_SCHEDULE();

                if (searchLookUpEdit1View.GetFocusedRow() != null)
                {
                    object o1 = searchLookUpEdit1View.GetFocusedRow();
                    //ms.REG_ID = (Int64)((PATIENT_REGIST)o1).ID;
                    //ms.PT_ID = (Int64)((PATIENT_BASEINFO)o1).ID;
                }

                ms.SCHEDULE_TIME = _dt;
                ms.FLOOR_ID = _floorId;
                ms.AREA_ID = _areaId;
                ms.SCHEEDULE_PERIOD = _peroid;
                ms.RESERVATION = dt;
                ms.MACHINE_INFO_ID = _info_ID;
                ms.BED_NO = No;
                Status = 76;
                ms.MACHINE_STATUS = 76;

                if (searchLookUpEdit1.EditValue != null)
                    ms.PT_ID = Convert.ToDecimal(searchLookUpEdit1.EditValue);
                else
                {
                    ms.PT_ID = null;
                    Status = 74;
                    ms.MACHINE_STATUS = 74;
                    ms.RESERVATION = new DateTime();
                }

                if (ScheduleID == 0)
                {

                    ScheduleID = Convert.ToDecimal(ms.Insert());
                    //ScheduleID = db.ExecuteScalar<decimal>("select ID from MACHINE_SCHEDULE where floor_id = @0 and area_id = @1 and SCHEDULE_TIME = @2 and SCHEEDULE_PERIOD = @3 and MACHINE_NO = @4 ",
                    //    new object[] { _floorId, _areaId, _dt, _peroid, No });
                }
                else
                {
                    ms.ID = ScheduleID;
                    ms.Update();
                }

                if (searchLookUpEdit1.EditValue != null && searchLookUpEdit1.EditValue.ToString() != "")
                    PtNo = Convert.ToDecimal(searchLookUpEdit1.EditValue);
                else
                    PtNo = null;
                lblResevTm.Text = dt.ToString("MM-dd HH:mm");

                if (ChangeEvt != null)
                {
                    ChangeEvt(_dt, _peroid, _floorId, _areaId, searchLookUpEdit1.EditValue, Status);
                }

            }
            else
            {
                searchLookUpEdit1.EditValueChanged -= searchLookUpEdit1_EditValueChanged;
                searchLookUpEdit1.EditValue = null;
                searchLookUpEdit1.EditValueChanged += searchLookUpEdit1_EditValueChanged;
            }
        }
        public FrmNewBloodCleanBase(Int64 base_id, Int64 reg_id, Int64 machineCheckID, decimal pt_path_type)
        {
            InitializeComponent();

            //string sPwd = Des.Decrypt(ClsFrmMng.KEY, ConfigurationManager.AppSettings["DbPwd"]);
            db = new Database("XE");

            _regID = reg_id;
            _baseID = base_id;

            blookCaeanup.REG_ID = _regID;
            blookCaeanup.BASE_INFO_ID = _baseID;
            blookCaeanup.OPERATOR = ClsFrmMng.WorkerID;
            blookCaeanup.ANA_DATE = DateTime.Now;

            // 查询该患者所签到的透析机机位, 透析机型号
            ms = db.SingleOrDefault<MACHINE_SCHEDULE>(machineCheckID);
            string sFloor = db.ExecuteScalar<string>("select DSP_MEMBER from VALUE_CODE where VALUE_MEMBER = @0", ms.FLOOR_ID);
            string sArea = db.ExecuteScalar<string>("select DSP_MEMBER from VALUE_CODE where VALUE_MEMBER = @0", ms.AREA_ID);
            blookCaeanup.MACH_POS = sFloor + " " +  sArea + " " + ms.BED_NO + "#";

            MACHINE_INFO info = db.SingleOrDefault<MACHINE_INFO>(ms.MACHINE_INFO_ID);
            if (info != null && info.MODEL != null)
                blookCaeanup.MACH_TYP = info.MODEL.ToString();

            // 血管通路类型
            blookCaeanup.FISTULA_TYPE = pt_path_type;
            if (pt_path_type == 519 || pt_path_type == 520)
            {
                ItemForAPPLICATOR.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
                ItemForAPPLICATOR_NUM.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
                ItemForHEPARIN_CAP.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
                ItemForHEPARIN_CAP_NUM.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;

                // 获取该患者最近一次, 当通路类型与目前匹配时使用的耗材型号与数据
                BLOODCLEANUP bc1 = db.SingleOrDefault<BLOODCLEANUP>("where FISTULA_TYPE = @0 and BASE_INFO_ID = @1 AND  rownum = 1 order by ID DESC", new object[] { pt_path_type, base_id });
                if (bc1 != null)
                {
                    blookCaeanup.FISTULA_NEEDLE = bc1.FISTULA_NEEDLE;
                    blookCaeanup.FISTULA_NEEDLE_NUM = bc1.FISTULA_NEEDLE_NUM;
                    blookCaeanup.FISTULA_CARE_PACKAGES = bc1.FISTULA_CARE_PACKAGES;
                    blookCaeanup.FISTULA_CARE_PACKAGES_NUM = bc1.FISTULA_CARE_PACKAGES_NUM;
                }
            }
            else if (pt_path_type == 704 || pt_path_type == 705)
            {
                ItemForFISTULA_NEEDLE.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
                ItemForFISTULA_NEEDLE_NUM.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
                ItemForFISTULA_CARE_PACKAGES.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
                ItemForFISTULA_CARE_PACKAGES_NUM.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;

                // 获取该患者最近一次, 当通路类型与目前匹配时使用的耗材型号与数据
                BLOODCLEANUP bc1 = db.SingleOrDefault<BLOODCLEANUP>("where FISTULA_TYPE = @0 and BASE_INFO_ID = @1 AND  rownum = 1 order by ID DESC", new object[] { pt_path_type, base_id });
                if (bc1 != null)
                {
                    blookCaeanup.APPLICATOR = bc1.APPLICATOR;
                    blookCaeanup.APPLICATOR_NUM = bc1.APPLICATOR_NUM;
                    blookCaeanup.HEPARIN_CAP = bc1.HEPARIN_CAP;
                    blookCaeanup.HEPARIN_CAP_NUM = bc1.HEPARIN_CAP_NUM;
                }
            }

            // 查询该患者上一次血液净信息
            BLOODCLEANUP bc = db.SingleOrDefault<BLOODCLEANUP>("where BASE_INFO_ID = @0 AND  rownum = 1 order by ID DESC", base_id);
            if (bc != null)
            {
                blookCaeanup.WEIGHT = bc.WEIGHT;
                blookCaeanup.MACH = bc.MACH;                        // 透析器
                blookCaeanup.PIPELINE = bc.PIPELINE;                // 管路
            }

            // 查询该患者医嘱(长期及临时医嘱)中的药品
            List<DOC_ADVICE> lstAdv = db.Fetch<DOC_ADVICE>("where BASE_INFO_ID = @0 and (ADVICE_TYPE = 0 or ADVICE_TYPE = 9)  AND IS_DEL = 0 order by log_time desc", base_id);
            string sDose = string.Empty;
            for (int i = 0; i < lstAdv.Count; i++)
            {
                sDose += db.ExecuteScalar<string>("select DSP_MEMBER from VALUE_CODE where VALUE_MEMBER = @0", lstAdv[i].M_NAME) +", ";
            }

            lstAdv = db.Fetch<DOC_ADVICE>("where reg_id = @0 and ADVICE_TYPE = 1 AND IS_DEL = 0 order by log_time desc", reg_id);
            for (int i = 0; i < lstAdv.Count; i++)
            {
                sDose += db.ExecuteScalar<string>("select DSP_MEMBER from VALUE_CODE where VALUE_MEMBER = @0", lstAdv[i].M_NAME) + ", ";
            }
            sDose = sDose.TrimEnd(new char[] { ',', ' ' });
            blookCaeanup.EPO = sDose;

            bLOODCLEANUPBindingSource.DataSource = blookCaeanup;

            //EPOTextEdit.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard;
            EPOTextEdit.Properties.DataSource = db.Fetch<VALUE_CODE>("");
            EPOTextEdit.Properties.DisplayMember = "DSP_MEMBER";
            EPOTextEdit.Properties.ValueMember = "VALUE_MEMBER";

            MACH_TYPTextEdit.Properties.DataSource = db.Fetch<VALUE_CODE>("where GROUPNAME = @0 or GROUPNAME = @1", new object[] { 3, 162 });
            MACH_TYPTextEdit.Properties.DisplayMember = "DSP_MEMBER";
            MACH_TYPTextEdit.Properties.ValueMember = "VALUE_MEMBER";

            vALUECODEBindingSource.DataSource = db.Fetch<VALUE_CODE>("where GROUPNAME = @0", 101);
            vALUECODEBindingSource1.DataSource = db.Fetch<VALUE_CODE>("where GROUPNAME = @0", 44);
            vALUECODEBindingSource2.DataSource = db.Fetch<VALUE_CODE>("where GROUPNAME = @0", 102);
            vALUECODEBindingSource3.DataSource = db.Fetch<VALUE_CODE>("where GROUPNAME = @0", 161);
            aCCOUNTBindingSource.DataSource = db.Fetch<ACCOUNT>("");

            bindingSource1.DataSource = db.Fetch<VALUE_CODE>("where GROUPNAME = @0", 193);              // 通路类型
            bindingSource2.DataSource = db.Fetch<VALUE_CODE>("where GROUPNAME = @0", 47);               // 管路
            bindingSource3.DataSource = db.Fetch<VALUE_CODE>("where GROUPNAME = @0", 43);               // 穿刺针
            bindingSource4.DataSource = db.Fetch<VALUE_CODE>("where GROUPNAME = @0", 171);              // 敷贴
            bindingSource5.DataSource = db.Fetch<VALUE_CODE>("where GROUPNAME = @0", 166);              // 护理包
            bindingSource6.DataSource = db.Fetch<VALUE_CODE>("where GROUPNAME = @0", 169);              // 肝素帽
        }