/// <summary>
        /// 更新医嘱项目
        /// </summary>
        /// <param name="order"></param>
        public void UpdateOrderItem(OrderItem order)
        {
            try
            {
                oleDb.BeginTransaction();
                string strWhere = Tables.base_order_items.ORDER_ID + oleDb.EuqalTo() + order.ORDER_ID;

                Base_Order_Items base_order_item = BindEntity <Base_Order_Items> .CreateInstanceDAL(oleDb).GetModel(strWhere);

                if (base_order_item == null)
                {
                    throw new Exception("无效的医嘱标识!");
                }

                base_order_item.Book_Date     = order.BOOK_DATE;
                base_order_item.Bz            = order.BZ;
                base_order_item.D_Code        = order.D_CODE;
                base_order_item.Default_Usage = order.DEFAULT_USAGE;
                base_order_item.Del_Date      = order.DEL_DATE;
                base_order_item.Delete_Bit    = order.DELETE_BIT;
                base_order_item.Item_Id       = order.ITEM_ID;
                if (order.ORDER_TYPE == 7)   //说明类医嘱不关联收费项目
                {
                    base_order_item.Item_Id = 0;
                }

                if (order.MEDICAL_CLASS != 0)
                {
                    base_order_item.Medical_Class = order.MEDICAL_CLASS;
                }
                else
                {
                    base_order_item.Medical_Class = GetMedicalClass(order.ORDER_TYPE);
                }
                base_order_item.Order_Name = order.ORDER_NAME;
                base_order_item.Order_Type = order.ORDER_TYPE;
                base_order_item.Order_Unit = order.ORDER_UNIT;
                base_order_item.Py_Code    = order.PY_CODE;
                base_order_item.Tc_Flag    = order.TC_FLAG;
                base_order_item.Wb_Code    = order.WB_CODE;
                if (order.TC_FLAG == 1)
                {
                    AddComplexDetail(order);
                }
                BindEntity <Base_Order_Items> .CreateInstanceDAL(oleDb).Update(base_order_item);

                oleDb.CommitTransaction();
            }
            catch (Exception err)
            {
                oleDb.RollbackTransaction();
                ErrorController.Instance().LogEvent(err);
                throw new Exception("保存医嘱项目发生错误!");
            }
        }
        /// <summary>
        /// 检查组合项目明细是否已应用
        /// </summary>
        /// <param name="item"></param>
        /// <returns></returns>
        private bool CheckItem(Base_Order_Items item)
        {
            object obj = null;
            //string strWhere=Tables.base_order_items.ORDER_NAME+oleDb.EuqalTo()+"'"+item.Order_Name+"'" +
            //    oleDb.And()+Tables.base_order_items.ORDER_TYPE+oleDb.EuqalTo()+ item.Order_Type+
            //        oleDb.And()+Tables.base_order_items.ITEM_ID+oleDb.EuqalTo()+item.Item_Id;
            string strWhere = Tables.base_order_items.ITEM_ID + oleDb.EuqalTo() + item.Item_Id;

            obj = BindEntity <Base_Order_Items> .CreateInstanceDAL(oleDb).GetModel(strWhere);

            if (obj == null)
            {
                return(false);
            }
            else
            {
                return(true);
            }
        }
        /// <summary>
        /// 移除本院医疗服务项目前的引用检查
        /// </summary>
        /// <param name="Item"></param>
        /// <param name="message"></param>
        public bool CheckServiceItemReferencedBeforeRemove(ServiceItem Item, out string message)
        {
            string strWhere = "";

            //1、检查是否被组合项目引用
            strWhere = Tables.base_complex_detail.SERVICE_ITEM_ID + oleDb.EuqalTo() + Item.ITEM_ID;
            BASE_COMPLEX_DETAIL base_complex_detail = BindEntity <BASE_COMPLEX_DETAIL> .CreateInstanceDAL(oleDb).GetModel(strWhere);

            if (base_complex_detail != null)
            {
                strWhere = Tables.base_complex_item.COMPLEX_ID + oleDb.EuqalTo() + base_complex_detail.COMPLEX_ID;
                BASE_COMPLEX_ITEM base_complex_item = BindEntity <BASE_COMPLEX_ITEM> .CreateInstanceDAL(oleDb).GetModel(strWhere);

                message = "【" + Item.ITEM_NAME + "】正在被组合项目【" + base_complex_item.COMPLEX_NAME + "】所引用";
                return(false);
            }
            //2、检查是否被医嘱项目引用
            strWhere = Tables.base_order_items.ITEM_ID + oleDb.EuqalTo() + Item.ITEM_ID + oleDb.And() + Tables.base_order_items.TC_FLAG + oleDb.EuqalTo() + "0";
            Base_Order_Items base_order_item = BindEntity <Base_Order_Items> .CreateInstanceDAL(oleDb).GetModel(strWhere);

            if (base_order_item != null)
            {
                message = "【" + Item.ITEM_NAME + "】正在被医嘱项目【" + base_order_item.Order_Name + "】所引用";
                return(false);
            }
            //3、检查是否被用法引用
            strWhere = "HSITEM_ID = " + Item.ITEM_ID;
            DataTable tb = BindEntity <object> .CreateInstanceDAL(oleDb, "BASE_USEAGE_FEE").GetList(strWhere);

            if (tb.Rows.Count > 0)
            {
                message = "【" + Item.ITEM_NAME + "】正在被用法【" + tb.Rows[0]["USE_NAME"].ToString().Trim() + "】联动";
                return(false);
            }
            message = null;
            return(true);
        }
        // * 20100604.2.03 组合项目应用到医嘱项目时,组合项目明细也自动应用。
        /// <summary>
        /// 如果是组合项目,自动把组合项目明细应用到医嘱项目。医嘱类型和医技类型和组合项目一样,如果已经存在,则不修改,
        /// </summary>
        /// <param name="order"></param>
        private void AddComplexDetail(OrderItem order)
        {
            string strWhere = Tables.base_complex_detail.COMPLEX_ID + oleDb.EuqalTo() + order.ITEM_ID;
            List <Model.BASE_COMPLEX_DETAIL> details = BindEntity <Model.BASE_COMPLEX_DETAIL> .CreateInstanceDAL(oleDb).GetListArray(strWhere);

            try
            {
                foreach (Model.BASE_COMPLEX_DETAIL detail in details)
                {
                    Base_Order_Items item = new Base_Order_Items();

                    item.Book_Date     = order.BOOK_DATE;
                    item.Bz            = order.BZ;
                    item.Default_Usage = order.DEFAULT_USAGE;
                    item.Medical_Class = order.MEDICAL_CLASS;
                    item.Order_Type    = order.ORDER_TYPE;
                    Model.BASE_SERVICE_ITEMS seveice = BindEntity <Model.BASE_SERVICE_ITEMS> .CreateInstanceDAL(oleDb).GetModel(Tables.base_service_items.ITEM_ID + oleDb.EuqalTo() + detail.SERVICE_ITEM_ID);

                    item.Item_Id    = seveice.ITEM_ID;
                    item.Order_Name = seveice.ITEM_NAME;
                    item.Order_Unit = seveice.ITEM_UNIT;
                    item.Py_Code    = seveice.PY_CODE;
                    item.Wb_Code    = seveice.WB_CODE;
                    item.Tc_Flag    = 0;
                    if (CheckItem(item))
                    {
                        continue;
                    }
                    BindEntity <Base_Order_Items> .CreateInstanceDAL(oleDb).Add(item);
                }
            }
            catch (Exception err)
            {
                throw new Exception("新增医嘱组合项目明细发生错误!");
            }
        }