public Select ( |
||
table | ||
filterExpression | string | |
sort | string | |
recordStates | DataViewRowState | |
리턴 | System.Collections.Generic |
/// <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(); } }
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 = ""; } }
/// <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; } }