Select() public method

public Select ( DataTable table, string filterExpression, string sort, DataViewRowState recordStates ) : System.Collections.Generic
table DataTable
filterExpression string
sort string
recordStates DataViewRowState
return System.Collections.Generic
示例#1
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void grdTestGroup_SelectionChanged(object sender, EventArgs e)
        {
            grdTestData.UnCheckAllRecords();
            if (grdTestGroup.CurrentRow != null)
            {
                string rowFilter = "TestType_ID = " + Utility.sDbnull(grdTestGroup.GetValue("TestType_ID"), "-1");
                dtTestDataList.DefaultView.RowFilter = rowFilter;

                dtTestGroupDetail = new Select().From(TTestgroupDtl.Schema.Name).
                    Where(TTestgroupDtl.Columns.TestGroupId).IsEqualTo(Utility.Int32Dbnull(grdTestGroup.GetValue("TestGroup_ID"))).
                    ExecuteDataSet().Tables[0];
                foreach (GridEXRow exRow in grdTestData.GetRows())
                {
                    if (dtTestGroupDetail.Select(string.Format("TestGroup_ID = {0} And TestData_ID = '{1}'",
                        Utility.Int32Dbnull(grdTestGroup.GetValue("TestGroup_ID")),
                        Utility.sDbnull(exRow.Cells["TestData_ID"].Value))).Length > 0)
                    {
                        exRow.CheckState = RowCheckState.Checked;
                    }
                }
            }
            else
            {
                dtTestDataList.DefaultView.RowFilter = "1=2";
                dtTestDataList.AcceptChanges();
            }
        }
示例#2
0
        private void LaySoLoImportExcel()
        {
            try
            {
                int iLo = 0;
                DataTable dtLo = new Select()
                    .From(TPatientInfo.Schema).ExecuteDataSet().Tables[0];
                iLo = Utility.Int32Dbnull(dtLo.Select().Max(e => Utility.Int32Dbnull(e[TPatientInfo.Columns.SoLo])), 0);
                if (dtLo.Rows.Count > 0)
                {
                    iLo = iLo + 1;
                    txtLo.Text = iLo.ToString();
                }
                else
                {
                    iLo = 0;
                    txtLo.Text = iLo.ToString();
                }

            }
            catch (Exception ex)
            {
                txtLo.Text = "";
            }
        }
示例#3
0
        /// <summary>
        /// Tìm kiếm Mã Lần khám
        /// </summary>
        /// <param name="Patient_Code"></param>
        private void FindPatientCode(string Patient_Code)
        {
            var dtPatient = new DataTable();
            dtPatient =
                new Select(TPatientInfo.Columns.PatientId, TPatientExam.Columns.PatientCode,
                           TPatientInfo.Columns.PatientName, TPatientInfo.Columns.PatientAddr)
                    .From(TPatientExam.Schema)
                    .InnerJoin(TPatientInfo.PatientIdColumn, TPatientExam.PatientIdColumn)
                    .InnerJoin(TPatientDept.PatientCodeColumn, TPatientExam.PatientCodeColumn)
                    .Where(TPatientExam.Columns.PatientCode).ContainsString(
                        Patient_Code).And(TPatientDept.Columns.NoiTru).IsEqualTo(1).ExecuteDataSet().Tables[0];

            string PatientCodeFilter = globalVariables.SysDate.Year.ToString().Substring(2, 2) +
                                       Patient_Code.PadLeft(6, '0');
            DataRow[] arrPatients = dtPatient.Select("Patient_Code='" + PatientCodeFilter + "'");

            if (arrPatients.GetLength(0) <= 0)
            {
                // lọc được nhiều mã lần khám - Nhiều hơn 1 hàng
                if (dtPatient.Rows.Count > 1)
                {
                    var frm = new frm_DSACH_BN();

                    frm.PatientCode = txtMaLanKham.Text;
                    frm.dtPatient = dtPatient;
                    frm.ShowDialog();
                    if (!frm.has_Cancel)
                    {
                        txtMaLanKham.Text = frm.PatientCode;
                        txtMaBN.Text = frm.PatientId;
                        Lan_Vao_Vien_Thu = frm.Lan_Vao_Vien_Thu;
                    }
                }
            }
                //Nếu chỉ lọc được 1 mã bệnh nhân
            else
            {
                txtMaLanKham.Text = PatientCodeFilter;
                txtMaBN.Text = arrPatients[0][0].ToString();
            }
        }
        /// <summary>
        /// Lấy toàn bộ dữ liệu CLS giống phần chỉ định CLS sau đó tính giá dựa trên dữ liệu lấy được đó. Thay vì select lại từ các bảng quan hệ
        /// </summary>
        /// <param name="objLuotkham"></param>
        /// <returns></returns>
        private static ActionResult CapnhatChiphiCLS(KcbLuotkham objLuotkham, KcbLuotkham objLuotkhamCu)
        {
            using (var Scope = new TransactionScope())
            {
                DataTable m_dtServiceDetail = new KCB_CHIDINH_CANLAMSANG().LaydanhsachCLS_chidinh(objLuotkham.MaDoituongKcb, objLuotkham.TrangthaiNoitru, Utility.ByteDbnull(objLuotkham.GiayBhyt, 0), -1, Utility.Int32Dbnull(objLuotkham.DungTuyen.Value, 0), objLuotkham.MaKhoaThuchien, "-GOI,-TIEN");//Ko lấy dữ liệu liên quan đến gói dịch vụ+tiền phí phụ thêm

                KcbChidinhclCollection lstChidinh=
                    new Select()
                    .From(KcbChidinhcl.Schema)
                    .Where(KcbChidinhcl.Columns.MaLuotkham).IsEqualTo(objLuotkham.MaLuotkham)
                    .And(KcbChidinhcl.Columns.IdBenhnhan).IsEqualTo(objLuotkham.IdBenhnhan)
                    .ExecuteAsCollection<KcbChidinhclCollection>();
                List<long> lstID = lstChidinh.Select(c => c.IdChidinh).Distinct().ToList<long>();
                if (lstID.Count <= 0)
                {
                    Scope.Complete();
                    return ActionResult.Success;
                }
                KcbChidinhclsChitietCollection lstChitiet = new Select().From(KcbChidinhclsChitiet.Schema)
                    .Where(KcbChidinhclsChitiet.Columns.IdChidinh).In(lstID)
                .ExecuteAsCollection<KcbChidinhclsChitietCollection>();
                if (lstChitiet.Count > 0)
                {
                    //Kiểm tra nếu đối tượng ngoại trú đã có dịch vụ thanh toán-->Ko cho phép chuyển nữa
                    if (Utility.ByteDbnull(objLuotkham.TrangthaiNoitru,0)<=0 && lstChitiet.Where(c => c.TrangthaiThanhtoan > 0).Any())
                    {
                        Scope.Complete();
                        return ActionResult.Cancel;
                    }
                    bool saveParent = false;
                    foreach (KcbChidinhcl objChidinh in lstChidinh)
                    {

                            objChidinh.IdLichsuDoituongKcb = objLuotkham.IdLichsuDoituongKcb;
                            objChidinh.MatheBhyt = objLuotkham.MatheBhyt;
                            objChidinh.MaDoituongKcb = objLuotkham.MaDoituongKcb;
                            objChidinh.IdLoaidoituongKcb = objLuotkham.IdLoaidoituongKcb;
                            objChidinh.IdDoituongKcb = objLuotkham.IdDoituongKcb;
                            foreach (KcbChidinhclsChitiet objChidinhChitiet in lstChitiet.Where(c => c.IdChidinh.Equals(objChidinh.IdChidinh)))
                            {
                                if (Utility.Int32Dbnull(objChidinhChitiet.IdGoi, -1) <=0)
                                {
                                    objChidinhChitiet.IdDoituongKcb = objLuotkham.IdDoituongKcb;
                                    if (objChidinhChitiet.TrangthaiThanhtoan == 0)//Chưa thanh toán
                                    {
                                        saveParent = true;
                                        objChidinhChitiet.MadoituongGia = objLuotkham.MaDoituongKcb;
                                        objChidinhChitiet.PtramBhyt = objLuotkham.PtramBhyt;
                                        objChidinhChitiet.PtramBhytGoc = objLuotkham.PtramBhytGoc;
                                        DataRow[] arrDr = m_dtServiceDetail.Select(KcbChidinhclsChitiet.Columns.IdChitietdichvu + "=" + Utility.Int32Dbnull(objChidinhChitiet.IdChitietdichvu, -1));
                                        if (arrDr.Length > 0)
                                        {

                                            objChidinhChitiet.PtramBhyt = objLuotkham.PtramBhyt;
                                            objChidinhChitiet.DonGia = Utility.DecimaltoDbnull(arrDr[0][KcbChidinhclsChitiet.Columns.DonGia], 0);
                                            objChidinhChitiet.GiaDanhmuc = Utility.DecimaltoDbnull(arrDr[0][KcbChidinhclsChitiet.Columns.DonGia], 0);
                                            objChidinhChitiet.TuTuc = Utility.ByteDbnull(arrDr[0][KcbChidinhclsChitiet.Columns.TuTuc], 0);
                                            objChidinhChitiet.PhuThu = Utility.DecimaltoDbnull(arrDr[0][KcbChidinhclsChitiet.Columns.PhuThu], 0);
                                            objChidinhChitiet.NguoiSua = globalVariables.UserName;
                                            objChidinhChitiet.NgaySua = DateTime.Now;
                                            TinhCLS.GB_TinhPhtramBHYT(objChidinhChitiet, objLuotkham, Utility.Byte2Bool(objChidinh.Noitru), Utility.DecimaltoDbnull(objLuotkham.PtramBhyt));

                                        }
                                        else//Rất khó nhảy vào nhánh này trừ phi lỗi dữ liệu đặc biệt nào đó
                                        {
                                            CLS_GIATHEO_KHOAKCB = THU_VIEN_CHUNG.Laygiatrithamsohethong("CLS_GIATHEO_KHOAKCB", "0", true) == "1";
                                            QheDoituongDichvucl _Items = THU_VIEN_CHUNG.LayQheDoituongCLS(objLuotkham.MaDoituongKcb, objChidinhChitiet.IdChitietdichvu, objLuotkham.MaKhoaThuchien, CLS_GIATHEO_KHOAKCB);
                                            if (_Items != null)
                                            {
                                                objChidinhChitiet.DonGia = Utility.DecimaltoDbnull(_Items.DonGia);
                                                objChidinhChitiet.PhuThu = (Utility.isTrue(objLuotkham.DungTuyen) ? Utility.DecimaltoDbnull(_Items.PhuthuDungtuyen) : Utility.DecimaltoDbnull(_Items.PhuthuTraituyen));
                                                objChidinhChitiet.TuTuc = 0;
                                                objChidinhChitiet.IdDoituongKcb = objLuotkham.IdDoituongKcb;
                                                objChidinhChitiet.PtramBhyt = objLuotkham.PtramBhyt;
                                            }
                                            else
                                            {
                                                _Items = THU_VIEN_CHUNG.LayQheDoituongCLS("DV", objChidinhChitiet.IdChitietdichvu, objLuotkham.MaKhoaThuchien, CLS_GIATHEO_KHOAKCB);
                                                if (_Items != null)
                                                {
                                                    objChidinhChitiet.MadoituongGia = "DV";
                                                    objChidinhChitiet.DonGia = Utility.DecimaltoDbnull(_Items.DonGia);
                                                    objChidinhChitiet.PhuThu = (Utility.isTrue(objLuotkham.DungTuyen) ? Utility.DecimaltoDbnull(_Items.PhuthuDungtuyen) : Utility.DecimaltoDbnull(_Items.PhuthuTraituyen));
                                                    objChidinhChitiet.TuTuc = 1;
                                                    objChidinhChitiet.IdDoituongKcb = objLuotkham.IdDoituongKcb;
                                                    objChidinhChitiet.PtramBhyt = 0;
                                                }
                                            }
                                            DmucDichvuclsChitiet _DmucDichvuclsChitiet = DmucDichvuclsChitiet.FetchByID(objChidinhChitiet.IdChitietdichvu);
                                            if (_DmucDichvuclsChitiet != null && Utility.Int32Dbnull(_DmucDichvuclsChitiet.TuTuc, 0) == 1)
                                                objChidinhChitiet.TuTuc = 1;//Ke ca co trong bang quan he
                                            if (objLuotkham.IdLoaidoituongKcb == 1)//Đối tượng dịch vụ-->ko cần phải đánh dấu tự túc
                                            {
                                                objChidinhChitiet.TuTuc = 0;
                                                objChidinhChitiet.PhuThu = 0;
                                            }
                                            objChidinhChitiet.NguoiSua = globalVariables.UserName;
                                            objChidinhChitiet.NgaySua = DateTime.Now;
                                            decimal PtramBHYT = Utility.DecimaltoDbnull(objLuotkham.PtramBhyt);
                                            TinhCLS.GB_TinhPhtramBHYT(objChidinhChitiet, objLuotkham, Utility.Byte2Bool(objChidinh.Noitru), PtramBHYT);
                                        }

                                    }
                                    else
                                    {
                                        //nếu đã thanh toán thì chỉ xử lý khi đối tượng đang ở trạng thái nội trú.
                                        if (Utility.ByteDbnull(objLuotkham.TrangthaiNoitru,0) > 0)
                                        {
                                            saveParent = true;
                                            if (THU_VIEN_CHUNG.IsBaoHiem(objLuotkham.IdLoaidoituongKcb))
                                            {
                                                //Đối tượng mới là BHYT thì kiểm tra đổi các dịch vụ có giá DV về tự túc.
                                                //Các dịch vụ có giá khác DV thì để nguyên(để nếu đối tượng cũ là BHYT thì ko bị thay đổi giá trị tự túc)
                                                if (objChidinhChitiet.MadoituongGia == "DV")
                                                    objChidinhChitiet.TuTuc = 1;
                                            }
                                            else//Nếu đối tượng từ BHYT chuyển sang dịch vụ thì chuyển thành ko tự túc hết
                                            {
                                                if (objLuotkham.MaDoituongKcb != objLuotkhamCu.MaDoituongKcb)//Mới=DV, Cũ=BHYT. Còn lại ko làm gì cả
                                                    objChidinhChitiet.TuTuc = 0;
                                            }
                                        }
                                        else
                                            continue;
                                    }
                                    objChidinhChitiet.Save();
                                    saveParent = true;
                                }
                            }
                            if (saveParent)
                            {
                                objChidinh.Save();
                                saveParent = false;
                            }

                    }
                }
                Scope.Complete();
                return ActionResult.Success;
            }
        }
        public static ActionResult CapnhatLichsuDoituongKCB(List<KcbLichsuDoituongKcb> lstLichsu,List<long> lstDelete)
        {
            try
            {
                ActionResult _ActionResult = ActionResult.Success;

                using (var Scope = new TransactionScope())
                {
                    using (var dbScope = new SharedDbConnectionScope())
                    {
                        KcbLichsuDoituongKcb _item=lstLichsu[0];

                        List<long> lstID = new List<long>();
                        KcbDangkyKcbCollection lstDangkyKCB = new Select().From(KcbDangkyKcb.Schema)
                            .Where(KcbDangkyKcb.Columns.IdBenhnhan).IsEqualTo(_item.IdBenhnhan)
                            .And(KcbDangkyKcb.Columns.MaLuotkham).IsEqualTo(_item.MaLuotkham)
                            .ExecuteAsCollection<KcbDangkyKcbCollection>();

                        NoitruPhanbuonggiuongCollection lstbuonggiuong=new Select().From(NoitruPhanbuonggiuong.Schema)
                            .Where(NoitruPhanbuonggiuong.Columns.IdBenhnhan).IsEqualTo(_item.IdBenhnhan)
                            .And(NoitruPhanbuonggiuong.Columns.MaLuotkham).IsEqualTo(_item.MaLuotkham)
                            .ExecuteAsCollection<NoitruPhanbuonggiuongCollection>();

                        KcbDonthuocCollection lstDonthuoc = new Select().From(KcbDonthuoc.Schema)
                            .Where(KcbDonthuoc.Columns.IdBenhnhan).IsEqualTo(_item.IdBenhnhan)
                            .And(KcbDonthuoc.Columns.MaLuotkham).IsEqualTo(_item.MaLuotkham)
                            .ExecuteAsCollection<KcbDonthuocCollection>();
                        lstID = lstDonthuoc.Select(c => c.IdDonthuoc).ToList<long>();
                        KcbDonthuocChitietCollection lstDonthuocChitiet = new KcbDonthuocChitietCollection();
                        if (lstID.Count > 0)
                            lstDonthuocChitiet = new Select().From(KcbDonthuocChitiet.Schema)
                                 .Where(KcbDonthuocChitiet.Columns.IdDonthuoc).In(lstID)
                                 .ExecuteAsCollection<KcbDonthuocChitietCollection>();

                        KcbChidinhclCollection lstChidinh = new Select().From(KcbChidinhcl.Schema)
                            .Where(KcbChidinhcl.Columns.IdBenhnhan).IsEqualTo(_item.IdBenhnhan)
                            .And(KcbChidinhcl.Columns.MaLuotkham).IsEqualTo(_item.MaLuotkham)
                            .ExecuteAsCollection<KcbChidinhclCollection>();
                        lstID = lstChidinh.Select(c => c.IdChidinh).ToList<long>();

                        KcbChidinhclsChitietCollection lstChidinhChitiet = new KcbChidinhclsChitietCollection();
                        if (lstID.Count > 0)
                            lstChidinhChitiet = new Select().From(KcbChidinhclsChitiet.Schema)
                           .Where(KcbChidinhclsChitiet.Columns.IdChidinh).In(lstID)
                           .ExecuteAsCollection<KcbChidinhclsChitietCollection>();
                        if (lstDelete.Count > 0)
                            new Delete().From(KcbLichsuDoituongKcb.Schema).Where(KcbLichsuDoituongKcb.Columns.IdLichsuDoituongKcb).In(lstDelete).Execute();
                        foreach (KcbLichsuDoituongKcb objLichsu in lstLichsu)
                        {

                            //Gán thông tin nội trú
                            if (objLichsu.TrangthaiNoitru > 0)
                            {
                                var q = from p in lstbuonggiuong
                                        where Utility.Int32Dbnull(Utility.GetYYYYMMDD(p.NgayVaokhoa), 0) >= Utility.Int32Dbnull(Utility.GetYYYYMMDD(objLichsu.NgayHieuluc), 0)
                                        select p;
                                if (q.Any())
                                {
                                    objLichsu.IdKhoanoitru = q.FirstOrDefault().IdKhoanoitru;
                                    objLichsu.IdBuong = q.FirstOrDefault().IdBuong;
                                    objLichsu.IdGiuong = q.FirstOrDefault().IdGiuong;
                                    objLichsu.IdRavien = q.FirstOrDefault().IdKhoanoitru;

                                }
                            }
                            objLichsu.Save();
                           _ActionResult= CapnhatChiphiKCB(objLichsu, lstDangkyKCB.ToList<KcbDangkyKcb>());
                            if (_ActionResult == ActionResult.Cancel)
                                return _ActionResult;
                            List<KcbChidinhcl> _chidinhCLS = (from p in lstChidinh
                                                              where Utility.Int32Dbnull(Utility.GetYYYYMMDD(p.NgayChidinh), 0) >= Utility.Int32Dbnull(Utility.GetYYYYMMDD(objLichsu.NgayHieuluc), 0)
                                                              && Utility.Int32Dbnull(Utility.GetYYYYMMDD(p.NgayChidinh), 0) <= Utility.Int32Dbnull(Utility.GetYYYYMMDD(objLichsu.NgayHethieuluc,new DateTime(2099,1,1)), 0)
                                                              select p).ToList<KcbChidinhcl>();
                            lstID = _chidinhCLS.Select(c => c.IdChidinh).ToList<long>();

                            List<KcbChidinhclsChitiet> _chidinhCLsChitiet = (from p in lstChidinhChitiet
                                                                             where lstID.Contains(p.IdChidinh)
                                                                             select p).ToList<KcbChidinhclsChitiet>();

                          _ActionResult=  CapnhatChiphiCLS(objLichsu, _chidinhCLS, _chidinhCLsChitiet);
                            if (_ActionResult == ActionResult.Cancel)
                                return _ActionResult;
                            List<KcbDonthuoc> _donthuoc = (from p in lstDonthuoc
                                                           where Utility.Int32Dbnull(Utility.GetYYYYMMDD(p.NgayKedon), 0) >= Utility.Int32Dbnull(Utility.GetYYYYMMDD(objLichsu.NgayHieuluc), 0)
                                                             && Utility.Int32Dbnull(Utility.GetYYYYMMDD(p.NgayKedon), 0) <= Utility.Int32Dbnull(Utility.GetYYYYMMDD(objLichsu.NgayHethieuluc, new DateTime(2099, 1, 1)), 0)
                                                           select p).ToList<KcbDonthuoc>();
                            lstID = _donthuoc.Select(c => c.IdDonthuoc).ToList<long>();

                            List<KcbDonthuocChitiet> _donthuocChitiet = (from p in lstDonthuocChitiet
                                                                         where lstID.Contains(p.IdDonthuoc)
                                                                         select p).ToList<KcbDonthuocChitiet>();

                           _ActionResult= CapnhatChiphiThuoc(objLichsu, _donthuoc, _donthuocChitiet);
                            if (_ActionResult == ActionResult.Cancel)
                                return _ActionResult;
                            List<NoitruPhanbuonggiuong> _Bg = (from p in lstbuonggiuong
                                                                     where p.NgayVaokhoa >= objLichsu.NgayHieuluc && p.NgayVaokhoa <= objLichsu.NgayHethieuluc
                                                                     select p).ToList<NoitruPhanbuonggiuong>();
                          _ActionResult=  CapnhatBuonggiuong(objLichsu, _Bg);
                            if (_ActionResult == ActionResult.Cancel)
                                return _ActionResult;

                        }
                        DateTime maxDate = lstLichsu.Max(c => c.NgayHieuluc);
                        KcbLichsuDoituongKcb objMax = lstLichsu.Where(c => c.NgayHieuluc == maxDate).FirstOrDefault();
                        if (objMax != null)
                        {
                            new Update(KcbLuotkham.Schema)
                                                      .Set(KcbLuotkham.Columns.MatheBhyt).EqualTo(objMax.MatheBhyt)
                                                      .Set(KcbLuotkham.Columns.MaNoicapBhyt).EqualTo(objMax.MaNoicapBhyt)
                                                      .Set(KcbLuotkham.Columns.MaQuyenloi).EqualTo(objMax.MaQuyenloi)
                                                      .Set(KcbLuotkham.Columns.NgaybatdauBhyt).EqualTo(objMax.NgaybatdauBhyt)
                                                      .Set(KcbLuotkham.Columns.NgayketthucBhyt).EqualTo(objMax.NgayketthucBhyt)
                                                      .Set(KcbLuotkham.Columns.NoicapBhyt).EqualTo(objMax.NoicapBhyt)
                                                      .Set(KcbLuotkham.Columns.IdDoituongKcb).EqualTo(objMax.IdDoituongKcb)
                                                      .Set(KcbLuotkham.Columns.MaKcbbd).EqualTo(objMax.MaKcbbd)
                                                      .Set(KcbLuotkham.Columns.NoiDongtrusoKcbbd).EqualTo(objMax.NoiDongtrusoKcbbd)
                                                      .Set(KcbLuotkham.Columns.MaDoituongBhyt).EqualTo(objMax.MaDoituongBhyt)
                                                      .Set(KcbLuotkham.Columns.DungTuyen).EqualTo(objMax.DungTuyen)
                                                      .Set(KcbLuotkham.Columns.MaDoituongKcb).EqualTo(objMax.MaDoituongKcb)
                                                      .Set(KcbLuotkham.Columns.NguoiSua).EqualTo(globalVariables.UserName)
                                                      .Set(KcbLuotkham.Columns.NgaySua).EqualTo(globalVariables.SysDate)
                                                      .Set(KcbLuotkham.Columns.MadtuongSinhsong).EqualTo(objMax.MadtuongSinhsong)
                                                      .Set(KcbLuotkham.Columns.GiayBhyt).EqualTo(objMax.GiayBhyt)
                                                      .Set(KcbLuotkham.Columns.PtramBhyt).EqualTo(objMax.PtramBhyt)
                                                      .Set(KcbLuotkham.Columns.PtramBhytGoc).EqualTo(objMax.PtramBhytGoc)
                                                      .Set(KcbLuotkham.Columns.DiachiBhyt).EqualTo(objMax.DiachiBhyt)
                                                      .Set(KcbLuotkham.Columns.IdLichsuDoituongKcb).EqualTo(objMax.IdLichsuDoituongKcb)

                                                      .Where(KcbLuotkham.Columns.MaLuotkham).IsEqualTo(objMax.MaLuotkham)
                                                      .And(KcbLuotkham.Columns.IdBenhnhan).IsEqualTo(objMax.IdBenhnhan)
                                                      .Execute();

                        }
                    }
                    Scope.Complete();
                    return ActionResult.Success;
                }
            }
            catch (Exception ex)
            {
                Utility.ShowMsg("Lỗi khi chuyển đối tượng:\n" + ex.Message);
                return ActionResult.Exception;
            }
        }
        private static ActionResult CapnhatChiphiThuoc(KcbLuotkham objLuotkham, KcbLuotkham objLuotkhamCu)
        {
            using (var Scope = new TransactionScope())
            {
                decimal BHYT_PTRAM_TRAITUYENNOITRU =Utility.DecimaltoDbnull( THU_VIEN_CHUNG.Laygiatrithamsohethong("BHYT_PTRAM_TRAITUYENNOITRU", "0", false),0m);
                THUOC_GIATHEO_KHOAKCB = THU_VIEN_CHUNG.Laygiatrithamsohethong("THUOC_GIATHEO_KHOAKCB", "0", true) == "1";

                KcbDonthuocCollection lstDonthuoc=
                    new Select()
                    .From(KcbDonthuoc.Schema)
                    .Where(KcbDonthuoc.Columns.MaLuotkham).IsEqualTo(objLuotkham.MaLuotkham)
                    .And(KcbDonthuoc.Columns.IdBenhnhan).IsEqualTo(objLuotkham.IdBenhnhan)
                    .ExecuteAsCollection<KcbDonthuocCollection>();
                List<long> lstID = lstDonthuoc.Select(c => c.IdDonthuoc).Distinct().ToList<long>();
                if (lstID.Count <= 0)
                {
                    Scope.Complete();
                    return ActionResult.Success;
                }

                KcbDonthuocChitietCollection lstChitiet =
                    new Select().From(KcbDonthuocChitiet.Schema)
                    .Where(KcbDonthuocChitiet.Columns.IdDonthuoc).In(lstID)
                    .ExecuteAsCollection<KcbDonthuocChitietCollection>();

                bool ApdunggiathuocDoituong = THU_VIEN_CHUNG.Laygiatrithamsohethong("APDUNG_GIATHUOC_DOITUONG", "0", true) == "1";

                DmucDoituongkcb _DmucDoituongkcb = new Select().From(DmucDoituongkcb.Schema).Where(DmucDoituongkcb.Columns.MaDoituongKcb).IsEqualTo(objLuotkham.MaDoituongKcb).ExecuteSingle<DmucDoituongkcb>();
                if (_DmucDoituongkcb == null) return ActionResult.Success;
                //Kiểm tra nếu đối tượng ngoại trú đã có đơn thuốc thanh toán-->Ko cho phép chuyển nữa
                if (Utility.ByteDbnull(objLuotkham.TrangthaiNoitru,0)<=0 && lstChitiet.Where(c => c.TrangthaiThanhtoan > 0).Any())
                {
                    Scope.Complete();
                    return ActionResult.Cancel;
                }
                bool saveParent = false;
                foreach (KcbDonthuoc objKcbDonthuoc in lstDonthuoc)
                {

                    objKcbDonthuoc.IdLichsuDoituongKcb = objLuotkham.IdLichsuDoituongKcb;
                    objKcbDonthuoc.MatheBhyt = objLuotkham.MatheBhyt;
                    objKcbDonthuoc.MaDoituongKcb = objLuotkham.MaDoituongKcb;

                    foreach (KcbDonthuocChitiet objChitietDonthuoc in lstChitiet.Where(c => c.IdDonthuoc.Equals(objKcbDonthuoc.IdDonthuoc)))
                    {
                        if (Utility.Int32Dbnull(objChitietDonthuoc.IdGoi, -1) > 0)
                        {
                            objChitietDonthuoc.MaDoituongKcb = objLuotkham.MaDoituongKcb;
                            if (Utility.Int16Dbnull(objChitietDonthuoc.TrangthaiThanhtoan, 0) == 0)
                            {
                                saveParent = true;
                                objChitietDonthuoc.MadoituongGia = objLuotkham.MaDoituongKcb;
                                objChitietDonthuoc.PtramBhyt = objLuotkham.PtramBhyt;
                                objChitietDonthuoc.PtramBhytGoc = objLuotkham.PtramBhytGoc;
                                DmucThuoc _DmucThuoc = DmucThuoc.FetchByID(objChitietDonthuoc.IdThuoc);
                                if (ApdunggiathuocDoituong || Utility.Byte2Bool(_DmucDoituongkcb.GiathuocQuanhe.Value))//Giá theo bảng quan hệ-->
                                {
                                    QheDoituongThuoc _item = THU_VIEN_CHUNG.LayQheDoituongThuoc(objLuotkham.MaDoituongKcb,
                                                                              objChitietDonthuoc.IdThuoc,
                                                                              objLuotkham.MaKhoaThuchien, THUOC_GIATHEO_KHOAKCB);
                                    if (_item != null)//Tìm thấy quan hệ giá
                                    {
                                        objChitietDonthuoc.DonGia = Utility.DecimaltoDbnull(_item.DonGia);
                                        objChitietDonthuoc.PhuThu = (Utility.isTrue(objLuotkham.DungTuyen.Value) ? Utility.DecimaltoDbnull(_item.PhuthuDungtuyen) : Utility.DecimaltoDbnull(_item.PhuthuTraituyen));
                                        objChitietDonthuoc.TuTuc = 0;
                                    }
                                    else//Tìm giá dịch vụ, chỉ xảy ra khi đối tượng BHYT ko tìm thấy giá,
                                    //còn đối tượng DV chắc chắn do thiếu quan hệ giá nên ko thay đổi gì dòng giá thuốc này
                                    {
                                        _item = THU_VIEN_CHUNG.LayQheDoituongThuoc("DV",
                                                                               objChitietDonthuoc.IdThuoc,
                                                                               objLuotkham.MaKhoaThuchien, THUOC_GIATHEO_KHOAKCB);
                                        if (_item != null)
                                        {
                                            objChitietDonthuoc.MadoituongGia = "DV";
                                            objChitietDonthuoc.DonGia = Utility.DecimaltoDbnull(_item.DonGia);
                                            objChitietDonthuoc.PhuThu = (Utility.isTrue(objLuotkham.DungTuyen.Value) ? Utility.DecimaltoDbnull(_item.PhuthuDungtuyen) : Utility.DecimaltoDbnull(_item.PhuthuTraituyen));
                                            objChitietDonthuoc.TuTuc = 1;
                                            objChitietDonthuoc.PtramBhyt = 0;
                                        }
                                    }
                                }
                                else //Giá theo kho-->
                                {
                                    TThuockho objTK = TThuockho.FetchByID(objChitietDonthuoc.IdThuockho);
                                    if (objTK != null)
                                    {
                                        objChitietDonthuoc.DonGia = THU_VIEN_CHUNG.IsBaoHiem(objLuotkham.IdLoaidoituongKcb) ? Utility.DecimaltoDbnull(objTK.GiaBhyt.Value, objChitietDonthuoc.DonGia) : objTK.GiaBan;
                                        objChitietDonthuoc.PhuThu = (Utility.Byte2Bool(objLuotkham.DungTuyen) ? Utility.DecimaltoDbnull(objTK.PhuthuDungtuyen) : Utility.DecimaltoDbnull(objTK.PhuthuTraituyen));
                                        if (!THU_VIEN_CHUNG.IsBaoHiem(objLuotkham.IdLoaidoituongKcb))//Đối tượng dịch vụ-->Ko tính phụ thu
                                            objChitietDonthuoc.PhuThu = 0;
                                    }
                                }
                                //Tính lại các mục tự túc, BHYT chi trả, BN chi trả
                                if (_DmucThuoc != null && Utility.Int32Dbnull(_DmucThuoc.TuTuc, 0) == 1)
                                    objChitietDonthuoc.TuTuc = 1;//Ke ca co trong bang quan he
                                if (objLuotkham.IdLoaidoituongKcb == 1)//Đối tượng dịch vụ-->ko cần phải đánh dấu tự túc
                                {
                                    objChitietDonthuoc.TuTuc = 0;
                                    objChitietDonthuoc.PhuThu = 0;
                                }
                                if (!Utility.Byte2Bool(objChitietDonthuoc.TuTuc))//Nếu ko phải dịch vụ tự túc
                                {
                                    decimal BHCT = 0m;
                                    if (objLuotkham.DungTuyen == 1)//Chỉ xảy ra với đối tượng BHYT
                                    {
                                        BHCT = Utility.DecimaltoDbnull(objChitietDonthuoc.DonGia, 0) * (Utility.DecimaltoDbnull(objLuotkham.PtramBhyt, 0) / 100);
                                    }
                                    else//Đối tượng DV hoặc BHYT trái tuyến
                                    {
                                        if (objLuotkham.TrangthaiNoitru <= 0 || !Utility.Byte2Bool(objKcbDonthuoc.Noitru))//Ngoại trú
                                            BHCT = Utility.DecimaltoDbnull(objChitietDonthuoc.DonGia, 0) * (Utility.DecimaltoDbnull(objLuotkham.PtramBhyt, 0) / 100);
                                        else//Nội trú cần tính=đơn giá * % đầu thẻ * % tuyến
                                            BHCT = Utility.DecimaltoDbnull(objChitietDonthuoc.DonGia, 0) * (Utility.DecimaltoDbnull(objLuotkham.PtramBhytGoc, 0) / 100) * (BHYT_PTRAM_TRAITUYENNOITRU / 100);
                                    }
                                    decimal _BnhanChitra = Utility.DecimaltoDbnull(objChitietDonthuoc.DonGia, 0) - BHCT;
                                    objChitietDonthuoc.BhytChitra = BHCT;
                                    objChitietDonthuoc.BnhanChitra = _BnhanChitra;
                                }
                                else//Là tự túc
                                {
                                    objChitietDonthuoc.PtramBhyt = 0;
                                    objChitietDonthuoc.BhytChitra = 0;
                                    objChitietDonthuoc.PhuThu = 0;
                                    objChitietDonthuoc.BnhanChitra = Utility.DecimaltoDbnull(objChitietDonthuoc.DonGia, 0);
                                }
                            }
                            else
                            {
                                //nếu đã thanh toán thì chỉ xử lý khi đối tượng đang ở trạng thái nội trú.
                                if (Utility.ByteDbnull(objLuotkham.TrangthaiNoitru,0) > 0)
                                {
                                    saveParent = true;
                                    if (THU_VIEN_CHUNG.IsBaoHiem(objLuotkham.IdLoaidoituongKcb))
                                    {
                                        //Đối tượng mới là BHYT thì kiểm tra đổi các dịch vụ có giá DV về tự túc.
                                        //Các dịch vụ có giá khác DV thì để nguyên(để nếu đối tượng cũ là BHYT thì ko bị thay đổi giá trị tự túc)
                                        if (objChitietDonthuoc.MadoituongGia == "DV")
                                            objChitietDonthuoc.TuTuc = 1;
                                    }
                                    else//Nếu đối tượng từ BHYT chuyển sang dịch vụ thì chuyển thành ko tự túc hết
                                    {
                                        if (objLuotkham.MaDoituongKcb != objLuotkhamCu.MaDoituongKcb)//Mới=DV, Cũ=BHYT. Còn lại ko làm gì cả
                                            objChitietDonthuoc.TuTuc = 0;
                                    }
                                }
                                else
                                    continue;
                            }
                            objChitietDonthuoc.Save();
                        }
                    }

                    if (saveParent)
                    {
                        objKcbDonthuoc.Save();
                        saveParent = false;
                    }

                }
                Scope.Complete();
                return ActionResult.Success;
            }
        }